<?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>101536</bug_id>
          
          <creation_ts>2012-11-07 18:21:26 -0800</creation_ts>
          <short_desc>Instantiate snapshot plugins in a PluginProcess with muted audio</short_desc>
          <delta_ts>2012-11-29 18:19:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kiran Muppala">cmuppala</reporter>
          <assigned_to name="Kiran Muppala">cmuppala</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>jonlee</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761254</commentid>
    <comment_count>0</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-07 18:21:26 -0800</bug_when>
    <thetext>Plugins created for generating a snapshot (when plugin snapshotting is enabled), should run in a process with muted audio so that the user does not hear it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761255</commentid>
    <comment_count>1</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-07 18:21:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/12481743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761272</commentid>
    <comment_count>2</comment_count>
      <attachid>172915</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-07 18:47:35 -0800</bug_when>
    <thetext>Created attachment 172915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763404</commentid>
    <comment_count>3</comment_count>
      <attachid>172915</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-09 15:46:53 -0800</bug_when>
    <thetext>Comment on attachment 172915
Patch


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

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:49
&gt; +void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, bool snapshotProcess, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)

In general, I wonder if this boolean ought to be part of the structs used to initialize the plugin, instead of as a separate parameter in all of these functions. I also think that the variable/param names should be more in the line of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763411</commentid>
    <comment_count>4</comment_count>
      <attachid>172915</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-11-09 16:00:41 -0800</bug_when>
    <thetext>Comment on attachment 172915
Patch


Here are some high-level comments:

I agree with Jon that we shouldn&apos;t hard-code &quot;pluginSnapshotProcess&quot; In the plug-in process, but instead use &quot;muteAudio&quot;. 

I think we should use a separate PluginProcessManager member function for getting a snapshot plug-in process instead of adding a boolean.

GetSitesWithData and ClearSiteData don&apos;t need to be sent to the snapshot plug-in process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763457</commentid>
    <comment_count>5</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-09 16:45:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 172915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172915&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:49
&gt; &gt; +void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, bool snapshotProcess, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)
&gt; 
&gt; In general, I wonder if this boolean ought to be part of the structs used to initialize the plugin, instead of as a separate parameter in all of these functions. I also think that the variable/param names should be more in the line of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.

(In reply to comment #3)
&gt; (From update of attachment 172915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172915&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:49
&gt; &gt; +void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, bool snapshotProcess, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)
&gt; 
&gt; In general, I wonder if this boolean ought to be part of the structs used to initialize the plugin, instead of as a separate parameter in all of these functions. I also think that the variable/param names should be more in the line of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.

Since the plugin is initialized after getting a connection to the process, it is necessary to pass the snapshot/non snapshot information to the plugin process manager.  Will fix the variable and param names for PluginProcess to be along the lines of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763581</commentid>
    <comment_count>6</comment_count>
      <attachid>173433</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-09 21:04:10 -0800</bug_when>
    <thetext>Created attachment 173433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763585</commentid>
    <comment_count>7</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-09 21:11:06 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 172915 [details])
&gt; Here are some high-level comments:
&gt; 
&gt; I agree with Jon that we shouldn&apos;t hard-code &quot;pluginSnapshotProcess&quot; In the plug-in process, but instead use &quot;muteAudio&quot;. 
&gt; 

I changed the process creation parameter to shouldMuteAudio.  However trying to change the name of the parameter in other places such as PluginProcessProxy seemed to hamper readability.  For instance changing the parameter of PluginProcessCrashed message from &quot;snapshotProcess&quot; to say &quot;audioMuted&quot; could also mean that a non snapshot process crashed while auto was muted.  I think &quot;snapshotProcess&quot; makes it clear about which process crashed.  So, I did not change the parameter name in other places.

&gt; I think we should use a separate PluginProcessManager member function for getting a snapshot plug-in process instead of adding a boolean.

Added a separate getSnapshotPluginProcess method to PluginProcessManager and for symmetry to PluginProcessConnectionManager too.
&gt; 
&gt; GetSitesWithData and ClearSiteData don&apos;t need to be sent to the snapshot plug-in process.

Fixed. This also eliminated all changes to PluginSiteDataManager.

Besides the above fixes, I also fixed a bug in PluginProcessConnectionManager::removePluginProcessConnection, where I was removing the connection in both snapshot and non snapshot connection maps instead of only removing from the map corresponding to the type of connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766363</commentid>
    <comment_count>8</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-13 20:50:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 172915 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172915&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:49
&gt; &gt; &gt; +void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, bool snapshotProcess, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)
&gt; &gt; 
&gt; &gt; In general, I wonder if this boolean ought to be part of the structs used to initialize the plugin, instead of as a separate parameter in all of these functions. I also think that the variable/param names should be more in the line of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.
&gt; 
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 172915 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172915&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:49
&gt; &gt; &gt; +void PluginProcessManager::getPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, bool snapshotProcess, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)
&gt; &gt; 
&gt; &gt; In general, I wonder if this boolean ought to be part of the structs used to initialize the plugin, instead of as a separate parameter in all of these functions. I also think that the variable/param names should be more in the line of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.
&gt; 
&gt; Since the plugin is initialized after getting a connection to the process, it is necessary to pass the snapshot/non snapshot information to the plugin process manager.  Will fix the variable and param names for PluginProcess to be along the lines of &quot;mutesAudio&quot; or &quot;isAudioMuted&quot;.

Jon,

I didn&apos;t fully understand your comment earlier on using the struct used to initialize the plugin.  I looked at the code again and found the struct Plugin::parameters you are referring to.  I could add the bool to it, but it is not used on the receiving side.  Only the PluginProxy is aware of it.  So, i think it doesn&apos;t quite belong there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769557</commentid>
    <comment_count>9</comment_count>
      <attachid>173433</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-11-16 12:15:53 -0800</bug_when>
    <thetext>Comment on attachment 173433
Patch

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

Looks great overall but needs some minor fixes.

&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:310
&gt; +    AudioObjectPropertyAddress theAddress = {kAudioHardwarePropertyProcessIsAudible, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster};

Please add spaces after the { and before the }, and use a more descriptive name than &quot;theAddress&quot;. How about, propertyAddress.

&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:311
&gt; +    UInt32 theData = 0;

Same thing here. Just &quot;data&quot; or maybe &quot;processIsAudibleProperty&quot;.

&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:313
&gt; +        CRASH();

Do we really want to crash in this case?

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:86
&gt; +PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String&amp; pluginPath, bool snapshotProcess)

You should call this isSnapshotProcess since otherwise it sounds like you&apos;re snapshotting the process itself. Same with all other occurrences of &quot;bool snapshotProcess&quot; in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775889</commentid>
    <comment_count>10</comment_count>
      <attachid>176065</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-26 14:22:55 -0800</bug_when>
    <thetext>Created attachment 176065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775897</commentid>
    <comment_count>11</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-26 14:27:45 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 173433 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173433&amp;action=review
&gt; 
&gt; Looks great overall but needs some minor fixes.
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:310
&gt; &gt; +    AudioObjectPropertyAddress theAddress = {kAudioHardwarePropertyProcessIsAudible, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster};
&gt; 
&gt; Please add spaces after the { and before the }, and use a more descriptive name than &quot;theAddress&quot;. How about, propertyAddress.
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:311
&gt; &gt; +    UInt32 theData = 0;
&gt; 
&gt; Same thing here. Just &quot;data&quot; or maybe &quot;processIsAudibleProperty&quot;.

Added spaces and renamed the local variables to propertyAddress and propertyData.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:313
&gt; &gt; +        CRASH();
&gt; 
&gt; Do we really want to crash in this case?

Yeah, this was probably too drastic.  The call to set the property is not expected to fail.  So, i replaced the CRASH with a ASSERT_NOT_REACHED.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:86
&gt; &gt; +PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String&amp; pluginPath, bool snapshotProcess)
&gt; 
&gt; You should call this isSnapshotProcess since otherwise it sounds like you&apos;re snapshotting the process itself. Same with all other occurrences of &quot;bool snapshotProcess&quot; in the patch.

You are right, fixed all occurrences to read &quot;isSnapshotProcess&quot;.

Besides the above changes, I renamed PluginProcessConnectionManager::m_pathsAndRegularProcessConnections to PluginProcessConnectionManager::m_pathsAndNonSnapshotProcessConnections since it complements PluginProcessConnectionManager::m_pathsAndSnapshotProcessConnections better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775931</commentid>
    <comment_count>12</comment_count>
      <attachid>176065</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-26 14:57:45 -0800</bug_when>
    <thetext>Comment on attachment 176065
Patch

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

Overall, r=me, but would suggest considering the nits mentioned.

&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:314
&gt; +        ASSERT_NOT_REACHED();

This could be expressed without using an if statement.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:53
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);

For readability, I&apos;d much rather see us using named constants like &quot;CreateSnapshotProcess, CreatePlugInProcess&quot; rather than a boolean argument.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:90
&gt; +        if ((pluginProcessProxy-&gt;pluginInfo().path == pluginPath) &amp;&amp; (pluginProcessProxy-&gt;isSnapshotProcess() == isSnapshotProcess))

The grouping parentheses are unnecessary here.

&gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h:46
&gt; +    static PassRefPtr&lt;PluginProcessConnection&gt; create(PluginProcessConnectionManager* pluginProcessConnectionManager, const String&amp; pluginPath,  bool isSnapshotProcess, CoreIPC::Connection::Identifier connectionIdentifier, bool supportsAsynchronousPluginInitialization)

Extra space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776006</commentid>
    <comment_count>13</comment_count>
      <attachid>176102</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-26 16:02:02 -0800</bug_when>
    <thetext>Created attachment 176102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776041</commentid>
    <comment_count>14</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-26 16:24:34 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 176065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176065&amp;action=review
&gt; 
&gt; Overall, r=me, but would suggest considering the nits mentioned.
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:314
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; This could be expressed without using an if statement.
&gt; 

I used the if statement to avoid a unused variable error.  But, looks like it made the code obtuse.  Removed the if statement and replaced with simple ASSERT() and UNUSED_PARAM().

&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:53
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);
&gt; 
&gt; For readability, I&apos;d much rather see us using named constants like &quot;CreateSnapshotProcess, CreatePlugInProcess&quot; rather than a boolean argument.

I agree that named constants are more readable, but in this case i improved the code by using inline comments both here and other occurrences of literal &quot;true&quot; or &quot;false&quot; in the patch.
PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:90
&gt; &gt; +        if ((pluginProcessProxy-&gt;pluginInfo().path == pluginPath) &amp;&amp; (pluginProcessProxy-&gt;isSnapshotProcess() == isSnapshotProcess))
&gt; 
&gt; The grouping parentheses are unnecessary here.
&gt; 

Fixed here and in PluginProcessConnectionManager::getProcessConnection

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h:46
&gt; &gt; +    static PassRefPtr&lt;PluginProcessConnection&gt; create(PluginProcessConnectionManager* pluginProcessConnectionManager, const String&amp; pluginPath,  bool isSnapshotProcess, CoreIPC::Connection::Identifier connectionIdentifier, bool supportsAsynchronousPluginInitialization)
&gt; 
&gt; Extra space.

Thanks for catching this.  I couldn&apos;t pin point the extra space straight away, even after looking at the diff again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776064</commentid>
    <comment_count>15</comment_count>
      <attachid>176110</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-26 16:43:25 -0800</bug_when>
    <thetext>Created attachment 176110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776067</commentid>
    <comment_count>16</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-26 16:45:04 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=176110) [details]
&gt; Patch

Only change from previous patch is the use of ASSERT_UNUSED() macro, pointed out by Jon Lee, instead of a separate ASSERT() and UNUSED_PARAM() macros in muteAudio().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776924</commentid>
    <comment_count>17</comment_count>
      <attachid>176110</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-27 10:13:54 -0800</bug_when>
    <thetext>Comment on attachment 176110
Patch

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

r=me with the comments removed.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:53
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);

This is not standard webkit style. Please remove the comment.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:62
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, true /* isSnapshotProcess */);

Ditto.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:76
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);

Ditto.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:82
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);

Ditto.

&gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp:54
&gt; +    return getProcessConnection(pluginPath, false /* isSnapshotProcess */);

Ditto.

&gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp:59
&gt; +    return getProcessConnection(pluginPath, true /* isSnapshotProcess */);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777271</commentid>
    <comment_count>18</comment_count>
      <attachid>176348</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-27 15:27:39 -0800</bug_when>
    <thetext>Created attachment 176348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777274</commentid>
    <comment_count>19</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-27 15:28:26 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 176110 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176110&amp;action=review
&gt; 
&gt; r=me with the comments removed.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:53
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);
&gt; 
&gt; This is not standard webkit style. Please remove the comment.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:62
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, true /* isSnapshotProcess */);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:76
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:82
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp:54
&gt; &gt; +    return getProcessConnection(pluginPath, false /* isSnapshotProcess */);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp:59
&gt; &gt; +    return getProcessConnection(pluginPath, true /* isSnapshotProcess */);
&gt; 
&gt; Ditto.

Removed comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777318</commentid>
    <comment_count>20</comment_count>
      <attachid>176348</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-27 16:10:45 -0800</bug_when>
    <thetext>Comment on attachment 176348
Patch

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

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:62
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);
&gt; +    pluginProcess-&gt;getPluginProcessConnection(reply);
&gt; +}
&gt; +
&gt; +void PluginProcessManager::getSnapshotPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)
&gt; +{
&gt; +    ASSERT(!pluginPath.isNull());
&gt; +    
&gt; +    PluginModuleInfo plugin = pluginInfoStore.infoForPluginWithPath(pluginPath);
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, true);

As Jon previously requested, could you please used named enums here instead of bool flags?

I had to lookup what this bool meant to see what the code was doing.  If you&apos;d named enums I wouldn&apos;t have had to look it up... and that&apos;s one reason why we used them!  :)

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:76
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:82
&gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:86
&gt; +PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String&amp; pluginPath, bool isSnapshotProcess)

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:97
&gt; +PluginProcessProxy* PluginProcessManager::getOrCreatePluginProcess(const PluginModuleInfo&amp; plugin, bool isSnapshotProcess)

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:102
&gt; +    RefPtr&lt;PluginProcessProxy&gt; pluginProcess = PluginProcessProxy::create(this, plugin, isSnapshotProcess);

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:68
&gt; +    PluginProcessProxy* getOrCreatePluginProcess(const PluginModuleInfo&amp;, bool isSnapshotProcess);
&gt; +    PluginProcessProxy* pluginProcessWithPath(const String&amp; pluginPath, bool isSnapshotProcess);

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:55
&gt; +    return adoptRef(new PluginProcessProxy(PluginProcessManager, pluginInfo, isSnapshotProcess));

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:58
&gt; +PluginProcessProxy::PluginProcessProxy(PluginProcessManager* PluginProcessManager, const PluginModuleInfo&amp; pluginInfo, bool isSnapshotProcess)

Same here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:67
&gt; +    , m_isSnapshotProcess(isSnapshotProcess)

The member variable itself could be a bool, except then...

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:177
&gt; +        contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::PluginProcessCrashed(m_pluginInfo.path, m_isSnapshotProcess));

You&apos;d have to convert it back to an enum here.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:208
&gt; +    parameters.shouldMuteAudio = m_isSnapshotProcess;

The parameter member could be an enum also, and we have encodeEnum and decodeEnum in CoreIPC for that reason.

&gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:65
&gt; +    static PassRefPtr&lt;PluginProcessProxy&gt; create(PluginProcessManager*, const PluginModuleInfo&amp;, bool isSnapshotProcess);

At this point I&apos;ll stop commenting on how it should be an enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777328</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-27 16:14:22 -0800</bug_when>
    <thetext>BTW, I know you replied to Jon with:

(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:53
&gt; &gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);
&gt; &gt; 
&gt; &gt; For readability, I&apos;d much rather see us using named constants like &quot;CreateSnapshotProcess, CreatePlugInProcess&quot; rather than a boolean argument.
&gt; 
&gt; I agree that named constants are more readable, but in this case i improved the code by using inline comments both here and other occurrences of literal &quot;true&quot; or &quot;false&quot; in the patch.
&gt; PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false /* isSnapshotProcess */);

We much prefer code to comments, and named enums are impossible to get wrong whereas bools plus a mixture are easy to be misunderstood.

What we&apos;re asking for here is in the coding style guidelines #10 - http://www.webkit.org/coding/coding-style.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777330</commentid>
    <comment_count>22</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-27 16:15:03 -0800</bug_when>
    <thetext>&gt; whereas bools plus a mixture are easy to be misunderstood.

I meant &quot;a mixture of bools plus comments are easy to be misunderstood&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777625</commentid>
    <comment_count>23</comment_count>
      <attachid>176425</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-28 01:23:30 -0800</bug_when>
    <thetext>Created attachment 176425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777627</commentid>
    <comment_count>24</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-28 01:27:44 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 176348 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176348&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:62
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);
&gt; &gt; +    pluginProcess-&gt;getPluginProcessConnection(reply);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void PluginProcessManager::getSnapshotPluginProcessConnection(const PluginInfoStore&amp; pluginInfoStore, const String&amp; pluginPath, PassRefPtr&lt;Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&gt; reply)
&gt; &gt; +{
&gt; &gt; +    ASSERT(!pluginPath.isNull());
&gt; &gt; +    
&gt; &gt; +    PluginModuleInfo plugin = pluginInfoStore.infoForPluginWithPath(pluginPath);
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, true);
&gt; 
&gt; As Jon previously requested, could you please used named enums here instead of bool flags?
&gt; 
&gt; I had to lookup what this bool meant to see what the code was doing.  If you&apos;d named enums I wouldn&apos;t have had to look it up... and that&apos;s one reason why we used them!  :)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:76
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:82
&gt; &gt; +    PluginProcessProxy* pluginProcess = getOrCreatePluginProcess(plugin, false);
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:86
&gt; &gt; +PluginProcessProxy* PluginProcessManager::pluginProcessWithPath(const String&amp; pluginPath, bool isSnapshotProcess)
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:97
&gt; &gt; +PluginProcessProxy* PluginProcessManager::getOrCreatePluginProcess(const PluginModuleInfo&amp; plugin, bool isSnapshotProcess)
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp:102
&gt; &gt; +    RefPtr&lt;PluginProcessProxy&gt; pluginProcess = PluginProcessProxy::create(this, plugin, isSnapshotProcess);
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h:68
&gt; &gt; +    PluginProcessProxy* getOrCreatePluginProcess(const PluginModuleInfo&amp;, bool isSnapshotProcess);
&gt; &gt; +    PluginProcessProxy* pluginProcessWithPath(const String&amp; pluginPath, bool isSnapshotProcess);
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:55
&gt; &gt; +    return adoptRef(new PluginProcessProxy(PluginProcessManager, pluginInfo, isSnapshotProcess));
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:58
&gt; &gt; +PluginProcessProxy::PluginProcessProxy(PluginProcessManager* PluginProcessManager, const PluginModuleInfo&amp; pluginInfo, bool isSnapshotProcess)
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:67
&gt; &gt; +    , m_isSnapshotProcess(isSnapshotProcess)
&gt; 
&gt; The member variable itself could be a bool, except then...
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:177
&gt; &gt; +        contexts[i]-&gt;sendToAllProcesses(Messages::WebProcess::PluginProcessCrashed(m_pluginInfo.path, m_isSnapshotProcess));
&gt; 
&gt; You&apos;d have to convert it back to an enum here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp:208
&gt; &gt; +    parameters.shouldMuteAudio = m_isSnapshotProcess;
&gt; 
&gt; The parameter member could be an enum also, and we have encodeEnum and decodeEnum in CoreIPC for that reason.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.h:65
&gt; &gt; +    static PassRefPtr&lt;PluginProcessProxy&gt; create(PluginProcessManager*, const PluginModuleInfo&amp;, bool isSnapshotProcess);
&gt; 
&gt; At this point I&apos;ll stop commenting on how it should be an enum.

Thanks for the detailed feedback.  Added a PluginProcess::Type enum and it definitely improved the code overall.  This lead to quite a few other changes, so please review the patch anew.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777648</commentid>
    <comment_count>25</comment_count>
      <attachid>176425</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-28 01:59:05 -0800</bug_when>
    <thetext>Comment on attachment 176425
Patch

Attachment 176425 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15023339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777744</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-28 04:34:21 -0800</bug_when>
    <thetext>I won&apos;t be able to review for awhile.  I know Jon is familiar with the patch and can hopefully easily help guide someone else to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778026</commentid>
    <comment_count>27</comment_count>
      <attachid>176425</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-28 10:22:36 -0800</bug_when>
    <thetext>Comment on attachment 176425
Patch

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

&gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.h:65
&gt; +    HashMap&lt;std::pair&lt;String, unsigned&gt;, RefPtr&lt;CoreIPC::Connection&gt; &gt; m_pathsAndConnections;

Shouldn&apos;t the second parameter be defined as PluginProcess::Type?

&gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp:72
&gt; +    , m_displayState(displayState)

It&apos;s a layering violation to store the display state. You should use the PluginProcess::Type enum instead.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:538
&gt; +    return PluginProxy::create(pluginPath, pluginElement-&gt;displayState());

It&apos;s not correct to send the display state over to the proxy. The plugin should not know anything about the display state since its existence is fully controlled by the PluginView widget. The logic for determining which process to use should be done here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778752</commentid>
    <comment_count>28</comment_count>
      <attachid>176661</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 00:13:53 -0800</bug_when>
    <thetext>Created attachment 176661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778754</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 00:15:46 -0800</bug_when>
    <thetext>Attachment 176661 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/PluginProcess/PluginProcess.h:127:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/PluginProcess/PluginProcess.h:128:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 23 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>778758</commentid>
    <comment_count>30</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 00:18:25 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 176425 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176425&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.h:65
&gt; &gt; +    HashMap&lt;std::pair&lt;String, unsigned&gt;, RefPtr&lt;CoreIPC::Connection&gt; &gt; m_pathsAndConnections;
&gt; 
&gt; Shouldn&apos;t the second parameter be defined as PluginProcess::Type?

I backed out of that when the compiler threw a crap ton of errors yesterday.  But, I am so glad you questioned me on it, because on looking deeper I found that the default HashTraits for &quot;unsigned&quot; don&apos;t allow 0 to be stored, since they treat it as an empty value.  I fixed this by starting the enum values at 1.
Also added the necessary DefaultHash and IsInteger templates to fix compiler errors.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp:72
&gt; &gt; +    , m_displayState(displayState)
&gt; 
&gt; It&apos;s a layering violation to store the display state. You should use the PluginProcess::Type enum instead.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:538
&gt; &gt; +    return PluginProxy::create(pluginPath, pluginElement-&gt;displayState());
&gt; 
&gt; It&apos;s not correct to send the display state over to the proxy. The plugin should not know anything about the display state since its existence is fully controlled by the PluginView widget. The logic for determining which process to use should be done here instead.

Yeah, you are right.  Fixed by replacing with PluginProcess::Type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778761</commentid>
    <comment_count>31</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 00:20:45 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Attachment 176661 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
&gt; Source/WebKit2/PluginProcess/PluginProcess.h:127:  More than one command on the same line  [whitespace/newline] [4]
&gt; Source/WebKit2/PluginProcess/PluginProcess.h:128:  More than one command on the same line  [whitespace/newline] [4]
&gt; Total errors found: 2 in 23 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

These are false positives.  I could avoid these by splitting the simple templates into multiple lines, but WTF itself uses a single line to define these simple templates.  So, I wish to follow the same style for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778765</commentid>
    <comment_count>32</comment_count>
      <attachid>176661</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-11-29 00:24:00 -0800</bug_when>
    <thetext>Comment on attachment 176661
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778775</commentid>
    <comment_count>33</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 00:33:56 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #29)
&gt; &gt; Attachment 176661 [details] [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.h:127:  More than one command on the same line  [whitespace/newline] [4]
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.h:128:  More than one command on the same line  [whitespace/newline] [4]
&gt; &gt; Total errors found: 2 in 23 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; 
&gt; These are false positives.  I could avoid these by splitting the simple templates into multiple lines, but WTF itself uses a single line to define these simple templates.  So, I wish to follow the same style for these.

Filed https://bugs.webkit.org/show_bug.cgi?id=103607, on check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779265</commentid>
    <comment_count>34</comment_count>
      <attachid>176661</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-11-29 11:54:11 -0800</bug_when>
    <thetext>Comment on attachment 176661
Patch

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

&gt; Source/WebKit2/WebProcess/WebProcess.messages.in:72
&gt; +    PluginProcessCrashed(String pluginProcess, unsigned processType) DispatchOnConnectionQueue

This should be an explicitly sized integer type, uint32_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779669</commentid>
    <comment_count>35</comment_count>
      <attachid>176867</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 17:46:58 -0800</bug_when>
    <thetext>Created attachment 176867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779671</commentid>
    <comment_count>36</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 17:49:20 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 176661 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176661&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.messages.in:72
&gt; &gt; +    PluginProcessCrashed(String pluginProcess, unsigned processType) DispatchOnConnectionQueue
&gt; 
&gt; This should be an explicitly sized integer type, uint32_t.

Fixed the type of processType parameter for PluginProcessCrashed (WebProcess) and GetPluginProcessConnection (WebProcessProxy) to uint32_t.

Also, for consistency changed DefaultHash template specialization of PluginProcess::Type to use DefaultHash&lt;uint32_t&gt;::Hash.

No other changes in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779674</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 17:52:41 -0800</bug_when>
    <thetext>Attachment 176867 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/PluginProcess/PluginProcess.h:127:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/PluginProcess/PluginProcess.h:128:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 23 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>779677</commentid>
    <comment_count>38</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2012-11-29 17:54:10 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Attachment 176867 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
&gt; Source/WebKit2/PluginProcess/PluginProcess.h:127:  More than one command on the same line  [whitespace/newline] [4]
&gt; Source/WebKit2/PluginProcess/PluginProcess.h:128:  More than one command on the same line  [whitespace/newline] [4]
&gt; Total errors found: 2 in 23 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Same false positives as before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779705</commentid>
    <comment_count>39</comment_count>
      <attachid>176867</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 18:19:30 -0800</bug_when>
    <thetext>Comment on attachment 176867
Patch

Clearing flags on attachment: 176867

Committed r136193: &lt;http://trac.webkit.org/changeset/136193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779706</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 18:19:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172915</attachid>
            <date>2012-11-07 18:47:35 -0800</date>
            <delta_ts>2012-11-09 21:04:07 -0800</delta_ts>
            <desc>Patch
</desc>
            <filename>bug-101536-20121107184546.patch</filename>
            <type>text/plain</type>
            <size>41714</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAxNDM3Y2QwODhmZjhj
ZDlhNGY2MzdhNDc3ZGZjNzEzYjQxNGE1ZC4uN2Q5YzU3MDA5MTI1ODY0MjU4YTBmZTdhNzQ5MDdi
ZTdmYTc5ZjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTExLTA3ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBwdXJlbHkgZm9yIGdlbmVyYXRpb24gb2YgYSBzbmFwc2hvdCBzaG91bGQgYmUgaW5zdGFudGlh
dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcworICAgICAgICB3aXRoIG11dGVkIGF1ZGlvIHNvIHRo
YXQgYW55IHNvdW5kIGdlbmVyYXRlZCBkdXJpbmcgdGhlIHNuYXBzaG90IHByb2Nlc3MgaXMgbm90
IGF1ZGlibGUgdG8gdGhlCisgICAgICAgIHVzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9XZWJLaXQyLnhjY29uZmlnOiBBZGQgQ29yZUF1ZGlvIHRvIHRoZSBsaXN0IG9mIGxpbmtlZCBm
cmFtZXdvcmtzLgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW06IAorICAgICAgICAoV2ViS2l0OjptdXRlQXVkaW8pOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBJZiBwcm9jZXNzIGNyZWF0aW9uIHBhcmFt
ZXRlcnMgaW5kaWNhdGUgdGhhdCB0aGUKKyAgICAgICAgcHJvY2VzcyBiZWluZyBpbml0aWFsaXpl
ZCBpcyBhIHBsdWdpbiBzbmFwc2hvdCBwcm9jZXNzLCB0aGVuIG11dGUgYXVkaW8uCisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICBBZGQgYm9vbGVhbiBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgaWYgdGhl
IHByb2Nlc3MgdG8gY3JlYXRlIGlzIGZvciBwbHVnaW4gc25hcHNob3RzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Y2xlYXJTaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzV2l0aFBh
dGgpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
TWFuYWdlci5oOiBBZGQgc25hcHNob3RQcm9jZXNzIGJvb2xlYW4gcGFyYW1ldGVyIHRvIGRpc3Rp
bmd1aXNoCisgICAgICAgIGJldHdlZW4gcmVndWxhciBwbHVnaW4gcHJvY2VzcyBhbmQgc25hcHNo
b3QgcGx1Z2luIHByb2Nlc3MuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcpOiBTZXQgcGx1Z2luU25hcHNob3RQcm9jZXNzIHByb2Nlc3MgY3JlYXRpb24gcGFyYW1l
dGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmlzU25hcHNob3RQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OkdldFNpdGVzV2l0
aERhdGFTdGF0ZTo6R2V0U2l0ZXNXaXRoRGF0YVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyOjpHZXRTaXRlc1dpdGhEYXRhU3RhdGU6OmdldFNpdGVzV2l0
aERhdGFGb3JOZXh0UGx1Z2luKToKKyAgICAgICAgKFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6
R2V0U2l0ZXNXaXRoRGF0YVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyOjpDbGVhclNpdGVEYXRhU3RhdGU6OkNsZWFyU2l0ZURhdGFTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6Q2xlYXJTaXRlRGF0YVN0YXRl
OjpjbGVhclNpdGVEYXRhRm9yTmV4dFBsdWdpbik6CisgICAgICAgIChXZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXI6OkNsZWFyU2l0ZURhdGFTdGF0ZSk6CisgICAgICAgIFNlbmQgcmVxdWVzdHMgdG8g
Ym90aCByZWd1bGFyIGFuZCBzbmFwc2hvdCBwbHVnaW4gcHJvY2Vzc2VzIGZvciBnZXR0aW5nIHNp
dGVzIHdpdGggZGF0YQorICAgICAgICBhbmQgY2xlYXJpbmcgc2l0ZXMgd2l0aCBkYXRhLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OmlzU25hcHNob3RQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmg6
IEFkZCBzbmFwc2hvdFByb2Nlc3MgYm9vbGVhbiBwYXJhbWV0ZXIgdG8gZGlzdGluZ3Vpc2gKKyAg
ICAgICAgYmV0d2VlbiByZWd1bGFyIHBsdWdpbiBwcm9jZXNzIGFuZCBzbmFwc2hvdCBwbHVnaW4g
cHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJveHk6OlBsdWdpblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
OiBBZGQgc25hcHNob3RQbHVnaW4gYm9vbGVhbiBtZW1iZXIgdG8gaW5kaWNhdGUgaWYgdGhlIHBs
dWdpbiBpcyBiZWluZworICAgICAgICB1c2VkIGZvciBnZW5lcmF0aW5nIGEgc25hcHNob3QuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEZXRlcm1pbmUgaWYgdGhlIHBsdWdpbiB0byBiZSBj
cmVhdGVkIGlzIGEgc25hcHNob3QgcGx1Z2luIGJhc2VkIG9uIHRoZQorICAgICAgICBkaXNwbGF5
IHN0YXRlIG9mIEhUTUxQbHVnSW5FbGVtZW50CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNo
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViUHJv
Y2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAy
MDEyLTExLTA2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAg
ICAgICAgIE1vdmUgRHJhd2luZ0FyZWFJbXBsIG1ldGhvZHMgZ3JhcGhpY3NMYXllckZhY3Rvcnks
IHNldFJvb3RDb21wb3NpdGluZ0xheWVyICYgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYyB1
bmRlciBBQ0NFTEVSQVRFRF9DT01QT1NJVElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3Vy
YXRpb25zL1dlYktpdDIueGNjb25maWcKaW5kZXggM2U0NTg4YzYyYmEzNmU5NjVmZjdjOTc5ODcx
NWNiZWRhY2QzNDNhZC4uZDg4ZWIxOGMzZTQyODdkMjkwNWFlYTYxMDFhZTllMzFjMzU2YzA2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZp
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCkBA
IC0yOSw3ICsyOSw3IEBAIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFU
SCA9ICQoV0VCS0lUMl9GUkFNRVdPUktTX0RJUik7CiBEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9
ICQoTk9STUFMX1dFQktJVDJfRlJBTUVXT1JLU19ESVIpOwogCi1GUkFNRVdPUktfQU5EX0xJQlJB
UllfTERGTEFHUyA9IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENh
cmJvbiAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsg
SU9LaXQgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFy
dHpDb3JlIC1mcmFtZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlOworRlJBTUVXT1JL
X0FORF9MSUJSQVJZX0xERkxBR1MgPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZy
YW1ld29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAt
ZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFt
ZXdvcmsgUXVhcnR6Q29yZSAtZnJhbWV3b3JrIFNlY3VyaXR5IC1mcmFtZXdvcmsgV2ViQ29yZSAt
ZnJhbWV3b3JrIENvcmVBdWRpbzsKIAogT1RIRVJfTERGTEFHUyA9ICQoT1RIRVJfTERGTEFHU18k
KFBMQVRGT1JNX05BTUUpKSAkKE9USEVSX0xERkxBR1MpOwogT1RIRVJfTERGTEFHU19tYWNvc3gg
PSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDY3MWYyMGQ2
ZGNhYmUxZmMxYmEzOTU1N2Q1ZTYyOGVlN2VkN2VkMmYuLmU0NjkxOWE4OTA5YTlhN2EwYzNmNDdl
YzUwYTEyYjg0MTRlM2UwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAi
UGx1Z2luUHJvY2Vzc1NoaW0uaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0
IDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPGRs
ZmNuLmg+CkBAIC0zMDQsNiArMzA1LDE0IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTYW5kYm94
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBzYW5kYm94UHJvCiB9CiAj
ZW5kaWYKIAorc3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCit7CisgICAgQXVkaW9PYmplY3RQ
cm9wZXJ0eUFkZHJlc3MgdGhlQWRkcmVzcyA9IHtrQXVkaW9IYXJkd2FyZVByb3BlcnR5UHJvY2Vz
c0lzQXVkaWJsZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0
UHJvcGVydHlFbGVtZW50TWFzdGVyfTsKKyAgICBVSW50MzIgdGhlRGF0YSA9IDA7CisgICAgaWYg
KEF1ZGlvT2JqZWN0U2V0UHJvcGVydHlEYXRhKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJnRo
ZUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmdGhlRGF0YSkgIT0gbm9FcnIpCisgICAg
ICAgIENSQVNIKCk7Cit9CisKIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAg
ICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBwYXJhbWV0ZXJzLmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdQb3J0LnBvcnQoKTsKQEAgLTMxOSw2ICszMjgsOSBAQCB2b2lkIFBsdWdpblBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAog
ICAgIGluaXRpYWxpemVTYW5kYm94KG1fcGx1Z2luUGF0aCwgcGFyYW1ldGVycy5zYW5kYm94UHJv
ZmlsZURpcmVjdG9yeVBhdGgpOwogI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVycy5wbHVnaW5T
bmFwc2hvdFByb2Nlc3MpCisgICAgICAgIG11dGVBdWRpbygpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZjUzYzI2ZTZi
MDFmYjUzZmVkYzg4NzEyNzg2NDJmOTdkNmNjZjQ2ZC4uYzVhMjc0ZmJkN2Q2OGY1YzY4MGZlMGQ5
ZmFmOTI4NWFiOTIyNjIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCiB2b2lkIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBwbHVnaW5QYXRoOworICAgIGVuY29kZXIgPDwgcGx1Z2luU25hcHNo
b3RQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbjsKICAgICBlbmNvZGVyIDw8IG1pbmltdW1MaWZldGltZTsKICAgICBlbmNvZGVy
IDw8IHRlcm1pbmF0aW9uVGltZW91dDsKQEAgLTU1LDYgKzU2LDggQEAgYm9vbCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLAogewogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5wbHVnaW5QYXRoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5w
bHVnaW5TbmFwc2hvdFByb2Nlc3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocmVzdWx0LnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cmVzdWx0Lm1pbmltdW1MaWZldGltZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggYTQxNDIxMmJlOWEwZjY4MmVjODVhMzBjZThkZjA0NzM1ZGU1YzExZS4uMDIwNmM5Y2NkMmJl
MWY2MTQ2OWNmOTUxZjlhYTA5ZGQ5M2I1ZmQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIFN0cmluZyBwbHVnaW5Q
YXRoOworICAgIGJvb2wgcGx1Z2luU25hcHNob3RQcm9jZXNzOwogICAgIGJvb2wgc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKIAogICAgIGRvdWJsZSBtaW5pbXVtTGlm
ZXRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKaW5kZXggZjQ5Nzg5NWRiNDJkOTc1MmVhMGI3YzRlZDUz
MjQxYjM4NmU4YWU5ZC4uYWI5ZmQxMjUxOTdiMTBlZGUzZDA4ZjdmNmYzNzgzZTRmZWNlZGFkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYlBs
dWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDUsMTIgKzQ2LDEyIEBAIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpQbHVnaW5Qcm9jZXNzTWFuYWdlcigpCiB7CiB9CiAKLXZvaWQgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFBsdWdp
bkluZm9TdG9yZSYgcGx1Z2luSW5mb1N0b3JlLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBh
c3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdWdpbklu
Zm9TdG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIHNuYXBzaG90UHJvY2Vzcywg
UGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBBU1NFUlQoIXBsdWdpblBhdGgu
aXNOdWxsKCkpOwogCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3Rv
cmUuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOwotICAgIFBsdWdpblByb2Nlc3NQ
cm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4pOwor
ICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2lu
UHJvY2VzcyhwbHVnaW4sIHNuYXBzaG90UHJvY2Vzcyk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwogfQogCkBAIC02MiwzNCArNjMsNDEgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdp
blByb2Nlc3NQcm94eSogcGx1Z2luUHIKICAgICBtX3BsdWdpblByb2Nlc3Nlcy5yZW1vdmUodmVj
dG9ySW5kZXgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRTaXRlc1dpdGhE
YXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbiwgYm9vbCBzbmFwc2hvdFByb2Nlc3MsIFdlYlBsdWdpblNpdGVEYXRhTWFu
YWdlciogd2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewot
ICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2lu
UHJvY2VzcyhwbHVnaW4pOwotICAgIHBsdWdpblByb2Nlc3MtPmdldFNpdGVzV2l0aERhdGEod2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCBjYWxsYmFja0lEKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkqIHBsdWdpblByb2Nlc3MgPSAhc25hcHNob3RQcm9jZXNzID8gZ2V0T3JDcmVhdGVQbHVnaW5Q
cm9jZXNzKHBsdWdpbiwgZmFsc2UpIDogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRo
LCB0cnVlKTsKKyAgICBpZiAocGx1Z2luUHJvY2VzcykKKyAgICAgICAgcGx1Z2luUHJvY2Vzcy0+
Z2V0U2l0ZXNXaXRoRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNhbGxiYWNrSUQpOwor
ICAgIGVsc2UKKyAgICAgICAgd2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLT5kaWRHZXRTaXRlc1dp
dGhEYXRhRm9yU2luZ2xlUGx1Z2luKFZlY3RvcjxTdHJpbmc+KCksIGNhbGxiYWNrSUQpOwogfQog
Ci12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3Ms
IHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OmNsZWFyU2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luLCBib29sIHNuYXBzaG90UHJvY2VzcywgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiB3
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWlu
dDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0
ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKLSAgICBwbHVnaW5Qcm9jZXNzLT5jbGVhclNpdGVEYXRh
KHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgc2l0ZXMsIGZsYWdzLCBtYXhBZ2VJblNlY29uZHMs
IGNhbGxiYWNrSUQpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9ICFz
bmFwc2hvdFByb2Nlc3MgPyBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxzZSkg
OiBwbHVnaW5Qcm9jZXNzV2l0aFBhdGgocGx1Z2luLnBhdGgsIHRydWUpOworICAgIGlmIChwbHVn
aW5Qcm9jZXNzKQorICAgICAgICBwbHVnaW5Qcm9jZXNzLT5jbGVhclNpdGVEYXRhKHdlYlBsdWdp
blNpdGVEYXRhTWFuYWdlciwgc2l0ZXMsIGZsYWdzLCBtYXhBZ2VJblNlY29uZHMsIGNhbGxiYWNr
SUQpOworICAgIGVsc2UKKyAgICAgICAgd2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLT5kaWRDbGVh
clNpdGVEYXRhRm9yU2luZ2xlUGx1Z2luKGNhbGxiYWNrSUQpOwogfQogCi1QbHVnaW5Qcm9jZXNz
UHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzV2l0aFBhdGgoY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoKQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFu
YWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9v
bCBzbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdp
blByb2Nlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9wbHVnaW5Qcm9jZXNzZXNb
aV0tPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4g
bV9wbHVnaW5Qcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNz
UHJveHk+JiBwbHVnaW5Qcm9jZXNzUHJveHkgPSBtX3BsdWdpblByb2Nlc3Nlc1tpXTsKKyAgICAg
ICAgaWYgKChwbHVnaW5Qcm9jZXNzUHJveHktPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBh
dGgpICYmIChwbHVnaW5Qcm9jZXNzUHJveHktPmlzU25hcHNob3RQcm9jZXNzKCkgPT0gc25hcHNo
b3RQcm9jZXNzKSkKKyAgICAgICAgICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzUHJveHkuZ2V0KCk7
CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBsdWdpblByb2Nlc3NQcm94eSogUGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiBwbHVnaW4pCitQbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2lu
LCBib29sIHNuYXBzaG90UHJvY2VzcykKIHsKLSAgICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRoKSkKKyAgICBp
ZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQ
YXRoKHBsdWdpbi5wYXRoLCBzbmFwc2hvdFByb2Nlc3MpKQogICAgICAgICByZXR1cm4gcGx1Z2lu
UHJvY2VzczsKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IHBsdWdpblByb2Nlc3Mg
PSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzLCBwbHVnaW4pOworICAgIFJlZlB0cjxQ
bHVnaW5Qcm9jZXNzUHJveHk+IHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZSh0aGlzLCBwbHVnaW4sIHNuYXBzaG90UHJvY2Vzcyk7CiAgICAgUGx1Z2luUHJvY2Vzc1By
b3h5KiBwbHVnaW5Qcm9jZXNzUHRyID0gcGx1Z2luUHJvY2Vzcy5nZXQoKTsKIAogICAgIG1fcGx1
Z2luUHJvY2Vzc2VzLmFwcGVuZChwbHVnaW5Qcm9jZXNzLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
aAppbmRleCA1ZTUxOTQyN2JhM2YxZGRmYjM3YmQ4YmU4M2YzMjk3OGM0N2I4YjkyLi42ZDY1NmZh
NWU5NjYzYzM5NjAyZDVmNDBkYmUzMzE1NjVjMTFjNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKQEAgLTUw
LDExICs1MCwxMSBAQCBjbGFzcyBQbHVnaW5Qcm9jZXNzTWFuYWdlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBsdWdpblByb2Nlc3NNYW5hZ2VyJiBzaGFyZWQoKTsKIAotICAgIHZvaWQgZ2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiwgY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFBsdWdpbkluZm9TdG9yZSYsIGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgYm9vbCBzbmFwc2hvdFByb2Nlc3MsIFBhc3NSZWZQdHI8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4p
OwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NQcm94eSop
OwogCi0gICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGNsZWFyU2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlciosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVp
bnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBib29sIHNuYXBzaG90UHJv
Y2VzcywgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBib29sIHNuYXBz
aG90UHJvY2VzcywgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sKTsKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcigpOwogCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5
KiBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAg
IFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdpblBy
b2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKKyAg
ICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8
UGx1Z2luUHJvY2Vzc1Byb3h5PiA+IG1fcGx1Z2luUHJvY2Vzc2VzOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDBjMmU4Njg5ZTY0ODg3NjgwZTQyYTEzNDkzYzBmM2U1MGUwYmIxMmEuLjEzZTBjYTk0
ODYyNmI1ZWNkNGEzMzZiOWI3ZWMzNzFlNzJiZjlkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTAs
MTIgKzUwLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5p
bXVtTGlmZXRpbWUgPSAzMCAqIDYwOwogc3RhdGljIGNvbnN0IGRvdWJsZSBzaHV0ZG93blRpbWVv
dXQgPSAxMCAqIDYwOwogCi1QYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5h
Z2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKQorUGFzc1JlZlB0cjxQbHVn
aW5Qcm9jZXNzUHJveHk+IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblByb2Nlc3NN
YW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1
Z2luSW5mbywgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciwgcGx1Z2luSW5mbykp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nl
c3NNYW5hZ2VyLCBwbHVnaW5JbmZvLCBpc1NuYXBzaG90UHJvY2VzcykpOwogfQogCi1QbHVnaW5Q
cm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1
Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitQ
bHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdl
ciogUGx1Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbklu
Zm8sIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpCiAgICAgOiBtX3BsdWdpblByb2Nlc3NNYW5hZ2Vy
KFBsdWdpblByb2Nlc3NNYW5hZ2VyKQogICAgICwgbV9wbHVnaW5JbmZvKHBsdWdpbkluZm8pCiAg
ICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKQEAgLTY0LDYgKzY0LDcgQEAg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFn
ZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2UKICAgICAsIG1fZnVsbHNjcmVlbldpbmRvd0lzU2hvd2lu
ZyhmYWxzZSkKICAgICAsIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnMoMCkK
ICNlbmRpZgorICAgICwgbV9pc1NuYXBzaG90UHJvY2Vzcyhpc1NuYXBzaG90UHJvY2VzcykKIHsK
ICAgICBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKICAgICBs
YXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNz
OwpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShD
b3JlSVBDOjpDb25uZWN0aW9uKikKIAogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNv
bnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvbnRleHRzLnNpemUoKTsgKytpKQotICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQbHVnaW5Qcm9jZXNzQ3Jhc2hlZCht
X3BsdWdpbkluZm8ucGF0aCkpOworICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChtX3BsdWdpbklu
Zm8ucGF0aCwgbV9pc1NuYXBzaG90UHJvY2VzcykpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNhdXNl
IHVzIHRvIGJlIGRlbGV0ZWQuCiAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1
bmNoKCk7CkBAIC0yMDQsNiArMjA1LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICBQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICAgICBwYXJhbWV0
ZXJzLnBsdWdpblBhdGggPSBtX3BsdWdpbkluZm8ucGF0aDsKKyAgICBwYXJhbWV0ZXJzLnBsdWdp
blNuYXBzaG90UHJvY2VzcyA9IG1faXNTbmFwc2hvdFByb2Nlc3M7CiAKICAgICBwYXJhbWV0ZXJz
Lm1pbmltdW1MaWZldGltZSA9IG1pbmltdW1MaWZldGltZTsKICAgICBwYXJhbWV0ZXJzLnRlcm1p
bmF0aW9uVGltZW91dCA9IHNodXRkb3duVGltZW91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTM1N2U2Yzdm
NWI0OTBmN2I0MjQ4ZWM3NmY1YTUwNGUyYmYwMGVhYi4uODI4MGY2Nzk4YzI2YTZlZTY0YWM4YzNh
M2U0NTllNzAyYmE2YTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IFJh
d1BsdWdpbk1ldGFEYXRhIHsKIAogY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IDogcHVibGljIFJl
ZkNvdW50ZWQ8UGx1Z2luUHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vz
c1Byb3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAgICAgflBsdWdpblByb2Nlc3NQcm94eSgp
OwogCiAgICAgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0
dXJuIG1fcGx1Z2luSW5mbzsgfQpAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIAorICAgIGJvb2wgaXNT
bmFwc2hvdFByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2lzU25hcHNob3RQcm9jZXNzOyB9CisK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9v
bCk7CiAKQEAgLTk3LDcgKzk5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAg
UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9k
dWxlSW5mbyYpOworICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlcios
IGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKIAogICAg
IHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKQEAgLTE3MSw2
ICsxNzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93aW5n
OwogICAgIHVuc2lnbmVkIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnM7CiAj
ZW5kaWYKKworICAgIGJvb2wgbV9pc1NuYXBzaG90UHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggZmY5NmFiOTZjZWEzZWZh
NWJjZDAxZGFlMjEzYWIyY2U5MTJjNTgxNS4uMzg5MmZkNDVhYWJmMzEzODg4ZmZjNWI5ZDgwMWQz
Y2Y2OTczZjZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgOiBtX3dlYlBsdWdpblNpdGVEYXRhTWFuYWdlcih3ZWJQbHVnaW5T
aXRlRGF0YU1hbmFnZXIpCiAgICAgICAgICwgbV9jYWxsYmFja0lEKGNhbGxiYWNrSUQpCiAgICAg
ICAgICwgbV9wbHVnaW5zKHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlci0+bV93ZWJDb250ZXh0LT5w
bHVnaW5JbmZvU3RvcmUoKS5wbHVnaW5zKCkpCisgICAgICAgICwgbV9nZXRTbmFwc2hvdFByb2Nl
c3NEYXRhKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTU3LDggKzU4LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFBsdWdpblByb2Nlc3NN
YW5hZ2VyOjpzaGFyZWQoKS5nZXRTaXRlc1dpdGhEYXRhKG1fcGx1Z2lucy5sYXN0KCksIG1fd2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCBtX2NhbGxiYWNrSUQpOwotICAgICAgICBtX3BsdWdpbnMu
cmVtb3ZlTGFzdCgpOworICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0
U2l0ZXNXaXRoRGF0YShtX3BsdWdpbnMubGFzdCgpLCBtX2dldFNuYXBzaG90UHJvY2Vzc0RhdGEs
IG1fd2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCBtX2NhbGxiYWNrSUQpOworICAgICAgICBpZiAo
bV9nZXRTbmFwc2hvdFByb2Nlc3NEYXRhKQorICAgICAgICAgICAgbV9wbHVnaW5zLnJlbW92ZUxh
c3QoKTsKKyAgICAgICAgbV9nZXRTbmFwc2hvdFByb2Nlc3NEYXRhID0gIW1fZ2V0U25hcHNob3RQ
cm9jZXNzRGF0YTsKICAgICB9CiAKICAgICB2b2lkIGRpZEdldFNpdGVzV2l0aERhdGFGb3JTaW5n
bGVQbHVnaW4oY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzKQpAQCAtNzQsNiArNzcsNyBAQCBw
cml2YXRlOgogICAgIHVpbnQ2NF90IG1fY2FsbGJhY2tJRDsKICAgICBWZWN0b3I8UGx1Z2luTW9k
dWxlSW5mbz4gbV9wbHVnaW5zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NpdGVzOworICAgIGJv
b2wgbV9nZXRTbmFwc2hvdFByb2Nlc3NEYXRhOwogfTsKIAogY2xhc3MgV2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyOjpDbGVhclNpdGVEYXRhU3RhdGUgewpAQCAtODUsNiArODksNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9tYXhBZ2VJblNlY29uZHMobWF4QWdlSW5TZWNvbmRzKQogICAgICAgICAs
IG1fY2FsbGJhY2tJRChjYWxsYmFja0lEKQogICAgICAgICAsIG1fcGx1Z2lucyh3ZWJQbHVnaW5T
aXRlRGF0YU1hbmFnZXItPm1fd2ViQ29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCkucGx1Z2lucygp
KQorICAgICAgICAsIG1fZ2V0U25hcHNob3RQcm9jZXNzRGF0YShmYWxzZSkKICAgICB7CiAgICAg
fQogCkBAIC05NSw4ICsxMDAsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmNsZWFyU2l0
ZURhdGEobV9wbHVnaW5zLmxhc3QoKSwgbV93ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIG1fc2l0
ZXMsIG1fZmxhZ3MsIG1fbWF4QWdlSW5TZWNvbmRzLCBtX2NhbGxiYWNrSUQpOwotICAgICAgICBt
X3BsdWdpbnMucmVtb3ZlTGFzdCgpOworICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hh
cmVkKCkuY2xlYXJTaXRlRGF0YShtX3BsdWdpbnMubGFzdCgpLCBtX2dldFNuYXBzaG90UHJvY2Vz
c0RhdGEsIG1fd2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCBtX3NpdGVzLCBtX2ZsYWdzLCBtX21h
eEFnZUluU2Vjb25kcywgbV9jYWxsYmFja0lEKTsKKyAgICAgICAgaWYgKG1fZ2V0U25hcHNob3RQ
cm9jZXNzRGF0YSkKKyAgICAgICAgICAgIG1fcGx1Z2lucy5yZW1vdmVMYXN0KCk7CisgICAgICAg
IG1fZ2V0U25hcHNob3RQcm9jZXNzRGF0YSA9ICFtX2dldFNuYXBzaG90UHJvY2Vzc0RhdGE7CiAg
ICAgfQogCiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRhRm9yU2luZ2xlUGx1Z2luKCkKQEAgLTEx
MSw2ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fbWF4QWdlSW5TZWNvbmRzOwog
ICAgIHVpbnQ2NF90IG1fY2FsbGJhY2tJRDsKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4g
bV9wbHVnaW5zOworICAgIGJvb2wgbV9nZXRTbmFwc2hvdFByb2Nlc3NEYXRhOwogfTsKICNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMzliNjk5YWU2MjBkYjJkM2Y1YTY4YjNjY2YxNzEz
NDE2ZThlMmE0NC4uZDQ1OTIxMWFiYWNhMmJkYTk5NWE0YmNmMGQzMjllZGMzZjExMzMxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM4MCw5
ICszODAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUGF0aChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cgogCiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBzbmFwc2hvdFByb2Nlc3MsIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gcmVwbHkpCiB7Ci0gICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBs
dWdpblBhdGgsIHJlcGx5KTsKKyAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1
Z2luUGF0aCwgc25hcHNob3RQcm9jZXNzLCByZXBseSk7CiB9CiAKICNlbGlmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IGEwMTIwZWY1YTc1ZWIxMTZlNzEyZjEzYjcwMDhiZWFmNTliZWNiZWYuLjhmZmZh
MzI4M2ZiMjc2OWRiNmRjZDY3NGYzNDllOWFlOWNjM2I0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+KTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgdm9pZCBnZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIHNuYXBzaG90UHJvY2VzcywgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pik7CiAjZWxpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lk
IGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENsZWFyUGx1Z2luU2l0ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMmUyZjA4ZWE5MTIxMWExMzMxNjY1YWQ0
MzdlZjljYzNmYzliZWEyLi41OWYwMWY5YjU4MTRjZWE4MWIwYzUxMDc1Yjc1NGJlZDQzZDI4MmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5
IHsKICAgICBHZXRQbHVnaW5QYXRoKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyB1
cmxTdHJpbmcpIC0+IChXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCB1aW50MzJfdCBwbHVnaW5Mb2Fk
UG9saWN5KQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0
cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
LCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKKyAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCBib29sIHNu
YXBzaG90UHJvY2VzcykgLT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwg
Ym9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgIUVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKICAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5n
PiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDY0OGE1MWViOGI4ODY3NGI2ZWViOTU1OWQzMGQwMWNiMzllMTRkNTkuLjk4N2FkODE5YzMy
NWE3NTQ0ZTFiNzBkN2MxODI1NGVlMjhmZWIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtNDEsOSArNDEsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wg
aXNTbmFwc2hvdFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQorICAg
ICwgbV9pc1NuYXBzaG90UHJvY2Vzcyhpc1NuYXBzaG90UHJvY2VzcykKICAgICAsIG1fc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKQogewogICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5l
Y3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMs
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCmlu
ZGV4IGJjNjU1OGZmZGNkOTdiMDM5ZmU3YWIxNjA1MTIzYWJlYTg5ZGU0OGEuLjNkOWY0OTIyY2Y4
NGI1YzJmYTk0NTY3ZjJmOWVkY2M3NjE5NTc3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCkBA
IC00Myw5ICs0Myw5IEBAIGNsYXNzIFBsdWdpblByb3h5OwogICAgIAogY2xhc3MgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bj4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0
ZShQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNz
LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBi
b29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIs
IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIsIHBsdWdpblBhdGgsIGlzU25hcHNob3RQcm9jZXNzLCBjb25uZWN0aW9u
SWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpOwog
ICAgIH0KICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIApAQCAtNTksOSArNTksMTAg
QEAgcHVibGljOgogICAgIE5QUmVtb3RlT2JqZWN0TWFwKiBucFJlbW90ZU9iamVjdE1hcCgpIGNv
bnN0IHsgcmV0dXJuIG1fbnBSZW1vdGVPYmplY3RNYXAuZ2V0KCk7IH0KIAogICAgIGJvb2wgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsgfQorICAgIGJvb2wgaXNT
bmFwc2hvdFByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2lzU25hcHNob3RQcm9jZXNzOyB9CiAK
IHByaXZhdGU6Ci0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNo
cm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9v
bCBpc1NuYXBzaG90UHJvY2VzcywgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
KTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwpAQCAtNzUsNiArNzYsNyBA
QCBwcml2YXRlOgogCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsKICAgICBTdHJpbmcgbV9wbHVnaW5QYXRoOworICAg
IGJvb2wgbV9pc1NuYXBzaG90UHJvY2VzczsKIAogICAgIC8vIFRoZSBjb25uZWN0aW9uIGZyb20g
dGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBwbHVnLWluIHByb2Nlc3MuCiAgICAgUmVmUHRyPENvcmVJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHAKaW5kZXggYjc3MDUwOTkyNmQwZTI0MDRhYzAwYWY0OTk2ZDNkZDQyM2RhYmYz
Yy4uMThkODI5MDI5MjQ1MzljOGQwZGY3ZWY4Mzc5ZTJmOTY3OTY4NjRmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTQ5LDE2ICs0OSwxNyBAQCBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6On5QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIo
KQogewogfQogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpCitQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIGJvb2wgc25hcHNob3RQbHVnaW4pCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9w
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnNbaV0tPnBsdWdpblBhdGgoKSA9PSBwbHVnaW5QYXRoKQot
ICAgICAgICAgICAgcmV0dXJuIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zW2ldLmdldCgpOwor
ICAgICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+JiBwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiA9IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zW2ldOworICAgICAgICBpZiAoKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkgPT0gcGx1Z2luUGF0aCkgJiYgKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLT5pc1NuYXBzaG90UHJvY2VzcygpID09IHNuYXBzaG90UGx1
Z2luKSkKKyAgICAgICAgICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsK
ICAgICB9CiAKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRp
ZmllcjsKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBhdGgp
LAorICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVn
aW5QYXRoLCBzbmFwc2hvdFBsdWdpbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1
cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTcyLDE1ICs3MywyMiBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICBy
ZXR1cm4gMDsKICNlbmRpZgogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUo
dGhpcywgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9u
b3VzSW5pdGlhbGl6YXRpb24pOworICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4g
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRl
KHRoaXMsIHBsdWdpblBhdGgsIHNuYXBzaG90UGx1Z2luLCBjb25uZWN0aW9uSWRlbnRpZmllciwg
c3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CiAgICAgbV9wbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKIAorICAgIGlmICgh
c25hcHNob3RQbHVnaW4pCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRo
c0FuZENvbm5lY3Rpb25zTXV0ZXgpOwotICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmRDb25uZWN0
aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7Cisg
ICAgICAgIEFTU0VSVCghbV9wYXRoc0FuZFJlZ3VsYXJQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFp
bnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOwogCi0gICAgICAgIG1f
cGF0aHNBbmRDb25uZWN0aW9ucy5zZXQocGx1Z2luUGF0aCwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKSk7CisgICAgICAgIG1fcGF0aHNBbmRSZWd1bGFyUHJvY2Vzc0Nvbm5l
Y3Rpb25zLnNldChwbHVnaW5QYXRoLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRoc0Fu
ZENvbm5lY3Rpb25zTXV0ZXgpOworICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmRTbmFwc2hvdFBy
b2Nlc3NDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2lu
UGF0aCgpKSk7CisKKyAgICAgICAgbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25z
LnNldChwbHVnaW5QYXRoLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsK
ICAgICB9CisgICAgCiAKICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7
CiB9CkBAIC05MiwxOCArMTAwLDIxIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzCiAKICAgICB7
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleCk7
Ci0gICAgICAgIEFTU0VSVChtX3BhdGhzQW5kQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOwotICAgICAgICAKLSAgICAgICAgbV9wYXRo
c0FuZENvbm5lY3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0
aCgpKTsKKyAgICAgICAgQVNTRVJUKG1fcGF0aHNBbmRSZWd1bGFyUHJvY2Vzc0Nvbm5lY3Rpb25z
LmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpCisgICAgICAg
ICAgICB8fCBtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMocGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOworCisgICAgICAgIG1fcGF0aHNB
bmRSZWd1bGFyUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi0+cGx1Z2luUGF0aCgpKTsKKyAgICAgICAgbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5l
Y3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKTsKICAg
ICB9CiAKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUodmVjdG9ySW5kZXgp
OwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vz
c0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgYm9vbCBzbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cGF0aHNBbmRDb25uZWN0aW9uc011dGV4KTsKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uID0gbV9wYXRoc0FuZENvbm5lY3Rpb25zLmdldChwbHVnaW5QYXRoKS5nZXQoKTsKKyAg
ICBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gIXNuYXBzaG90UHJvY2VzcyA/IG1f
cGF0aHNBbmRSZWd1bGFyUHJvY2Vzc0Nvbm5lY3Rpb25zLmdldChwbHVnaW5QYXRoKS5nZXQoKQor
ICAgICAgICA6IG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5nZXQocGx1Z2lu
UGF0aCkuZ2V0KCk7CiAKICAgICAvLyBJdCdzIE9LIGZvciBjb25uZWN0aW9uIHRvIGJlIG51bGwg
aGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3ZWIgcHJvY2VzcyBkb2Vzbid0IGtub3cKICAg
ICAvLyBhbnl0aGluZyBhYm91dCB0aGUgcGx1Zy1pbiBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5oCmluZGV4IDQ1NTE1Y2RmMTRkNjJiNGM3NDQyMTJiMzdjMDIwNzE3
ODBmZTY4YWIuLmJlZDljZjI4MGUxMmQxNzgwNzUzNzk2OTYyZWI0Y2YyYjZhNDgzNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKQEAgLTUxLDE3ICs1MSwxOCBAQCBwdWJs
aWM6CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CiAgICAgflBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpOwogCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24q
IGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7Cisg
ICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBzbmFwc2hvdFBsdWdpbik7CiAgICAgdm9pZCBy
ZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiopOwog
CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSB3ZWIgcHJvY2VzcyBjb25uZWN0aW9uIHdvcmsgcXVldWUu
Ci0gICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
OworICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBib29sIHNuYXBzaG90UHJvY2Vzcyk7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gPiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uczsKIAog
ICAgIE11dGV4IG1fcGF0aHNBbmRDb25uZWN0aW9uc011dGV4OwotICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kQ29ubmVjdGlvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNB
bmRSZWd1bGFyUHJvY2Vzc0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8
Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNzQ29ubmVjdGlv
bnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcAppbmRleCA5OGYzMzM5NjNlMDNjNzFiZjFmNmI3NzdjNTJjNWZhNzU5ZTlm
YjhkLi5mYzkzNTFmN2NhNzdiMDZkMTI1ZTU5ODA5MjdlNGIwMWU2Njk5Zjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTU1
LDEyICs1NSwxMiBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQbHVnaW5JbnN0YW5jZUlEKCkK
ICAgICByZXR1cm4gKyt1bmlxdWVQbHVnaW5JbnN0YW5jZUlEOwogfQogCi1QYXNzUmVmUHRyPFBs
dWdpblByb3h5PiBQbHVnaW5Qcm94eTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkK
K1Bhc3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQbHVnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbHVnaW5Qcm94eShwbHVnaW5QYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQbHVnaW5Qcm94eShwbHVnaW5QYXRoLCBpc1NuYXBzaG90UGx1Z2luKSk7CiB9CiAKLVBsdWdp
blByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCitQbHVnaW5Qcm94
eTo6UGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQ
bHVnaW4pCiAgICAgOiBtX3BsdWdpblBhdGgocGx1Z2luUGF0aCkKICAgICAsIG1fcGx1Z2luSW5z
dGFuY2VJRChnZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKSkKICAgICAsIG1fcGx1Z2luQmFja2lu
Z1N0b3JlQ29udGFpbnNWYWxpZERhdGEoZmFsc2UpCkBAIC02OSw2ICs2OSw3IEBAIFBsdWdpblBy
b3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAgLCBtX3dhbnRz
V2hlZWxFdmVudHMoZmFsc2UpCiAgICAgLCBtX3JlbW90ZUxheWVyQ2xpZW50SUQoMCkKICAgICAs
IG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oZmFsc2UpCisgICAgLCBtX2lz
U25hcHNob3RQbHVnaW4oaXNTbmFwc2hvdFBsdWdpbikKIHsKIH0KIApAQCAtODQsNyArODUsNyBA
QCB2b2lkIFBsdWdpblByb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCgpCiBib29sIFBsdWdpblBy
b3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgQVNT
RVJUKCFtX2Nvbm5lY3Rpb24pOwotICAgIG1fY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpLmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKG1fcGx1Z2luUGF0aCk7CisgICAgbV9jb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24obV9wbHVnaW5QYXRoLCBtX2lzU25hcHNob3RQbHVnaW4pOwogICAgIAogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDgxMDRhZjIwNDNkZGZk
OTgzMDg1NzcxZmFhODQ3MTU4ZDlmOWYwMjQuLjU4ZWE3Yzc4ZGJhMTk4NGQzZDZkMzY4ODM2Yzhj
MjgyMmRiYTQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnM7CiAKIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb3h5PiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQbHVnaW4pOwogICAgIH5QbHVn
aW5Qcm94eSgpOwogCiAgICAgdWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGx1Z2luSW5zdGFuY2VJRDsgfQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIGV4cGxp
Y2l0IFBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90
UGx1Z2luKTsKIAogICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNv
bnN0IFBhcmFtZXRlcnMmKTsKQEAgLTIwMiw2ICsyMDIsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wbHVnaW5MYXllcjsKICNlbmRpZgor
CisgICAgYm9vbCBtX2lzU25hcHNob3RQbHVnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAyMzEyZTg0YzM3YjU1ODg3MGRmYmEwZDI3MDkzM2JjYjllZDExNGMzLi4zZjU5NzQ1N2NhODA0
YWY0NDg0NTE1YTAzMDc4NmQ3MjgwNmM3NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MzIsNyArNTMyLDggQEAgUGFzc1JlZlB0cjxQ
bHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5F
bGVtZW50KiBwbHUKICAgICB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgcmV0
dXJuIFBsdWdpblByb3h5OjpjcmVhdGUocGx1Z2luUGF0aCk7CisgICAgYm9vbCBpc1NuYXBzaG90
UGx1Z2luID0gKHBsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpID09IEhUTUxQbHVnSW5FbGVt
ZW50OjpXYWl0aW5nRm9yU25hcHNob3QpOworICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRl
KHBsdWdpblBhdGgsIGlzU25hcHNob3RQbHVnaW4pOwogI2Vsc2UKICAgICBOZXRzY2FwZVBsdWdp
bjo6c2V0U2V0RXhjZXB0aW9uRnVuY3Rpb24oTlBSdW50aW1lT2JqZWN0TWFwOjpzZXRHbG9iYWxF
eGNlcHRpb24pOwogICAgIHJldHVybiBOZXRzY2FwZVBsdWdpbjo6Y3JlYXRlKE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpnZXRPckNyZWF0ZShwbHVnaW5QYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2MGZlNzMxYjllMzZhYmQwN2RmZWI3NmQ0MTdjOGJi
ZjdiYjFmN2E2Li5kZjE3NDViNDRlOTAwNmI0OWIzMjk0ZjYyMDVmMGYwNDM4NmYzN2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwNjEsOSArMTA2MSw5
IEBAIHZvaWQgV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5l
Y3Rpb24qKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi12b2lkIFdlYlBy
b2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgpCit2b2lkIFdlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgc25h
cHNob3RQcm9jZXNzKQogewotICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLnBs
dWdpblByb2Nlc3NDcmFzaGVkKHBsdWdpblBhdGgpOworICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLnBsdWdpblByb2Nlc3NDcmFzaGVkKHBsdWdpblBhdGgsIHNuYXBzaG90UHJv
Y2Vzcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCAwYjNjMGZiOTk4ZDQ3MWRkMjlkZjczZmQzYjY4OWRiZGY0MThjN2NmLi42ZTUxOTkxZmE4
MmI2YTJjNTEwNWExM2M4NmZiMzNjOThhYzE5NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgdm9pZCBwbHVn
aW5Qcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCBib29sIHNuYXBzaG90UHJvY2Vzcyk7CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRN
ZW1vcnlTYW1wbGVyKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMmMxYjQzMDUyMzY0ZDM2ZmI2MmE2ZWQ3ZTliYzJhZjRj
M2Q4MDVlYi4uZDE5ODcwMTg0NDZmMzg0NGNiZjJlYWU5OWJhNzNhYjI0OGNkM2I3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
NjksNyArNjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIFBsdWdpblByb2Nlc3NDcmFzaGVkKFN0cmluZyBwbHVn
aW5Qcm9jZXNzKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCisgICAgUGx1Z2luUHJvY2Vzc0Ny
YXNoZWQoU3RyaW5nIHBsdWdpblByb2Nlc3MsIGJvb2wgc25hcHNob3RQcm9jZXNzKSBEaXNwYXRj
aE9uQ29ubmVjdGlvblF1ZXVlCiAjZW5kaWYKIAogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVy
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFdU
Rjo6U3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoLCBkb3VibGUgaW50ZXJ2YWwpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173433</attachid>
            <date>2012-11-09 21:04:10 -0800</date>
            <delta_ts>2012-11-26 14:22:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121109210217.patch</filename>
            <type>text/plain</type>
            <size>37384</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTk5NDAyMjFmZmFkNDEz
ZWJhMDJlMzE3MWU3YjA3MmE1MjlmNDA5NC4uN2ZkMjk4NDc1YmVjY2YyNjE4NjIwYThhZjdmOWRh
MTllOTU2MWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTA5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKTogTXV0ZSBhdWRpbyBpZiBzcGVjaWZpZWQgYnkgcHJvY2VzcyBjcmVhdGlv
biBwYXJhbWV0ZXJzLgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWRkIHNob3VsZE11dGVBdWRpbyBwcm9jZXNz
IGNyZWF0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOiBGb3J3
YXJkIG1lc3NhZ2UgdG8gbm9uIHNuYXBzaG90IHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBt
ZXNzYWdlIHRvIG5vbiBzbmFwc2hvdCBwbHVnaW4gcHJvY2VzcyBvbmx5LgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKTogQWRkIGJv
b2xlYW4gc25hcHNob3RQcm9jZXNzIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBBZGQgc25hcHNob3QgcGx1Z2luIHByb2Nlc3Mgc3Rh
dHVzIHRvIHBsdWdpbiBwcm9jZXNzIGNyYXNoZWQgbWVzc2FnZS4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBTZXQgc2hvdWxkTXV0ZUF1
ZGlvIHByb2Nlc3MgY3JlYXRpb24gcGFyYW1ldGVyIGZvciBzbmFwc2hvdAorICAgICAgICBwbHVn
aW4gcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmlzU25hcHNob3RQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjppc1NuYXBzaG90UHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBGYWN0b3Igb3V0IGNvZGUgaW50bworICAgICAgICBnZXRQ
cm9jZXNzQ29ubmVjdGlvbiBoZWxwZXIgbWV0aG9kIGZvciByZXVzZSBieSBnZXRTbmFwc2hvdFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OlBsdWdpblByb3h5KTogQWRkIGlzU25hcHNob3RQbHVnaW4gYm9vbGVhbiBtZW1iZXIg
dG8gaW5kaWNhdGUgaWYgdGhlIHBsdWdpbiBpcworICAgICAgICB0byBiZSB1c2VkIGZvciBnZW5l
cmF0aW5nIGEgc25hcHNob3QuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEZXRlcm1pbmUgaWYgdGhlIHBsdWdpbiB0byBiZSBjcmVh
dGVkIGlzIGEgc25hcHNob3QgcGx1Z2luIGJhc2VkIG9uIHRoZQorICAgICAgICBkaXNwbGF5IHN0
YXRlIG9mIEhUTUxQbHVnSW5FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMTEtMDkgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBXZWJSZXNvdXJjZUJ1ZmZl
cjo6aXNFbXB0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9X
ZWJLaXQyLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54
Y2NvbmZpZwppbmRleCAzZTQ1ODhjNjJiYTM2ZTk2NWZmN2M5Nzk4NzE1Y2JlZGFjZDM0M2FkLi5k
ODhlYjE4YzNlNDI4N2QyOTA1YWVhNjEwMWFlOWUzMWMzNTZjMDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKQEAgLTI5LDcgKzI5LDcgQEAg
SU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChXRUJLSVQyX0ZS
QU1FV09SS1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChOT1JNQUxfV0VCS0lU
Ml9GUkFNRVdPUktTX0RJUik7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZy
YW1ld29yayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsg
Q29jb2EgLWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3Jr
IEphdmFTY3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29y
ayBTZWN1cml0eSAtZnJhbWV3b3JrIFdlYkNvcmU7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERG
TEFHUyA9IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAt
ZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQg
LWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3Jl
IC1mcmFtZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlIC1mcmFtZXdvcmsgQ29yZUF1
ZGlvOwogCiBPVEhFUl9MREZMQUdTID0gJChPVEhFUl9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkp
ICQoT1RIRVJfTERGTEFHUyk7CiBPVEhFUl9MREZMQUdTX21hY29zeCA9ICQoRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3
ZDVlNjI4ZWU3ZWQ3ZWQyZi4uNmU4ZDNiMWIxMjYyMzQ5OWE4NmU2MzI5NTc0NzFlOGMxNThkZTlm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzU2hp
bS5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlBs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTMwNCw2
ICszMDUsMTQgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgogCitzdGF0aWMg
dm9pZCBtdXRlQXVkaW8odm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyB0
aGVBZGRyZXNzID0ge2tBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVk
aW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRN
YXN0ZXJ9OworICAgIFVJbnQzMiB0aGVEYXRhID0gMDsKKyAgICBpZiAoQXVkaW9PYmplY3RTZXRQ
cm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmdGhlQWRkcmVzcywgMCwgMCwg
c2l6ZW9mKFVJbnQzMiksICZ0aGVEYXRhKSAhPSBub0VycikKKyAgICAgICAgQ1JBU0goKTsKK30K
Kwogdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0aW5n
UmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQu
cG9ydCgpOwpAQCAtMzE5LDYgKzMyOCw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlhbGl6ZVNh
bmRib3gobV9wbHVnaW5QYXRoLCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0
aCk7CiAjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZE11dGVBdWRpbykKKyAgICAg
ICAgbXV0ZUF1ZGlvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBmNTNjMjZlNmIwMWZiNTNmZWRjODg3MTI3ODY0MmY5
N2Q2Y2NmNDZkLi42YTJhNGM2NmI3NDgwZGNiYTQwMzRjZmQ1YjE2ZTYyMjIwNTQ5MjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCBQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
KCkKIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHBsdWdp
blBhdGg7CisgICAgZW5jb2RlciA8PCBzaG91bGRNdXRlQXVkaW87CiAgICAgZW5jb2RlciA8PCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIgPDwg
bWluaW11bUxpZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwpAQCAt
NTUsNiArNTYsOCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocmVzdWx0LnBsdWdpblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnNob3VsZE11dGVBdWRpbykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhNDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNlOGRmMDQ3
MzVkZTVjMTFlLi4wYjBhOWM2MDQwMmU5ZDJlY2ZiM2UwMjdlM2NjYWRlMTA0YmM1ZWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYp
OwogCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CisgICAgYm9vbCBzaG91bGRNdXRlQXVkaW87CiAg
ICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAg
ZG91YmxlIG1pbmltdW1MaWZldGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBmNDk3ODk1ZGI0
MmQ5NzUyZWEwYjdjNGVkNTMyNDFiMzg2ZThhZTlkLi41YWRlMGYwMGFkYzgzNWIyMDgzMmJjMmNl
YWYyM2FiY2M1NmJmMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC01MCw3ICs1MCwxNiBAQCB2
b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBQbHVnaW5JbmZvU3RvcmUmIHBsdQogICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7
CiAKICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IHBsdWdpbkluZm9TdG9yZS5pbmZvRm9y
UGx1Z2luV2l0aFBhdGgocGx1Z2luUGF0aCk7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVn
aW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbik7CisgICAgUGx1Z2lu
UHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBs
dWdpbiwgZmFsc2UpOworICAgIHBsdWdpblByb2Nlc3MtPmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKHJlcGx5KTsKK30KKwordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0U25hcHNob3RQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdWdpbkluZm9T
dG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5KQoreworICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7CisgICAgCisgICAgUGx1
Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUuaW5mb0ZvclBsdWdpbldpdGhQ
YXRoKHBsdWdpblBhdGgpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9
IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIHRydWUpOwogICAgIHBsdWdpblByb2Nl
c3MtPmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KIApAQCAtNjQsMzIgKzcz
LDMzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NQcm94
eShQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFn
ZXI6OmdldFNpdGVzV2l0aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBXZWJQ
bHVnaW5TaXRlRGF0YU1hbmFnZXIqIHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBn
ZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkq
IHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxzZSk7
CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0U2l0ZXNXaXRoRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1h
bmFnZXIsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVh
clNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3Mg
PSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxz
ZSk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Y2xlYXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1h
bmFnZXIsIHNpdGVzLCBmbGFncywgbWF4QWdlSW5TZWNvbmRzLCBjYWxsYmFja0lEKTsKIH0KIAot
UGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dp
dGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NQcm94eSogUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9wbHVnaW5Qcm9jZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fcGx1
Z2luUHJvY2Vzc2VzW2ldLT5wbHVnaW5JbmZvKCkucGF0aCA9PSBwbHVnaW5QYXRoKQotICAgICAg
ICAgICAgcmV0dXJuIG1fcGx1Z2luUHJvY2Vzc2VzW2ldLmdldCgpOworICAgICAgICBSZWZQdHI8
UGx1Z2luUHJvY2Vzc1Byb3h5PiYgcGx1Z2luUHJvY2Vzc1Byb3h5ID0gbV9wbHVnaW5Qcm9jZXNz
ZXNbaV07CisgICAgICAgIGlmICgocGx1Z2luUHJvY2Vzc1Byb3h5LT5wbHVnaW5JbmZvKCkucGF0
aCA9PSBwbHVnaW5QYXRoKSAmJiAocGx1Z2luUHJvY2Vzc1Byb3h5LT5pc1NuYXBzaG90UHJvY2Vz
cygpID09IHNuYXBzaG90UHJvY2VzcykpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vz
c1Byb3h5LmdldCgpOwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QbHVnaW5Qcm9jZXNz
UHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbiwgYm9vbCBzbmFwc2hvdFByb2Nlc3MpCiB7Ci0gICAgaWYgKFBsdWdpblBy
b2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IHBsdWdpblByb2Nlc3NXaXRoUGF0aChwbHVnaW4u
cGF0aCkpCisgICAgaWYgKFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IHBsdWdp
blByb2Nlc3NXaXRoUGF0aChwbHVnaW4ucGF0aCwgc25hcHNob3RQcm9jZXNzKSkKICAgICAgICAg
cmV0dXJuIHBsdWdpblByb2Nlc3M7CiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBw
bHVnaW5Qcm9jZXNzID0gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgcGx1Z2luKTsK
KyAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBwbHVnaW5Qcm9jZXNzID0gUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUodGhpcywgcGx1Z2luLCBzbmFwc2hvdFByb2Nlc3MpOwogICAgIFBs
dWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7
CiAKICAgICBtX3BsdWdpblByb2Nlc3Nlcy5hcHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxlYXNlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmgKaW5kZXggNWU1MTk0MjdiYTNmMWRkZmIzN2JkOGJlODNmMzI5NzhjNDdi
OGI5Mi4uMGU4ODM3MWZmMTgwZDEwN2YxYWIwNzRhODZhMTdkZjgzZjYzNmJlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFu
YWdlci5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vz
c01hbmFnZXImIHNoYXJlZCgpOwogCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBQbHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgZ2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1By
b3h5KFBsdWdpblByb2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKQEAgLTYzLDggKzY0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQ
bHVnaW5Qcm9jZXNzTWFuYWdlcigpOwogCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNy
ZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAgIFBsdWdpblBy
b2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCk7CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKKyAgICBQbHVnaW5Q
cm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJv
Y2Vzc1Byb3h5PiA+IG1fcGx1Z2luUHJvY2Vzc2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IDBj
MmU4Njg5ZTY0ODg3NjgwZTQyYTEzNDkzYzBmM2U1MGUwYmIxMmEuLjc4ZjVmZjAxMDg2ZThhNzkz
MGNmNWRmYzFhNjM2MWE5Y2VhMWRmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTAsMTIgKzUwLDEy
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtTGlmZXRp
bWUgPSAzMCAqIDYwOwogc3RhdGljIGNvbnN0IGRvdWJsZSBzaHV0ZG93blRpbWVvdXQgPSAxMCAq
IDYwOwogCi1QYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gUGx1Z2luUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKQorUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNz
UHJveHk+IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbywg
Ym9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdp
blByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciwgcGx1Z2luSW5mbykpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2Vy
LCBwbHVnaW5JbmZvLCBpc1NuYXBzaG90UHJvY2VzcykpOwogfQogCi1QbHVnaW5Qcm9jZXNzUHJv
eHk6OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vz
c01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitQbHVnaW5Qcm9j
ZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2lu
UHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8sIGJvb2wg
aXNTbmFwc2hvdFByb2Nlc3MpCiAgICAgOiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyKFBsdWdpblBy
b2Nlc3NNYW5hZ2VyKQogICAgICwgbV9wbHVnaW5JbmZvKHBsdWdpbkluZm8pCiAgICAgLCBtX251
bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKQEAgLTY0LDYgKzY0LDcgQEAgUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdp
blByb2Nlc3NNYW5hZ2UKICAgICAsIG1fZnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZyhmYWxzZSkK
ICAgICAsIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnMoMCkKICNlbmRpZgor
ICAgICwgbV9pc1NuYXBzaG90UHJvY2Vzcyhpc1NuYXBzaG90UHJvY2VzcykKIHsKICAgICBQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKICAgICBsYXVuY2hPcHRp
b25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNzOwpAQCAtMTcz
LDcgKzE3NCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShDb3JlSVBDOjpD
b25uZWN0aW9uKikKIAogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0g
V2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
bnRleHRzLnNpemUoKTsgKytpKQotICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChtX3BsdWdpbklu
Zm8ucGF0aCkpOworICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChtX3BsdWdpbkluZm8ucGF0aCwg
bV9pc1NuYXBzaG90UHJvY2VzcykpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJl
IGRlbGV0ZWQuCiAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CkBA
IC0yMDQsNiArMjA1LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKICAgICBwYXJhbWV0ZXJzLnBsdWdp
blBhdGggPSBtX3BsdWdpbkluZm8ucGF0aDsKKyAgICBwYXJhbWV0ZXJzLnNob3VsZE11dGVBdWRp
byA9IG1faXNTbmFwc2hvdFByb2Nlc3M7CiAKICAgICBwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGlt
ZSA9IG1pbmltdW1MaWZldGltZTsKICAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9
IHNodXRkb3duVGltZW91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggMTM1N2U2YzdmNWI0OTBmN2I0MjQ4ZWM3
NmY1YTUwNGUyYmYwMGVhYi4uODI4MGY2Nzk4YzI2YTZlZTY0YWM4YzNhM2U0NTllNzAyYmE2YTdh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IFJhd1BsdWdpbk1ldGFEYXRh
IHsKIAogY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2lu
UHJvY2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNo
ZXI6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vz
c1Byb3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBjcmVhdGUo
UGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgYm9vbCBpc1Nu
YXBzaG90UHJvY2Vzcyk7CiAgICAgflBsdWdpblByb2Nlc3NQcm94eSgpOwogCiAgICAgY29uc3Qg
UGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5m
bzsgfQpAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KIAorICAgIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2lzU25hcHNob3RQcm9jZXNzOyB9CisKICNpZiBQTEFURk9STShN
QUMpCiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCk7CiAKQEAgLTk3LDcg
Kzk5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luUHJvY2Vzc1By
b3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOworICAg
IFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKIAogICAgIHZvaWQgcGx1Z2luUHJv
Y2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKQEAgLTE3MSw2ICsxNzMsOCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93aW5nOwogICAgIHVuc2lnbmVk
IG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnM7CiAjZW5kaWYKKworICAgIGJv
b2wgbV9pc1NuYXBzaG90UHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4YmMxNmNh
NTIwMDA5ZjMyZTg2MWEwMWVhZWQ4NmMwN2E1YjhhYTU2Li41MzFiM2E3MGM2N2Q1MDllNTVmZTlm
MDcwOWU1NTk0M2MyM2M4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMzgwLDkgKzM4MCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
Z2V0UGx1Z2luUGF0aChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0
cgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBzbmFwc2hv
dFByb2Nlc3MsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7Ci0gICAgUGx1Z2luUHJv
Y2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4
dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKKyAgICBpZiAoIXNuYXBz
aG90UHJvY2VzcykKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdp
blBhdGgsIHJlcGx5KTsKKyAgICBlbHNlCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpz
aGFyZWQoKS5nZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4dC0+cGx1
Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKIH0KIAogI2VsaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKaW5kZXggYTAxMjBlZjVhNzVlYjExNmU3MTJmMTNiNzAwOGJlYWY1OWJlY2JlZi4uOGZm
ZmEzMjgzZmIyNzY5ZGI2ZGNkNjc0ZjM0OWU5YWU5Y2MzYjQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25Q
dHI8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4pOwogI2VuZGlmIC8vIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICB2b2lkIGdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzLCBQYXNzUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+KTsKICNlbGlmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZv
aWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIyZTJmMDhlYTkxMjExYTEzMzE2NjVh
ZDQzN2VmOWNjM2ZjOWJlYTIuLjU5ZjAxZjliNTgxNGNlYTgxYjBjNTEwNzViNzU0YmVkNDNkMjgy
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJv
eHkgewogICAgIEdldFBsdWdpblBhdGgoV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5n
IHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIHVpbnQzMl90IHBsdWdpbkxv
YWRQb2xpY3kpCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFdURjo6
U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikgRGVsYXllZAorICAg
IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIGJvb2wg
c25hcHNob3RQcm9jZXNzKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
LCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKICNlbmRp
ZgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiAhRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQogICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpTdHJp
bmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggNjQ4YTUxZWI4Yjg4Njc0YjZlZWI5NTU5ZDMwZDAxY2IzOWUxNGQ1OS4uNGIwMDhmZGRj
YzVhMzM2MTQ4MWNjNGUxZmE2MWJlNGY1YjhiYjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC00MSwxMCArNDEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJv
b2wgaXNTbmFwc2hvdFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQog
ICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKHN1cHBvcnRz
QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCisgICAgLCBtX2lzU25hcHNob3RQcm9j
ZXNzKGlzU25hcHNob3RQcm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRo
aXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmgKaW5kZXggYmM2NTU4ZmZkY2Q5N2IwMzlmZTdhYjE2MDUxMjNhYmVhODlkZTQ4YS4uY2IxM2Vm
MGE1N2I4NzJmMGVkYjdlZDFlMzM5NWJiMTg1N2E3YmFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgUGx1Z2luUHJveHk7CiAgICAgCiBjbGFzcyBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uPiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4g
Y3JlYXRlKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsICBib29sIGlzU25hcHNob3RQ
cm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50
aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBsdWdpblBhdGgsIGlzU25hcHNob3RQcm9jZXNzLCBjb25u
ZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bikpOwogICAgIH0KICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIApAQCAtNjAsOCAr
NjAsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uOyB9CiAKKyAgICBib29sIGlzU25hcHNob3RQcm9jZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1NuYXBzaG90UHJvY2VzczsgfQorCiBwcml2YXRlOgotICAgIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciosIGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsK
KyAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIqLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MsIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wg
c3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CiAKICAgICAvLyBDb3JlSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKSBPVkVSUklERTsKQEAgLTg1LDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
TlBSZW1vdGVPYmplY3RNYXA+IG1fbnBSZW1vdGVPYmplY3RNYXA7CiAgICAgCiAgICAgYm9vbCBt
X3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CisKKyAgICBib29sIG1f
aXNTbmFwc2hvdFByb2Nlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggYjc3MDUwOTkyNmQwZTI0MDRhYzAw
YWY0OTk2ZDNkZDQyM2RhYmYzYy4uNzkzYTFiYzdlZGY1NDQwODU2MDAyMDQ0YTM4MDU4MzRhMDM5
NDUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTUxLDE0
ICs1MSwyNiBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6On5QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIoKQogCiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgpCiB7CisgICAgcmV0dXJuIGdldFByb2Nlc3NDb25uZWN0aW9uKHBs
dWdpblBhdGgsIGZhbHNlKTsKK30KKworUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCit7CisgICAgcmV0dXJuIGdldFByb2Nlc3NDb25u
ZWN0aW9uKHBsdWdpblBhdGgsIHRydWUpOworfQorCitQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiog
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKQorewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgaWYgKG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zW2ldLT5wbHVnaW5QYXRo
KCkgPT0gcGx1Z2luUGF0aCkKLSAgICAgICAgICAgIHJldHVybiBtX3BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uc1tpXS5nZXQoKTsKKyAgICAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
PiYgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tp
XTsKKyAgICAgICAgaWYgKChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpID09
IHBsdWdpblBhdGgpCisgICAgICAgICAgICAmJiAocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmlz
U25hcHNob3RQcm9jZXNzKCkgPT0gc25hcHNob3RQcm9jZXNzKSkKKyAgICAgICAgICAgIHJldHVy
biBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKICAgICBDb3JlSVBDOjpB
dHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBhdGgpLAorICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoLCBzbmFwc2hvdFByb2Nlc3Mp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVw
bHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC03MiwxNCArODQsMTggQEAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIAotICAg
IFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAg
ICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9u
ID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBzbmFw
c2hvdFByb2Nlc3MsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0lu
aXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwogCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwotICAgICAgICBBU1NFUlQoIW1fcGF0aHNB
bmRDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0
aCgpKSk7Ci0KLSAgICAgICAgbV9wYXRoc0FuZENvbm5lY3Rpb25zLnNldChwbHVnaW5QYXRoLCBw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKCFzbmFw
c2hvdFByb2Nlc3MpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9wYXRoc0FuZE5vblNuYXBzaG90
UHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVn
aW5QYXRoKCkpKTsKKyAgICAgICAgICAgIG1fcGF0aHNBbmROb25TbmFwc2hvdFByb2Nlc3NDb25u
ZWN0aW9ucy5zZXQocGx1Z2luUGF0aCwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmRT
bmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi0+cGx1Z2luUGF0aCgpKSk7CisgICAgICAgICAgICBtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNz
Q29ubmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmdldCgpOwpAQCAtOTIsMTggKzEwOCwyMyBAQCB2b2lkIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJv
Y2VzcwogCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5l
Y3Rpb25zTXV0ZXgpOwotICAgICAgICBBU1NFUlQobV9wYXRoc0FuZENvbm5lY3Rpb25zLmNvbnRh
aW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKLSAgICAgICAgCi0g
ICAgICAgIG1fcGF0aHNBbmRDb25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24tPnBsdWdpblBhdGgoKSk7CisgICAgICAgIGlmICghcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24t
PmlzU25hcHNob3RQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3BhdGhzQW5kTm9u
U25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24tPnBsdWdpblBhdGgoKSkpOworICAgICAgICAgICAgbV9wYXRoc0FuZE5vblNuYXBzaG90UHJv
Y2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0
aCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3BhdGhzQW5kU25h
cHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24t
PnBsdWdpblBhdGgoKSkpOworICAgICAgICAgICAgbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nv
bm5lY3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92
ZSh2ZWN0b3JJbmRleCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCit2b2lkIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIHNuYXBzaG90UHJvY2VzcykKIHsKICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwotICAgIENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuZ2V0KHBsdWdpblBh
dGgpLmdldCgpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSAhc25hcHNo
b3RQcm9jZXNzID8gbV9wYXRoc0FuZE5vblNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmdldChw
bHVnaW5QYXRoKS5nZXQoKQorICAgICAgICA6IG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25u
ZWN0aW9ucy5nZXQocGx1Z2luUGF0aCkuZ2V0KCk7CiAKICAgICAvLyBJdCdzIE9LIGZvciBjb25u
ZWN0aW9uIHRvIGJlIG51bGwgaGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3ZWIgcHJvY2Vz
cyBkb2Vzbid0IGtub3cKICAgICAvLyBhbnl0aGluZyBhYm91dCB0aGUgcGx1Zy1pbiBwcm9jZXNz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCmluZGV4IDQ1NTE1Y2RmMTRkNjJi
NGM3NDQyMTJiMzdjMDIwNzE3ODBmZTY4YWIuLjM3NGI5OWRmNmZlZjk2YTYxMDM2YjllOWZlODg0
MzdiNzYwNjZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKQEAgLTUy
LDE2ICs1MiwyMSBAQCBwdWJsaWM6CiAgICAgflBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cigpOwogCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24qIGdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoKTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKik7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIHdlYiBwcm9jZXNz
IGNvbm5lY3Rpb24gd29yayBxdWV1ZS4KLSAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKIAogcHJpdmF0
ZToKKworICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBnZXRQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKKwogICAgIFZl
Y3RvcjxSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+ID4gbV9wbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbnM7CiAKICAgICBNdXRleCBtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleDsKLSAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+ID4gbV9wYXRoc0FuZENv
bm5lY3Rpb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlv
bj4gPiBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNBbmRTbmFwc2hv
dFByb2Nlc3NDb25uZWN0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGExODgzNGE2YzlkOTdiYmNmNDY1
MjJjODNhZDg4MmU3OWQ1MjVmZDEuLjcyYjI4NGI4OGQ3NWFmMjgxZjIwZDU0MmRkMzlkNjNlMjdm
OTIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBs
dWdpbkluc3RhbmNlSUQoKQogICAgIHJldHVybiArK3VuaXF1ZVBsdWdpbkluc3RhbmNlSUQ7CiB9
CiAKLVBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoKQorUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gUGx1Z2luUHJveHk6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgsIGlzU25hcHNob3RQbHVn
aW4pKTsKIH0KIAotUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCkKK1BsdWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IGJvb2wgaXNTbmFwc2hvdFBsdWdpbikKICAgICA6IG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQog
ICAgICwgbV9wbHVnaW5JbnN0YW5jZUlEKGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgpKQogICAg
ICwgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YShmYWxzZSkKQEAgLTY5LDYg
KzY5LDcgQEAgUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCkKICAgICAsIG1fd2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVtb3RlTGF5ZXJD
bGllbnRJRCgwKQogICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbihm
YWxzZSkKKyAgICAsIG1faXNTbmFwc2hvdFBsdWdpbihpc1NuYXBzaG90UGx1Z2luKQogewogfQog
CkBAIC04NCw3ICs4NSw5IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KCkKIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci0gICAgbV9jb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9wbHVnaW5QYXRoKTsKKyAgICBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXImIGNvbm5lY3Rpb25NYW5hZ2VyID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CisgICAgbV9jb25uZWN0aW9uID0g
IW1faXNTbmFwc2hvdFBsdWdpbiA/IGNvbm5lY3Rpb25NYW5hZ2VyLmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKG1fcGx1Z2luUGF0aCkKKyAgICAgICAgOiBjb25uZWN0aW9uTWFuYWdlci5nZXRT
bmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fcGx1Z2luUGF0aCk7CiAgICAgCiAgICAg
aWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggODEwNGFmMjA0M2Rk
ZmQ5ODMwODU3NzFmYWE4NDcxNThkOWY5ZjAyNC4uNThlYTdjNzhkYmExOTg0ZDNkNmQzNjg4MzZj
OGMyODIyZGJhNDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmgKQEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVyczsKIAogY2xhc3MgUGx1Z2luUHJveHkgOiBwdWJsaWMgUGx1Z2luIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbik7CiAgICAgflBs
dWdpblByb3h5KCk7CiAKICAgICB1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnaW5JbnN0YW5jZUlEOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4g
bV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsgfQogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IFBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgZXhw
bGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNo
b3RQbHVnaW4pOwogCiAgICAgLy8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUo
Y29uc3QgUGFyYW1ldGVycyYpOwpAQCAtMjAyLDYgKzIwMiw4IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVyOwogI2VuZGlm
CisKKyAgICBib29sIG1faXNTbmFwc2hvdFBsdWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDYwY2E2NzgxYTYwZmFiODI0MDQ2MWQ2M2IwZDYwZjNiMDkxMTQxZTEuLjk0OWUwODkyM2Rl
ZWQyZDljNmM4OWIzNTc4MGViYmRkOWQyM2I1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzMiw3ICs1MzIsOCBAQCBQYXNzUmVmUHRy
PFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJ
bkVsZW1lbnQqIHBsdQogICAgIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBy
ZXR1cm4gUGx1Z2luUHJveHk6OmNyZWF0ZShwbHVnaW5QYXRoKTsKKyAgICBib29sIGlzU25hcHNo
b3RQbHVnaW4gPSAocGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVs
ZW1lbnQ6OldhaXRpbmdGb3JTbmFwc2hvdCk7CisgICAgcmV0dXJuIFBsdWdpblByb3h5OjpjcmVh
dGUocGx1Z2luUGF0aCwgaXNTbmFwc2hvdFBsdWdpbik7CiAjZWxzZQogICAgIE5ldHNjYXBlUGx1
Z2luOjpzZXRTZXRFeGNlcHRpb25GdW5jdGlvbihOUFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2Jh
bEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIE5ldHNjYXBlUGx1Z2luOjpjcmVhdGUoTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKHBsdWdpblBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDYwZmU3MzFiOWUzNmFiZDA3ZGZlYjc2ZDQxN2M4
YmJmN2JiMWY3YTYuLmRmMTc0NWI0NGU5MDA2YjQ5YjMyOTRmNjIwNWYwZjA0Mzg2ZjM3ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTA2MSw5ICsxMDYx
LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29u
bmVjdGlvbiopCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLXZvaWQgV2Vi
UHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNo
ZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBz
bmFwc2hvdFByb2Nlc3MpCiB7Ci0gICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
cGx1Z2luUHJvY2Vzc0NyYXNoZWQocGx1Z2luUGF0aCk7CisgICAgbV9wbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIucGx1Z2luUHJvY2Vzc0NyYXNoZWQocGx1Z2luUGF0aCwgc25hcHNob3RQ
cm9jZXNzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDBiM2MwZmI5OThkNDcxZGQyOWRmNzNmZDNiNjg5ZGJkZjQxOGM3Y2YuLjZlNTE5OTFm
YTgyYjZhMmM1MTA1YTEzYzg2ZmIzM2M5OGFjMTk2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCkBAIC0yNTQsNyArMjU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5l
dHdvcmtQcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAjZW5kaWYKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICB2b2lkIHBs
dWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIGJvb2wgc25hcHNob3RQcm9jZXNzKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFy
dE1lbW9yeVNhbXBsZXIoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyYzFiNDMwNTIzNjRkMzZmYjYyYTZlZDdlOWJjMmFm
NGMzZDgwNWViLi5kMTk4NzAxODQ0NmYzODQ0Y2JmMmVhZTk5YmE3M2FiMjQ4Y2QzYjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC02OSw3ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIHBs
dWdpblByb2Nlc3MpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyAgICBQbHVnaW5Qcm9jZXNz
Q3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJvY2VzcywgYm9vbCBzbmFwc2hvdFByb2Nlc3MpIERpc3Bh
dGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRpZgogCiAgICAgdm9pZCBTdGFydE1lbW9yeVNhbXBs
ZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nRmlsZUhhbmRsZSwg
V1RGOjpTdHJpbmcgc2FtcGxlTG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176065</attachid>
            <date>2012-11-26 14:22:55 -0800</date>
            <delta_ts>2012-11-26 16:02:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121126142033.patch</filename>
            <type>text/plain</type>
            <size>37549</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzgxY2I4OWY0NzM0NGU2
ZjUwZGY4NWQ3N2MwNmMzMDViNTM1NjVkZi4uZmE1MGFmNTM0YTFlZDQ2ZmVlOWQ3MDllZjhhYmM3
NzUyNjQ5MWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTI2ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKTogTXV0ZSBhdWRpbyBpZiBzcGVjaWZpZWQgYnkgcHJvY2VzcyBjcmVhdGlv
biBwYXJhbWV0ZXJzLgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWRkIHNob3VsZE11dGVBdWRpbyBwcm9jZXNz
IGNyZWF0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOiBGb3J3
YXJkIG1lc3NhZ2UgdG8gbm9uIHNuYXBzaG90IHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBt
ZXNzYWdlIHRvIG5vbiBzbmFwc2hvdCBwbHVnaW4gcHJvY2VzcyBvbmx5LgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKTogQWRkIGJv
b2xlYW4gc25hcHNob3RQcm9jZXNzIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBBZGQgc25hcHNob3QgcGx1Z2luIHByb2Nlc3Mgc3Rh
dHVzIHRvIHBsdWdpbiBwcm9jZXNzIGNyYXNoZWQgbWVzc2FnZS4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBTZXQgc2hvdWxkTXV0ZUF1
ZGlvIHByb2Nlc3MgY3JlYXRpb24gcGFyYW1ldGVyIGZvciBzbmFwc2hvdAorICAgICAgICBwbHVn
aW4gcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmlzU25hcHNob3RQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjppc1NuYXBzaG90UHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBGYWN0b3Igb3V0IGNvZGUgaW50bworICAgICAgICBnZXRQ
cm9jZXNzQ29ubmVjdGlvbiBoZWxwZXIgbWV0aG9kIGZvciByZXVzZSBieSBnZXRTbmFwc2hvdFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OlBsdWdpblByb3h5KTogQWRkIGlzU25hcHNob3RQbHVnaW4gYm9vbGVhbiBtZW1iZXIg
dG8gaW5kaWNhdGUgaWYgdGhlIHBsdWdpbiBpcworICAgICAgICB0byBiZSB1c2VkIGZvciBnZW5l
cmF0aW5nIGEgc25hcHNob3QuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEZXRlcm1pbmUgaWYgdGhlIHBsdWdpbiB0byBiZSBjcmVh
dGVkIGlzIGEgc25hcHNob3QgcGx1Z2luIGJhc2VkIG9uIHRoZQorICAgICAgICBkaXNwbGF5IHN0
YXRlIG9mIEhUTUxQbHVnSW5FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMTEtMjYgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzZXR0aW5nIHRvIGVuYWJsZSAvIGRpc2FibGUgSFRNTDUgbG9jYWwgc3RvcmFnZSBmdW5jdGlv
bmFsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQy
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZp
ZwppbmRleCAzZTQ1ODhjNjJiYTM2ZTk2NWZmN2M5Nzk4NzE1Y2JlZGFjZDM0M2FkLi5kODhlYjE4
YzNlNDI4N2QyOTA1YWVhNjEwMWFlOWUzMWMzNTZjMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKQEAgLTI5LDcgKzI5LDcgQEAgSU5GT1BM
SVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChXRUJLSVQyX0ZSQU1FV09S
S1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChOT1JNQUxfV0VCS0lUMl9GUkFN
RVdPUktTX0RJUik7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1ld29y
ayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29jb2Eg
LWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEphdmFT
Y3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBTZWN1
cml0eSAtZnJhbWV3b3JrIFdlYkNvcmU7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9
IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3
b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFt
ZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlIC1mcmFtZXdvcmsgQ29yZUF1ZGlvOwog
CiBPVEhFUl9MREZMQUdTID0gJChPVEhFUl9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkpICQoT1RI
RVJfTERGTEFHUyk7CiBPVEhFUl9MREZMQUdTX21hY29zeCA9ICQoRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4
ZWU3ZWQ3ZWQyZi4uYTY2NGNjMWIwNzYyYmQ1ZDVhMzk0ZGIyMjdjMjlmMjZiZGE4NGRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzU2hpbS5oIgog
I2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVBdWRpby9BdWRpb0hhcmR3
YXJlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTMwNCw2ICszMDUs
MTUgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgogCitzdGF0aWMgdm9pZCBt
dXRlQXVkaW8odm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0
eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVk
aW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRN
YXN0ZXIgfTsKKyAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKKyAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3Qs
ICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmcHJvcGVydHlEYXRhKTsK
KyAgICBpZiAocmVzdWx0ICE9IG5vRXJyKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwogdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0
aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Bv
cnQucG9ydCgpOwpAQCAtMzE5LDYgKzMyOSw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlhbGl6
ZVNhbmRib3gobV9wbHVnaW5QYXRoLCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5
UGF0aCk7CiAjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZE11dGVBdWRpbykKKyAg
ICAgICAgbXV0ZUF1ZGlvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBmNTNjMjZlNmIwMWZiNTNmZWRjODg3MTI3ODY0
MmY5N2Q2Y2NmNDZkLi42YTJhNGM2NmI3NDgwZGNiYTQwMzRjZmQ1YjE2ZTYyMjIwNTQ5MjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKCkKIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHBs
dWdpblBhdGg7CisgICAgZW5jb2RlciA8PCBzaG91bGRNdXRlQXVkaW87CiAgICAgZW5jb2RlciA8
PCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIg
PDwgbWluaW11bUxpZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwpA
QCAtNTUsNiArNTYsOCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUocmVzdWx0LnBsdWdpblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnNob3VsZE11dGVBdWRpbykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhNDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNlOGRm
MDQ3MzVkZTVjMTFlLi4wYjBhOWM2MDQwMmU5ZDJlY2ZiM2UwMjdlM2NjYWRlMTA0YmM1ZWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CisgICAgYm9vbCBzaG91bGRNdXRlQXVkaW87
CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAg
ICAgZG91YmxlIG1pbmltdW1MaWZldGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBmNDk3ODk1
ZGI0MmQ5NzUyZWEwYjdjNGVkNTMyNDFiMzg2ZThhZTlkLi5lNDZjYTNlMWJjMjJkZjdhNmVhYWI2
OTEwMTliNmJlM2NkZGVlZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC01MCw3ICs1MCwxNiBA
QCB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdQogICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwo
KSk7CiAKICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IHBsdWdpbkluZm9TdG9yZS5pbmZv
Rm9yUGx1Z2luV2l0aFBhdGgocGx1Z2luUGF0aCk7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbik7CisgICAgUGx1
Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNz
KHBsdWdpbiwgZmFsc2UpOworICAgIHBsdWdpblByb2Nlc3MtPmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKHJlcGx5KTsKK30KKwordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0U25hcHNo
b3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdWdpbklu
Zm9TdG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
IHJlcGx5KQoreworICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7CisgICAgCisgICAg
UGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUuaW5mb0ZvclBsdWdpbldp
dGhQYXRoKHBsdWdpblBhdGgpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vz
cyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIHRydWUpOwogICAgIHBsdWdpblBy
b2Nlc3MtPmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KIApAQCAtNjQsMzIg
KzczLDMzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NQ
cm94eShQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01h
bmFnZXI6OmdldFNpdGVzV2l0aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBX
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3Mg
PSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxz
ZSk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0U2l0ZXNXaXRoRGF0YSh3ZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXIsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpj
bGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nl
c3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNz
UHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBm
YWxzZSk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Y2xlYXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXIsIHNpdGVzLCBmbGFncywgbWF4QWdlSW5TZWNvbmRzLCBjYWxsYmFja0lEKTsKIH0K
IAotUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vz
c1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NQcm94eSog
UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3BsdWdpblByb2Nlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
bV9wbHVnaW5Qcm9jZXNzZXNbaV0tPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBhdGgpCi0g
ICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Qcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIFJl
ZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+JiBwbHVnaW5Qcm9jZXNzUHJveHkgPSBtX3BsdWdpblBy
b2Nlc3Nlc1tpXTsKKyAgICAgICAgaWYgKChwbHVnaW5Qcm9jZXNzUHJveHktPnBsdWdpbkluZm8o
KS5wYXRoID09IHBsdWdpblBhdGgpICYmIChwbHVnaW5Qcm9jZXNzUHJveHktPmlzU25hcHNob3RQ
cm9jZXNzKCkgPT0gaXNTbmFwc2hvdFByb2Nlc3MpKQorICAgICAgICAgICAgcmV0dXJuIHBsdWdp
blByb2Nlc3NQcm94eS5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KIAotUGx1Z2lu
UHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9j
ZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKK1BsdWdpblByb2Nlc3NQcm94eSog
UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4sIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpCiB7Ci0gICAgaWYg
KFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IHBsdWdpblByb2Nlc3NXaXRoUGF0
aChwbHVnaW4ucGF0aCkpCisgICAgaWYgKFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vz
cyA9IHBsdWdpblByb2Nlc3NXaXRoUGF0aChwbHVnaW4ucGF0aCwgaXNTbmFwc2hvdFByb2Nlc3Mp
KQogICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2VzczsKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9j
ZXNzUHJveHk+IHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlz
LCBwbHVnaW4pOworICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IHBsdWdpblByb2Nlc3Mg
PSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzLCBwbHVnaW4sIGlzU25hcHNob3RQcm9j
ZXNzKTsKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NQdHIgPSBwbHVnaW5Q
cm9jZXNzLmdldCgpOwogCiAgICAgbV9wbHVnaW5Qcm9jZXNzZXMuYXBwZW5kKHBsdWdpblByb2Nl
c3MucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IDVlNTE5NDI3YmEzZjFkZGZiMzdiZDhi
ZTgzZjMyOTc4YzQ3YjhiOTIuLmY4YzI0MDdkZmMzYWNmYjc2ZWYyN2I2MGVmOWQ1YTFlOTVmYjE3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBsdWdpblByb2Nlc3NNYW5hZ2VyJiBzaGFyZWQoKTsKIAogICAgIHZvaWQgZ2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIGdldFNuYXBzaG90UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiwgY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHJlbW92ZVBs
dWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZ2V0U2l0
ZXNXaXRoRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC02Myw4ICs2NCw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIoKTsKIAotICAgIFBsdWdpblByb2Nlc3NQ
cm94eSogZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsK
LSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogZ2V0T3JDcmVhdGVQbHVn
aW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBib29sIGlzU25hcHNob3RQcm9jZXNz
KTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+ID4gbV9wbHVnaW5Qcm9jZXNzZXM7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggMGMyZTg2ODllNjQ4ODc2ODBlNDJhMTM0OTNjMGYzZTUwZTBiYjEyYS4u
NzhmNWZmMDEwODZlOGE3OTMwY2Y1ZGZjMWE2MzYxYTljZWExZGY0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CkBAIC01MCwxMiArNTAsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgY29uc3QgZG91
YmxlIG1pbmltdW1MaWZldGltZSA9IDMwICogNjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNodXRk
b3duVGltZW91dCA9IDEwICogNjA7CiAKLVBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJv
Y2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitQYXNzUmVm
UHRyPFBsdWdpblByb2Nlc3NQcm94eT4gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUGx1Z2lu
UHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW5JbmZvLCBib29sIGlzU25hcHNob3RQcm9jZXNzKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBwbHVn
aW5JbmZvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1
Z2luUHJvY2Vzc01hbmFnZXIsIHBsdWdpbkluZm8sIGlzU25hcHNob3RQcm9jZXNzKSk7CiB9CiAK
LVBsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5h
Z2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2lu
SW5mbykKK1BsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nl
c3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luSW5mbywgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKICAgICA6IG1fcGx1Z2luUHJvY2Vz
c01hbmFnZXIoUGx1Z2luUHJvY2Vzc01hbmFnZXIpCiAgICAgLCBtX3BsdWdpbkluZm8ocGx1Z2lu
SW5mbykKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQpAQCAtNjQsNiAr
NjQsNyBAQCBQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9j
ZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZQogICAgICwgbV9mdWxsc2NyZWVuV2luZG93
SXNTaG93aW5nKGZhbHNlKQogICAgICwgbV9wcmVGdWxsc2NyZWVuQXBwUHJlc2VudGF0aW9uT3B0
aW9ucygwKQogI2VuZGlmCisgICAgLCBtX2lzU25hcHNob3RQcm9jZXNzKGlzU25hcHNob3RQcm9j
ZXNzKQogewogICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRpb25z
OwogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6OlBsdWdp
blByb2Nlc3M7CkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRp
ZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQogCiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRl
eHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY29udGV4dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvbnRleHRzW2ld
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlBsdWdpblByb2Nlc3ND
cmFzaGVkKG1fcGx1Z2luSW5mby5wYXRoKSk7CisgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlBsdWdpblByb2Nlc3NDcmFzaGVkKG1f
cGx1Z2luSW5mby5wYXRoLCBtX2lzU25hcHNob3RQcm9jZXNzKSk7CiAKICAgICAvLyBUaGlzIHdp
bGwgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KICAgICBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFp
bGVkVG9MYXVuY2goKTsKQEAgLTIwNCw2ICsyMDUsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rp
bwogICAgIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAg
IHBhcmFtZXRlcnMucGx1Z2luUGF0aCA9IG1fcGx1Z2luSW5mby5wYXRoOworICAgIHBhcmFtZXRl
cnMuc2hvdWxkTXV0ZUF1ZGlvID0gbV9pc1NuYXBzaG90UHJvY2VzczsKIAogICAgIHBhcmFtZXRl
cnMubWluaW11bUxpZmV0aW1lID0gbWluaW11bUxpZmV0aW1lOwogICAgIHBhcmFtZXRlcnMudGVy
bWluYXRpb25UaW1lb3V0ID0gc2h1dGRvd25UaW1lb3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCAxMzU3ZTZj
N2Y1YjQ5MGY3YjQyNDhlYzc2ZjVhNTA0ZTJiZjAwZWFiLi44MjgwZjY3OThjMjZhNmVlNjRhYzhj
M2EzZTQ1OWU3MDJiYTZhN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3Qg
UmF3UGx1Z2luTWV0YURhdGEgewogCiBjbGFzcyBQbHVnaW5Qcm9jZXNzUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxQbHVnaW5Qcm9jZXNzUHJveHk+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9j
ZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5
KCk7CiAKICAgICBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnaW5JbmZvOyB9CkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogCisgICAgYm9vbCBp
c1NuYXBzaG90UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1faXNTbmFwc2hvdFByb2Nlc3M7IH0K
KwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChi
b29sKTsKIApAQCAtOTcsNyArOTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJik7CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2Vy
KiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOwogCiAg
ICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKIApAQCAtMTcx
LDYgKzE3Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Z1bGxzY3JlZW5XaW5kb3dJc1Nob3dp
bmc7CiAgICAgdW5zaWduZWQgbV9wcmVGdWxsc2NyZWVuQXBwUHJlc2VudGF0aW9uT3B0aW9uczsK
ICNlbmRpZgorCisgICAgYm9vbCBtX2lzU25hcHNob3RQcm9jZXNzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGZkZWRhM2E4ZmFmMDNjOTFjZTc1M2IzNzMyMzAwMWIyNGE1MTNkNjcuLjg5NmIz
NjU2YzJjYjEwNGUyY2E3NGIxMzFkOGYwMTQ3MWUyMWMxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00MDYsOSArNDA2LDEyIEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgdXJsU3RyCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
KQogewotICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihtX2NvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLCBwbHVnaW5QYXRoLCByZXBs
eSk7CisgICAgaWYgKCFpc1NuYXBzaG90UHJvY2VzcykKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01h
bmFnZXI6OnNoYXJlZCgpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4dC0+cGx1
Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKKyAgICBlbHNlCisgICAgICAgIFBs
dWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsK
IH0KIAogI2VsaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNGM5OTk2MTI1MTFhM2Q3ZTczYjQzYWEw
Y2Y3ZDExMmNlZGU5NGNhMi4uMjBjOWFhMzJjNTRmNDU2MjhiOWJkNDEyMjEwZWZiNWQ1NDQxMGEw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTU0
LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRf
dCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4pOwog
I2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFw
c2hvdFByb2Nlc3MsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogI2VsaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBk
aWRDbGVhclBsdWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MjJlMmYwOGVhOTEyMTFhMTMzMTY2NWFkNDM3ZWY5Y2MzZmM5YmVhMi4uOTEwOTg4ZDVmZGVjOTY5
ZDk4ZTE5MmU0NzZlNjFlNzVmNjkwOTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zOSw3ICszOSw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSB7CiAgICAgR2V0UGx1Z2luUGF0aChXVEY6OlN0cmlu
ZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nKSAtPiAoV1RGOjpTdHJpbmcgcGx1Z2lu
UGF0aCwgdWludDMyX3QgcGx1Z2luTG9hZFBvbGljeSkKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENvcmVJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKSBEZWxheWVkCisgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpT
dHJpbmcgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykgLT4gKENvcmVJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkgJiYgIUVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBs
dWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDY0OGE1MWViOGI4ODY3NGI2ZWViOTU1OWQz
MGQwMWNiMzllMTRkNTkuLjRiMDA4ZmRkY2M1YTMzNjE0ODFjYzRlMWZhNjFiZTRmNWI4YmIyMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNDEsMTAgKzQxLDExIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKK1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzLCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpCiAgICAgLCBt
X3BsdWdpblBhdGgocGx1Z2luUGF0aCkKICAgICAsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbihzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KQorICAgICwgbV9pc1NuYXBzaG90UHJvY2Vzcyhpc1NuYXBzaG90UHJvY2VzcykKIHsKICAgICBt
X2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29w
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGJjNjU1OGZmZGNkOTdiMDM5ZmU3YWIx
NjA1MTIzYWJlYTg5ZGU0OGEuLmNiMTNlZjBhNTdiODcyZjBlZGI3ZWQxZTMzOTViYjE4NTdhN2Jh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw5ICs0Myw5IEBAIGNsYXNzIFBsdWdp
blByb3h5OwogICAgIAogY2xhc3MgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVm
Q291bnRlZDxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCAgYm9vbCBpc1NuYXBzaG90UHJvY2VzcywgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBs
dWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRo
LCBpc1NuYXBzaG90UHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKTsKICAgICB9CiAgICAgflBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKCk7CiAKQEAgLTYwLDggKzYwLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsgfQogCisgICAgYm9vbCBp
c1NuYXBzaG90UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1faXNTbmFwc2hvdFByb2Nlc3M7IH0K
KwogcHJpdmF0ZToKLSAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIqLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3lu
Y2hyb25vdXNJbml0aWFsaXphdGlvbik7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBi
b29sIGlzU25hcHNob3RQcm9jZXNzLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRp
b24pOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7CkBAIC04NSw2ICs4Nyw4
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5QUmVtb3RlT2JqZWN0TWFwPiBtX25wUmVtb3RlT2Jq
ZWN0TWFwOwogICAgIAogICAgIGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uOworCisgICAgYm9vbCBtX2lzU25hcHNob3RQcm9jZXNzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IGI3NzA1MDk5MjZkMGUyNDA0YWMwMGFmNDk5NmQzZGQ0MjNkYWJmM2MuLjc2NzAzZDJkN2My
Mzk5Njk1Y2FhYTZhODgxZWE0NDgyZjg4Mzg2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuY3BwCkBAIC01MSwxNCArNTEsMjYgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjp+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkKIAogUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogeworICAgIHJldHVy
biBnZXRQcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoLCBmYWxzZSk7Cit9CisKK1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFNuYXBz
aG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorewor
ICAgIHJldHVybiBnZXRQcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoLCB0cnVlKTsKK30KKwor
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25h
cHNob3RQcm9jZXNzKQorewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25zW2ldLT5wbHVnaW5QYXRoKCkgPT0gcGx1Z2luUGF0aCkKLSAgICAgICAgICAg
IHJldHVybiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXS5nZXQoKTsKKyAgICAgICAgUmVm
UHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiYgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBt
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXTsKKyAgICAgICAgaWYgKChwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpID09IHBsdWdpblBhdGgpCisgICAgICAgICAgICAmJiAo
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmlzU25hcHNob3RQcm9jZXNzKCkgPT0gaXNTbmFwc2hv
dFByb2Nlc3MpKQorICAgICAgICAgICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmdl
dCgpOwogICAgIH0KIAogICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25J
ZGVudGlmaWVyOwogICAgIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2lu
UGF0aCksCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KHBsdWdpblBhdGgsIGlzU25hcHNob3RQcm9jZXNzKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiksIDApKQogICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtNzIsMTQgKzg0LDE4IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAg
ICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNB
c3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CisgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MsIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwog
CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5lY3Rpb25z
TXV0ZXgpOwotICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmRDb25uZWN0aW9ucy5jb250YWlucyhw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7Ci0KLSAgICAgICAgbV9wYXRo
c0FuZENvbm5lY3Rpb25zLnNldChwbHVnaW5QYXRoLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgaWYgKCFpc1NuYXBzaG90UHJvY2VzcykgeworICAgICAg
ICAgICAgQVNTRVJUKCFtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuY29u
dGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOworICAgICAgICAg
ICAgbV9wYXRoc0FuZE5vblNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLnNldChwbHVnaW5QYXRo
LCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rp
b25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKKyAg
ICAgICAgICAgIG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5zZXQocGx1Z2lu
UGF0aCwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CkBAIC05
MiwxOCArMTA4LDIzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1v
dmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzCiAKICAgICB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleCk7Ci0gICAgICAg
IEFTU0VSVChtX3BhdGhzQW5kQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnBsdWdpblBhdGgoKSkpOwotICAgICAgICAKLSAgICAgICAgbV9wYXRoc0FuZENvbm5l
Y3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKTsKKyAg
ICAgICAgaWYgKCFwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+aXNTbmFwc2hvdFByb2Nlc3MoKSkg
eworICAgICAgICAgICAgQVNTRVJUKG1fcGF0aHNBbmROb25TbmFwc2hvdFByb2Nlc3NDb25uZWN0
aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7Cisg
ICAgICAgICAgICBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3Zl
KHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgQVNTRVJUKG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9u
cy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7CisgICAg
ICAgICAgICBtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlKHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlKHZlY3RvckluZGV4KTsKIH0KIAot
dm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3ZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJv
b2wgaXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGF0aHNB
bmRDb25uZWN0aW9uc011dGV4KTsKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
ID0gbV9wYXRoc0FuZENvbm5lY3Rpb25zLmdldChwbHVnaW5QYXRoKS5nZXQoKTsKKyAgICBDb3Jl
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gIWlzU25hcHNob3RQcm9jZXNzID8gbV9wYXRo
c0FuZE5vblNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmdldChwbHVnaW5QYXRoKS5nZXQoKQor
ICAgICAgICA6IG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5nZXQocGx1Z2lu
UGF0aCkuZ2V0KCk7CiAKICAgICAvLyBJdCdzIE9LIGZvciBjb25uZWN0aW9uIHRvIGJlIG51bGwg
aGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3ZWIgcHJvY2VzcyBkb2Vzbid0IGtub3cKICAg
ICAvLyBhbnl0aGluZyBhYm91dCB0aGUgcGx1Zy1pbiBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5oCmluZGV4IDQ1NTE1Y2RmMTRkNjJiNGM3NDQyMTJiMzdjMDIwNzE3
ODBmZTY4YWIuLjAwZTA0ZjA2NzMzMTk2MzhmNzM4MTdmZDBhYWUwZTM2YWYyOWRlODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKQEAgLTUyLDE2ICs1MiwyMSBAQCBwdWJs
aWM6CiAgICAgflBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpOwogCiAgICAgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFNuYXBzaG90
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICAgICB2
b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
Kik7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIHdlYiBwcm9jZXNzIGNvbm5lY3Rpb24gd29yayBx
dWV1ZS4KLSAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCk7CisgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOwogCiBwcml2YXRlOgorCisgICAgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CisKICAgICBWZWN0b3I8UmVmUHRyPFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uPiA+IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCiAg
ICAgTXV0ZXggbV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXg7Ci0gICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNBbmRDb25uZWN0aW9uczsKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+ID4gbV9wYXRoc0Fu
ZE5vblNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNzQ29ubmVj
dGlvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcAppbmRleCBhMTg4MzRhNmM5ZDk3YmJjZjQ2NTIyYzgzYWQ4ODJlNzlk
NTI1ZmQxLi43MmIyODRiODhkNzVhZjI4MWYyMGQ1NDJkZDM5ZDYzZTI3ZjkyMjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAg
LTU1LDEyICs1NSwxMiBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQbHVnaW5JbnN0YW5jZUlE
KCkKICAgICByZXR1cm4gKyt1bmlxdWVQbHVnaW5JbnN0YW5jZUlEOwogfQogCi1QYXNzUmVmUHRy
PFBsdWdpblByb3h5PiBQbHVnaW5Qcm94eTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCkKK1Bhc3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQbHVnaW4pCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQbHVnaW5Qcm94eShwbHVnaW5QYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQbHVnaW5Qcm94eShwbHVnaW5QYXRoLCBpc1NuYXBzaG90UGx1Z2luKSk7CiB9CiAKLVBs
dWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCitQbHVnaW5Q
cm94eTo6UGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNo
b3RQbHVnaW4pCiAgICAgOiBtX3BsdWdpblBhdGgocGx1Z2luUGF0aCkKICAgICAsIG1fcGx1Z2lu
SW5zdGFuY2VJRChnZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKSkKICAgICAsIG1fcGx1Z2luQmFj
a2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEoZmFsc2UpCkBAIC02OSw2ICs2OSw3IEBAIFBsdWdp
blByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAgLCBtX3dh
bnRzV2hlZWxFdmVudHMoZmFsc2UpCiAgICAgLCBtX3JlbW90ZUxheWVyQ2xpZW50SUQoMCkKICAg
ICAsIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oZmFsc2UpCisgICAgLCBt
X2lzU25hcHNob3RQbHVnaW4oaXNTbmFwc2hvdFBsdWdpbikKIHsKIH0KIApAQCAtODQsNyArODUs
OSBAQCB2b2lkIFBsdWdpblByb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCgpCiBib29sIFBsdWdp
blByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAg
QVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotICAgIG1fY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpLmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKG1fcGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyJiBjb25uZWN0aW9uTWFuYWdlciA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcigpOworICAgIG1fY29ubmVjdGlvbiA9ICFtX2lzU25hcHNob3RQ
bHVnaW4gPyBjb25uZWN0aW9uTWFuYWdlci5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihtX3Bs
dWdpblBhdGgpCisgICAgICAgIDogY29ubmVjdGlvbk1hbmFnZXIuZ2V0U25hcHNob3RQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihtX3BsdWdpblBhdGgpOwogICAgIAogICAgIGlmICghbV9jb25uZWN0
aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGIxYTg5M2JkZGQ0ZThhNWJkZmRhNzgxYTVk
YmRhNTMzYjllMjA0ZTIuLjMxODczN2ExZWQyNzc2ZGM2MDgwY2E3MGI3YzMwZjZiNDAzMGE0MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNs
YXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb3h5PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQbHVnaW4pOwogICAgIH5QbHVnaW5Qcm94eSgpOwog
CiAgICAgdWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2lu
SW5zdGFuY2VJRDsgfQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5n
QXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdGluZ09uQXN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQbHVn
aW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIGV4cGxpY2l0IFBsdWdpblBy
b3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UGx1Z2luKTsKIAog
ICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRl
cnMmKTsKQEAgLTIwMyw2ICsyMDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wbHVnaW5MYXllcjsKICNlbmRpZgorCisgICAgYm9vbCBt
X2lzU25hcHNob3RQbHVnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhMjFmYWUzODVi
NWEyMWZmN2ZlY2E1YWQ1MTk2YjBhZjkxYTY3ZDA5Li4xNWI0OTgxZTVlODE3NTZlMDdiMmYyNmRm
MzIyZGI3NWYzZjVlNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC01MzQsNyArNTM0LDggQEAgUGFzc1JlZlB0cjxQbHVnaW4+IFdlYlBh
Z2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHUK
ICAgICB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgcmV0dXJuIFBsdWdpblBy
b3h5OjpjcmVhdGUocGx1Z2luUGF0aCk7CisgICAgYm9vbCBpc1NuYXBzaG90UGx1Z2luID0gKHBs
dWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpID09IEhUTUxQbHVnSW5FbGVtZW50OjpXYWl0aW5n
Rm9yU25hcHNob3QpOworICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHBsdWdpblBhdGgs
IGlzU25hcHNob3RQbHVnaW4pOwogI2Vsc2UKICAgICBOZXRzY2FwZVBsdWdpbjo6c2V0U2V0RXhj
ZXB0aW9uRnVuY3Rpb24oTlBSdW50aW1lT2JqZWN0TWFwOjpzZXRHbG9iYWxFeGNlcHRpb24pOwog
ICAgIHJldHVybiBOZXRzY2FwZVBsdWdpbjo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpn
ZXRPckNyZWF0ZShwbHVnaW5QYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCAyOGI3YmZkN2IwMjM2NmYzNDBmMjQ3MWUwNzdjMzY5MGYyYWE4YjZkLi5k
OGFjZDczNmJmMmYyOGM4MjNiNWQ2OGMzZWQ4YTFkNWFjOTQ4YjllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwNzksOSArMTA3OSw5IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdp
blByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpCit2b2lkIFdlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nl
c3MpCiB7Ci0gICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIucGx1Z2luUHJvY2Vz
c0NyYXNoZWQocGx1Z2luUGF0aCk7CisgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIucGx1Z2luUHJvY2Vzc0NyYXNoZWQocGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODJl
NmNjOGYyYWIxZThlMDNkOGNlNGE0OTI4MTRmMzk3NzY3ODk1ZC4uZDAxNmEwNWY4OGYyNDhhYzg0
YzJkMjZlMjE4MTA4YmI2ODc2NzhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbmV0d29ya1Byb2Nl
c3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKICNlbmRpZgogI2lmIEVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKLSAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHZvaWQgcGx1Z2luUHJvY2Vz
c0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
Ym9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRNZW1vcnlT
YW1wbGVyKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggZWRjYWQzNGZmMzdjZWE3YWQxMzVkNmQyNjQ0MmUxZGVjNDg4ZDMw
Ni4uMzcyOTk2YTk1MDM4MGUzNjlkYjRhYjEyZWVkZWVjODc0ZDAyMTJjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjksNyAr
NjksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQotICAgIFBsdWdpblByb2Nlc3NDcmFzaGVkKFN0cmluZyBwbHVnaW5Qcm9j
ZXNzKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCisgICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQo
U3RyaW5nIHBsdWdpblByb2Nlc3MsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpIERpc3BhdGNoT25D
b25uZWN0aW9uUXVldWUKICNlbmRpZgogCiAgICAgdm9pZCBTdGFydE1lbW9yeVNhbXBsZXIoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nRmlsZUhhbmRsZSwgV1RGOjpT
dHJpbmcgc2FtcGxlTG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176102</attachid>
            <date>2012-11-26 16:02:02 -0800</date>
            <delta_ts>2012-11-26 16:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121126155940.patch</filename>
            <type>text/plain</type>
            <size>37671</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzgxY2I4OWY0NzM0NGU2
ZjUwZGY4NWQ3N2MwNmMzMDViNTM1NjVkZi4uZmE1MGFmNTM0YTFlZDQ2ZmVlOWQ3MDllZjhhYmM3
NzUyNjQ5MWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTI2ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKTogTXV0ZSBhdWRpbyBpZiBzcGVjaWZpZWQgYnkgcHJvY2VzcyBjcmVhdGlv
biBwYXJhbWV0ZXJzLgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWRkIHNob3VsZE11dGVBdWRpbyBwcm9jZXNz
IGNyZWF0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOiBGb3J3
YXJkIG1lc3NhZ2UgdG8gbm9uIHNuYXBzaG90IHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBt
ZXNzYWdlIHRvIG5vbiBzbmFwc2hvdCBwbHVnaW4gcHJvY2VzcyBvbmx5LgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKTogQWRkIGJv
b2xlYW4gc25hcHNob3RQcm9jZXNzIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBBZGQgc25hcHNob3QgcGx1Z2luIHByb2Nlc3Mgc3Rh
dHVzIHRvIHBsdWdpbiBwcm9jZXNzIGNyYXNoZWQgbWVzc2FnZS4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBTZXQgc2hvdWxkTXV0ZUF1
ZGlvIHByb2Nlc3MgY3JlYXRpb24gcGFyYW1ldGVyIGZvciBzbmFwc2hvdAorICAgICAgICBwbHVn
aW4gcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmlzU25hcHNob3RQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjppc1NuYXBzaG90UHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBGYWN0b3Igb3V0IGNvZGUgaW50bworICAgICAgICBnZXRQ
cm9jZXNzQ29ubmVjdGlvbiBoZWxwZXIgbWV0aG9kIGZvciByZXVzZSBieSBnZXRTbmFwc2hvdFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OlBsdWdpblByb3h5KTogQWRkIGlzU25hcHNob3RQbHVnaW4gYm9vbGVhbiBtZW1iZXIg
dG8gaW5kaWNhdGUgaWYgdGhlIHBsdWdpbiBpcworICAgICAgICB0byBiZSB1c2VkIGZvciBnZW5l
cmF0aW5nIGEgc25hcHNob3QuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEZXRlcm1pbmUgaWYgdGhlIHBsdWdpbiB0byBiZSBjcmVh
dGVkIGlzIGEgc25hcHNob3QgcGx1Z2luIGJhc2VkIG9uIHRoZQorICAgICAgICBkaXNwbGF5IHN0
YXRlIG9mIEhUTUxQbHVnSW5FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMTEtMjYgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzZXR0aW5nIHRvIGVuYWJsZSAvIGRpc2FibGUgSFRNTDUgbG9jYWwgc3RvcmFnZSBmdW5jdGlv
bmFsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQy
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZp
ZwppbmRleCAzZTQ1ODhjNjJiYTM2ZTk2NWZmN2M5Nzk4NzE1Y2JlZGFjZDM0M2FkLi5kODhlYjE4
YzNlNDI4N2QyOTA1YWVhNjEwMWFlOWUzMWMzNTZjMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKQEAgLTI5LDcgKzI5LDcgQEAgSU5GT1BM
SVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChXRUJLSVQyX0ZSQU1FV09S
S1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChOT1JNQUxfV0VCS0lUMl9GUkFN
RVdPUktTX0RJUik7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1ld29y
ayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29jb2Eg
LWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEphdmFT
Y3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBTZWN1
cml0eSAtZnJhbWV3b3JrIFdlYkNvcmU7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9
IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3
b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFt
ZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlIC1mcmFtZXdvcmsgQ29yZUF1ZGlvOwog
CiBPVEhFUl9MREZMQUdTID0gJChPVEhFUl9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkpICQoT1RI
RVJfTERGTEFHUyk7CiBPVEhFUl9MREZMQUdTX21hY29zeCA9ICQoRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4
ZWU3ZWQ3ZWQyZi4uNGRmYzY4MWI5NzEwZDkzYmZlM2ZmNDUyNjJmNGEzMmY2MmNlMmE3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzU2hpbS5oIgog
I2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVBdWRpby9BdWRpb0hhcmR3
YXJlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTMwNCw2ICszMDUs
MTUgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgogCitzdGF0aWMgdm9pZCBt
dXRlQXVkaW8odm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0
eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVk
aW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRN
YXN0ZXIgfTsKKyAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKKyAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3Qs
ICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmcHJvcGVydHlEYXRhKTsK
KyAgICBBU1NFUlQocmVzdWx0ID09IG5vRXJyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
K30KKwogdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0
aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Bv
cnQucG9ydCgpOwpAQCAtMzE5LDYgKzMyOSw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlhbGl6
ZVNhbmRib3gobV9wbHVnaW5QYXRoLCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5
UGF0aCk7CiAjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZE11dGVBdWRpbykKKyAg
ICAgICAgbXV0ZUF1ZGlvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBmNTNjMjZlNmIwMWZiNTNmZWRjODg3MTI3ODY0
MmY5N2Q2Y2NmNDZkLi42YTJhNGM2NmI3NDgwZGNiYTQwMzRjZmQ1YjE2ZTYyMjIwNTQ5MjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKCkKIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHBs
dWdpblBhdGg7CisgICAgZW5jb2RlciA8PCBzaG91bGRNdXRlQXVkaW87CiAgICAgZW5jb2RlciA8
PCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIg
PDwgbWluaW11bUxpZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwpA
QCAtNTUsNiArNTYsOCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUocmVzdWx0LnBsdWdpblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnNob3VsZE11dGVBdWRpbykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhNDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNlOGRm
MDQ3MzVkZTVjMTFlLi4wYjBhOWM2MDQwMmU5ZDJlY2ZiM2UwMjdlM2NjYWRlMTA0YmM1ZWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CisgICAgYm9vbCBzaG91bGRNdXRlQXVkaW87
CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAg
ICAgZG91YmxlIG1pbmltdW1MaWZldGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBmNDk3ODk1
ZGI0MmQ5NzUyZWEwYjdjNGVkNTMyNDFiMzg2ZThhZTlkLi40OGRjNmY0N2Q0NDExOWNiZjhkNjBm
MTI3ZWQyMmE3NWFmMjI5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC01MCw3ICs1MCwxNiBA
QCB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdQogICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwo
KSk7CiAKICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IHBsdWdpbkluZm9TdG9yZS5pbmZv
Rm9yUGx1Z2luV2l0aFBhdGgocGx1Z2luUGF0aCk7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbik7CisgICAgUGx1
Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNz
KHBsdWdpbiwgZmFsc2UgLyogaXNTbmFwc2hvdFByb2Nlc3MgKi8pOworICAgIHBsdWdpblByb2Nl
c3MtPmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKK30KKwordm9pZCBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6Z2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQ
bHVnaW5JbmZvU3RvcmUmIHBsdWdpbkluZm9TdG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIEFTU0VSVCghcGx1Z2luUGF0
aC5pc051bGwoKSk7CisgICAgCisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5J
bmZvU3RvcmUuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOworICAgIFBsdWdpblBy
b2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVn
aW4sIHRydWUgLyogaXNTbmFwc2hvdFByb2Nlc3MgKi8pOwogICAgIHBsdWdpblByb2Nlc3MtPmdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KIApAQCAtNjQsMzIgKzczLDMzIEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVn
aW5Qcm9jZXNzUHJveHkqIHBsdWdpblByCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6Omdl
dFNpdGVzV2l0aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBXZWJQbHVnaW5T
aXRlRGF0YU1hbmFnZXIqIHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNy
ZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdp
blByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxzZSAvKiBpc1Nu
YXBzaG90UHJvY2VzcyAqLyk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0U2l0ZXNXaXRoRGF0YSh3
ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
biwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFn
ZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAg
ICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblBy
b2Nlc3MocGx1Z2luLCBmYWxzZSAvKiBpc1NuYXBzaG90UHJvY2VzcyAqLyk7CiAgICAgcGx1Z2lu
UHJvY2Vzcy0+Y2xlYXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHNpdGVzLCBm
bGFncywgbWF4QWdlSW5TZWNvbmRzLCBjYWxsYmFja0lEKTsKIH0KIAotUGx1Z2luUHJvY2Vzc1By
b3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NQcm94eSogUGx1Z2luUHJvY2Vzc01hbmFn
ZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wg
aXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdp
blByb2Nlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9wbHVnaW5Qcm9jZXNzZXNb
aV0tPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4g
bV9wbHVnaW5Qcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNz
UHJveHk+JiBwbHVnaW5Qcm9jZXNzUHJveHkgPSBtX3BsdWdpblByb2Nlc3Nlc1tpXTsKKyAgICAg
ICAgaWYgKHBsdWdpblByb2Nlc3NQcm94eS0+cGx1Z2luSW5mbygpLnBhdGggPT0gcGx1Z2luUGF0
aCAmJiBwbHVnaW5Qcm9jZXNzUHJveHktPmlzU25hcHNob3RQcm9jZXNzKCkgPT0gaXNTbmFwc2hv
dFByb2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc1Byb3h5LmdldCgpOwog
ICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luKQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwg
Ym9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKLSAgICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBw
bHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRoKSkKKyAgICBp
ZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQ
YXRoKHBsdWdpbi5wYXRoLCBpc1NuYXBzaG90UHJvY2VzcykpCiAgICAgICAgIHJldHVybiBwbHVn
aW5Qcm9jZXNzOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2Vz
cyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMsIHBsdWdpbik7CisgICAgUmVmUHRy
PFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6
Y3JlYXRlKHRoaXMsIHBsdWdpbiwgaXNTbmFwc2hvdFByb2Nlc3MpOwogICAgIFBsdWdpblByb2Nl
c3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7CiAKICAgICBt
X3BsdWdpblByb2Nlc3Nlcy5hcHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxlYXNlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5h
Z2VyLmgKaW5kZXggNWU1MTk0MjdiYTNmMWRkZmIzN2JkOGJlODNmMzI5NzhjNDdiOGI5Mi4uZjhj
MjQwN2RmYzNhY2ZiNzZlZjI3YjYwZWY5ZDVhMWU5NWZiMTc1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCkBA
IC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vzc01hbmFnZXIm
IHNoYXJlZCgpOwogCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQ
bHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4pOworICAgIHZvaWQgZ2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBQbHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdp
blByb2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKQEAgLTYzLDggKzY0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9j
ZXNzTWFuYWdlcigpOwogCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdp
blByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAgIFBsdWdpblByb2Nlc3NQcm94
eSogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAg
UGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOworICAgIFBsdWdpblByb2Nlc3NQ
cm94eSogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9v
bCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NQ
cm94eT4gPiBtX3BsdWdpblByb2Nlc3NlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwYzJlODY4
OWU2NDg4NzY4MGU0MmExMzQ5M2MwZjNlNTBlMGJiMTJhLi43OGY1ZmYwMTA4NmU4YTc5MzBjZjVk
ZmMxYTYzNjFhOWNlYTFkZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTUwLDEyICs1MCwxMiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bUxpZmV0aW1lID0g
MzAgKiA2MDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc2h1dGRvd25UaW1lb3V0ID0gMTAgKiA2MDsK
IAotUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IFBsdWdpblByb2Nlc3NQcm94eTo6Y3Jl
YXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbykKK1Bhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5
PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2lu
UHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8sIGJvb2wg
aXNTbmFwc2hvdFByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9j
ZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIsIHBsdWdpbkluZm8pKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciwgcGx1
Z2luSW5mbywgaXNTbmFwc2hvdFByb2Nlc3MpKTsKIH0KIAotUGx1Z2luUHJvY2Vzc1Byb3h5OjpQ
bHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5h
Z2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKQorUGx1Z2luUHJvY2Vzc1By
b3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nl
c3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvLCBib29sIGlzU25h
cHNob3RQcm9jZXNzKQogICAgIDogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Qcm9jZXNz
TWFuYWdlcikKICAgICAsIG1fcGx1Z2luSW5mbyhwbHVnaW5JbmZvKQogICAgICwgbV9udW1QZW5k
aW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCkBAIC02NCw2ICs2NCw3IEBAIFBsdWdpblByb2Nlc3NQ
cm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9j
ZXNzTWFuYWdlCiAgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3dJc1Nob3dpbmcoZmFsc2UpCiAgICAg
LCBtX3ByZUZ1bGxzY3JlZW5BcHBQcmVzZW50YXRpb25PcHRpb25zKDApCiAjZW5kaWYKKyAgICAs
IG1faXNTbmFwc2hvdFByb2Nlc3MoaXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgUHJvY2Vzc0xh
dW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CiAgICAgbGF1bmNoT3B0aW9ucy5w
cm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzczsKQEAgLTE3Myw3ICsx
NzQsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiopCiAKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNv
bnRleHQ6OmFsbENvbnRleHRzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0
cy5zaXplKCk7ICsraSkKLSAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6UGx1Z2luUHJvY2Vzc0NyYXNoZWQobV9wbHVnaW5JbmZvLnBh
dGgpKTsKKyAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6UGx1Z2luUHJvY2Vzc0NyYXNoZWQobV9wbHVnaW5JbmZvLnBhdGgsIG1faXNT
bmFwc2hvdFByb2Nlc3MpKTsKIAogICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBiZSBkZWxl
dGVkLgogICAgIHBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwpAQCAtMjA0
LDYgKzIwNSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmco
UHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAgICAgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCiAgICAgcGFyYW1ldGVycy5wbHVnaW5QYXRo
ID0gbV9wbHVnaW5JbmZvLnBhdGg7CisgICAgcGFyYW1ldGVycy5zaG91bGRNdXRlQXVkaW8gPSBt
X2lzU25hcHNob3RQcm9jZXNzOwogCiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUgPSBt
aW5pbXVtTGlmZXRpbWU7CiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSBzaHV0
ZG93blRpbWVvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDEzNTdlNmM3ZjViNDkwZjdiNDI0OGVjNzZmNWE1
MDRlMmJmMDBlYWIuLjgyODBmNjc5OGMyNmE2ZWU2NGFjOGMzYTNlNDU5ZTcwMmJhNmE3YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YSB7CiAK
IGNsYXNzIFBsdWdpblByb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nl
c3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUHJvY2Vzc0xhdW5jaGVyOjpD
bGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94
eT4gY3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gY3JlYXRlKFBsdWdp
blByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgaXNTbmFwc2hv
dFByb2Nlc3MpOwogICAgIH5QbHVnaW5Qcm9jZXNzUHJveHkoKTsKIAogICAgIGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mIHBsdWdpbkluZm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkluZm87IH0K
QEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAKKyAgICBib29sIGlzU25hcHNob3RQcm9jZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9pc1NuYXBzaG90UHJvY2VzczsgfQorCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogCkBAIC05Nyw3ICs5OSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFBsdWdpblByb2Nlc3NQcm94eShQ
bHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBQbHVn
aW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAKICAgICB2b2lkIHBsdWdpblByb2Nlc3ND
cmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogCkBAIC0xNzEsNiArMTczLDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZzsKICAgICB1bnNpZ25lZCBtX3By
ZUZ1bGxzY3JlZW5BcHBQcmVzZW50YXRpb25PcHRpb25zOwogI2VuZGlmCisKKyAgICBib29sIG1f
aXNTbmFwc2hvdFByb2Nlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmRlZGEzYThmYWYw
M2M5MWNlNzUzYjM3MzIzMDAxYjI0YTUxM2Q2Ny4uODk2YjM2NTZjMmNiMTA0ZTJjYTc0YjEzMWQ4
ZjAxNDcxZTIxYzE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTQwNiw5ICs0MDYsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBs
dWdpblBhdGgoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHIKIAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBy
b2Nlc3MsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7Ci0gICAgUGx1Z2luUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCgpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4dC0+
cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKKyAgICBpZiAoIWlzU25hcHNo
b3RQcm9jZXNzKQorICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2lu
UGF0aCwgcmVwbHkpOworICAgIGVsc2UKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNo
YXJlZCgpLmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0LT5wbHVn
aW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0aCwgcmVwbHkpOwogfQogCiAjZWxpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAppbmRleCA0Yzk5OTYxMjUxMWEzZDdlNzNiNDNhYTBjZjdkMTEyY2VkZTk0Y2EyLi4yMGM5
YWEzMmM1NGY0NTYyOGI5YmQ0MTIyMTBlZmI1ZDU0NDEwYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0
cjxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gPik7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHZvaWQgZ2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcywgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pik7CiAjZWxpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2
b2lkIGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENsZWFyUGx1Z2luU2l0ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMmUyZjA4ZWE5MTIxMWExMzMxNjY1
YWQ0MzdlZjljYzNmYzliZWEyLi45MTA5ODhkNWZkZWM5NjlkOThlMTkyZTQ3NmU2MWU3NWY2OTA5
ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1By
b3h5IHsKICAgICBHZXRQbHVnaW5QYXRoKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmlu
ZyB1cmxTdHJpbmcpIC0+IChXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCB1aW50MzJfdCBwbHVnaW5M
b2FkUG9saWN5KQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6
OlN0cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFu
ZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKKyAg
ICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCBib29s
IGlzU25hcHNob3RQcm9jZXNzKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFu
ZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKICNl
bmRpZgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiAhRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQogICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpT
dHJpbmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggNjQ4YTUxZWI4Yjg4Njc0YjZlZWI5NTU5ZDMwZDAxY2IzOWUxNGQ1OS4uNGIwMDhm
ZGRjYzVhMzM2MTQ4MWNjNGUxZmE2MWJlNGY1YjhiYjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC00MSwxMCArNDEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciog
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChwbHVnaW5QYXRo
KQogICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCisgICAgLCBtX2lzU25hcHNob3RQ
cm9jZXNzKGlzU25hcHNob3RQcm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
IHRoaXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggYmM2NTU4ZmZkY2Q5N2IwMzlmZTdhYjE2MDUxMjNhYmVhODlkZTQ4YS4uMmVh
NTU1ZjQxOTIyZTIxZDRjMzFlOTUxMTQ2MGI2M2Q2MTFmZWNkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgUGx1Z2luUHJveHk7CiAgICAgCiBjbGFzcyBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uPiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bj4gY3JlYXRlKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hv
dFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRl
bnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MsIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKSk7CiAgICAgfQogICAgIH5QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbigpOwogCkBAIC02MCw4
ICs2MCwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb247IH0KIAorICAgIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX2lzU25hcHNob3RQcm9jZXNzOyB9CisKIHByaXZhdGU6Ci0gICAgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwgY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24p
OworICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlciosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcywg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9v
bCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKIAogICAgIC8vIENvcmVJUEM6
OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpIE9WRVJSSURFOwpAQCAtODUsNiArODcsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxOUFJlbW90ZU9iamVjdE1hcD4gbV9ucFJlbW90ZU9iamVjdE1hcDsKICAgICAKICAgICBib29s
IG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKKworICAgIGJvb2wg
bV9pc1NuYXBzaG90UHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCBiNzcwNTA5OTI2ZDBlMjQwNGFj
MDBhZjQ5OTZkM2RkNDIzZGFiZjNjLi5hZmQ5MGE0NmE1NDU5MzAyMjRhMTI2YjI1YzJmYzhjMGMx
YWE1Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtNTEs
MTQgKzUxLDI1IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6flBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcigpCiAKIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKKyAgICByZXR1cm4gZ2V0UHJvY2Vzc0Nvbm5lY3Rpb24o
cGx1Z2luUGF0aCwgZmFsc2UgLyogaXNTbmFwc2hvdFByb2Nlc3MgKi8pOworfQorCitQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRTbmFw
c2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sK
KyAgICByZXR1cm4gZ2V0UHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCwgdHJ1ZSAvKiBpc1Nu
YXBzaG90UHJvY2VzcyAqLyk7Cit9CisKK1BsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKK3sKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXS0+cGx1Z2luUGF0aCgpID09
IHBsdWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bnNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4mIHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uID0gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnNbaV07Cisg
ICAgICAgIGlmIChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpID09IHBsdWdp
blBhdGggJiYgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmlzU25hcHNob3RQcm9jZXNzKCkgPT0g
aXNTbmFwc2hvdFByb2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uZ2V0KCk7CiAgICAgfQogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXI7CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihwbHVnaW5QYXRoKSwKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24ocGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAg
ICAgICAgIHJldHVybiAwOwogCkBAIC03MiwxNCArODMsMTggQEAgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3QKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBSZWZQdHI8UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBpc1NuYXBzaG90UHJvY2VzcywgY29u
bmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwog
ICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbik7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29u
bmVjdGlvbnNNdXRleCk7Ci0gICAgICAgIEFTU0VSVCghbV9wYXRoc0FuZENvbm5lY3Rpb25zLmNv
bnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKLQotICAgICAg
ICBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoIWlzU25hcHNob3RQcm9jZXNzKSB7
CisgICAgICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmROb25TbmFwc2hvdFByb2Nlc3NDb25uZWN0
aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7Cisg
ICAgICAgICAgICBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuc2V0KHBs
dWdpblBhdGgsIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKCFtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNz
Q29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgo
KSkpOworICAgICAgICAgICAgbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLnNl
dChwbHVnaW5QYXRoLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQo
KTsKQEAgLTkyLDE4ICsxMDcsMjMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3MKIAogICAgIHsK
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGF0aHNBbmRDb25uZWN0aW9uc011dGV4KTsK
LSAgICAgICAgQVNTRVJUKG1fcGF0aHNBbmRDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7Ci0gICAgICAgIAotICAgICAgICBtX3BhdGhz
QW5kQ29ubmVjdGlvbnMucmVtb3ZlKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRo
KCkpOworICAgICAgICBpZiAoIXBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5pc1NuYXBzaG90UHJv
Y2VzcygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9wYXRoc0FuZE5vblNuYXBzaG90UHJvY2Vz
c0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRo
KCkpKTsKKyAgICAgICAgICAgIG1fcGF0aHNBbmROb25TbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9u
cy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nv
bm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkp
KTsKKyAgICAgICAgICAgIG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5yZW1v
dmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUodmVjdG9ySW5kZXgp
OwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vz
c0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwotICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24gPSBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuZ2V0KHBsdWdpblBhdGgpLmdldCgpOwor
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSAhaXNTbmFwc2hvdFByb2Nlc3Mg
PyBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuZ2V0KHBsdWdpblBhdGgp
LmdldCgpCisgICAgICAgIDogbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmdl
dChwbHVnaW5QYXRoKS5nZXQoKTsKIAogICAgIC8vIEl0J3MgT0sgZm9yIGNvbm5lY3Rpb24gdG8g
YmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBwcm9jZXNzIGRvZXNuJ3Qg
a25vdwogICAgIC8vIGFueXRoaW5nIGFib3V0IHRoZSBwbHVnLWluIHByb2Nlc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKaW5kZXggNDU1MTVjZGYxNGQ2MmI0Yzc0NDIxMmIz
N2MwMjA3MTc4MGZlNjhhYi4uMDBlMDRmMDY3MzMxOTYzOGY3MzgxN2ZkMGFhZTBlMzZhZjI5ZGU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApAQCAtNTIsMTYgKzUyLDIx
IEBAIHB1YmxpYzoKICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CiAKICAg
ICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0
U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
OwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24qKTsKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgd2ViIHByb2Nlc3MgY29ubmVjdGlv
biB3b3JrIHF1ZXVlLgotICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKTsKKyAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAKIHByaXZhdGU6CisKKyAg
ICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKKwogICAgIFZlY3RvcjxS
ZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+ID4gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bnM7CiAKICAgICBNdXRleCBtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleDsKLSAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+ID4gbV9wYXRoc0FuZENvbm5lY3Rp
b25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBt
X3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nl
c3NDb25uZWN0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGExODgzNGE2YzlkOTdiYmNmNDY1MjJjODNh
ZDg4MmU3OWQ1MjVmZDEuLjcyYjI4NGI4OGQ3NWFmMjgxZjIwZDU0MmRkMzlkNjNlMjdmOTIyMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBsdWdpbklu
c3RhbmNlSUQoKQogICAgIHJldHVybiArK3VuaXF1ZVBsdWdpbkluc3RhbmNlSUQ7CiB9CiAKLVBh
c3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoKQorUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gUGx1Z2luUHJveHk6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgsIGlzU25hcHNob3RQbHVnaW4pKTsK
IH0KIAotUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkK
K1BsdWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wg
aXNTbmFwc2hvdFBsdWdpbikKICAgICA6IG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQogICAgICwg
bV9wbHVnaW5JbnN0YW5jZUlEKGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgpKQogICAgICwgbV9w
bHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YShmYWxzZSkKQEAgLTY5LDYgKzY5LDcg
QEAgUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKICAg
ICAsIG1fd2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVtb3RlTGF5ZXJDbGllbnRJ
RCgwKQogICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxzZSkK
KyAgICAsIG1faXNTbmFwc2hvdFBsdWdpbihpc1NuYXBzaG90UGx1Z2luKQogewogfQogCkBAIC04
NCw3ICs4NSw5IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkKCkKIGJv
b2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci0gICAgbV9jb25uZWN0aW9uID0gV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24obV9wbHVnaW5QYXRoKTsKKyAgICBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXImIGNvbm5lY3Rpb25NYW5hZ2VyID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CisgICAgbV9jb25uZWN0aW9uID0gIW1faXNT
bmFwc2hvdFBsdWdpbiA/IGNvbm5lY3Rpb25NYW5hZ2VyLmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKG1fcGx1Z2luUGF0aCkKKyAgICAgICAgOiBjb25uZWN0aW9uTWFuYWdlci5nZXRTbmFwc2hv
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fcGx1Z2luUGF0aCk7CiAgICAgCiAgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggYjFhODkzYmRkZDRlOGE1YmRm
ZGE3ODFhNWRiZGE1MzNiOWUyMDRlMi4uMzE4NzM3YTFlZDI3NzZkYzYwODBjYTcwYjdjMzBmNmI0
MDMwYTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgKQEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
czsKIAogY2xhc3MgUGx1Z2luUHJveHkgOiBwdWJsaWMgUGx1Z2luIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbik7CiAgICAgflBsdWdpblBy
b3h5KCk7CiAKICAgICB1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wbHVnaW5JbnN0YW5jZUlEOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV93YWl0
aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IFBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgZXhwbGljaXQg
UGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQbHVn
aW4pOwogCiAgICAgLy8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3Qg
UGFyYW1ldGVycyYpOwpAQCAtMjAzLDYgKzIwMyw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVyOwogI2VuZGlmCisKKyAg
ICBib29sIG1faXNTbmFwc2hvdFBsdWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGEy
MWZhZTM4NWI1YTIxZmY3ZmVjYTVhZDUxOTZiMGFmOTFhNjdkMDkuLjE1YjQ5ODFlNWU4MTc1NmUw
N2IyZjI2ZGYzMjJkYjc1ZjNmNWU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzNCw3ICs1MzQsOCBAQCBQYXNzUmVmUHRyPFBsdWdp
bj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1l
bnQqIHBsdQogICAgIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICByZXR1cm4g
UGx1Z2luUHJveHk6OmNyZWF0ZShwbHVnaW5QYXRoKTsKKyAgICBib29sIGlzU25hcHNob3RQbHVn
aW4gPSAocGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6
OldhaXRpbmdGb3JTbmFwc2hvdCk7CisgICAgcmV0dXJuIFBsdWdpblByb3h5OjpjcmVhdGUocGx1
Z2luUGF0aCwgaXNTbmFwc2hvdFBsdWdpbik7CiAjZWxzZQogICAgIE5ldHNjYXBlUGx1Z2luOjpz
ZXRTZXRFeGNlcHRpb25GdW5jdGlvbihOUFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2JhbEV4Y2Vw
dGlvbik7CiAgICAgcmV0dXJuIE5ldHNjYXBlUGx1Z2luOjpjcmVhdGUoTmV0c2NhcGVQbHVnaW5N
b2R1bGU6OmdldE9yQ3JlYXRlKHBsdWdpblBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDI4YjdiZmQ3YjAyMzY2ZjM0MGYyNDcxZTA3N2MzNjkwZjJh
YThiNmQuLmQ4YWNkNzM2YmYyZjI4YzgyM2I1ZDY4YzNlZDhhMWQ1YWM5NDhiOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTA3OSw5ICsxMDc5LDkgQEAg
dm9pZCBXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlv
biopCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLXZvaWQgV2ViUHJvY2Vz
czo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBz
aG90UHJvY2VzcykKIHsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5wbHVn
aW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoKTsKKyAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoLCBpc1NuYXBzaG90UHJv
Y2Vzcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCA4MmU2Y2M4ZjJhYjFlOGUwM2Q4Y2U0YTQ5MjgxNGYzOTc3Njc4OTVkLi5kMDE2YTA1Zjg4
ZjI0OGFjODRjMmQyNmUyMTgxMDhiYjY4NzY3OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBuZXR3
b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgdm9pZCBwbHVn
aW5Qcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFy
dE1lbW9yeVNhbXBsZXIoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGNhZDM0ZmYzN2NlYTdhZDEzNWQ2ZDI2NDQyZTFk
ZWM0ODhkMzA2Li4zNzI5OTZhOTUwMzgwZTM2OWRiNGFiMTJlZWRlZWM4NzRkMDIxMmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC02OSw3ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIHBs
dWdpblByb2Nlc3MpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyAgICBQbHVnaW5Qcm9jZXNz
Q3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJvY2VzcywgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykgRGlz
cGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2Ft
cGxlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxl
LCBXVEY6OlN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176110</attachid>
            <date>2012-11-26 16:43:25 -0800</date>
            <delta_ts>2012-11-27 15:27:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121126164103.patch</filename>
            <type>text/plain</type>
            <size>37659</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzgxY2I4OWY0NzM0NGU2
ZjUwZGY4NWQ3N2MwNmMzMDViNTM1NjVkZi4uZmE1MGFmNTM0YTFlZDQ2ZmVlOWQ3MDllZjhhYmM3
NzUyNjQ5MWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTI2ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKTogTXV0ZSBhdWRpbyBpZiBzcGVjaWZpZWQgYnkgcHJvY2VzcyBjcmVhdGlv
biBwYXJhbWV0ZXJzLgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWRkIHNob3VsZE11dGVBdWRpbyBwcm9jZXNz
IGNyZWF0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOiBGb3J3
YXJkIG1lc3NhZ2UgdG8gbm9uIHNuYXBzaG90IHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBt
ZXNzYWdlIHRvIG5vbiBzbmFwc2hvdCBwbHVnaW4gcHJvY2VzcyBvbmx5LgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKTogQWRkIGJv
b2xlYW4gc25hcHNob3RQcm9jZXNzIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBBZGQgc25hcHNob3QgcGx1Z2luIHByb2Nlc3Mgc3Rh
dHVzIHRvIHBsdWdpbiBwcm9jZXNzIGNyYXNoZWQgbWVzc2FnZS4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBTZXQgc2hvdWxkTXV0ZUF1
ZGlvIHByb2Nlc3MgY3JlYXRpb24gcGFyYW1ldGVyIGZvciBzbmFwc2hvdAorICAgICAgICBwbHVn
aW4gcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmlzU25hcHNob3RQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjppc1NuYXBzaG90UHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBGYWN0b3Igb3V0IGNvZGUgaW50bworICAgICAgICBnZXRQ
cm9jZXNzQ29ubmVjdGlvbiBoZWxwZXIgbWV0aG9kIGZvciByZXVzZSBieSBnZXRTbmFwc2hvdFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OlBsdWdpblByb3h5KTogQWRkIGlzU25hcHNob3RQbHVnaW4gYm9vbGVhbiBtZW1iZXIg
dG8gaW5kaWNhdGUgaWYgdGhlIHBsdWdpbiBpcworICAgICAgICB0byBiZSB1c2VkIGZvciBnZW5l
cmF0aW5nIGEgc25hcHNob3QuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEZXRlcm1pbmUgaWYgdGhlIHBsdWdpbiB0byBiZSBjcmVh
dGVkIGlzIGEgc25hcHNob3QgcGx1Z2luIGJhc2VkIG9uIHRoZQorICAgICAgICBkaXNwbGF5IHN0
YXRlIG9mIEhUTUxQbHVnSW5FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMTEtMjYgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzZXR0aW5nIHRvIGVuYWJsZSAvIGRpc2FibGUgSFRNTDUgbG9jYWwgc3RvcmFnZSBmdW5jdGlv
bmFsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQy
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZp
ZwppbmRleCAzZTQ1ODhjNjJiYTM2ZTk2NWZmN2M5Nzk4NzE1Y2JlZGFjZDM0M2FkLi5kODhlYjE4
YzNlNDI4N2QyOTA1YWVhNjEwMWFlOWUzMWMzNTZjMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKQEAgLTI5LDcgKzI5LDcgQEAgSU5GT1BM
SVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChXRUJLSVQyX0ZSQU1FV09S
S1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChOT1JNQUxfV0VCS0lUMl9GUkFN
RVdPUktTX0RJUik7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1ld29y
ayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29jb2Eg
LWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEphdmFT
Y3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBTZWN1
cml0eSAtZnJhbWV3b3JrIFdlYkNvcmU7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9
IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3
b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFt
ZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlIC1mcmFtZXdvcmsgQ29yZUF1ZGlvOwog
CiBPVEhFUl9MREZMQUdTID0gJChPVEhFUl9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkpICQoT1RI
RVJfTERGTEFHUyk7CiBPVEhFUl9MREZMQUdTX21hY29zeCA9ICQoRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4
ZWU3ZWQ3ZWQyZi4uYzdlNmFjNjE4Y2YxZmI4M2E4MzhiMTJlODljZTQ2NGY3MzhlMjFmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzU2hpbS5oIgog
I2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVBdWRpby9BdWRpb0hhcmR3
YXJlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTMwNCw2ICszMDUs
MTQgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgogCitzdGF0aWMgdm9pZCBt
dXRlQXVkaW8odm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0
eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVk
aW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRN
YXN0ZXIgfTsKKyAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKKyAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3Qs
ICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmcHJvcGVydHlEYXRhKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IG5vRXJyKTsKK30KKwogdm9pZCBQ
bHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2Vy
dmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQucG9ydCgpOwpA
QCAtMzE5LDYgKzMyOCw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlhbGl6ZVNhbmRib3gobV9w
bHVnaW5QYXRoLCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7CiAjZW5k
aWYKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZE11dGVBdWRpbykKKyAgICAgICAgbXV0ZUF1
ZGlvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBmNTNjMjZlNmIwMWZiNTNmZWRjODg3MTI3ODY0MmY5N2Q2Y2NmNDZk
Li42YTJhNGM2NmI3NDgwZGNiYTQwMzRjZmQ1YjE2ZTYyMjIwNTQ5MjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCBQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkKIHZvaWQg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHBsdWdpblBhdGg7Cisg
ICAgZW5jb2RlciA8PCBzaG91bGRNdXRlQXVkaW87CiAgICAgZW5jb2RlciA8PCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIgPDwgbWluaW11bUxp
ZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwpAQCAtNTUsNiArNTYs
OCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cmVzdWx0LnBsdWdpblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUocmVzdWx0LnNob3VsZE11dGVBdWRpbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAppbmRleCBhNDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNlOGRmMDQ3MzVkZTVjMTFl
Li4wYjBhOWM2MDQwMmU5ZDJlY2ZiM2UwMjdlM2NjYWRlMTA0YmM1ZWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiwgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAg
U3RyaW5nIHBsdWdpblBhdGg7CisgICAgYm9vbCBzaG91bGRNdXRlQXVkaW87CiAgICAgYm9vbCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAgZG91YmxlIG1p
bmltdW1MaWZldGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBmNDk3ODk1ZGI0MmQ5NzUyZWEw
YjdjNGVkNTMyNDFiMzg2ZThhZTlkLi40OGRjNmY0N2Q0NDExOWNiZjhkNjBmMTI3ZWQyMmE3NWFm
MjI5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC01MCw3ICs1MCwxNiBAQCB2b2lkIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5J
bmZvU3RvcmUmIHBsdQogICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7CiAKICAgICBQ
bHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IHBsdWdpbkluZm9TdG9yZS5pbmZvRm9yUGx1Z2luV2l0
aFBhdGgocGx1Z2luUGF0aCk7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNz
ID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbik7CisgICAgUGx1Z2luUHJvY2Vzc1By
b3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbiwgZmFs
c2UgLyogaXNTbmFwc2hvdFByb2Nlc3MgKi8pOworICAgIHBsdWdpblByb2Nlc3MtPmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKK30KKwordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6Z2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3Rv
cmUmIHBsdWdpbkluZm9TdG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7
CisgICAgCisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUuaW5m
b0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSog
cGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIHRydWUgLyog
aXNTbmFwc2hvdFByb2Nlc3MgKi8pOwogICAgIHBsdWdpblByb2Nlc3MtPmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KIApAQCAtNjQsMzIgKzczLDMzIEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJv
eHkqIHBsdWdpblByCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERh
dGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFn
ZXIqIHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAg
ICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblBy
b2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBn
ZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxzZSAvKiBpc1NuYXBzaG90UHJvY2Vz
cyAqLyk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0U2l0ZXNXaXRoRGF0YSh3ZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXIsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpjbGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblBy
b2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9j
ZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2lu
LCBmYWxzZSAvKiBpc1NuYXBzaG90UHJvY2VzcyAqLyk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Y2xl
YXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHNpdGVzLCBmbGFncywgbWF4QWdl
SW5TZWNvbmRzLCBjYWxsYmFja0lEKTsKIH0KIAotUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCkKK1BsdWdpblByb2Nlc3NQcm94eSogUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblBy
b2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBy
b2Nlc3MpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpblByb2Nlc3Nlcy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9wbHVnaW5Qcm9jZXNzZXNbaV0tPnBsdWdpbklu
Zm8oKS5wYXRoID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Qcm9j
ZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+JiBwbHVn
aW5Qcm9jZXNzUHJveHkgPSBtX3BsdWdpblByb2Nlc3Nlc1tpXTsKKyAgICAgICAgaWYgKHBsdWdp
blByb2Nlc3NQcm94eS0+cGx1Z2luSW5mbygpLnBhdGggPT0gcGx1Z2luUGF0aCAmJiBwbHVnaW5Q
cm9jZXNzUHJveHktPmlzU25hcHNob3RQcm9jZXNzKCkgPT0gaXNTbmFwc2hvdFByb2Nlc3MpCisg
ICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc1Byb3h5LmdldCgpOwogICAgIH0KIAogICAg
IHJldHVybiAwOwogfQogCi1QbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2lu
KQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQ
bHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgYm9vbCBpc1NuYXBz
aG90UHJvY2VzcykKIHsKLSAgICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNz
ID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRoKSkKKyAgICBpZiAoUGx1Z2luUHJv
Y2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5w
YXRoLCBpc1NuYXBzaG90UHJvY2VzcykpCiAgICAgICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzOwog
Ci0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblBy
b2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMsIHBsdWdpbik7CisgICAgUmVmUHRyPFBsdWdpblByb2Nl
c3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMs
IHBsdWdpbiwgaXNTbmFwc2hvdFByb2Nlc3MpOwogICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1
Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7CiAKICAgICBtX3BsdWdpblByb2Nl
c3Nlcy5hcHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXgg
NWU1MTk0MjdiYTNmMWRkZmIzN2JkOGJlODNmMzI5NzhjNDdiOGI5Mi4uZjhjMjQwN2RmYzNhY2Zi
NzZlZjI3YjYwZWY5ZDVhMWU5NWZiMTc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCkBAIC01MSw2ICs1MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vzc01hbmFnZXImIHNoYXJlZCgpOwog
CiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3Rv
cmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwor
ICAgIHZvaWQgZ2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5J
bmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4pOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NQcm94
eSopOwogCiAgICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8m
LCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTYz
LDggKzY0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcigp
OwogCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJv
Y2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vz
c1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYs
IGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2lu
UHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90
UHJvY2Vzcyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gPiBtX3Bs
dWdpblByb2Nlc3NlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwYzJlODY4OWU2NDg4NzY4MGU0
MmExMzQ5M2MwZjNlNTBlMGJiMTJhLi43OGY1ZmYwMTA4NmU4YTc5MzBjZjVkZmMxYTYzNjFhOWNl
YTFkZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTUwLDEyICs1MCwxMiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bUxpZmV0aW1lID0gMzAgKiA2MDsKIHN0
YXRpYyBjb25zdCBkb3VibGUgc2h1dGRvd25UaW1lb3V0ID0gMTAgKiA2MDsKIAotUGFzc1JlZlB0
cjxQbHVnaW5Qcm9jZXNzUHJveHk+IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblBy
b2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5m
byYgcGx1Z2luSW5mbykKK1Bhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBQbHVnaW5Qcm9j
ZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFn
ZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8sIGJvb2wgaXNTbmFwc2hvdFBy
b2Nlc3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1
Z2luUHJvY2Vzc01hbmFnZXIsIHBsdWdpbkluZm8pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciwgcGx1Z2luSW5mbywgaXNT
bmFwc2hvdFByb2Nlc3MpKTsKIH0KIAotUGx1Z2luUHJvY2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNz
UHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQ
bHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKQorUGx1Z2luUHJvY2Vzc1Byb3h5OjpQbHVnaW5Q
cm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBj
b25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvLCBib29sIGlzU25hcHNob3RQcm9jZXNz
KQogICAgIDogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Qcm9jZXNzTWFuYWdlcikKICAg
ICAsIG1fcGx1Z2luSW5mbyhwbHVnaW5JbmZvKQogICAgICwgbV9udW1QZW5kaW5nQ29ubmVjdGlv
blJlcXVlc3RzKDApCkBAIC02NCw2ICs2NCw3IEBAIFBsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2lu
UHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlCiAg
ICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3dJc1Nob3dpbmcoZmFsc2UpCiAgICAgLCBtX3ByZUZ1bGxz
Y3JlZW5BcHBQcmVzZW50YXRpb25PcHRpb25zKDApCiAjZW5kaWYKKyAgICAsIG1faXNTbmFwc2hv
dFByb2Nlc3MoaXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgUHJvY2Vzc0xhdW5jaGVyOjpMYXVu
Y2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9
IFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzczsKQEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopCiAKICAg
ICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENv
bnRleHRzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZXh0cy5zaXplKCk7ICsr
aSkKLSAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6UGx1Z2luUHJvY2Vzc0NyYXNoZWQobV9wbHVnaW5JbmZvLnBhdGgpKTsKKyAgICAg
ICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UGx1Z2luUHJvY2Vzc0NyYXNoZWQobV9wbHVnaW5JbmZvLnBhdGgsIG1faXNTbmFwc2hvdFByb2Nl
c3MpKTsKIAogICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgogICAgIHBs
dWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwpAQCAtMjA0LDYgKzIwNSw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAgICAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogCiAgICAgcGFyYW1ldGVycy5wbHVnaW5QYXRoID0gbV9wbHVnaW5J
bmZvLnBhdGg7CisgICAgcGFyYW1ldGVycy5zaG91bGRNdXRlQXVkaW8gPSBtX2lzU25hcHNob3RQ
cm9jZXNzOwogCiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUgPSBtaW5pbXVtTGlmZXRp
bWU7CiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSBzaHV0ZG93blRpbWVvdXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oCmluZGV4IDEzNTdlNmM3ZjViNDkwZjdiNDI0OGVjNzZmNWE1MDRlMmJmMDBlYWIu
LjgyODBmNjc5OGMyNmE2ZWU2NGFjOGMzYTNlNDU5ZTcwMmJhNmE3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBA
IC02Miw3ICs2Miw3IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YSB7CiAKIGNsYXNzIFBsdWdp
blByb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NQcm94eT4sIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gY3JlYXRlKFBs
dWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gY3JlYXRlKFBsdWdpblByb2Nlc3NNYW5h
Z2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOwog
ICAgIH5QbHVnaW5Qcm9jZXNzUHJveHkoKTsKIAogICAgIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8m
IHBsdWdpbkluZm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkluZm87IH0KQEAgLTgyLDYgKzgy
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb25u
ZWN0aW9uOyB9CiAKKyAgICBib29sIGlzU25hcHNob3RQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9pc1NuYXBzaG90UHJvY2VzczsgfQorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogCkBAIC05Nyw3ICs5OSw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNz
TWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgYm9vbCBp
c1NuYXBzaG90UHJvY2Vzcyk7CiAKICAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWls
ZWRUb0xhdW5jaCgpOwogCkBAIC0xNzEsNiArMTczLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZzsKICAgICB1bnNpZ25lZCBtX3ByZUZ1bGxzY3JlZW5B
cHBQcmVzZW50YXRpb25PcHRpb25zOwogI2VuZGlmCisKKyAgICBib29sIG1faXNTbmFwc2hvdFBy
b2Nlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmRlZGEzYThmYWYwM2M5MWNlNzUzYjM3
MzIzMDAxYjI0YTUxM2Q2Ny4uODk2YjM2NTZjMmNiMTA0ZTJjYTc0YjEzMWQ4ZjAxNDcxZTIxYzE0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTQwNiw5ICs0MDYsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblBhdGgoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHIKIAogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MsIFBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7Ci0gICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNo
YXJlZCgpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0
b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKKyAgICBpZiAoIWlzU25hcHNob3RQcm9jZXNzKQor
ICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0aCwgcmVwbHkp
OworICAgIGVsc2UKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFNu
YXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUo
KSwgcGx1Z2luUGF0aCwgcmVwbHkpOwogfQogCiAjZWxpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0
Yzk5OTYxMjUxMWEzZDdlNzNiNDNhYTBjZjdkMTEyY2VkZTk0Y2EyLi4yMGM5YWEzMmM1NGY0NTYy
OGI5YmQ0MTIyMTBlZmI1ZDU0NDEwYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4gPik7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+KTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcywgUGFzc1JlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
Pik7CiAjZWxpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIGRpZEdldFNp
dGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENsZWFyUGx1Z2luU2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCAyMmUyZjA4ZWE5MTIxMWExMzMxNjY1YWQ0MzdlZjljYzNm
YzliZWEyLi45MTA5ODhkNWZkZWM5NjlkOThlMTkyZTQ3NmU2MWU3NWY2OTA5ODVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IHsKICAgICBH
ZXRQbHVnaW5QYXRoKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyB1cmxTdHJpbmcp
IC0+IChXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCB1aW50MzJfdCBwbHVnaW5Mb2FkUG9saWN5KQog
I2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVn
aW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1
cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKKyAgICBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQ
cm9jZXNzKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1
cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKICNlbmRpZgogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAg
IHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNjQ4
YTUxZWI4Yjg4Njc0YjZlZWI5NTU5ZDMwZDAxY2IzOWUxNGQ1OS4uNGIwMDhmZGRjYzVhMzM2MTQ4
MWNjNGUxZmE2MWJlNGY1YjhiYjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00
MSwxMCArNDEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFw
c2hvdFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikK
ICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQogICAgICwgbV9z
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKHN1cHBvcnRzQXN5bmNocm9u
b3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCisgICAgLCBtX2lzU25hcHNob3RQcm9jZXNzKGlzU25h
cHNob3RQcm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246
OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXgg
YmM2NTU4ZmZkY2Q5N2IwMzlmZTdhYjE2MDUxMjNhYmVhODlkZTQ4YS4uMmVhNTU1ZjQxOTIyZTIx
ZDRjMzFlOTUxMTQ2MGI2M2Q2MTFmZWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQz
LDkgKzQzLDkgQEAgY2xhc3MgUGx1Z2luUHJveHk7CiAgICAgCiBjbGFzcyBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiwg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MsIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MsIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSk7CiAgICAg
fQogICAgIH5QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbigpOwogCkBAIC02MCw4ICs2MCwxMCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb247IH0KIAorICAgIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X2lzU25hcHNob3RQcm9jZXNzOyB9CisKIHByaXZhdGU6Ci0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciosIGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcywgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0Fz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9W
RVJSSURFOwpAQCAtODUsNiArODcsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOUFJlbW90ZU9i
amVjdE1hcD4gbV9ucFJlbW90ZU9iamVjdE1hcDsKICAgICAKICAgICBib29sIG1fc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKKworICAgIGJvb2wgbV9pc1NuYXBzaG90
UHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCBiNzcwNTA5OTI2ZDBlMjQwNGFjMDBhZjQ5OTZkM2Rk
NDIzZGFiZjNjLi5hZmQ5MGE0NmE1NDU5MzAyMjRhMTI2YjI1YzJmYzhjMGMxYWE1Y2UyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtNTEsMTQgKzUxLDI1IEBA
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6flBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcigpCiAKIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCkKIHsKKyAgICByZXR1cm4gZ2V0UHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCwg
ZmFsc2UgLyogaXNTbmFwc2hvdFByb2Nlc3MgKi8pOworfQorCitQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICByZXR1cm4g
Z2V0UHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCwgdHJ1ZSAvKiBpc1NuYXBzaG90UHJvY2Vz
cyAqLyk7Cit9CisKK1BsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKK3sKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICht
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXS0+cGx1Z2luUGF0aCgpID09IHBsdWdpblBhdGgp
Ci0gICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnNbaV0uZ2V0KCk7
CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4mIHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uID0gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnNbaV07CisgICAgICAgIGlmIChw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpID09IHBsdWdpblBhdGggJiYgcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmlzU25hcHNob3RQcm9jZXNzKCkgPT0gaXNTbmFwc2hvdFBy
b2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7
CiAgICAgfQogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50
aWZpZXI7CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOwotICAg
IGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRo
KSwKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1
Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVy
biAwOwogCkBAIC03MiwxNCArODMsMTggQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5j
aHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBpc1NuYXBzaG90UHJvY2VzcywgY29ubmVjdGlvbklkZW50
aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogICAgIG1fcGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAKICAg
ICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRl
eCk7Ci0gICAgICAgIEFTU0VSVCghbV9wYXRoc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKLQotICAgICAgICBtX3BhdGhzQW5k
Q29ubmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkpOworICAgICAgICBpZiAoIWlzU25hcHNob3RQcm9jZXNzKSB7CisgICAgICAgICAg
ICBBU1NFUlQoIW1fcGF0aHNBbmROb25TbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5jb250YWlu
cyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7CisgICAgICAgICAgICBt
X3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgQVNTRVJUKCFtX3BhdGhzQW5kU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMu
Y29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOworICAgICAg
ICAgICAgbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLnNldChwbHVnaW5QYXRo
LCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKQEAgLTkyLDE4
ICsxMDcsMjMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3MKIAogICAgIHsKICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fcGF0aHNBbmRDb25uZWN0aW9uc011dGV4KTsKLSAgICAgICAgQVNT
RVJUKG1fcGF0aHNBbmRDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi0+cGx1Z2luUGF0aCgpKSk7Ci0gICAgICAgIAotICAgICAgICBtX3BhdGhzQW5kQ29ubmVjdGlv
bnMucmVtb3ZlKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpOworICAgICAg
ICBpZiAoIXBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5pc1NuYXBzaG90UHJvY2VzcygpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQobV9wYXRoc0FuZE5vblNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25z
LmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKKyAgICAg
ICAgICAgIG1fcGF0aHNBbmROb25TbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUocGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQobV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmNv
bnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKKyAgICAgICAg
ICAgIG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBt
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUodmVjdG9ySW5kZXgpOwogfQogCi12b2lk
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBp
c1NuYXBzaG90UHJvY2VzcykKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENv
bm5lY3Rpb25zTXV0ZXgpOwotICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBt
X3BhdGhzQW5kQ29ubmVjdGlvbnMuZ2V0KHBsdWdpblBhdGgpLmdldCgpOworICAgIENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSAhaXNTbmFwc2hvdFByb2Nlc3MgPyBtX3BhdGhzQW5k
Tm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuZ2V0KHBsdWdpblBhdGgpLmdldCgpCisgICAg
ICAgIDogbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmdldChwbHVnaW5QYXRo
KS5nZXQoKTsKIAogICAgIC8vIEl0J3MgT0sgZm9yIGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJl
OyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBwcm9jZXNzIGRvZXNuJ3Qga25vdwogICAgIC8v
IGFueXRoaW5nIGFib3V0IHRoZSBwbHVnLWluIHByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmgKaW5kZXggNDU1MTVjZGYxNGQ2MmI0Yzc0NDIxMmIzN2MwMjA3MTc4MGZl
NjhhYi4uMDBlMDRmMDY3MzMxOTYzOGY3MzgxN2ZkMGFhZTBlMzZhZjI5ZGU4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApAQCAtNTIsMTYgKzUyLDIxIEBAIHB1YmxpYzoK
ICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CiAKICAgICBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbiogZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoKTsKKyAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0U25hcHNob3RQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogICAgIHZvaWQg
cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qKTsK
IAogICAgIC8vIENhbGxlZCBvbiB0aGUgd2ViIHByb2Nlc3MgY29ubmVjdGlvbiB3b3JrIHF1ZXVl
LgotICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KTsKKyAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAKIHByaXZhdGU6CisKKyAgICBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbiogZ2V0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24+ID4gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnM7CiAKICAgICBN
dXRleCBtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleDsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+ID4gbV9wYXRoc0FuZENvbm5lY3Rpb25zOworICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kTm9u
U25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxD
b3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9u
czsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCmluZGV4IGExODgzNGE2YzlkOTdiYmNmNDY1MjJjODNhZDg4MmU3OWQ1MjVm
ZDEuLjcyYjI4NGI4OGQ3NWFmMjgxZjIwZDU0MmRkMzlkNjNlMjdmOTIyMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtNTUs
MTIgKzU1LDEyIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKQog
ICAgIHJldHVybiArK3VuaXF1ZVBsdWdpbkluc3RhbmNlSUQ7CiB9CiAKLVBhc3NSZWZQdHI8UGx1
Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQor
UGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gUGx1Z2luUHJveHk6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbikKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBsdWdpblByb3h5KHBsdWdpblBhdGgsIGlzU25hcHNob3RQbHVnaW4pKTsKIH0KIAotUGx1Z2lu
UHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb3h5
OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBs
dWdpbikKICAgICA6IG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQogICAgICwgbV9wbHVnaW5JbnN0
YW5jZUlEKGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgpKQogICAgICwgbV9wbHVnaW5CYWNraW5n
U3RvcmVDb250YWluc1ZhbGlkRGF0YShmYWxzZSkKQEAgLTY5LDYgKzY5LDcgQEAgUGx1Z2luUHJv
eHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKICAgICAsIG1fd2FudHNX
aGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVtb3RlTGF5ZXJDbGllbnRJRCgwKQogICAgICwg
bV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxzZSkKKyAgICAsIG1faXNT
bmFwc2hvdFBsdWdpbihpc1NuYXBzaG90UGx1Z2luKQogewogfQogCkBAIC04NCw3ICs4NSw5IEBA
IHZvaWQgUGx1Z2luUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkKCkKIGJvb2wgUGx1Z2luUHJv
eHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBBU1NF
UlQoIW1fY29ubmVjdGlvbik7Ci0gICAgbV9jb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24obV9wbHVnaW5QYXRoKTsKKyAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIm
IGNvbm5lY3Rpb25NYW5hZ2VyID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyKCk7CisgICAgbV9jb25uZWN0aW9uID0gIW1faXNTbmFwc2hvdFBsdWdp
biA/IGNvbm5lY3Rpb25NYW5hZ2VyLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fcGx1Z2lu
UGF0aCkKKyAgICAgICAgOiBjb25uZWN0aW9uTWFuYWdlci5nZXRTbmFwc2hvdFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKG1fcGx1Z2luUGF0aCk7CiAgICAgCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggYjFhODkzYmRkZDRlOGE1YmRmZGE3ODFhNWRiZGE1
MzNiOWUyMDRlMi4uMzE4NzM3YTFlZDI3NzZkYzYwODBjYTcwYjdjMzBmNmI0MDMwYTQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAg
LTU0LDcgKzU0LDcgQEAgc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3Mg
UGx1Z2luUHJveHkgOiBwdWJsaWMgUGx1Z2luIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbHVnaW5Qcm94eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbik7CiAgICAgflBsdWdpblByb3h5KCk7CiAKICAg
ICB1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5JbnN0
YW5jZUlEOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdBc3lu
Y2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV93YWl0aW5nT25Bc3luY2hy
b25vdXNJbml0aWFsaXphdGlvbjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsdWdpblBy
b3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgZXhwbGljaXQgUGx1Z2luUHJveHko
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQbHVnaW4pOwogCiAgICAg
Ly8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYp
OwpAQCAtMjAzLDYgKzIwMyw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVyOwogI2VuZGlmCisKKyAgICBib29sIG1faXNT
bmFwc2hvdFBsdWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGEyMWZhZTM4NWI1YTIx
ZmY3ZmVjYTVhZDUxOTZiMGFmOTFhNjdkMDkuLjE1YjQ5ODFlNWU4MTc1NmUwN2IyZjI2ZGYzMjJk
Yjc1ZjNmNWU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUzNCw3ICs1MzQsOCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6
Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAg
IH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICByZXR1cm4gUGx1Z2luUHJveHk6
OmNyZWF0ZShwbHVnaW5QYXRoKTsKKyAgICBib29sIGlzU25hcHNob3RQbHVnaW4gPSAocGx1Z2lu
RWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OldhaXRpbmdGb3JT
bmFwc2hvdCk7CisgICAgcmV0dXJuIFBsdWdpblByb3h5OjpjcmVhdGUocGx1Z2luUGF0aCwgaXNT
bmFwc2hvdFBsdWdpbik7CiAjZWxzZQogICAgIE5ldHNjYXBlUGx1Z2luOjpzZXRTZXRFeGNlcHRp
b25GdW5jdGlvbihOUFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2JhbEV4Y2VwdGlvbik7CiAgICAg
cmV0dXJuIE5ldHNjYXBlUGx1Z2luOjpjcmVhdGUoTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9y
Q3JlYXRlKHBsdWdpblBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDI4YjdiZmQ3YjAyMzY2ZjM0MGYyNDcxZTA3N2MzNjkwZjJhYThiNmQuLmQ4YWNk
NzM2YmYyZjI4YzgyM2I1ZDY4YzNlZDhhMWQ1YWM5NDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTA3OSw5ICsxMDc5LDkgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiopCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLXZvaWQgV2ViUHJvY2Vzczo6cGx1Z2luUHJv
Y2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykK
IHsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jh
c2hlZChwbHVnaW5QYXRoKTsKKyAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5w
bHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoLCBpc1NuYXBzaG90UHJvY2Vzcyk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA4MmU2Y2M4
ZjJhYjFlOGUwM2Q4Y2U0YTQ5MjgxNGYzOTc3Njc4OTVkLi5kMDE2YTA1Zjg4ZjI0OGFjODRjMmQy
NmUyMTgxMDhiYjY4NzY3OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0Ny
YXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogI2VuZGlmCiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQotICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlv
biosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29s
IGlzU25hcHNob3RQcm9jZXNzKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydE1lbW9yeVNhbXBs
ZXIoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
ZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBlZGNhZDM0ZmYzN2NlYTdhZDEzNWQ2ZDI2NDQyZTFkZWM0ODhkMzA2Li4z
NzI5OTZhOTUwMzgwZTM2OWRiNGFiMTJlZWRlZWM4NzRkMDIxMmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02OSw3ICs2OSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCi0gICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIHBsdWdpblByb2Nlc3Mp
IERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyAgICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChTdHJp
bmcgcGx1Z2luUHJvY2VzcywgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykgRGlzcGF0Y2hPbkNvbm5l
Y3Rpb25RdWV1ZQogI2VuZGlmCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBXVEY6OlN0cmlu
ZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176348</attachid>
            <date>2012-11-27 15:27:39 -0800</date>
            <delta_ts>2012-11-28 01:23:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121127152516.patch</filename>
            <type>text/plain</type>
            <size>37515</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzgxY2I4OWY0NzM0NGU2
ZjUwZGY4NWQ3N2MwNmMzMDViNTM1NjVkZi4uZmE1MGFmNTM0YTFlZDQ2ZmVlOWQ3MDllZjhhYmM3
NzUyNjQ5MWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTI2ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKTogTXV0ZSBhdWRpbyBpZiBzcGVjaWZpZWQgYnkgcHJvY2VzcyBjcmVhdGlv
biBwYXJhbWV0ZXJzLgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogQWRkIHNob3VsZE11dGVBdWRpbyBwcm9jZXNz
IGNyZWF0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNpdGVzV2l0aERhdGEpOiBGb3J3
YXJkIG1lc3NhZ2UgdG8gbm9uIHNuYXBzaG90IHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBt
ZXNzYWdlIHRvIG5vbiBzbmFwc2hvdCBwbHVnaW4gcHJvY2VzcyBvbmx5LgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKTogQWRkIGJv
b2xlYW4gc25hcHNob3RQcm9jZXNzIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyk6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOiBBZGQgc25hcHNob3QgcGx1Z2luIHByb2Nlc3Mgc3Rh
dHVzIHRvIHBsdWdpbiBwcm9jZXNzIGNyYXNoZWQgbWVzc2FnZS4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOiBTZXQgc2hvdWxkTXV0ZUF1
ZGlvIHByb2Nlc3MgY3JlYXRpb24gcGFyYW1ldGVyIGZvciBzbmFwc2hvdAorICAgICAgICBwbHVn
aW4gcHJvY2Vzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmlzU25hcHNob3RQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjppc1NuYXBzaG90UHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBGYWN0b3Igb3V0IGNvZGUgaW50bworICAgICAgICBnZXRQ
cm9jZXNzQ29ubmVjdGlvbiBoZWxwZXIgbWV0aG9kIGZvciByZXVzZSBieSBnZXRTbmFwc2hvdFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OlBsdWdpblByb3h5KTogQWRkIGlzU25hcHNob3RQbHVnaW4gYm9vbGVhbiBtZW1iZXIg
dG8gaW5kaWNhdGUgaWYgdGhlIHBsdWdpbiBpcworICAgICAgICB0byBiZSB1c2VkIGZvciBnZW5l
cmF0aW5nIGEgc25hcHNob3QuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEZXRlcm1pbmUgaWYgdGhlIHBsdWdpbiB0byBiZSBjcmVh
dGVkIGlzIGEgc25hcHNob3QgcGx1Z2luIGJhc2VkIG9uIHRoZQorICAgICAgICBkaXNwbGF5IHN0
YXRlIG9mIEhUTUxQbHVnSW5FbGVtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdpblByb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMTEtMjYgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzZXR0aW5nIHRvIGVuYWJsZSAvIGRpc2FibGUgSFRNTDUgbG9jYWwgc3RvcmFnZSBmdW5jdGlv
bmFsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQy
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZp
ZwppbmRleCAzZTQ1ODhjNjJiYTM2ZTk2NWZmN2M5Nzk4NzE1Y2JlZGFjZDM0M2FkLi5kODhlYjE4
YzNlNDI4N2QyOTA1YWVhNjEwMWFlOWUzMWMzNTZjMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKQEAgLTI5LDcgKzI5LDcgQEAgSU5GT1BM
SVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChXRUJLSVQyX0ZSQU1FV09S
S1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChOT1JNQUxfV0VCS0lUMl9GUkFN
RVdPUktTX0RJUik7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1ld29y
ayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29jb2Eg
LWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEphdmFT
Y3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBTZWN1
cml0eSAtZnJhbWV3b3JrIFdlYkNvcmU7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9
IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3
b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFt
ZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlIC1mcmFtZXdvcmsgQ29yZUF1ZGlvOwog
CiBPVEhFUl9MREZMQUdTID0gJChPVEhFUl9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkpICQoT1RI
RVJfTERGTEFHUyk7CiBPVEhFUl9MREZMQUdTX21hY29zeCA9ICQoRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFj
L1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4
ZWU3ZWQ3ZWQyZi4uYzdlNmFjNjE4Y2YxZmI4M2E4MzhiMTJlODljZTQ2NGY3MzhlMjFmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzU2hpbS5oIgog
I2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVBdWRpby9BdWRpb0hhcmR3
YXJlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTMwNCw2ICszMDUs
MTQgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgogCitzdGF0aWMgdm9pZCBt
dXRlQXVkaW8odm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0
eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVk
aW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRN
YXN0ZXIgfTsKKyAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKKyAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3Qs
ICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmcHJvcGVydHlEYXRhKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IG5vRXJyKTsKK30KKwogdm9pZCBQ
bHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2Vy
dmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQucG9ydCgpOwpA
QCAtMzE5LDYgKzMyOCw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlhbGl6ZVNhbmRib3gobV9w
bHVnaW5QYXRoLCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7CiAjZW5k
aWYKKworICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZE11dGVBdWRpbykKKyAgICAgICAgbXV0ZUF1
ZGlvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBmNTNjMjZlNmIwMWZiNTNmZWRjODg3MTI3ODY0MmY5N2Q2Y2NmNDZk
Li42YTJhNGM2NmI3NDgwZGNiYTQwMzRjZmQ1YjE2ZTYyMjIwNTQ5MjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDAsNiArNDAsNyBAQCBQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkKIHZvaWQg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHBsdWdpblBhdGg7Cisg
ICAgZW5jb2RlciA8PCBzaG91bGRNdXRlQXVkaW87CiAgICAgZW5jb2RlciA8PCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIgPDwgbWluaW11bUxp
ZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwpAQCAtNTUsNiArNTYs
OCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cmVzdWx0LnBsdWdpblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUocmVzdWx0LnNob3VsZE11dGVBdWRpbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAppbmRleCBhNDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNlOGRmMDQ3MzVkZTVjMTFl
Li4wYjBhOWM2MDQwMmU5ZDJlY2ZiM2UwMjdlM2NjYWRlMTA0YmM1ZWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiwgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAg
U3RyaW5nIHBsdWdpblBhdGg7CisgICAgYm9vbCBzaG91bGRNdXRlQXVkaW87CiAgICAgYm9vbCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAgZG91YmxlIG1p
bmltdW1MaWZldGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBmNDk3ODk1ZGI0MmQ5NzUyZWEw
YjdjNGVkNTMyNDFiMzg2ZThhZTlkLi5iNGNmNTFkYzM2ODAyZWVhMTRkOWMxZmJkNDU4M2Y1ZDYw
NjFiMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC01MCw3ICs1MCwxNiBAQCB2b2lkIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5J
bmZvU3RvcmUmIHBsdQogICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7CiAKICAgICBQ
bHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IHBsdWdpbkluZm9TdG9yZS5pbmZvRm9yUGx1Z2luV2l0
aFBhdGgocGx1Z2luUGF0aCk7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNz
ID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbik7CisgICAgUGx1Z2luUHJvY2Vzc1By
b3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbiwgZmFs
c2UpOworICAgIHBsdWdpblByb2Nlc3MtPmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHJlcGx5
KTsKK30KKwordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0U25hcHNob3RQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdWdpbkluZm9TdG9yZSwgY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQorewor
ICAgIEFTU0VSVCghcGx1Z2luUGF0aC5pc051bGwoKSk7CisgICAgCisgICAgUGx1Z2luTW9kdWxl
SW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdp
blBhdGgpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3Jl
YXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIHRydWUpOwogICAgIHBsdWdpblByb2Nlc3MtPmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKHJlcGx5KTsKIH0KIApAQCAtNjQsMzIgKzczLDMzIEBAIHZv
aWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Q
cm9jZXNzUHJveHkqIHBsdWdpblByCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFNp
dGVzV2l0aERhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBXZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXIqIHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0
ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblBy
b2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxzZSk7CiAgICAgcGx1
Z2luUHJvY2Vzcy0+Z2V0U2l0ZXNXaXRoRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNh
bGxiYWNrSUQpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRh
KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
KiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywg
dWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNy
ZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdp
blByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBmYWxzZSk7CiAgICAg
cGx1Z2luUHJvY2Vzcy0+Y2xlYXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHNp
dGVzLCBmbGFncywgbWF4QWdlSW5TZWNvbmRzLCBjYWxsYmFja0lEKTsKIH0KIAotUGx1Z2luUHJv
Y2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NQcm94eSogUGx1Z2luUHJvY2Vz
c01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3BsdWdpblByb2Nlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9wbHVnaW5Qcm9j
ZXNzZXNbaV0tPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICBy
ZXR1cm4gbV9wbHVnaW5Qcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Q
cm9jZXNzUHJveHk+JiBwbHVnaW5Qcm9jZXNzUHJveHkgPSBtX3BsdWdpblByb2Nlc3Nlc1tpXTsK
KyAgICAgICAgaWYgKHBsdWdpblByb2Nlc3NQcm94eS0+cGx1Z2luSW5mbygpLnBhdGggPT0gcGx1
Z2luUGF0aCAmJiBwbHVnaW5Qcm9jZXNzUHJveHktPmlzU25hcHNob3RQcm9jZXNzKCkgPT0gaXNT
bmFwc2hvdFByb2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc1Byb3h5Lmdl
dCgpOwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QbHVnaW5Qcm9jZXNzUHJveHkqIFBs
dWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luKQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFu
YWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbiwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKLSAgICBpZiAoUGx1Z2luUHJvY2Vzc1By
b3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRoKSkK
KyAgICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vz
c1dpdGhQYXRoKHBsdWdpbi5wYXRoLCBpc1NuYXBzaG90UHJvY2VzcykpCiAgICAgICAgIHJldHVy
biBwbHVnaW5Qcm9jZXNzOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2lu
UHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMsIHBsdWdpbik7CisgICAg
UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQ
cm94eTo6Y3JlYXRlKHRoaXMsIHBsdWdpbiwgaXNTbmFwc2hvdFByb2Nlc3MpOwogICAgIFBsdWdp
blByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7CiAK
ICAgICBtX3BsdWdpblByb2Nlc3Nlcy5hcHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxlYXNlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NNYW5hZ2VyLmgKaW5kZXggNWU1MTk0MjdiYTNmMWRkZmIzN2JkOGJlODNmMzI5NzhjNDdiOGI5
Mi4uZjhjMjQwN2RmYzNhY2ZiNzZlZjI3YjYwZWY5ZDVhMWU5NWZiMTc1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vzc01h
bmFnZXImIHNoYXJlZCgpOwogCiAgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBQbHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgZ2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBh
c3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5
KFBsdWdpblByb2Nlc3NQcm94eSopOwogCiAgICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKQEAgLTYzLDggKzY0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQbHVn
aW5Qcm9jZXNzTWFuYWdlcigpOwogCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0
ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwotICAgIFBsdWdpblByb2Nl
c3NQcm94eSogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7
CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3Qg
UGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpOworICAgIFBsdWdpblBy
b2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblBy
b2Nlc3NQcm94eT4gPiBtX3BsdWdpblByb2Nlc3NlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAw
YzJlODY4OWU2NDg4NzY4MGU0MmExMzQ5M2MwZjNlNTBlMGJiMTJhLi43OGY1ZmYwMTA4NmU4YTc5
MzBjZjVkZmMxYTYzNjFhOWNlYTFkZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTUwLDEyICs1MCwx
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bUxpZmV0
aW1lID0gMzAgKiA2MDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc2h1dGRvd25UaW1lb3V0ID0gMTAg
KiA2MDsKIAotUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IFBsdWdpblByb2Nlc3NQcm94
eTo6Y3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbykKK1Bhc3NSZWZQdHI8UGx1Z2luUHJvY2Vz
c1Byb3h5PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciog
UGx1Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8s
IGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVn
aW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIsIHBsdWdpbkluZm8pKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdl
ciwgcGx1Z2luSW5mbywgaXNTbmFwc2hvdFByb2Nlc3MpKTsKIH0KIAotUGx1Z2luUHJvY2Vzc1By
b3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nl
c3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKQorUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdp
blByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvLCBib29s
IGlzU25hcHNob3RQcm9jZXNzKQogICAgIDogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Q
cm9jZXNzTWFuYWdlcikKICAgICAsIG1fcGx1Z2luSW5mbyhwbHVnaW5JbmZvKQogICAgICwgbV9u
dW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKDApCkBAIC02NCw2ICs2NCw3IEBAIFBsdWdpblBy
b2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVn
aW5Qcm9jZXNzTWFuYWdlCiAgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3dJc1Nob3dpbmcoZmFsc2Up
CiAgICAgLCBtX3ByZUZ1bGxzY3JlZW5BcHBQcmVzZW50YXRpb25PcHRpb25zKDApCiAjZW5kaWYK
KyAgICAsIG1faXNTbmFwc2hvdFByb2Nlc3MoaXNTbmFwc2hvdFByb2Nlc3MpCiB7CiAgICAgUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5jaE9wdGlvbnM7CiAgICAgbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzczsKQEAgLTE3
Myw3ICsxNzQsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiopCiAKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9
IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b250ZXh0cy5zaXplKCk7ICsraSkKLSAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UGx1Z2luUHJvY2Vzc0NyYXNoZWQobV9wbHVnaW5J
bmZvLnBhdGgpKTsKKyAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6UGx1Z2luUHJvY2Vzc0NyYXNoZWQobV9wbHVnaW5JbmZvLnBhdGgs
IG1faXNTbmFwc2hvdFByb2Nlc3MpKTsKIAogICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBi
ZSBkZWxldGVkLgogICAgIHBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwpA
QCAtMjA0LDYgKzIwNSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAgICAgUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCiAgICAgcGFyYW1ldGVycy5wbHVn
aW5QYXRoID0gbV9wbHVnaW5JbmZvLnBhdGg7CisgICAgcGFyYW1ldGVycy5zaG91bGRNdXRlQXVk
aW8gPSBtX2lzU25hcHNob3RQcm9jZXNzOwogCiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRp
bWUgPSBtaW5pbXVtTGlmZXRpbWU7CiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQg
PSBzaHV0ZG93blRpbWVvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDEzNTdlNmM3ZjViNDkwZjdiNDI0OGVj
NzZmNWE1MDRlMmJmMDBlYWIuLjgyODBmNjc5OGMyNmE2ZWU2NGFjOGMzYTNlNDU5ZTcwMmJhNmE3
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5oCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0
YSB7CiAKIGNsYXNzIFBsdWdpblByb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdp
blByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUHJvY2Vzc0xhdW5j
aGVyOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nl
c3NQcm94eT4gY3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gY3JlYXRl
KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJvb2wgaXNT
bmFwc2hvdFByb2Nlc3MpOwogICAgIH5QbHVnaW5Qcm9jZXNzUHJveHkoKTsKIAogICAgIGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbklu
Zm87IH0KQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAKKyAgICBib29sIGlzU25hcHNob3RQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9pc1NuYXBzaG90UHJvY2VzczsgfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogCkBAIC05Nyw3
ICs5OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFBsdWdpblByb2Nlc3NQ
cm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKKyAg
ICBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJiwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAKICAgICB2b2lkIHBsdWdpblBy
b2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogCkBAIC0xNzEsNiArMTczLDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZzsKICAgICB1bnNpZ25l
ZCBtX3ByZUZ1bGxzY3JlZW5BcHBQcmVzZW50YXRpb25PcHRpb25zOwogI2VuZGlmCisKKyAgICBi
b29sIG1faXNTbmFwc2hvdFByb2Nlc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmRlZGEz
YThmYWYwM2M5MWNlNzUzYjM3MzIzMDAxYjI0YTUxM2Q2Ny4uODk2YjM2NTZjMmNiMTA0ZTJjYTc0
YjEzMWQ4ZjAxNDcxZTIxYzE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTQwNiw5ICs0MDYsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldFBsdWdpblBhdGgoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFz
c1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFw
c2hvdFByb2Nlc3MsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7Ci0gICAgUGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29u
dGV4dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKKyAgICBpZiAoIWlz
U25hcHNob3RQcm9jZXNzKQorICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCku
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwg
cGx1Z2luUGF0aCwgcmVwbHkpOworICAgIGVsc2UKKyAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFn
ZXI6OnNoYXJlZCgpLmdldFNuYXBzaG90UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0
LT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0aCwgcmVwbHkpOwogfQogCiAjZWxpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCA0Yzk5OTYxMjUxMWEzZDdlNzNiNDNhYTBjZjdkMTEyY2VkZTk0Y2Ey
Li4yMGM5YWEzMmM1NGY0NTYyOGI5YmQ0MTIyMTBlZmI1ZDU0NDEwYTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFz
c093blB0cjxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gPik7CiAjZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHZv
aWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcywgUGFz
c1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5Pik7CiAjZWxpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
ICAgICB2b2lkIGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENsZWFyUGx1Z2luU2l0
ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMmUyZjA4ZWE5MTIxMWEx
MzMxNjY1YWQ0MzdlZjljYzNmYzliZWEyLi45MTA5ODhkNWZkZWM5NjlkOThlMTkyZTQ3NmU2MWU3
NWY2OTA5ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2Vzc1Byb3h5IHsKICAgICBHZXRQbHVnaW5QYXRoKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6
OlN0cmluZyB1cmxTdHJpbmcpIC0+IChXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCB1aW50MzJfdCBw
bHVnaW5Mb2FkUG9saWN5KQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihXVEY6OlN0cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5
ZWQKKyAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRo
LCBib29sIGlzU25hcHNob3RQcm9jZXNzKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5
ZWQKICNlbmRpZgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiAhRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQogICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8
V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggNjQ4YTUxZWI4Yjg4Njc0YjZlZWI5NTU5ZDMwZDAxY2IzOWUxNGQ1OS4u
NGIwMDhmZGRjYzVhMzM2MTQ4MWNjNGUxZmE2MWJlNGY1YjhiYjIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC00MSwxMCArNDEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQorUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
KHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChwbHVn
aW5QYXRoKQogICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCisgICAgLCBtX2lzU25h
cHNob3RQcm9jZXNzKGlzU25hcHNob3RQcm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvbiA9IENv
cmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50
aWZpZXIsIHRoaXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggYmM2NTU4ZmZkY2Q5N2IwMzlmZTdhYjE2MDUxMjNhYmVhODlkZTQ4
YS4uMmVhNTU1ZjQxOTIyZTIxZDRjMzFlOTUxMTQ2MGI2M2Q2MTFmZWNkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgUGx1Z2luUHJveHk7CiAgICAgCiBj
bGFzcyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uPiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNT
bmFwc2hvdFByb2Nlc3MsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24ocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0
aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nl
c3MsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKSk7CiAgICAgfQogICAgIH5QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbigpOwogCkBA
IC02MCw4ICs2MCwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzQXN5bmNocm9u
b3VzUGx1Z2luSW5pdGlhbGl6YXRpb247IH0KIAorICAgIGJvb2wgaXNTbmFwc2hvdFByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2lzU25hcHNob3RQcm9jZXNzOyB9CisKIHByaXZhdGU6Ci0gICAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24pOworICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJv
Y2VzcywgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKIAogICAgIC8vIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwpAQCAtODUsNiArODcsOCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxOUFJlbW90ZU9iamVjdE1hcD4gbV9ucFJlbW90ZU9iamVjdE1hcDsKICAgICAKICAg
ICBib29sIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKKworICAg
IGJvb2wgbV9pc1NuYXBzaG90UHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCBiNzcwNTA5OTI2ZDBl
MjQwNGFjMDBhZjQ5OTZkM2RkNDIzZGFiZjNjLi5jYzg2MmU0YjY1N2Y0YjJlNTJmOWMxOWJmNzRi
MGUzNzZhMThkNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApA
QCAtNTEsMTQgKzUxLDI1IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6flBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpCiAKIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKKyAgICByZXR1cm4gZ2V0UHJvY2Vzc0Nvbm5l
Y3Rpb24ocGx1Z2luUGF0aCwgZmFsc2UpOworfQorCitQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiog
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRTbmFwc2hvdFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICByZXR1cm4gZ2V0UHJv
Y2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCwgdHJ1ZSk7Cit9CisKK1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKK3sK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXS0+
cGx1Z2luUGF0aCgpID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbnNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbj4mIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gbV9wbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbnNbaV07CisgICAgICAgIGlmIChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2lu
UGF0aCgpID09IHBsdWdpblBhdGggJiYgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmlzU25hcHNo
b3RQcm9jZXNzKCkgPT0gaXNTbmFwc2hvdFByb2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uZ2V0KCk7CiAgICAgfQogCiAgICAgQ29yZUlQQzo6QXR0YWNo
bWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5j
aHJvbm91c0luaXRpYWxpemF0aW9uOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoKSwKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUGF0aCwgaXNTbmFwc2hvdFByb2Nlc3MpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHko
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC03MiwxNCArODMsMTggQEAgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIAotICAgIFJl
ZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBS
ZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBpc1NuYXBz
aG90UHJvY2VzcywgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24pOwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleCk7Ci0gICAgICAgIEFTU0VSVCghbV9wYXRoc0Fu
ZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRo
KCkpKTsKLQotICAgICAgICBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOworICAgICAgICBpZiAoIWlzU25h
cHNob3RQcm9jZXNzKSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmROb25TbmFwc2hv
dFByb2Nlc3NDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1
Z2luUGF0aCgpKSk7CisgICAgICAgICAgICBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29u
bmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKCFtX3BhdGhzQW5k
U25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24tPnBsdWdpblBhdGgoKSkpOworICAgICAgICAgICAgbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vz
c0Nvbm5lY3Rpb25zLnNldChwbHVnaW5QYXRoLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5nZXQoKTsKQEAgLTkyLDE4ICsxMDcsMjMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblBy
b2Nlc3MKIAogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGF0aHNBbmRDb25u
ZWN0aW9uc011dGV4KTsKLSAgICAgICAgQVNTRVJUKG1fcGF0aHNBbmRDb25uZWN0aW9ucy5jb250
YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKSk7Ci0gICAgICAgIAot
ICAgICAgICBtX3BhdGhzQW5kQ29ubmVjdGlvbnMucmVtb3ZlKHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLT5wbHVnaW5QYXRoKCkpOworICAgICAgICBpZiAoIXBsdWdpblByb2Nlc3NDb25uZWN0aW9u
LT5pc1NuYXBzaG90UHJvY2VzcygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9wYXRoc0FuZE5v
blNuYXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLT5wbHVnaW5QYXRoKCkpKTsKKyAgICAgICAgICAgIG1fcGF0aHNBbmROb25TbmFwc2hvdFBy
b2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBh
dGgoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobV9wYXRoc0FuZFNu
YXBzaG90UHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nlc3NDb25uZWN0aW9u
LT5wbHVnaW5QYXRoKCkpKTsKKyAgICAgICAgICAgIG1fcGF0aHNBbmRTbmFwc2hvdFByb2Nlc3ND
b25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5yZW1v
dmUodmVjdG9ySW5kZXgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
cjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwotICAgIENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuZ2V0KHBsdWdp
blBhdGgpLmdldCgpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSAhaXNT
bmFwc2hvdFByb2Nlc3MgPyBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnMu
Z2V0KHBsdWdpblBhdGgpLmdldCgpCisgICAgICAgIDogbV9wYXRoc0FuZFNuYXBzaG90UHJvY2Vz
c0Nvbm5lY3Rpb25zLmdldChwbHVnaW5QYXRoKS5nZXQoKTsKIAogICAgIC8vIEl0J3MgT0sgZm9y
IGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBw
cm9jZXNzIGRvZXNuJ3Qga25vdwogICAgIC8vIGFueXRoaW5nIGFib3V0IHRoZSBwbHVnLWluIHBy
b2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKaW5kZXggNDU1MTVjZGYx
NGQ2MmI0Yzc0NDIxMmIzN2MwMjA3MTc4MGZlNjhhYi4uMDBlMDRmMDY3MzMxOTYzOGY3MzgxN2Zk
MGFhZTBlMzZhZjI5ZGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApA
QCAtNTIsMTYgKzUyLDIxIEBAIHB1YmxpYzoKICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKCk7CiAKICAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbiogZ2V0U25hcHNob3RQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgd2ViIHBy
b2Nlc3MgY29ubmVjdGlvbiB3b3JrIHF1ZXVlLgotICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNo
ZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFz
aGVkKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCBpc1NuYXBzaG90UHJvY2Vzcyk7CiAK
IHByaXZhdGU6CisKKyAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogZ2V0UHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsK
KwogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+ID4gbV9wbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbnM7CiAKICAgICBNdXRleCBtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRl
eDsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+ID4gbV9w
YXRoc0FuZENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8Q29yZUlQQzo6
Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kTm9uU25hcHNob3RQcm9jZXNzQ29ubmVjdGlvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNB
bmRTbmFwc2hvdFByb2Nlc3NDb25uZWN0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGExODgzNGE2Yzlk
OTdiYmNmNDY1MjJjODNhZDg4MmU3OWQ1MjVmZDEuLjcyYjI4NGI4OGQ3NWFmMjgxZjIwZDU0MmRk
MzlkNjNlMjdmOTIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHN0YXRpYyB1aW50NjRfdCBn
ZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKQogICAgIHJldHVybiArK3VuaXF1ZVBsdWdpbkluc3Rh
bmNlSUQ7CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gUGx1Z2lu
UHJveHk6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBs
dWdpbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb3h5KHBsdWdpblBhdGgsIGlzU25h
cHNob3RQbHVnaW4pKTsKIH0KIAotUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbikKICAgICA6IG1fcGx1Z2luUGF0aChwbHVn
aW5QYXRoKQogICAgICwgbV9wbHVnaW5JbnN0YW5jZUlEKGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJ
RCgpKQogICAgICwgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YShmYWxzZSkK
QEAgLTY5LDYgKzY5LDcgQEAgUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCkKICAgICAsIG1fd2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVt
b3RlTGF5ZXJDbGllbnRJRCgwKQogICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFs
aXphdGlvbihmYWxzZSkKKyAgICAsIG1faXNTbmFwc2hvdFBsdWdpbihpc1NuYXBzaG90UGx1Z2lu
KQogewogfQogCkBAIC04NCw3ICs4NSw5IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBsdWdpblByb2Nl
c3NDcmFzaGVkKCkKIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci0gICAgbV9jb25u
ZWN0aW9uID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9wbHVnaW5QYXRoKTsKKyAgICBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXImIGNvbm5lY3Rpb25NYW5hZ2VyID0gV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CisgICAgbV9jb25u
ZWN0aW9uID0gIW1faXNTbmFwc2hvdFBsdWdpbiA/IGNvbm5lY3Rpb25NYW5hZ2VyLmdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKG1fcGx1Z2luUGF0aCkKKyAgICAgICAgOiBjb25uZWN0aW9uTWFu
YWdlci5nZXRTbmFwc2hvdFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fcGx1Z2luUGF0aCk7CiAg
ICAgCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggYjFh
ODkzYmRkZDRlOGE1YmRmZGE3ODFhNWRiZGE1MzNiOWUyMDRlMi4uMzE4NzM3YTFlZDI3NzZkYzYw
ODBjYTcwYjdjMzBmNmI0MDMwYTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUGx1Z2luUHJveHkgOiBwdWJsaWMgUGx1Z2luIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wgaXNTbmFwc2hvdFBsdWdpbik7
CiAgICAgflBsdWdpblByb3h5KCk7CiAKICAgICB1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wbHVnaW5JbnN0YW5jZUlEOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qg
eyByZXR1cm4gbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsgfQogCiBwcml2
YXRlOgotICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7
CisgICAgZXhwbGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29s
IGlzU25hcHNob3RQbHVnaW4pOwogCiAgICAgLy8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGlu
aXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpOwpAQCAtMjAzLDYgKzIwMyw4IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVy
OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTbmFwc2hvdFBsdWdpbjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGEyMWZhZTM4NWI1YTIxZmY3ZmVjYTVhZDUxOTZiMGFmOTFhNjdkMDkuLjE1
YjQ5ODFlNWU4MTc1NmUwN2IyZjI2ZGYzMjJkYjc1ZjNmNWU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzNCw3ICs1MzQsOCBAQCBQ
YXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwg
SFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAgIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLSAgICByZXR1cm4gUGx1Z2luUHJveHk6OmNyZWF0ZShwbHVnaW5QYXRoKTsKKyAgICBib29s
IGlzU25hcHNob3RQbHVnaW4gPSAocGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRN
TFBsdWdJbkVsZW1lbnQ6OldhaXRpbmdGb3JTbmFwc2hvdCk7CisgICAgcmV0dXJuIFBsdWdpblBy
b3h5OjpjcmVhdGUocGx1Z2luUGF0aCwgaXNTbmFwc2hvdFBsdWdpbik7CiAjZWxzZQogICAgIE5l
dHNjYXBlUGx1Z2luOjpzZXRTZXRFeGNlcHRpb25GdW5jdGlvbihOUFJ1bnRpbWVPYmplY3RNYXA6
OnNldEdsb2JhbEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIE5ldHNjYXBlUGx1Z2luOjpjcmVhdGUo
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKHBsdWdpblBhdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDI4YjdiZmQ3YjAyMzY2ZjM0MGYy
NDcxZTA3N2MzNjkwZjJhYThiNmQuLmQ4YWNkNzM2YmYyZjI4YzgyM2I1ZDY4YzNlZDhhMWQ1YWM5
NDhiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTA3
OSw5ICsxMDc5LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29y
ZUlQQzo6Q29ubmVjdGlvbiopCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
LXZvaWQgV2ViUHJvY2Vzczo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlv
biosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z2luUHJv
Y2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgYm9vbCBpc1NuYXBzaG90UHJvY2VzcykKIHsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoKTsKKyAgICBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRo
LCBpc1NuYXBzaG90UHJvY2Vzcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCA4MmU2Y2M4ZjJhYjFlOGUwM2Q4Y2U0YTQ5MjgxNGYzOTc3Njc4
OTVkLi5kMDE2YTA1Zjg4ZjI0OGFjODRjMmQyNmUyMTgxMDhiYjY4NzY3OGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwog
I2VuZGlmCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHZvaWQgcGx1Z2luUHJvY2Vz
c0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7
CisgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBib29sIGlzU25hcHNob3RQcm9jZXNzKTsKICNlbmRpZgog
CiAgICAgdm9pZCBzdGFydE1lbW9yeVNhbXBsZXIoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGNhZDM0ZmYzN2NlYTdh
ZDEzNWQ2ZDI2NDQyZTFkZWM0ODhkMzA2Li4zNzI5OTZhOTUwMzgwZTM2OWRiNGFiMTJlZWRlZWM4
NzRkMDIxMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC02OSw3ICs2OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mgewog
I2VuZGlmCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgUGx1Z2luUHJvY2Vzc0Ny
YXNoZWQoU3RyaW5nIHBsdWdpblByb2Nlc3MpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyAg
ICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJvY2VzcywgYm9vbCBpc1NuYXBz
aG90UHJvY2VzcykgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCiAKICAgICB2b2lk
IFN0YXJ0TWVtb3J5U2FtcGxlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1w
bGVMb2dGaWxlSGFuZGxlLCBXVEY6OlN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGlu
dGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176425</attachid>
            <date>2012-11-28 01:23:30 -0800</date>
            <delta_ts>2012-11-29 00:13:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121128012105.patch</filename>
            <type>text/plain</type>
            <size>38505</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2E3OWM3ZGZhN2FlNzYy
NzExOGQ4YjIxYWJiOTZiNGQ3ZTk3ZmUyYy4uMTM1OGRhOTUwMDBkNTZiODQ5Zjg4N2VmZGRjYjQ5
OWE4ZjNhOGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTExLTI4ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6IEFkZCBQbHVnaW5Qcm9jZXNzOjpU
eXBlIGVudW0gd2l0aCB2YWx1ZXMgZm9yIHJlZ3VsYXIgYW5kCisgICAgICAgIHNuYXBzaG90IHBy
b2Nlc3MgdHlwZXMuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKTogTXV0ZSBhdWRpbyBpZiB0aGUgcHJvY2Vz
cyBjcmVhdGlvbiBwYXJhbWV0ZXJzIGluZGljYXRlCisgICAgICAgIHRoYXQgdGhlIHBsdWdpbiBw
cm9jZXNzIHR5cGUgaXMgc25hcHNob3QgcHJvY2Vzcy4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IEFkZCBwcm9j
ZXNzVHlwZSBwcm9jZXNzIGNyZWF0aW9uIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6IEFkZCBwcm9jZXNz
IHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
Z2V0U2l0ZXNXaXRoRGF0YSk6IEZvcndhcmQgbWVzc2FnZSB0byByZWd1bGFyIHBsdWdpbiBwcm9j
ZXNzIG9ubHkuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNp
dGVEYXRhKTogRm9yd2FyZCBtZXNzYWdlIHRvIHJlZ3VsYXIgcGx1Z2luIHByb2Nlc3Mgb25seS4K
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRo
UGF0aCk6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSk6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1l
dGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQ
cm94eSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENs
b3NlKTogSW5jbHVkZSBwcm9jZXNzIHR5cGUgd2l0aCB0aGUgcGx1Z2luIHByb2Nlc3MgY3Jhc2hl
ZCBtZXNzYWdlLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlz
aExhdW5jaGluZyk6IFNldCBwcm9jZXNzIHR5cGUgcHJvY2VzcyBjcmVhdGlvbiBwYXJhbWV0ZXIu
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cHJvY2Vzc1R5cGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTogUGFzcyBhbG9uZyBwcm9jZXNz
IHR5cGUgcGFyYW1ldGVyIHRvCisgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjogQWRk
IHByb2Nlc3MgdHlwZSBwYXJhbWV0ZXIgdG8gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gbWVz
c2FnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24pOiBBZGQgcHJvY2VzcyB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6cHJvY2Vzc1R5cGUpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92
ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTogVXNlIHByb2Nlc3MgdHlwZSBpbiBhZGRpdGlvbiB0
bworICAgICAgICBwbHVnaW4gcGF0aCB0byBmaW5kIHRoZSBjb25uZWN0aW9uIHRvIHJlbW92ZS4K
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpwbHVnaW5Q
cm9jZXNzQ3Jhc2hlZCk6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKTogQWRkIEhUTUxQbHVnSW5FbGVtZW50IGRpc3BsYXlTdGF0
ZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6IFVzZSBk
aXNwbGF5IHN0YXRlIHRvIGRldGVybWluZSB0aGUgcHJvY2VzcyB0eXBlIG9mCisgICAgICAgIHBs
dWdpbiBwcm9jZXNzIGNvbm5lY3Rpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBBZGQgcGx1Z2luIGVsZW1l
bnQgZGlzcGxheSBzdGF0ZSB0byBjb25zdHJ1Y3RvciBjYWxsLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdpblBy
b2Nlc3NDcmFzaGVkKTogUGFzcyBhbG9uZyBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyIHRvCisgICAg
ICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyIHRvIFBsdWdpblByb2Nlc3NDcmFzaGVkIG1l
c3NhZ2UuCisKIDIwMTItMTEtMjcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUERGUGx1Z2luOiBTaG91bGQgbm90IGJlIGFibGUgdG8gZWRpdCByZWFk
LW9ubHkgdGV4dCBhbm5vdGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmln
dXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25z
L1dlYktpdDIueGNjb25maWcKaW5kZXggM2U0NTg4YzYyYmEzNmU5NjVmZjdjOTc5ODcxNWNiZWRh
Y2QzNDNhZC4uZDg4ZWIxOGMzZTQyODdkMjkwNWFlYTYxMDFhZTllMzFjMzU2YzA2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCkBAIC0yOSw3
ICsyOSw3IEBAIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFUSCA9ICQo
V0VCS0lUMl9GUkFNRVdPUktTX0RJUik7CiBEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9ICQoTk9S
TUFMX1dFQktJVDJfRlJBTUVXT1JLU19ESVIpOwogCi1GUkFNRVdPUktfQU5EX0xJQlJBUllfTERG
TEFHUyA9IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAt
ZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQg
LWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3Jl
IC1mcmFtZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlOworRlJBTUVXT1JLX0FORF9M
SUJSQVJZX0xERkxBR1MgPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29y
ayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3
b3JrIElPS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFtZXdvcmsg
UXVhcnR6Q29yZSAtZnJhbWV3b3JrIFNlY3VyaXR5IC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJhbWV3
b3JrIENvcmVBdWRpbzsKIAogT1RIRVJfTERGTEFHUyA9ICQoT1RIRVJfTERGTEFHU18kKFBMQVRG
T1JNX05BTUUpKSAkKE9USEVSX0xERkxBR1MpOwogT1RIRVJfTERGTEFHU19tYWNvc3ggPSAkKEZS
QU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLmgKaW5kZXggZDYwYzk0YjkyNjAzNWM4Y2Q4NGFiZDZjYTUxYjk2
ZmFhNjA4ZjQ1OS4uYmVjYmViNzgyNDllODQwMzg4NGY4MDA5YzJkODljYWU5OTc3ZDAwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKQEAgLTQ1LDYg
KzQ1LDEyIEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3Mg
UGx1Z2luUHJvY2VzcyA6IENoaWxkUHJvY2VzcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UGx1Z2luUHJvY2Vzcyk7CiBwdWJsaWM6CisKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBUeXBl
UmVndWxhclByb2Nlc3MsCisgICAgICAgIFR5cGVTbmFwc2hvdFByb2Nlc3MKKyAgICB9OworCiAg
ICAgc3RhdGljIFBsdWdpblByb2Nlc3MmIHNoYXJlZCgpOwogCiAgICAgdm9pZCBpbml0aWFsaXpl
KENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OlJ1bkxvb3AqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFj
Lm1tCmluZGV4IDY3MWYyMGQ2ZGNhYmUxZmMxYmEzOTU1N2Q1ZTYyOGVlN2VkN2VkMmYuLmI3YzUy
ZTYxMzRjYjQ0YWVkYzIzNjQ1NTlkODE0NmFmMmY0ZDBjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMzMsNiAr
MzMsNyBAQAogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1NoaW0uaCIKICNpbXBvcnQgIlBsdWdpblBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCisjaW1wb3J0IDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KICNpbXBvcnQgPGRsZmNuLmg+CkBAIC0zMDQsNiArMzA1LDE0IEBAIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5n
JiBzYW5kYm94UHJvCiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCit7
CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgcHJvcGVydHlBZGRyZXNzID0geyBrQXVk
aW9IYXJkd2FyZVByb3BlcnR5UHJvY2Vzc0lzQXVkaWJsZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlT
Y29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgVUlu
dDMyIHByb3BlcnR5RGF0YSA9IDA7CisgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RT
ZXRQcm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmcHJvcGVydHlBZGRyZXNz
LCAwLCAwLCBzaXplb2YoVUludDMyKSwgJnByb3BlcnR5RGF0YSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCA9PSBub0Vycik7Cit9CisKIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7CiAgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBwYXJhbWV0
ZXJzLmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0LnBvcnQoKTsKQEAgLTMxOSw2ICszMjgsOSBA
QCB2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAogICAgIGluaXRpYWxpemVTYW5kYm94KG1fcGx1Z2luUGF0aCwgcGFyYW1l
dGVycy5zYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgpOwogI2VuZGlmCisKKyAgICBpZiAocGFy
YW1ldGVycy5wcm9jZXNzVHlwZSA9PSBUeXBlU25hcHNob3RQcm9jZXNzKQorICAgICAgICBtdXRl
QXVkaW8oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IGY1M2MyNmU2YjAxZmI1M2ZlZGM4ODcxMjc4NjQyZjk3ZDZjY2Y0
NmQuLmY1ZTUxMDFlYTUxNTBiYTJiOGUyMzI0YjhjZjMwYzYyNTA5Mzg5ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC00MCw2ICs0MCw3IEBAIFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKQogdm9p
ZCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgcGx1Z2luUGF0aDsK
KyAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJvY2Vzc1R5cGUpOwogICAgIGVuY29kZXIgPDwgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKICAgICBlbmNvZGVyIDw8IG1p
bmltdW1MaWZldGltZTsKICAgICBlbmNvZGVyIDw8IHRlcm1pbmF0aW9uVGltZW91dDsKQEAgLTU1
LDYgKzU2LDggQEAgYm9vbCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLAogewogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHJlc3VsdC5wbHVnaW5QYXRoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlRW51bShyZXN1bHQucHJvY2Vzc1R5cGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lm1pbmltdW1MaWZldGltZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYTQxNDIxMmJlOWEwZjY4MmVjODVhMzBjZThkZjA0NzM1
ZGU1YzExZS4uMWIzZjlmZjI3NzU4ZDY4Mzg5MDlhNjA3MTY2YTZmYmQ0ZDQ0YjYxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQogCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDgsNiArNDks
NyBAQCBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKTsKIAogICAgIFN0cmluZyBwbHVnaW5QYXRoOworICAgIFBsdWdpblBy
b2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGU7CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAgZG91YmxlIG1pbmltdW1MaWZldGltZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NN
YW5hZ2VyLmNwcAppbmRleCBmNDk3ODk1ZGI0MmQ5NzUyZWEwYjdjNGVkNTMyNDFiMzg2ZThhZTlk
Li44MzRjODdmYzQ2M2Q5NTE3MzkzNTU2ZGQxNmM4YTQ0MjIyYzUzNmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OlBsdWdpblBy
b2Nlc3NNYW5hZ2VyKCkKIHsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiBwbHVnaW5JbmZvU3Rv
cmUsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBs
eSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KGNvbnN0IFBsdWdpbkluZm9TdG9yZSYgcGx1Z2luSW5mb1N0b3JlLCBjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUsIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFwbHVnaW5QYXRoLmlzTnVsbCgpKTsKIAog
ICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gcGx1Z2luSW5mb1N0b3JlLmluZm9Gb3JQbHVn
aW5XaXRoUGF0aChwbHVnaW5QYXRoKTsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblBy
b2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9j
ZXNzUHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2lu
LCBwcm9jZXNzVHlwZSk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24ocmVwbHkpOwogfQogCkBAIC02NCwzMiArNjQsMzMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NQcm94eSogcGx1
Z2luUHIKIAogdm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0U2l0ZXNXaXRoRGF0YShjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciogd2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFBsdWdp
blByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyhw
bHVnaW4pOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3Jl
YXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIFBsdWdpblByb2Nlc3M6OlR5cGVSZWd1bGFyUHJvY2Vz
cyk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Z2V0U2l0ZXNXaXRoRGF0YSh3ZWJQbHVnaW5TaXRlRGF0
YU1hbmFnZXIsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpj
bGVhclNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nl
c3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luKTsKKyAgICBQbHVnaW5Qcm9jZXNz
UHJveHkqIHBsdWdpblByb2Nlc3MgPSBnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MocGx1Z2luLCBQ
bHVnaW5Qcm9jZXNzOjpUeXBlUmVndWxhclByb2Nlc3MpOwogICAgIHBsdWdpblByb2Nlc3MtPmNs
ZWFyU2l0ZURhdGEod2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLCBzaXRlcywgZmxhZ3MsIG1heEFn
ZUluU2Vjb25kcywgY2FsbGJhY2tJRCk7CiB9CiAKLVBsdWdpblByb2Nlc3NQcm94eSogUGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpCitQbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Q
cm9jZXNzV2l0aFBhdGgoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpU
eXBlIHByb2Nlc3NUeXBlKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Q
cm9jZXNzZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fcGx1Z2luUHJvY2Vzc2VzW2ld
LT5wbHVnaW5JbmZvKCkucGF0aCA9PSBwbHVnaW5QYXRoKQotICAgICAgICAgICAgcmV0dXJuIG1f
cGx1Z2luUHJvY2Vzc2VzW2ldLmdldCgpOworICAgICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc1By
b3h5PiYgcGx1Z2luUHJvY2Vzc1Byb3h5ID0gbV9wbHVnaW5Qcm9jZXNzZXNbaV07CisgICAgICAg
IGlmIChwbHVnaW5Qcm9jZXNzUHJveHktPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBhdGgg
JiYgcGx1Z2luUHJvY2Vzc1Byb3h5LT5wcm9jZXNzVHlwZSgpID09IHByb2Nlc3NUeXBlKQorICAg
ICAgICAgICAgcmV0dXJuIHBsdWdpblByb2Nlc3NQcm94eS5nZXQoKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gMDsKIH0KIAotUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikK
K1BsdWdpblByb2Nlc3NQcm94eSogUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmdldE9yQ3JlYXRlUGx1
Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIFBsdWdpblByb2Nlc3M6
OlR5cGUgcHJvY2Vzc1R5cGUpCiB7Ci0gICAgaWYgKFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2lu
UHJvY2VzcyA9IHBsdWdpblByb2Nlc3NXaXRoUGF0aChwbHVnaW4ucGF0aCkpCisgICAgaWYgKFBs
dWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IHBsdWdpblByb2Nlc3NXaXRoUGF0aChw
bHVnaW4ucGF0aCwgcHJvY2Vzc1R5cGUpKQogICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2VzczsK
IAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Q
cm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzLCBwbHVnaW4pOworICAgIFJlZlB0cjxQbHVnaW5Qcm9j
ZXNzUHJveHk+IHBsdWdpblByb2Nlc3MgPSBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlz
LCBwbHVnaW4sIHByb2Nlc3NUeXBlKTsKICAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblBy
b2Nlc3NQdHIgPSBwbHVnaW5Qcm9jZXNzLmdldCgpOwogCiAgICAgbV9wbHVnaW5Qcm9jZXNzZXMu
YXBwZW5kKHBsdWdpblByb2Nlc3MucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCmluZGV4IDVlNTE5
NDI3YmEzZjFkZGZiMzdiZDhiZTgzZjMyOTc4YzQ3YjhiOTIuLmY4NDUyMWE0OTczYzUzMDQyYmVl
NjIxNDc5Y2FhNTlhOGYxYThhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8u
aCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpAQCAtNTAsNyArNTEsNyBAQCBjbGFzcyBQbHVnaW5Qcm9jZXNzTWFuYWdlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBsdWdpblByb2Nlc3NNYW5hZ2VyJiBzaGFyZWQoKTsKIAot
ICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3Jl
JiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKKyAg
ICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFBsdWdpbkluZm9TdG9yZSYs
IGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pik7CiAgICAgdm9pZCByZW1vdmVQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2lu
UHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2b2lkIGdldFNpdGVzV2l0aERhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYsIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciosIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwpAQCAtNjMsOCArNjQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nl
c3NNYW5hZ2VyKCk7CiAKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIGdldE9yQ3JlYXRlUGx1Z2lu
UHJvY2Vzcyhjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5
KiBwbHVnaW5Qcm9jZXNzV2l0aFBhdGgoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkqIGdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJiwgUGx1Z2luUHJvY2Vzczo6VHlwZSk7CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5
KiBwbHVnaW5Qcm9jZXNzV2l0aFBhdGgoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Q
cm9jZXNzOjpUeXBlKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiA+
IG1fcGx1Z2luUHJvY2Vzc2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IDBjMmU4Njg5ZTY0ODg3
NjgwZTQyYTEzNDkzYzBmM2U1MGUwYmIxMmEuLjVhNDlmOTU5ODRlMTg1MWJlMTQ1NGFjYTVmNDIw
YTk2MTRhMTNiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTAsMTIgKzUwLDEyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtTGlmZXRpbWUgPSAzMCAqIDYw
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBzaHV0ZG93blRpbWVvdXQgPSAxMCAqIDYwOwogCi1QYXNz
UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUGx1
Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiBwbHVnaW5JbmZvKQorUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IFBsdWdp
blByb2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbywgUGx1Z2luUHJvY2Vz
czo6VHlwZSBwcm9jZXNzVHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblBy
b2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciwgcGx1Z2luSW5mbykpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBw
bHVnaW5JbmZvLCBwcm9jZXNzVHlwZSkpOwogfQogCi1QbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdp
blByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZXIs
IGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitQbHVnaW5Qcm9jZXNzUHJveHk6
OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01h
bmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8sIFBsdWdpblByb2Nlc3M6
OlR5cGUgcHJvY2Vzc1R5cGUpCiAgICAgOiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyKFBsdWdpblBy
b2Nlc3NNYW5hZ2VyKQogICAgICwgbV9wbHVnaW5JbmZvKHBsdWdpbkluZm8pCiAgICAgLCBtX251
bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKQEAgLTY0LDYgKzY0LDcgQEAgUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdp
blByb2Nlc3NNYW5hZ2UKICAgICAsIG1fZnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZyhmYWxzZSkK
ICAgICAsIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnMoMCkKICNlbmRpZgor
ICAgICwgbV9wcm9jZXNzVHlwZShwcm9jZXNzVHlwZSkKIHsKICAgICBQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKICAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9jZXNzOwpAQCAtMTczLDcgKzE3NCw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikK
IAogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6
YWxsQ29udGV4dHMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRleHRzLnNpemUo
KTsgKytpKQotICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChtX3BsdWdpbkluZm8ucGF0aCkpOwor
ICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChtX3BsdWdpbkluZm8ucGF0aCwgbV9wcm9jZXNzVHlw
ZSkpOwogCiAgICAgLy8gVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCiAgICAgcGx1
Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CkBAIC0yMDQsNiArMjA1LDcgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNo
ZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAKICAgICBwYXJhbWV0ZXJzLnBsdWdpblBhdGggPSBtX3BsdWdpbklu
Zm8ucGF0aDsKKyAgICBwYXJhbWV0ZXJzLnByb2Nlc3NUeXBlID0gbV9wcm9jZXNzVHlwZTsKIAog
ICAgIHBhcmFtZXRlcnMubWluaW11bUxpZmV0aW1lID0gbWluaW11bUxpZmV0aW1lOwogICAgIHBh
cmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gc2h1dGRvd25UaW1lb3V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApp
bmRleCAxMzU3ZTZjN2Y1YjQ5MGY3YjQyNDhlYzc2ZjVhNTA0ZTJiZjAwZWFiLi4xOTRkN2EzNzM3
NTYzNjJiMWRiYWE0OWUzOWI0NmY5ZjU2ODAxNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUlu
Zm8uaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5j
aGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KQEAgLTYyLDcgKzYzLDcgQEAgc3RydWN0IFJhd1BsdWdpbk1ldGFEYXRhIHsK
IAogY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUHJv
Y2Vzc1Byb3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6
OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1By
b3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBjcmVhdGUoUGx1
Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgUGx1Z2luUHJvY2Vz
czo6VHlwZSk7CiAgICAgflBsdWdpblByb2Nlc3NQcm94eSgpOwogCiAgICAgY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luSW5mbzsgfQpA
QCAtODIsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX2Nvbm5lY3Rpb247IH0KIAorICAgIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NUeXBlOyB9CisKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCk7CiAKQEAgLTk3LDcgKzEw
MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFBsdWdpblByb2Nlc3NQcm94
eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiwgUGx1Z2luUHJvY2Vzczo6VHlwZSk7CiAKICAgICB2b2lkIHBsdWdpblByb2Nlc3ND
cmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogCkBAIC0xNzEsNiArMTc0LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZnVsbHNjcmVlbldpbmRvd0lzU2hvd2luZzsKICAgICB1bnNpZ25lZCBtX3By
ZUZ1bGxzY3JlZW5BcHBQcmVzZW50YXRpb25PcHRpb25zOwogI2VuZGlmCisKKyAgICBQbHVnaW5Q
cm9jZXNzOjpUeXBlIG1fcHJvY2Vzc1R5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmRl
ZGEzYThmYWYwM2M5MWNlNzUzYjM3MzIzMDAxYjI0YTUxM2Q2Ny4uNjlkMTI4MDQ3N2E4NDE4NWMx
NGRiNzM5MzQ2OGYzYmE3NzVlOWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTQwNiw5ICs0MDYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUGF0aChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVy
bFN0cgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgdW5zaWduZWQg
cHJvY2Vzc1R5cGUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCiB7Ci0gICAgUGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKG1fY29u
dGV4dC0+cGx1Z2luSW5mb1N0b3JlKCksIHBsdWdpblBhdGgsIHJlcGx5KTsKKyAgICBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250
ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0aCwgc3RhdGljX2Nhc3Q8UGx1Z2luUHJv
Y2Vzczo6VHlwZT4ocHJvY2Vzc1R5cGUpLCByZXBseSk7CiB9CiAKICNlbGlmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IDRjOTk5NjEyNTExYTNkN2U3M2I0M2FhMGNmN2QxMTJjZWRlOTRjYTIuLjBlMGZj
OWQzZDE3MDc0YTk3YWNhNDAyOGFkOWY3MzljNTkwOTQzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+KTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgdm9pZCBnZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCB1bnNpZ25lZCBwcm9jZXNzVHlwZSwgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pik7CiAjZWxpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lk
IGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZENsZWFyUGx1Z2luU2l0ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMmUyZjA4ZWE5MTIxMWExMzMxNjY1YWQ0
MzdlZjljYzNmYzliZWEyLi42YTFiMmQ5YTFlNTg2Y2JjYTM0MDI1MjRkN2FlZDI2NjI2ZGI3NzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5
IHsKICAgICBHZXRQbHVnaW5QYXRoKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyB1
cmxTdHJpbmcpIC0+IChXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCB1aW50MzJfdCBwbHVnaW5Mb2Fk
UG9saWN5KQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0
cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
LCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKKyAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRoLCB1bnNpZ25l
ZCBwcm9jZXNzVHlwZSkgLT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwg
Ym9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgIUVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKICAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5n
PiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDY0OGE1MWViOGI4ODY3NGI2ZWViOTU1OWQzMGQwMWNiMzllMTRkNTkuLmI3NWM1YTg3NjYy
YTU3YTVlNTA3Yzk0ZTNjOTQwZjQxODA2YjQ4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtNDEsMTAgKzQxLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKK1BsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVn
aW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIpCiAgICAgLCBtX3BsdWdpblBhdGgocGx1Z2lu
UGF0aCkKICAgICAsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQorICAgICwgbV9wcm9jZXNz
VHlwZShwcm9jZXNzVHlwZSkKIHsKICAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCmlu
ZGV4IGJjNjU1OGZmZGNkOTdiMDM5ZmU3YWIxNjA1MTIzYWJlYTg5ZGU0OGEuLjM1OTkzZDQ1ZTNi
YzBiM2UyODFlY2ZhY2I0MTlmZjIwN2ZiOWQxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1
Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDkgKzQ0LDkg
QEAgY2xhc3MgUGx1Z2luUHJveHk7CiAgICAgCiBjbGFzcyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiwgQ29yZUlQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIs
IGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUsIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUsIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSk7CiAgICAgfQogICAg
IH5QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbigpOwogCkBAIC02MCw4ICs2MSwxMCBAQCBwdWJsaWM6
CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247
IH0KIAorICAgIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3NUeXBlOyB9CisKIHByaXZhdGU6Ci0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciosIGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSwgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURF
OwpAQCAtODUsNiArODgsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOUFJlbW90ZU9iamVjdE1h
cD4gbV9ucFJlbW90ZU9iamVjdE1hcDsKICAgICAKICAgICBib29sIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKKworICAgIFBsdWdpblByb2Nlc3M6OlR5cGUgbV9w
cm9jZXNzVHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCBiNzcwNTA5OTI2ZDBlMjQwNGFjMDBhZjQ5OTZk
M2RkNDIzZGFiZjNjLi42NGJmYzJiN2Q4OTA2ODNlN2VmMWM1N2Q3ZTU3YmVmMDE5ZDFkMWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtNDksMTYgKzQ5LDE3
IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6flBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlcigpCiB7CiB9CiAKLVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSkKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXS0+cGx1Z2lu
UGF0aCgpID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbnNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbj4mIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bnNbaV07CisgICAgICAgIGlmIChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgp
ID09IHBsdWdpblBhdGggJiYgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnByb2Nlc3NUeXBlKCkg
PT0gcHJvY2Vzc1R5cGUpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uZ2V0KCk7CiAgICAgfQogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVj
dGlvbklkZW50aWZpZXI7CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihw
bHVnaW5QYXRoKSwKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24ocGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJl
dHVybiAwOwogCkBAIC03MiwxNCArNzMsMTQgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKyAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSwgY29ubmVjdGlvbklkZW50aWZp
ZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogICAgIG1fcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAKICAgICB7
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleCk7
Ci0gICAgICAgIEFTU0VSVCghbV9wYXRoc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKKyAgICAgICAgQVNTRVJUKCFtX3BhdGhz
QW5kQ29ubmVjdGlvbnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIocGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnBsdWdpblBhdGgoKSwgcHJvY2Vzc1R5cGUpKSk7CiAKLSAgICAgICAgbV9wYXRoc0Fu
ZENvbm5lY3Rpb25zLnNldChwbHVnaW5QYXRoLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpKTsKKyAgICAgICAgbV9wYXRoc0FuZENvbm5lY3Rpb25zLnNldChzdGQ6Om1ha2Vf
cGFpcihwbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSksIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkpOwogICAgIH0KIAogICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5nZXQoKTsKQEAgLTkyLDE4ICs5MywxOCBAQCB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2VzcwogCiAg
ICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0
ZXgpOwotICAgICAgICBBU1NFUlQobV9wYXRoc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkpKTsKKyAgICAgICAgQVNTRVJUKG1fcGF0
aHNBbmRDb25uZWN0aW9ucy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbi0+cGx1Z2luUGF0aCgpLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cHJvY2Vzc1R5
cGUoKSkpKTsKICAgICAgICAgCi0gICAgICAgIG1fcGF0aHNBbmRDb25uZWN0aW9ucy5yZW1vdmUo
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSk7CisgICAgICAgIG1fcGF0aHNB
bmRDb25uZWN0aW9ucy5yZW1vdmUoc3RkOjptYWtlX3BhaXIocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24tPnBsdWdpblBhdGgoKSwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnByb2Nlc3NUeXBlKCkp
KTsKICAgICB9CiAKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUodmVjdG9y
SW5kZXgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2lu
UHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSkKIHsKICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwotICAgIENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuZ2V0KHBsdWdp
blBhdGgpLmdldCgpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3Bh
dGhzQW5kQ29ubmVjdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHBsdWdpblBhdGgsIHByb2Nlc3NU
eXBlKSkuZ2V0KCk7CiAKICAgICAvLyBJdCdzIE9LIGZvciBjb25uZWN0aW9uIHRvIGJlIG51bGwg
aGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3ZWIgcHJvY2VzcyBkb2Vzbid0IGtub3cKICAg
ICAvLyBhbnl0aGluZyBhYm91dCB0aGUgcGx1Zy1pbiBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5oCmluZGV4IDQ1NTE1Y2RmMTRkNjJiNGM3NDQyMTJiMzdjMDIwNzE3
ODBmZTY4YWIuLmY4ZDk2MGJiODBlZDU0MjZjYjY5OTE0ZmM0ZWI1NzZmMzg3OTBlODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01MSwxNyArNTIsMTcgQEAgcHVibGljOgogICAgIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpOwogICAgIH5QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIoKTsKIAotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKiBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUpOwogICAgIHZvaWQgcmVtb3ZlUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKIAogICAgIC8vIENh
bGxlZCBvbiB0aGUgd2ViIHByb2Nlc3MgY29ubmVjdGlvbiB3b3JrIHF1ZXVlLgotICAgIHZvaWQg
cGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICB2b2lk
IHBsdWdpblByb2Nlc3NDcmFzaGVkKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJv
Y2Vzczo6VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbj4gPiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uczsKIAogICAgIE11dGV4IG1f
cGF0aHNBbmRDb25uZWN0aW9uc011dGV4OwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8Q29y
ZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kQ29ubmVjdGlvbnM7CisgICAgSGFzaE1hcDxz
dGQ6OnBhaXI8U3RyaW5nLCB1bnNpZ25lZD4sIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+
IG1fcGF0aHNBbmRDb25uZWN0aW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGY3ZWFkNTY2NGQ1MjBiN2Nh
M2NlMDQwNTA0NTRiMDM4ZDllYmIxN2YuLjZjNTBjMWY3YjgwNzQxNWEyNDY1MTk3MGEzNjhlNGVk
MjQxY2U5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZVBsdWdpbkluc3RhbmNlSUQoKQogICAgIHJldHVybiArK3VuaXF1ZVBsdWdpbkluc3RhbmNlSUQ7
CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoKQorUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gUGx1Z2luUHJveHk6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIEhUTUxQbHVnSW5FbGVtZW50OjpEaXNw
bGF5U3RhdGUgZGlzcGxheVN0YXRlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2lu
UHJveHkocGx1Z2luUGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJveHko
cGx1Z2luUGF0aCwgZGlzcGxheVN0YXRlKSk7CiB9CiAKLVBsdWdpblByb3h5OjpQbHVnaW5Qcm94
eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCitQbHVnaW5Qcm94eTo6UGx1Z2luUHJveHkoY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheVN0YXRlIGRp
c3BsYXlTdGF0ZSkKICAgICA6IG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQogICAgICwgbV9wbHVn
aW5JbnN0YW5jZUlEKGdlbmVyYXRlUGx1Z2luSW5zdGFuY2VJRCgpKQogICAgICwgbV9wbHVnaW5C
YWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YShmYWxzZSkKQEAgLTY5LDYgKzY5LDcgQEAgUGx1
Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKICAgICAsIG1f
d2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVtb3RlTGF5ZXJDbGllbnRJRCgwKQog
ICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxzZSkKKyAgICAs
IG1fZGlzcGxheVN0YXRlKGRpc3BsYXlTdGF0ZSkKIHsKIH0KIApAQCAtODQsNyArODUsOCBAQCB2
b2lkIFBsdWdpblByb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCgpCiBib29sIFBsdWdpblByb3h5
Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb24pOwotICAgIG1fY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpLmdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKG1fcGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSA9
IChtX2Rpc3BsYXlTdGF0ZSA9PSBIVE1MUGx1Z0luRWxlbWVudDo6V2FpdGluZ0ZvclNuYXBzaG90
ID8gUGx1Z2luUHJvY2Vzczo6VHlwZVNuYXBzaG90UHJvY2VzcyA6IFBsdWdpblByb2Nlc3M6OlR5
cGVSZWd1bGFyUHJvY2Vzcyk7CisgICAgbV9jb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24obV9wbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSk7CiAgICAgCiAgICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNTM1YzhjN2ZlZmY0NDQ5ZjhmNjcxYjZk
NWZhM2E5YmI2YzE0OTEzYi4uM2U4N2QxOTA3MWI3Nzg1OGFmOGI0Mzg0MzYxNjlkOWJiZjQ2NDU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
UGx1Z2luLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCkBAIC01NCw3ICs1NSw3
IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFBsdWdpblByb3h5
IDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2lu
UHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsdWdpblByb3h5PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheVN0YXRlKTsKICAgICB+UGx1Z2luUHJveHko
KTsKIAogICAgIHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bs
dWdpbkluc3RhbmNlSUQ7IH0KQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNC
ZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhaXRpbmdP
bkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
UGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBleHBsaWNpdCBQbHVn
aW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50OjpEaXNwbGF5U3RhdGUpOwogCiAgICAgLy8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGlu
aXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpOwpAQCAtMjA1LDYgKzIwNiw4IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVy
OwogI2VuZGlmCisKKyAgICBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6RGlzcGxheVN0YXRl
IG1fZGlzcGxheVN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODNjMGFlN2ZkMmVh
OTg1MDdmM2U5MzdkNmMyNDM2M2YxZTRhYjY0Yi4uYjUyZjYxYjljYzg5NGE5M2NjZDM5NjgwOTFi
MmUwOTU4N2ZlM2Y0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdl
OjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1CiAg
ICAgfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHJldHVybiBQbHVnaW5Qcm94
eTo6Y3JlYXRlKHBsdWdpblBhdGgpOworICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHBs
dWdpblBhdGgsIHBsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpKTsKICNlbHNlCiAgICAgTmV0
c2NhcGVQbHVnaW46OnNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKE5QUnVudGltZU9iamVjdE1hcDo6
c2V0R2xvYmFsRXhjZXB0aW9uKTsKICAgICByZXR1cm4gTmV0c2NhcGVQbHVnaW46OmNyZWF0ZShO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjhiN2JmZDdiMDIzNjZmMzQwZjI0
NzFlMDc3YzM2OTBmMmFhOGI2ZC4uNzJiZDM0YjNlMmRjNDE5MjgzYjYyMWI4YzNjY2M5NDdhODU3
ZjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDc5
LDkgKzEwNzksOSBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChDb3Jl
SVBDOjpDb25uZWN0aW9uKikKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQot
dm9pZCBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9u
KiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9j
ZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCB1bnNpZ25lZCBwcm9jZXNzVHlwZSkKIHsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoKTsKKyAgICBtX3BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoLCBz
dGF0aWNfY2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBlPihwcm9jZXNzVHlwZSkpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODJlNmNjOGYyYWIx
ZThlMDNkOGNlNGE0OTI4MTRmMzk3NzY3ODk1ZC4uMWZlYTJjZDNjOTIwODQ2NGVlMDhkNmI0ZGRm
MTMxMjIyODlhNDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVk
KENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKICNlbmRpZgogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLSAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgdW5zaWduZWQg
cHJvY2Vzc1R5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IGVkY2FkMzRmZjM3Y2VhN2FkMTM1ZDZkMjY0NDJlMWRlYzQ4OGQzMDYuLmY3NDYyMTQx
NDUwZWExYWRhMWRhYjhkODNjYTk1ZGVjZjNlZjAyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY5LDcgKzY5LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLSAgICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJvY2VzcykgRGlzcGF0
Y2hPbkNvbm5lY3Rpb25RdWV1ZQorICAgIFBsdWdpblByb2Nlc3NDcmFzaGVkKFN0cmluZyBwbHVn
aW5Qcm9jZXNzLCB1bnNpZ25lZCBwcm9jZXNzVHlwZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1
ZQogI2VuZGlmCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBXVEY6OlN0cmluZyBzYW1wbGVM
b2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176661</attachid>
            <date>2012-11-29 00:13:53 -0800</date>
            <delta_ts>2012-11-29 17:46:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121129001127.patch</filename>
            <type>text/plain</type>
            <size>39045</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2E3OWM3ZGZhN2FlNzYy
NzExOGQ4YjIxYWJiOTZiNGQ3ZTk3ZmUyYy4uNTM3NDY0NmI0OThiZTQ5MzQ4N2U4NDY3NTZhMjA4
OTNkNGRkMmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTExLTI5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6IEFkZCBQbHVnaW5Qcm9jZXNzOjpU
eXBlIGVudW0gd2l0aCB2YWx1ZXMgZm9yIHJlZ3VsYXIgYW5kCisgICAgICAgIHNuYXBzaG90IHBy
b2Nlc3MgdHlwZXMuIFByb3ZpZGUgRGVmYXVsdEhhc2ggYW5kIElzSW50ZWdlciB0ZW1wbGF0ZSBz
cGVjaWFsaXphdGlvbnMgZm9yIHRoZSBlbnVtCisgICAgICAgIHNvIHRoYXQgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyIGNhbiBzdG9yZSBpdCBpbiBhIEhhc2hNYXAuCisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplKTogTXV0ZSBhdWRpbyBpZiB0aGUgcHJvY2VzcyBjcmVhdGlvbiBwYXJhbWV0ZXJzIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgdGhlIHBsdWdpbiBwcm9jZXNzIHR5cGUgaXMgc25hcHNob3Qg
cHJvY2Vzcy4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IEFkZCBwcm9jZXNzVHlwZSBwcm9jZXNzIGNyZWF0aW9u
IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0U2l0ZXNXaXRoRGF0YSk6IEZvcndh
cmQgbWVzc2FnZSB0byByZWd1bGFyIHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBtZXNzYWdl
IHRvIHJlZ3VsYXIgcGx1Z2luIHByb2Nlc3Mgb25seS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aCk6IEFkZCBwcm9jZXNzIHR5cGUg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JD
cmVhdGVQbHVnaW5Qcm9jZXNzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OmNyZWF0ZSk6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKTogSW5jbHVkZSBwcm9jZXNzIHR5
cGUgd2l0aCB0aGUgcGx1Z2luIHByb2Nlc3MgY3Jhc2hlZCBtZXNzYWdlLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IFNldCBwcm9jZXNz
IHR5cGUgcHJvY2VzcyBjcmVhdGlvbiBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cHJvY2Vzc1R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKTogUGFzcyBhbG9uZyBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyIHRvCisgICAg
ICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjogQWRkIHByb2Nlc3MgdHlwZSBwYXJhbWV0ZXIg
dG8gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBBZGQg
cHJvY2VzcyB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6cHJvY2Vzc1R5cGUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbik6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KTogVXNlIHByb2Nlc3MgdHlwZSBpbiBhZGRpdGlvbiB0bworICAgICAgICBwbHVnaW4gcGF0aCB0
byBmaW5kIHRoZSBjb25uZWN0aW9uIHRvIHJlbW92ZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6IEFkZCBwcm9j
ZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6IEFkZCBwcm9jZXNz
IHR5cGUgcGFyYW1ldGVyIGluIGNhbGwgdG8KKyAgICAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6IERl
dGVybWluZSBwcm9jZXNzIHR5cGUgYmFzZWQgb24gZGlzcGxheSBzdGF0ZSBvZiBwbHVnaW4gZWxl
bWVudCBhbmQKKyAgICAgICAgcGFzcyBpdCB0byBQbHVnaW5Qcm94eTo6Y3JlYXRlLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsdWdpblByb2Nlc3NDcmFzaGVkKTogUGFzcyBhbG9uZyBwcm9jZXNzIHR5cGUgcGFyYW1l
dGVyIHRvCisgICAgICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyIHRvIFBsdWdpblByb2Nl
c3NDcmFzaGVkIG1lc3NhZ2UuCisKIDIwMTItMTEtMjcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUERGUGx1Z2luOiBTaG91bGQgbm90IGJlIGFibGUg
dG8gZWRpdCByZWFkLW9ubHkgdGV4dCBhbm5vdGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKaW5kZXggM2U0NTg4YzYyYmEzNmU5NjVmZjdj
OTc5ODcxNWNiZWRhY2QzNDNhZC4uZDg4ZWIxOGMzZTQyODdkMjkwNWFlYTYxMDFhZTllMzFjMzU2
YzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29u
ZmlnCkBAIC0yOSw3ICsyOSw3IEBAIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElOU1RB
TExfUEFUSCA9ICQoV0VCS0lUMl9GUkFNRVdPUktTX0RJUik7CiBEWUxJQl9JTlNUQUxMX05BTUVf
QkFTRSA9ICQoTk9STUFMX1dFQktJVDJfRlJBTUVXT1JLU19ESVIpOwogCi1GUkFNRVdPUktfQU5E
X0xJQlJBUllfTERGTEFHUyA9IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3
b3JrIENhcmJvbiAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFt
ZXdvcmsgSU9LaXQgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtbGljdWNvcmUgLWZyYW1ld29y
ayBRdWFydHpDb3JlIC1mcmFtZXdvcmsgU2VjdXJpdHkgLWZyYW1ld29yayBXZWJDb3JlOworRlJB
TUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2Vydmlj
ZXMgLWZyYW1ld29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2
aWNlcyAtZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3Jl
IC1mcmFtZXdvcmsgUXVhcnR6Q29yZSAtZnJhbWV3b3JrIFNlY3VyaXR5IC1mcmFtZXdvcmsgV2Vi
Q29yZSAtZnJhbWV3b3JrIENvcmVBdWRpbzsKIAogT1RIRVJfTERGTEFHUyA9ICQoT1RIRVJfTERG
TEFHU18kKFBMQVRGT1JNX05BTUUpKSAkKE9USEVSX0xERkxBR1MpOwogT1RIRVJfTERGTEFHU19t
YWNvc3ggPSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKaW5kZXggZDYwYzk0YjkyNjAzNWM4Y2Q4
NGFiZDZjYTUxYjk2ZmFhNjA4ZjQ1OS4uNzNiMWJjYzYyZmNkNzZjNGM0OTY4MTY4YzJmNmVkMDlj
MWUzMWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmgKQEAgLTQ1LDYgKzQ1LDEzIEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOwogY2xhc3MgUGx1Z2luUHJvY2VzcyA6IENoaWxkUHJvY2VzcyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUGx1Z2luUHJvY2Vzcyk7CiBwdWJsaWM6CisKKyAgICBlbnVtIFR5cGUgewor
ICAgICAgICAvLyBTdGFydCB3aXRoIHZhbHVlIG9uZSBzaW5jZSBkZWZhdWx0IEhhc2hUcmFpdHM8
PiBkaXNhbGxvd3MgemVybyBhcyBrZXkuCisgICAgICAgIFR5cGVSZWd1bGFyUHJvY2VzcyA9IDEs
CisgICAgICAgIFR5cGVTbmFwc2hvdFByb2Nlc3MKKyAgICB9OworCiAgICAgc3RhdGljIFBsdWdp
blByb2Nlc3MmIHNoYXJlZCgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OlJ1bkxvb3AqKTsKQEAgLTExNSw2ICsxMjIsMTMg
QEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OlR5
cGU+IHsgdHlwZWRlZiBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2ggSGFzaDsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IElzSW50ZWdlcjxXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OlR5cGU+IHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwog
I2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogI2VuZGlmIC8vIFBsdWdpblByb2Nl
c3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2lu
UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4ZWU3ZWQ3ZWQy
Zi4uYjdjNTJlNjEzNGNiNDRhZWRjMjM2NDU1OWQ4MTQ2YWYyZjRkMGM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBA
IC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzU2hpbS5oIgogI2ltcG9ydCAi
UGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KQEAgLTMwNCw2ICszMDUsMTQgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25z
dCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgogCitzdGF0aWMgdm9pZCBtdXRlQXVkaW8o
dm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcm9wZXJ0eUFkZHJlc3Mg
PSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNzSXNBdWRpYmxlLCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsK
KyAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRp
b09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZwcm9wZXJ0
eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAmcHJvcGVydHlEYXRhKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IG5vRXJyKTsKK30KKwogdm9pZCBQbHVnaW5Qcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9
IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQucG9ydCgpOwpAQCAtMzE5LDYg
KzMyOCw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlhbGl6ZVNhbmRib3gobV9wbHVnaW5QYXRo
LCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7CiAjZW5kaWYKKworICAg
IGlmIChwYXJhbWV0ZXJzLnByb2Nlc3NUeXBlID09IFR5cGVTbmFwc2hvdFByb2Nlc3MpCisgICAg
ICAgIG11dGVBdWRpbygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZjUzYzI2ZTZiMDFmYjUzZmVkYzg4NzEyNzg2NDJm
OTdkNmNjZjQ2ZC4uZjVlNTEwMWVhNTE1MGJhMmI4ZTIzMjRiOGNmMzBjNjI1MDkzODk4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAgUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cygpCiB2b2lkIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBwbHVn
aW5QYXRoOworICAgIGVuY29kZXIuZW5jb2RlRW51bShwcm9jZXNzVHlwZSk7CiAgICAgZW5jb2Rl
ciA8PCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29k
ZXIgPDwgbWluaW11bUxpZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0
OwpAQCAtNTUsNiArNTYsOCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocmVzdWx0LnBsdWdpblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHJlc3VsdC5wcm9jZXNzVHlwZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhNDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNl
OGRmMDQ3MzVkZTVjMTFlLi4xYjNmOWZmMjc3NThkNjgzODkwOWE2MDcxNjZhNmZiZDRkNDRiNjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00
OCw2ICs0OSw3IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CisgICAg
UGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZTsKICAgICBib29sIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiAKICAgICBkb3VibGUgbWluaW11bUxpZmV0aW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IGY0OTc4OTVkYjQyZDk3NTJlYTBiN2M0ZWQ1MzI0MWIz
ODZlOGFlOWQuLjgzNGM4N2ZjNDYzZDk1MTczOTM1NTZkZDE2YzhhNDQyMjJjNTM2ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6
UGx1Z2luUHJvY2Vzc01hbmFnZXIoKQogewogfQogCi12b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2Vy
OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmIHBsdWdp
bkluZm9TdG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+IHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiBwbHVnaW5JbmZvU3RvcmUsIGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSwgUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBBU1NFUlQoIXBsdWdpblBhdGguaXNOdWxs
KCkpOwogCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUuaW5m
b0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOwotICAgIFBsdWdpblByb2Nlc3NQcm94eSog
cGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4pOworICAgIFBs
dWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vz
cyhwbHVnaW4sIHByb2Nlc3NUeXBlKTsKICAgICBwbHVnaW5Qcm9jZXNzLT5nZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihyZXBseSk7CiB9CiAKQEAgLTY0LDMyICs2NCwzMyBAQCB2b2lkIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc1By
b3h5KiBwbHVnaW5QcgogCiB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRTaXRlc1dpdGhE
YXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0g
ICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Q
cm9jZXNzKHBsdWdpbik7CisgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0g
Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbiwgUGx1Z2luUHJvY2Vzczo6VHlwZVJlZ3Vs
YXJQcm9jZXNzKTsKICAgICBwbHVnaW5Qcm9jZXNzLT5nZXRTaXRlc1dpdGhEYXRhKHdlYlBsdWdp
blNpdGVEYXRhTWFuYWdlciwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01h
bmFnZXI6OmNsZWFyU2l0ZURhdGEoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBXZWJQ
bHVnaW5TaXRlRGF0YU1hbmFnZXIqIHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNv
bmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1
Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4pOworICAgIFBsdWdp
blByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vzcyhw
bHVnaW4sIFBsdWdpblByb2Nlc3M6OlR5cGVSZWd1bGFyUHJvY2Vzcyk7CiAgICAgcGx1Z2luUHJv
Y2Vzcy0+Y2xlYXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHNpdGVzLCBmbGFn
cywgbWF4QWdlSW5TZWNvbmRzLCBjYWxsYmFja0lEKTsKIH0KIAotUGx1Z2luUHJvY2Vzc1Byb3h5
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NQcm94eSogUGx1Z2luUHJvY2Vzc01hbmFnZXI6
OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpblBy
b2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3BsdWdpblByb2Nlc3Nlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9wbHVnaW5Qcm9j
ZXNzZXNbaV0tPnBsdWdpbkluZm8oKS5wYXRoID09IHBsdWdpblBhdGgpCi0gICAgICAgICAgICBy
ZXR1cm4gbV9wbHVnaW5Qcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5Q
cm9jZXNzUHJveHk+JiBwbHVnaW5Qcm9jZXNzUHJveHkgPSBtX3BsdWdpblByb2Nlc3Nlc1tpXTsK
KyAgICAgICAgaWYgKHBsdWdpblByb2Nlc3NQcm94eS0+cGx1Z2luSW5mbygpLnBhdGggPT0gcGx1
Z2luUGF0aCAmJiBwbHVnaW5Qcm9jZXNzUHJveHktPnByb2Nlc3NUeXBlKCkgPT0gcHJvY2Vzc1R5
cGUpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJvY2Vzc1Byb3h5LmdldCgpOwogICAgIH0K
IAogICAgIHJldHVybiAwOwogfQogCi1QbHVnaW5Qcm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NN
YW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luKQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JD
cmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgUGx1Z2lu
UHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSkKIHsKLSAgICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5
KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRoKSkKKyAg
ICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dp
dGhQYXRoKHBsdWdpbi5wYXRoLCBwcm9jZXNzVHlwZSkpCiAgICAgICAgIHJldHVybiBwbHVnaW5Q
cm9jZXNzOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9
IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMsIHBsdWdpbik7CisgICAgUmVmUHRyPFBs
dWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3Jl
YXRlKHRoaXMsIHBsdWdpbiwgcHJvY2Vzc1R5cGUpOwogICAgIFBsdWdpblByb2Nlc3NQcm94eSog
cGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3MuZ2V0KCk7CiAKICAgICBtX3BsdWdpblBy
b2Nlc3Nlcy5hcHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5k
ZXggNWU1MTk0MjdiYTNmMWRkZmIzN2JkOGJlODNmMzI5NzhjNDdiOGI5Mi4uZjg0NTIxYTQ5NzNj
NTMwNDJiZWU2MjE0NzljYWE1OWE4ZjFhOGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9k
dWxlSW5mby5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01MCw3ICs1MSw3IEBAIGNsYXNzIFBsdWdpblByb2Nlc3NN
YW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vzc01hbmFnZXImIHNoYXJl
ZCgpOwogCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBQbHVnaW5J
bmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4pOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5m
b1N0b3JlJiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHJlbW92ZVBsdWdpblByb2Nlc3NQcm94
eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKIAogICAgIHZvaWQgZ2V0U2l0ZXNXaXRoRGF0YShjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CkBAIC02Myw4ICs2NCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUGx1
Z2luUHJvY2Vzc01hbmFnZXIoKTsKIAotICAgIFBsdWdpblByb2Nlc3NQcm94eSogZ2V0T3JDcmVh
dGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKLSAgICBQbHVnaW5Qcm9j
ZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
OworICAgIFBsdWdpblByb2Nlc3NQcm94eSogZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzOjpUeXBlKTsKKyAgICBQbHVnaW5Qcm9j
ZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpblByb2Nlc3M6OlR5cGUpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5Qcm9jZXNz
UHJveHk+ID4gbV9wbHVnaW5Qcm9jZXNzZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggMGMyZTg2
ODllNjQ4ODc2ODBlNDJhMTM0OTNjMGYzZTUwZTBiYjEyYS4uNWE0OWY5NTk4NGUxODUxYmUxNDU0
YWNhNWY0MjBhOTYxNGExM2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC01MCwxMiArNTAsMTIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgY29uc3QgZG91YmxlIG1pbmltdW1MaWZldGltZSA9
IDMwICogNjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNodXRkb3duVGltZW91dCA9IDEwICogNjA7
CiAKLVBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNy
ZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94
eT4gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdp
blByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvLCBQbHVn
aW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBwbHVnaW5JbmZvKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01h
bmFnZXIsIHBsdWdpbkluZm8sIHByb2Nlc3NUeXBlKSk7CiB9CiAKLVBsdWdpblByb2Nlc3NQcm94
eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbykKK1BsdWdpblByb2Nl
c3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Q
cm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luSW5mbywgUGx1Z2lu
UHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSkKICAgICA6IG1fcGx1Z2luUHJvY2Vzc01hbmFnZXIo
UGx1Z2luUHJvY2Vzc01hbmFnZXIpCiAgICAgLCBtX3BsdWdpbkluZm8ocGx1Z2luSW5mbykKICAg
ICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQpAQCAtNjQsNiArNjQsNyBAQCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdl
ciogUGx1Z2luUHJvY2Vzc01hbmFnZQogICAgICwgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93aW5n
KGZhbHNlKQogICAgICwgbV9wcmVGdWxsc2NyZWVuQXBwUHJlc2VudGF0aW9uT3B0aW9ucygwKQog
I2VuZGlmCisgICAgLCBtX3Byb2Nlc3NUeXBlKHByb2Nlc3NUeXBlKQogewogICAgIFByb2Nlc3NM
YXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRpb25zOwogICAgIGxhdW5jaE9wdGlvbnMu
cHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6OlBsdWdpblByb2Nlc3M7CkBAIC0xNzMsNyAr
MTc0LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qKQogCiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJD
b250ZXh0OjphbGxDb250ZXh0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGV4
dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlBsdWdpblByb2Nlc3NDcmFzaGVkKG1fcGx1Z2luSW5mby5w
YXRoKSk7CisgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlBsdWdpblByb2Nlc3NDcmFzaGVkKG1fcGx1Z2luSW5mby5wYXRoLCBtX3By
b2Nlc3NUeXBlKSk7CiAKICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4K
ICAgICBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKQEAgLTIwNCw2ICsy
MDUsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogICAgIFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIHBhcmFtZXRlcnMucGx1Z2luUGF0aCA9IG1f
cGx1Z2luSW5mby5wYXRoOworICAgIHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPSBtX3Byb2Nlc3NU
eXBlOwogCiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUgPSBtaW5pbXVtTGlmZXRpbWU7
CiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSBzaHV0ZG93blRpbWVvdXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCmluZGV4IDEzNTdlNmM3ZjViNDkwZjdiNDI0OGVjNzZmNWE1MDRlMmJmMDBlYWIuLjE5
NGQ3YTM3Mzc1NjM2MmIxZGJhYTQ5ZTM5YjQ2ZjlmNTY4MDE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
TW9kdWxlSW5mby5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJQcm9j
ZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNjIsNyArNjMsNyBAQCBzdHJ1Y3QgUmF3UGx1Z2luTWV0
YURhdGEgewogCiBjbGFzcyBQbHVnaW5Qcm9jZXNzUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
bHVnaW5Qcm9jZXNzUHJveHk+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIFByb2Nlc3NM
YXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Q
cm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNy
ZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVn
aW5Qcm9jZXNzOjpUeXBlKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5KCk7CiAKICAgICBjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5J
bmZvOyB9CkBAIC04Miw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogCisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBw
cm9jZXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1R5cGU7IH0KKwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sKTsKIApAQCAt
OTcsNyArMTAwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luUHJv
Y2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYp
OworICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzOjpUeXBlKTsKIAogICAgIHZvaWQgcGx1Z2lu
UHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKQEAgLTE3MSw2ICsxNzQsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9mdWxsc2NyZWVuV2luZG93SXNTaG93aW5nOwogICAgIHVuc2ln
bmVkIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlvbk9wdGlvbnM7CiAjZW5kaWYKKworICAg
IFBsdWdpblByb2Nlc3M6OlR5cGUgbV9wcm9jZXNzVHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBmZGVkYTNhOGZhZjAzYzkxY2U3NTNiMzczMjMwMDFiMjRhNTEzZDY3Li42OWQxMjgwNDc3
YTg0MTg1YzE0ZGI3MzkzNDY4ZjNiYTc3NWU5ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA2LDkgKzQwNiw5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCB1
bnNpZ25lZCBwcm9jZXNzVHlwZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKLSAg
ICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0aCwgcmVwbHkpOworICAg
IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihtX2NvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLCBwbHVnaW5QYXRoLCBzdGF0aWNfY2FzdDxQ
bHVnaW5Qcm9jZXNzOjpUeXBlPihwcm9jZXNzVHlwZSksIHJlcGx5KTsKIH0KIAogI2VsaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNGM5OTk2MTI1MTFhM2Q3ZTczYjQzYWEwY2Y3ZDExMmNlZGU5NGNh
Mi4uMGUwZmM5ZDNkMTcwNzRhOTdhY2E0MDI4YWQ5ZjczOWM1OTA5NDMzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBh
c3NPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4pOwogI2VuZGlmIC8vIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICB2
b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIHVuc2lnbmVkIHByb2Nlc3NUeXBlLCBQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbGlmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
ICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkQ2xlYXJQbHVnaW5TaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIyZTJmMDhlYTkxMjExYTEz
MzE2NjVhZDQzN2VmOWNjM2ZjOWJlYTIuLjZhMWIyZDlhMWU1ODZjYmNhMzQwMjUyNGQ3YWVkMjY2
MjZkYjc3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzUHJveHkgewogICAgIEdldFBsdWdpblBhdGgoV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6
U3RyaW5nIHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIHVpbnQzMl90IHBs
dWdpbkxvYWRQb2xpY3kpCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KFdURjo6U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25IYW5kbGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikgRGVsYXll
ZAorICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdpblBhdGgs
IHVuc2lnbmVkIHByb2Nlc3NUeXBlKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9u
SGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQK
ICNlbmRpZgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiAhRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQogICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RG
OjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggNjQ4YTUxZWI4Yjg4Njc0YjZlZWI5NTU5ZDMwZDAxY2IzOWUxNGQ1OS4uYjc1
YzVhODc2NjJhNTdhNWU1MDdjOTRlM2M5NDBmNDE4MDZiNDgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC00MSwxMCArNDEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUsIENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0
aChwbHVnaW5QYXRoKQogICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCisgICAgLCBt
X3Byb2Nlc3NUeXBlKHByb2Nlc3NUeXBlKQogewogICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
IHRoaXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggYmM2NTU4ZmZkY2Q5N2IwMzlmZTdhYjE2MDUxMjNhYmVhODlkZTQ4YS4uMzU5
OTNkNDVlM2JjMGIzZTI4MWVjZmFjYjQxOWZmMjA3ZmI5ZDE0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMs
OSArNDQsOSBAQCBjbGFzcyBQbHVnaW5Qcm94eTsKICAgICAKIGNsYXNzIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+LCBD
b3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNz
VHlwZSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSwgY29ubmVjdGlvbklk
ZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKTsKICAg
ICB9CiAgICAgflBsdWdpblByb2Nlc3NDb25uZWN0aW9uKCk7CiAKQEAgLTYwLDggKzYxLDEwIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbjsgfQogCisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvY2Vzc1R5cGU7IH0KKwogcHJpdmF0ZToKLSAgICBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqLCBjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CisgICAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlLCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
T1ZFUlJJREU7CkBAIC04NSw2ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5QUmVtb3Rl
T2JqZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFwOwogICAgIAogICAgIGJvb2wgbV9zdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOworCisgICAgUGx1Z2luUHJvY2Vzczo6
VHlwZSBtX3Byb2Nlc3NUeXBlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IGI3NzA1MDk5MjZkMGUyNDA0YWMw
MGFmNDk5NmQzZGQ0MjNkYWJmM2MuLjY0YmZjMmI3ZDg5MDY4M2U3ZWYxYzU3ZDdlNTdiZWYwMTlk
MWQxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC00OSwx
NiArNDksMTcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjp+UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyKCkKIHsKIH0KIAotUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zW2ld
LT5wbHVnaW5QYXRoKCkgPT0gcGx1Z2luUGF0aCkKLSAgICAgICAgICAgIHJldHVybiBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9uc1tpXS5nZXQoKTsKKyAgICAgICAgUmVmUHRyPFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPiYgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBtX3BsdWdpblByb2Nlc3ND
b25uZWN0aW9uc1tpXTsKKyAgICAgICAgaWYgKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVn
aW5QYXRoKCkgPT0gcGx1Z2luUGF0aCAmJiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cHJvY2Vz
c1R5cGUoKSA9PSBwcm9jZXNzVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb247Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKHBsdWdpblBhdGgpLAorICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCAwKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKQEAgLTcyLDE0ICs3MywxNCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdAogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1
cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworICAgIFJlZlB0cjxQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIHByb2Nlc3NUeXBlLCBjb25uZWN0aW9u
SWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CiAgICAgbV9w
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsK
IAogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGF0aHNBbmRDb25uZWN0aW9u
c011dGV4KTsKLSAgICAgICAgQVNTRVJUKCFtX3BhdGhzQW5kQ29ubmVjdGlvbnMuY29udGFpbnMo
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOworICAgICAgICBBU1NFUlQo
IW1fcGF0aHNBbmRDb25uZWN0aW9ucy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpLCBwcm9jZXNzVHlwZSkpKTsKIAotICAgICAgICBt
X3BhdGhzQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBhdGgsIHBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLT5jb25uZWN0aW9uKCkpOworICAgICAgICBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuc2V0KHN0
ZDo6bWFrZV9wYWlyKHBsdWdpblBhdGgsIHByb2Nlc3NUeXBlKSwgcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmdldCgpOwpAQCAtOTIsMTggKzkzLDE4IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9j
ZXNzCiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVj
dGlvbnNNdXRleCk7Ci0gICAgICAgIEFTU0VSVChtX3BhdGhzQW5kQ29ubmVjdGlvbnMuY29udGFp
bnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBhdGgoKSkpOworICAgICAgICBBU1NF
UlQobV9wYXRoc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCksIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5w
cm9jZXNzVHlwZSgpKSkpOwogICAgICAgICAKLSAgICAgICAgbV9wYXRoc0FuZENvbm5lY3Rpb25z
LnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpKTsKKyAgICAgICAg
bV9wYXRoc0FuZENvbm5lY3Rpb25zLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cHJvY2Vz
c1R5cGUoKSkpOwogICAgIH0KIAogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92
ZSh2ZWN0b3JJbmRleCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCit2b2lkIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQogewog
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleCk7Ci0gICAg
Q29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fcGF0aHNBbmRDb25uZWN0aW9ucy5n
ZXQocGx1Z2luUGF0aCkuZ2V0KCk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biA9IG1fcGF0aHNBbmRDb25uZWN0aW9ucy5nZXQoc3RkOjptYWtlX3BhaXIocGx1Z2luUGF0aCwg
cHJvY2Vzc1R5cGUpKS5nZXQoKTsKIAogICAgIC8vIEl0J3MgT0sgZm9yIGNvbm5lY3Rpb24gdG8g
YmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBwcm9jZXNzIGRvZXNuJ3Qg
a25vdwogICAgIC8vIGFueXRoaW5nIGFib3V0IHRoZSBwbHVnLWluIHByb2Nlc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKaW5kZXggNDU1MTVjZGYxNGQ2MmI0Yzc0NDIxMmIz
N2MwMjA3MTc4MGZlNjhhYi4uODY0NDlmNjUxYmM2ZTNkYjEyYmE2NzJiZmIxYjY2ODg3OTAxOGM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTUxLDE3ICs1MiwxNyBAQCBwdWJsaWM6
CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCk7CiAgICAgflBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcigpOwogCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSk7CiAgICAgdm9pZCByZW1v
dmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiopOwogCiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSB3ZWIgcHJvY2VzcyBjb25uZWN0aW9uIHdvcmsgcXVldWUuCi0g
ICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwor
ICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
bHVnaW5Qcm9jZXNzOjpUeXBlKTsKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uPiA+IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCiAgICAg
TXV0ZXggbV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXg7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0aHNBbmRDb25uZWN0aW9uczsKKyAgICBI
YXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFBsdWdpblByb2Nlc3M6OlR5cGU+LCBSZWZQdHI8Q29y
ZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kQ29ubmVjdGlvbnM7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRl
eCBmN2VhZDU2NjRkNTIwYjdjYTNjZTA0MDUwNDU0YjAzOGQ5ZWJiMTdmLi42NjMzZDgyNDcyNjJl
NTc2MWNhMGNjZTM4NjlmMWVkNjhkNWIwMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTU1LDEyICs1NSwxMiBAQCBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVQbHVnaW5JbnN0YW5jZUlEKCkKICAgICByZXR1cm4gKyt1bmlx
dWVQbHVnaW5JbnN0YW5jZUlEOwogfQogCi1QYXNzUmVmUHRyPFBsdWdpblByb3h5PiBQbHVnaW5Q
cm94eTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1Bhc3NSZWZQdHI8UGx1Z2lu
UHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVn
aW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGx1Z2luUHJveHkocGx1Z2luUGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2lu
UHJveHkocGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUpKTsKIH0KIAotUGx1Z2luUHJveHk6OlBsdWdp
blByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb3h5OjpQbHVnaW5Qcm94
eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5
cGUpCiAgICAgOiBtX3BsdWdpblBhdGgocGx1Z2luUGF0aCkKICAgICAsIG1fcGx1Z2luSW5zdGFu
Y2VJRChnZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKSkKICAgICAsIG1fcGx1Z2luQmFja2luZ1N0
b3JlQ29udGFpbnNWYWxpZERhdGEoZmFsc2UpCkBAIC02OSw2ICs2OSw3IEBAIFBsdWdpblByb3h5
OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAgLCBtX3dhbnRzV2hl
ZWxFdmVudHMoZmFsc2UpCiAgICAgLCBtX3JlbW90ZUxheWVyQ2xpZW50SUQoMCkKICAgICAsIG1f
d2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oZmFsc2UpCisgICAgLCBtX3Byb2Nl
c3NUeXBlKHByb2Nlc3NUeXBlKQogewogfQogCkBAIC04NCw3ICs4NSw3IEBAIHZvaWQgUGx1Z2lu
UHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkKCkKIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxp
emUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBBU1NFUlQoIW1fY29ubmVj
dGlvbik7Ci0gICAgbV9jb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9wbHVn
aW5QYXRoKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKS5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihtX3Bs
dWdpblBhdGgsIG1fcHJvY2Vzc1R5cGUpOwogICAgIAogICAgIGlmICghbV9jb25uZWN0aW9uKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDUzNWM4YzdmZWZmNDQ0OWY4ZjY3MWI2ZDVmYTNhOWJi
NmMxNDkxM2IuLmFmMWQ1ZTFlZDlhYTAzNzQ2ZDVhYjYzYmJjNGE0Zjg2NTYxODdhODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
LmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5l
VHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtNTQsNyArNTUsNyBAQCBzdHJ1Y3QgUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBQbHVnaW5Qcm94eSA6IHB1YmxpYyBQbHVnaW4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb3h5PiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6VHlwZSk7CiAg
ICAgflBsdWdpblByb3h5KCk7CiAKICAgICB1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9wbHVnaW5JbnN0YW5jZUlEOyB9CkBAIC02Niw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyBy
ZXR1cm4gbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsgfQogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7Cisg
ICAgZXhwbGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Q
cm9jZXNzOjpUeXBlKTsKIAogICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKQEAgLTIwNSw2ICsyMDYsOCBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wbHVnaW5MYXllcjsKICNl
bmRpZgorCisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBtX3Byb2Nlc3NUeXBlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggODNjMGFlN2ZkMmVhOTg1MDdmM2U5MzdkNmMyNDM2M2YxZTRhYjY0
Yi4uOTQ1NGRmZDAxNDdiNjlhZWQ4MDg2NGYxMjQyMWJlMTE5MmQyOWE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTM1LDcgKzUzNSw4
IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZy
YW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1CiAgICAgfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQotICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHBsdWdpblBhdGgpOworICAg
IFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUgPSAocGx1Z2luRWxlbWVudC0+ZGlzcGxh
eVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OldhaXRpbmdGb3JTbmFwc2hvdCA/IFBsdWdp
blByb2Nlc3M6OlR5cGVTbmFwc2hvdFByb2Nlc3MgOiBQbHVnaW5Qcm9jZXNzOjpUeXBlUmVndWxh
clByb2Nlc3MpOworICAgIHJldHVybiBQbHVnaW5Qcm94eTo6Y3JlYXRlKHBsdWdpblBhdGgsIHBy
b2Nlc3NUeXBlKTsKICNlbHNlCiAgICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2VwdGlvbkZ1
bmN0aW9uKE5QUnVudGltZU9iamVjdE1hcDo6c2V0R2xvYmFsRXhjZXB0aW9uKTsKICAgICByZXR1
cm4gTmV0c2NhcGVQbHVnaW46OmNyZWF0ZShOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVh
dGUocGx1Z2luUGF0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMjhiN2JmZDdiMDIzNjZmMzQwZjI0NzFlMDc3YzM2OTBmMmFhOGI2ZC4uNzJiZDM0YjNl
MmRjNDE5MjgzYjYyMWI4YzNjY2M5NDdhODU3ZjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDc5LDkgKzEwNzksOSBAQCB2b2lkIFdlYlByb2Nlc3M6
Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKikKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotdm9pZCBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNz
Q3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQor
dm9pZCBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9u
KiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCB1bnNpZ25lZCBwcm9jZXNzVHlwZSkKIHsKLSAg
ICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChw
bHVnaW5QYXRoKTsKKyAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5wbHVnaW5Q
cm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoLCBzdGF0aWNfY2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBl
Pihwcm9jZXNzVHlwZSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggODJlNmNjOGYyYWIxZThlMDNkOGNlNGE0OTI4MTRmMzk3NzY3ODk1ZC4u
MWZlYTJjZDNjOTIwODQ2NGVlMDhkNmI0ZGRmMTMxMjIyODlhNDZlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFz
aGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAg
IHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgdW5zaWduZWQgcHJvY2Vzc1R5cGUpOwogI2VuZGlmCiAKICAgICB2
b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVkY2FkMzRmZjM3Y2VhN2FkMTM1ZDZk
MjY0NDJlMWRlYzQ4OGQzMDYuLmY3NDYyMTQxNDUwZWExYWRhMWRhYjhkODNjYTk1ZGVjZjNlZjAy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTY5LDcgKzY5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChT
dHJpbmcgcGx1Z2luUHJvY2VzcykgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQorICAgIFBsdWdp
blByb2Nlc3NDcmFzaGVkKFN0cmluZyBwbHVnaW5Qcm9jZXNzLCB1bnNpZ25lZCBwcm9jZXNzVHlw
ZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCiAKICAgICB2b2lkIFN0YXJ0TWVt
b3J5U2FtcGxlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxl
SGFuZGxlLCBXVEY6OlN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176867</attachid>
            <date>2012-11-29 17:46:58 -0800</date>
            <delta_ts>2012-11-29 18:19:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101536-20121129174430.patch</filename>
            <type>text/plain</type>
            <size>39012</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjE2MzIwYTQyMzZlOWEz
ZGExN2E4NzZhMmNlNmU4ZjgwODIwMmNjMi4uMDdlY2E0MzcwYWQwNmJlNjc1ZGQwYTdiNTIxMTBl
MWMwYjQ0YTU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTExLTI5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEluc3RhbnRpYXRlIHNu
YXBzaG90IHBsdWdpbnMgaW4gYSBQbHVnaW5Qcm9jZXNzIHdpdGggbXV0ZWQgYXVkaW8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTUzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdWdpbnMgY3JlYXRl
ZCBmb3IgZ2VuZXJhdGlvbiBvZiBhIHNuYXBzaG90IHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgaW4g
YSBzZXBhcmF0ZSBwcm9jZXNzIHdpdGgKKyAgICAgICAgbXV0ZWQgYXVkaW8gc28gdGhhdCBhbnkg
c291bmQgZ2VuZXJhdGVkIGR1cmluZyB0aGUgc25hcHNob3QgcHJvY2VzcyBpcyBub3QgYXVkaWJs
ZSB0byB0aGUgdXNlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWc6IEFkZCBDb3JlQXVkaW8gdG8gdGhlIGxpc3Qgb2YgbGlua2VkIGZyYW1ld29ya3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6IEFkZCBQbHVnaW5Qcm9jZXNzOjpU
eXBlIGVudW0gd2l0aCB2YWx1ZXMgZm9yIHJlZ3VsYXIgYW5kCisgICAgICAgIHNuYXBzaG90IHBy
b2Nlc3MgdHlwZXMuIFByb3ZpZGUgRGVmYXVsdEhhc2ggYW5kIElzSW50ZWdlciB0ZW1wbGF0ZSBz
cGVjaWFsaXphdGlvbnMgZm9yIHRoZSBlbnVtCisgICAgICAgIHNvIHRoYXQgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyIGNhbiBzdG9yZSBpdCBpbiBhIEhhc2hNYXAuCisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
bXV0ZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplKTogTXV0ZSBhdWRpbyBpZiB0aGUgcHJvY2VzcyBjcmVhdGlvbiBwYXJhbWV0ZXJzIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgdGhlIHBsdWdpbiBwcm9jZXNzIHR5cGUgaXMgc25hcHNob3Qg
cHJvY2Vzcy4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IEFkZCBwcm9jZXNzVHlwZSBwcm9jZXNzIGNyZWF0aW9u
IHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0U2l0ZXNXaXRoRGF0YSk6IEZvcndh
cmQgbWVzc2FnZSB0byByZWd1bGFyIHBsdWdpbiBwcm9jZXNzIG9ubHkuCisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpjbGVhclNpdGVEYXRhKTogRm9yd2FyZCBtZXNzYWdl
IHRvIHJlZ3VsYXIgcGx1Z2luIHByb2Nlc3Mgb25seS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aCk6IEFkZCBwcm9jZXNzIHR5cGUg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JD
cmVhdGVQbHVnaW5Qcm9jZXNzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OmNyZWF0ZSk6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94eSk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKTogSW5jbHVkZSBwcm9jZXNzIHR5
cGUgd2l0aCB0aGUgcGx1Z2luIHByb2Nlc3MgY3Jhc2hlZCBtZXNzYWdlLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IFNldCBwcm9jZXNz
IHR5cGUgcHJvY2VzcyBjcmVhdGlvbiBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cHJvY2Vzc1R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKTogUGFzcyBhbG9uZyBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyIHRvCisgICAg
ICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjogQWRkIHByb2Nlc3MgdHlwZSBwYXJhbWV0ZXIg
dG8gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBBZGQg
cHJvY2VzcyB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6cHJvY2Vzc1R5cGUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbik6IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KTogVXNlIHByb2Nlc3MgdHlwZSBpbiBhZGRpdGlvbiB0bworICAgICAgICBwbHVnaW4gcGF0aCB0
byBmaW5kIHRoZSBjb25uZWN0aW9uIHRvIHJlbW92ZS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6IEFkZCBwcm9j
ZXNzIHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6IEFkZCBwcm9jZXNz
IHR5cGUgcGFyYW1ldGVyIGluIGNhbGwgdG8KKyAgICAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6IERl
dGVybWluZSBwcm9jZXNzIHR5cGUgYmFzZWQgb24gZGlzcGxheSBzdGF0ZSBvZiBwbHVnaW4gZWxl
bWVudCBhbmQKKyAgICAgICAgcGFzcyBpdCB0byBQbHVnaW5Qcm94eTo6Y3JlYXRlLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsdWdpblByb2Nlc3NDcmFzaGVkKTogUGFzcyBhbG9uZyBwcm9jZXNzIHR5cGUgcGFyYW1l
dGVyIHRvCisgICAgICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46IEFkZCBwcm9jZXNzIHR5cGUgcGFyYW1ldGVyIHRvIFBsdWdpblByb2Nl
c3NDcmFzaGVkIG1lc3NhZ2UuCisKIDIwMTItMTEtMjggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRUZMXSBHZW5lcmF0ZSBiaWdfYnV0dG9uX3RoZW1lLmVk
agpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKaW5k
ZXggM2U0NTg4YzYyYmEzNmU5NjVmZjdjOTc5ODcxNWNiZWRhY2QzNDNhZC4uZDg4ZWIxOGMzZTQy
ODdkMjkwNWFlYTYxMDFhZTllMzFjMzU2YzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCkBAIC0yOSw3ICsyOSw3IEBAIElORk9QTElTVF9G
SUxFID0gSW5mby5wbGlzdDsKIElOU1RBTExfUEFUSCA9ICQoV0VCS0lUMl9GUkFNRVdPUktTX0RJ
Uik7CiBEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9ICQoTk9STUFMX1dFQktJVDJfRlJBTUVXT1JL
U19ESVIpOwogCi1GUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9IC1mcmFtZXdvcmsgQXBw
bGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3b3JrIENvY29hIC1mcmFt
ZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBKYXZhU2NyaXB0
Q29yZSAtbGljdWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFtZXdvcmsgU2VjdXJpdHkg
LWZyYW1ld29yayBXZWJDb3JlOworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtZnJh
bWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29yayBDYXJib24gLWZyYW1ld29yayBD
b2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsg
SmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFtZXdvcmsgUXVhcnR6Q29yZSAtZnJhbWV3b3Jr
IFNlY3VyaXR5IC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJhbWV3b3JrIENvcmVBdWRpbzsKIAogT1RI
RVJfTERGTEFHUyA9ICQoT1RIRVJfTERGTEFHU18kKFBMQVRGT1JNX05BTUUpKSAkKE9USEVSX0xE
RkxBR1MpOwogT1RIRVJfTERGTEFHU19tYWNvc3ggPSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9M
REZMQUdTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgK
aW5kZXggZDYwYzk0YjkyNjAzNWM4Y2Q4NGFiZDZjYTUxYjk2ZmFhNjA4ZjQ1OS4uYjQzMjNlZDE3
MGVkMjU0NzY2YzM5MGU5YmIyNjI4MTRhODQ5YTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKQEAgLTQ1LDYgKzQ1LDEzIEBAIHN0cnVjdCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogY2xhc3MgUGx1Z2luUHJvY2VzcyA6IENoaWxk
UHJvY2VzcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z2luUHJvY2Vzcyk7CiBwdWJs
aWM6CisKKyAgICBlbnVtIFR5cGUgeworICAgICAgICAvLyBTdGFydCB3aXRoIHZhbHVlIG9uZSBz
aW5jZSBkZWZhdWx0IEhhc2hUcmFpdHM8PiBkaXNhbGxvd3MgemVybyBhcyBrZXkuCisgICAgICAg
IFR5cGVSZWd1bGFyUHJvY2VzcyA9IDEsCisgICAgICAgIFR5cGVTbmFwc2hvdFByb2Nlc3MKKyAg
ICB9OworCiAgICAgc3RhdGljIFBsdWdpblByb2Nlc3MmIHNoYXJlZCgpOwogCiAgICAgdm9pZCBp
bml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OlJ1bkxv
b3AqKTsKQEAgLTExNSw2ICsxMjIsMTMgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxX
ZWJLaXQ6OlBsdWdpblByb2Nlc3M6OlR5cGU+IHsgdHlwZWRlZiBEZWZhdWx0SGFzaDx1aW50MzJf
dD46Okhhc2ggSGFzaDsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxXZWJLaXQ6OlBs
dWdpblByb2Nlc3M6OlR5cGU+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
IAogI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggNjcxZjIwZDZkY2FiZTFm
YzFiYTM5NTU3ZDVlNjI4ZWU3ZWQ3ZWQyZi4uYjdjNTJlNjEzNGNiNDRhZWRjMjM2NDU1OWQ4MTQ2
YWYyZjRkMGM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMv
UGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbHVnaW5Q
cm9jZXNzU2hpbS5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bXBvcnQgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPENvcmVB
dWRpby9BdWRpb0hhcmR3YXJlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4K
QEAgLTMwNCw2ICszMDUsMTQgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KIH0KICNlbmRpZgog
CitzdGF0aWMgdm9pZCBtdXRlQXVkaW8odm9pZCkKK3sKKyAgICBBdWRpb09iamVjdFByb3BlcnR5
QWRkcmVzcyBwcm9wZXJ0eUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlQcm9jZXNz
SXNBdWRpYmxlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBVSW50MzIgcHJvcGVydHlEYXRhID0gMDsKKyAg
ICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShrQXVkaW9PYmpl
Y3RTeXN0ZW1PYmplY3QsICZwcm9wZXJ0eUFkZHJlc3MsIDAsIDAsIHNpemVvZihVSW50MzIpLCAm
cHJvcGVydHlEYXRhKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IG5vRXJy
KTsKK30KKwogdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBv
c2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1BvcnQucG9ydCgpOwpAQCAtMzE5LDYgKzMyOCw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgaW5pdGlh
bGl6ZVNhbmRib3gobV9wbHVnaW5QYXRoLCBwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0
b3J5UGF0aCk7CiAjZW5kaWYKKworICAgIGlmIChwYXJhbWV0ZXJzLnByb2Nlc3NUeXBlID09IFR5
cGVTbmFwc2hvdFByb2Nlc3MpCisgICAgICAgIG11dGVBdWRpbygpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZjUzYzI2
ZTZiMDFmYjUzZmVkYzg4NzEyNzg2NDJmOTdkNmNjZjQ2ZC4uZjVlNTEwMWVhNTE1MGJhMmI4ZTIz
MjRiOGNmMzBjNjI1MDkzODk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTQwLDYgKzQwLDcgQEAgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCiB2b2lkIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBwbHVnaW5QYXRoOworICAgIGVuY29kZXIuZW5jb2RlRW51bShw
cm9jZXNzVHlwZSk7CiAgICAgZW5jb2RlciA8PCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIgPDwgbWluaW11bUxpZmV0aW1lOwogICAgIGVuY29k
ZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwpAQCAtNTUsNiArNTYsOCBAQCBib29sIFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnBsdWdpblBhdGgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHJl
c3VsdC5wcm9jZXNzVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1
bHQubWluaW11bUxpZmV0aW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBh
NDE0MjEyYmU5YTBmNjgyZWM4NWEzMGNlOGRmMDQ3MzVkZTVjMTFlLi4xYjNmOWZmMjc3NThkNjgz
ODkwOWE2MDcxNjZhNmZiZDRkNDRiNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBQTEFURk9STShNQUMpCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiwgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAg
U3RyaW5nIHBsdWdpblBhdGg7CisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZTsK
ICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiAKICAg
ICBkb3VibGUgbWluaW11bUxpZmV0aW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IGY0OTc4OTVk
YjQyZDk3NTJlYTBiN2M0ZWQ1MzI0MWIzODZlOGFlOWQuLjgzNGM4N2ZjNDYzZDk1MTczOTM1NTZk
ZDE2YzhhNDQyMjJjNTM2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKQEAgLTQ1LDEyICs0NSwxMiBA
QCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6UGx1Z2luUHJvY2Vzc01hbmFnZXIoKQogewogfQogCi12
b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBQbHVnaW5JbmZvU3RvcmUmIHBsdWdpbkluZm9TdG9yZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzTWFu
YWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiBw
bHVnaW5JbmZvU3RvcmUsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vzczo6
VHlwZSBwcm9jZXNzVHlwZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBB
U1NFUlQoIXBsdWdpblBhdGguaXNOdWxsKCkpOwogCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVn
aW4gPSBwbHVnaW5JbmZvU3RvcmUuaW5mb0ZvclBsdWdpbldpdGhQYXRoKHBsdWdpblBhdGgpOwot
ICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2lu
UHJvY2VzcyhwbHVnaW4pOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9
IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIHByb2Nlc3NUeXBlKTsKICAgICBwbHVn
aW5Qcm9jZXNzLT5nZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihyZXBseSk7CiB9CiAKQEAgLTY0
LDMyICs2NCwzMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9j
ZXNzUHJveHkoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5QcgogCiB2b2lkIFBsdWdpblByb2Nl
c3NNYW5hZ2VyOjpnZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
biwgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiB3ZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9j
ZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbik7CisgICAgUGx1Z2luUHJvY2Vz
c1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKHBsdWdpbiwg
UGx1Z2luUHJvY2Vzczo6VHlwZVJlZ3VsYXJQcm9jZXNzKTsKICAgICBwbHVnaW5Qcm9jZXNzLT5n
ZXRTaXRlc1dpdGhEYXRhKHdlYlBsdWdpblNpdGVEYXRhTWFuYWdlciwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmNsZWFyU2l0ZURhdGEoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIHdlYlBsdWdpblNp
dGVEYXRhTWFuYWdlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFn
cywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAg
IFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJv
Y2VzcyhwbHVnaW4pOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdl
dE9yQ3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW4sIFBsdWdpblByb2Nlc3M6OlR5cGVSZWd1bGFy
UHJvY2Vzcyk7CiAgICAgcGx1Z2luUHJvY2Vzcy0+Y2xlYXJTaXRlRGF0YSh3ZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXIsIHNpdGVzLCBmbGFncywgbWF4QWdlSW5TZWNvbmRzLCBjYWxsYmFja0lEKTsK
IH0KIAotUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6cGx1Z2luUHJv
Y2Vzc1dpdGhQYXRoKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK1BsdWdpblByb2Nlc3NQcm94
eSogUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnBsdWdpblByb2Nlc3NXaXRoUGF0aChjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUpCiB7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpblByb2Nlc3Nlcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAobV9wbHVnaW5Qcm9jZXNzZXNbaV0tPnBsdWdpbkluZm8oKS5wYXRoID09IHBs
dWdpblBhdGgpCi0gICAgICAgICAgICByZXR1cm4gbV9wbHVnaW5Qcm9jZXNzZXNbaV0uZ2V0KCk7
CisgICAgICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+JiBwbHVnaW5Qcm9jZXNzUHJveHkg
PSBtX3BsdWdpblByb2Nlc3Nlc1tpXTsKKyAgICAgICAgaWYgKHBsdWdpblByb2Nlc3NQcm94eS0+
cGx1Z2luSW5mbygpLnBhdGggPT0gcGx1Z2luUGF0aCAmJiBwbHVnaW5Qcm9jZXNzUHJveHktPnBy
b2Nlc3NUeXBlKCkgPT0gcHJvY2Vzc1R5cGUpCisgICAgICAgICAgICByZXR1cm4gcGx1Z2luUHJv
Y2Vzc1Byb3h5LmdldCgpOwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QbHVnaW5Qcm9j
ZXNzUHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nlc3Mo
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQorUGx1Z2luUHJvY2Vzc1Byb3h5KiBQbHVn
aW5Qcm9jZXNzTWFuYWdlcjo6Z2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbiwgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSkKIHsKLSAg
ICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Qcm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dp
dGhQYXRoKHBsdWdpbi5wYXRoKSkKKyAgICBpZiAoUGx1Z2luUHJvY2Vzc1Byb3h5KiBwbHVnaW5Q
cm9jZXNzID0gcGx1Z2luUHJvY2Vzc1dpdGhQYXRoKHBsdWdpbi5wYXRoLCBwcm9jZXNzVHlwZSkp
CiAgICAgICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzOwogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nl
c3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMs
IHBsdWdpbik7CisgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gcGx1Z2luUHJvY2VzcyA9
IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMsIHBsdWdpbiwgcHJvY2Vzc1R5cGUpOwog
ICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2Vzc1B0ciA9IHBsdWdpblByb2Nlc3Mu
Z2V0KCk7CiAKICAgICBtX3BsdWdpblByb2Nlc3Nlcy5hcHBlbmQocGx1Z2luUHJvY2Vzcy5yZWxl
YXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggNWU1MTk0MjdiYTNmMWRkZmIzN2JkOGJlODNmMzI5
NzhjNDdiOGI5Mi4uZjg0NTIxYTQ5NzNjNTMwNDJiZWU2MjE0NzljYWE1OWE4ZjFhOGFiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nl
c3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01MCw3ICs1MSw3
IEBAIGNsYXNzIFBsdWdpblByb2Nlc3NNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1
Z2luUHJvY2Vzc01hbmFnZXImIHNoYXJlZCgpOwogCi0gICAgdm9pZCBnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBQbHVnaW5JbmZvU3RvcmUmLCBjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOworICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgUGx1Z2luSW5mb1N0b3JlJiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBQbHVnaW5Qcm9jZXNzOjpUeXBlLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lk
IHJlbW92ZVBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzUHJveHkqKTsKIAogICAgIHZv
aWQgZ2V0U2l0ZXNXaXRoRGF0YShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC02Myw4ICs2NCw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIoKTsKIAotICAgIFBsdWdp
blByb2Nlc3NQcm94eSogZ2V0T3JDcmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mKTsKLSAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIFBsdWdpblByb2Nlc3NQcm94eSogZ2V0T3JD
cmVhdGVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNz
OjpUeXBlKTsKKyAgICBQbHVnaW5Qcm9jZXNzUHJveHkqIHBsdWdpblByb2Nlc3NXaXRoUGF0aChj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUpOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+ID4gbV9wbHVnaW5Qcm9jZXNzZXM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5jcHAKaW5kZXggMGMyZTg2ODllNjQ4ODc2ODBlNDJhMTM0OTNjMGYzZTUwZTBiYjEy
YS4uNWE0OWY5NTk4NGUxODUxYmUxNDU0YWNhNWY0MjBhOTYxNGExM2IwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
Y3BwCkBAIC01MCwxMiArNTAsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIG1pbmltdW1MaWZldGltZSA9IDMwICogNjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNo
dXRkb3duVGltZW91dCA9IDEwICogNjA7CiAKLVBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc1Byb3h5
PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2lu
UHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbkluZm8pCitQYXNz
UmVmUHRyPFBsdWdpblByb2Nlc3NQcm94eT4gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUGx1
Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiBwbHVnaW5JbmZvLCBQbHVnaW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NN
YW5hZ2VyLCBwbHVnaW5JbmZvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9j
ZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIsIHBsdWdpbkluZm8sIHByb2Nlc3NUeXBlKSk7
CiB9CiAKLVBsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nl
c3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luSW5mbykKK1BsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdp
blByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luSW5mbywgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSkKICAgICA6
IG1fcGx1Z2luUHJvY2Vzc01hbmFnZXIoUGx1Z2luUHJvY2Vzc01hbmFnZXIpCiAgICAgLCBtX3Bs
dWdpbkluZm8ocGx1Z2luSW5mbykKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0
cygwKQpAQCAtNjQsNiArNjQsNyBAQCBQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQ
cm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZQogICAgICwgbV9m
dWxsc2NyZWVuV2luZG93SXNTaG93aW5nKGZhbHNlKQogICAgICwgbV9wcmVGdWxsc2NyZWVuQXBw
UHJlc2VudGF0aW9uT3B0aW9ucygwKQogI2VuZGlmCisgICAgLCBtX3Byb2Nlc3NUeXBlKHByb2Nl
c3NUeXBlKQogewogICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRp
b25zOwogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6OlBs
dWdpblByb2Nlc3M7CkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6
OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQogCiAgICAgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29udGV4dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvbnRleHRz
W2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlBsdWdpblByb2Nl
c3NDcmFzaGVkKG1fcGx1Z2luSW5mby5wYXRoKSk7CisgICAgICAgIGNvbnRleHRzW2ldLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlBsdWdpblByb2Nlc3NDcmFzaGVk
KG1fcGx1Z2luSW5mby5wYXRoLCBtX3Byb2Nlc3NUeXBlKSk7CiAKICAgICAvLyBUaGlzIHdpbGwg
Y2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KICAgICBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVk
VG9MYXVuY2goKTsKQEAgLTIwNCw2ICsyMDUsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6
ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rpbwog
ICAgIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIHBh
cmFtZXRlcnMucGx1Z2luUGF0aCA9IG1fcGx1Z2luSW5mby5wYXRoOworICAgIHBhcmFtZXRlcnMu
cHJvY2Vzc1R5cGUgPSBtX3Byb2Nlc3NUeXBlOwogCiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlm
ZXRpbWUgPSBtaW5pbXVtTGlmZXRpbWU7CiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVv
dXQgPSBzaHV0ZG93blRpbWVvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDEzNTdlNmM3ZjViNDkwZjdiNDI0
OGVjNzZmNWE1MDRlMmJmMDBlYWIuLjE5NGQ3YTM3Mzc1NjM2MmIxZGJhYTQ5ZTM5YjQ2ZjlmNTY4
MDE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgorI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3MuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNjIsNyArNjMs
NyBAQCBzdHJ1Y3QgUmF3UGx1Z2luTWV0YURhdGEgewogCiBjbGFzcyBQbHVnaW5Qcm9jZXNzUHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5Qcm9jZXNzUHJveHk+LCBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNz
TWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzOjpUeXBlKTsKICAgICB+UGx1Z2luUHJv
Y2Vzc1Byb3h5KCk7CiAKICAgICBjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW5JbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9wbHVnaW5JbmZvOyB9CkBAIC04Miw2ICs4Myw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogCisg
ICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc1R5cGU7IH0KKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZChib29sKTsKIApAQCAtOTcsNyArMTAwLDcgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwg
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOworICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Q
cm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBQbHVnaW5Qcm9jZXNzOjpU
eXBlKTsKIAogICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7
CiAKQEAgLTE3MSw2ICsxNzQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mdWxsc2NyZWVuV2lu
ZG93SXNTaG93aW5nOwogICAgIHVuc2lnbmVkIG1fcHJlRnVsbHNjcmVlbkFwcFByZXNlbnRhdGlv
bk9wdGlvbnM7CiAjZW5kaWYKKworICAgIFBsdWdpblByb2Nlc3M6OlR5cGUgbV9wcm9jZXNzVHlw
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZGVkYTNhOGZhZjAzYzkxY2U3NTNiMzczMjMw
MDFiMjRhNTEzZDY3Li42Y2EwMDNhYjNhN2ZlZWYzMTgyOWQzODM5MjZiMjRiYTllMDBmZDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDA2
LDkgKzQwNiw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyCiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVw
bHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiByZXBseSkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCku
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24obV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKSwg
cGx1Z2luUGF0aCwgcmVwbHkpOworICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5n
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihtX2NvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLCBw
bHVnaW5QYXRoLCBzdGF0aWNfY2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBlPihwcm9jZXNzVHlwZSks
IHJlcGx5KTsKIH0KIAogI2VsaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNGM5OTk2MTI1MTFhM2Q3
ZTczYjQzYWEwY2Y3ZDExMmNlZGU5NGNhMi4uMzIzMjVkNTA4MDYwMzNhMWExYTEyNzIwN2E4MTE4
M2QyNjQ5MmRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kRGlkR2V0UGx1Z2lu
cyh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+ID4pOwogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKLSAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9p
ZCBnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIHVp
bnQzMl90IHByb2Nlc3NUeXBlLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbGlmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAg
IHZvaWQgZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDIyZTJmMDhlYTkxMjExYTEzMzE2NjVhZDQzN2VmOWNjM2ZjOWJlYTIuLmE4M2UxZTg0
Yzc5MDgwYjZlMzYzZmQ3M2Y4ZDU4MDE3NjhjNzFhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzksNyArMzks
NyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgewogICAgIEdldFBsdWdpblBhdGgoV1RG
OjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5n
IHBsdWdpblBhdGgsIHVpbnQzMl90IHBsdWdpbkxvYWRQb2xpY3kpCiAjZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIEdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3Jl
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNJbml0aWFsaXphdGlvbikgRGVsYXllZAorICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIHVpbnQzMl90IHByb2Nlc3NUeXBlKSAtPiAoQ29yZUlQ
Qzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKICNlbmRpZgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKSAmJiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHZvaWQgRGlkR2V0U2l0ZXNX
aXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNjQ4YTUxZWI4Yjg4Njc0YjZlZWI5
NTU5ZDMwZDAxY2IzOWUxNGQ1OS4uYjc1YzVhODc2NjJhNTdhNWU1MDdjOTRlM2M5NDBmNDE4MDZi
NDgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC00MSwxMCArNDEsMTEgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5
cGUsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIs
IGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1f
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChwbHVnaW5QYXRoKQogICAgICwgbV9zdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pCisgICAgLCBtX3Byb2Nlc3NUeXBlKHByb2Nlc3NUeXBlKQogewogICAg
IG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rp
b24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxv
b3AoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggYmM2NTU4ZmZkY2Q5N2IwMzlmZTdh
YjE2MDUxMjNhYmVhODlkZTQ4YS4uMzU5OTNkNDVlM2JjMGIzZTI4MWVjZmFjYjQxOWZmMjA3ZmI5
ZDE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsOSArNDQsOSBAQCBjbGFzcyBQbHVnaW5Qcm94eTsKICAg
ICAKIGNsYXNzIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBjcmVh
dGUoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91
c1BsdWdpbkluaXRpYWxpemF0aW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPiBjcmVhdGUoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luUHJvY2Vzczo6VHlwZSBwcm9jZXNzVHlwZSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBsdWdp
blBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBw
cm9jZXNzVHlwZSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb24pKTsKICAgICB9CiAgICAgflBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KCk7CiAKQEAgLTYwLDggKzYxLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsgfQogCisgICAgUGx1Z2luUHJvY2Vzczo6
VHlwZSBwcm9jZXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1R5cGU7IH0KKwogcHJp
dmF0ZToKLSAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIqLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNJbml0aWFsaXphdGlvbik7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Q
cm9jZXNzOjpUeXBlLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogCiAg
ICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJREU7CkBAIC04NSw2ICs4OCw4IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPE5QUmVtb3RlT2JqZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFwOwog
ICAgIAogICAgIGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
OworCisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBtX3Byb2Nlc3NUeXBlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IGI3NzA1MDk5MjZkMGUyNDA0YWMwMGFmNDk5NmQzZGQ0MjNkYWJmM2MuLjY0YmZjMmI3ZDg5
MDY4M2U3ZWYxYzU3ZDdlNTdiZWYwMTlkMWQxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuY3BwCkBAIC00OSwxNiArNDksMTcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjp+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkKIHsKIH0KIAotUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9j
ZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zW2ldLT5wbHVnaW5QYXRoKCkgPT0gcGx1Z2luUGF0aCkKLSAg
ICAgICAgICAgIHJldHVybiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXS5nZXQoKTsKKyAg
ICAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiYgcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uc1tpXTsKKyAgICAgICAgaWYgKHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCkgPT0gcGx1Z2luUGF0aCAmJiBwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi0+cHJvY2Vzc1R5cGUoKSA9PSBwcm9jZXNzVHlwZSkKKyAgICAgICAg
ICAgIHJldHVybiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKICAgICBD
b3JlSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBib29s
IHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247Ci0gICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBhdGgpLAorICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoLCBwcm9jZXNz
VHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTcyLDE0ICs3Mywx
NCBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgog
Ci0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwg
Y29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24p
OworICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgs
IHByb2Nlc3NUeXBlLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJ
bml0aWFsaXphdGlvbik7CiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKTsKIAogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fcGF0aHNBbmRDb25uZWN0aW9uc011dGV4KTsKLSAgICAgICAgQVNTRVJUKCFtX3BhdGhz
QW5kQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblBh
dGgoKSkpOworICAgICAgICBBU1NFUlQoIW1fcGF0aHNBbmRDb25uZWN0aW9ucy5jb250YWlucyhz
dGQ6Om1ha2VfcGFpcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpLCBwcm9j
ZXNzVHlwZSkpKTsKIAotICAgICAgICBtX3BhdGhzQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBh
dGgsIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOworICAgICAgICBtX3Bh
dGhzQW5kQ29ubmVjdGlvbnMuc2V0KHN0ZDo6bWFrZV9wYWlyKHBsdWdpblBhdGgsIHByb2Nlc3NU
eXBlKSwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmdldCgpOwpAQCAtOTIsMTggKzkzLDE4
IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzCiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3BhdGhzQW5kQ29ubmVjdGlvbnNNdXRleCk7Ci0gICAgICAgIEFTU0VSVChtX3Bh
dGhzQW5kQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBsdWdp
blBhdGgoKSkpOworICAgICAgICBBU1NFUlQobV9wYXRoc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5z
KHN0ZDo6bWFrZV9wYWlyKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5QYXRoKCksIHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uLT5wcm9jZXNzVHlwZSgpKSkpOwogICAgICAgICAKLSAgICAg
ICAgbV9wYXRoc0FuZENvbm5lY3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+
cGx1Z2luUGF0aCgpKTsKKyAgICAgICAgbV9wYXRoc0FuZENvbm5lY3Rpb25zLnJlbW92ZShzdGQ6
Om1ha2VfcGFpcihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUGF0aCgpLCBwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi0+cHJvY2Vzc1R5cGUoKSkpOwogICAgIH0KIAogICAgIG1fcGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZSh2ZWN0b3JJbmRleCk7CiB9CiAKLXZvaWQgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgpCit2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1
Z2luUHJvY2Vzc0NyYXNoZWQoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNz
OjpUeXBlIHByb2Nlc3NUeXBlKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BhdGhzQW5k
Q29ubmVjdGlvbnNNdXRleCk7Ci0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9
IG1fcGF0aHNBbmRDb25uZWN0aW9ucy5nZXQocGx1Z2luUGF0aCkuZ2V0KCk7CisgICAgQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fcGF0aHNBbmRDb25uZWN0aW9ucy5nZXQoc3Rk
OjptYWtlX3BhaXIocGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUpKS5nZXQoKTsKIAogICAgIC8vIEl0
J3MgT0sgZm9yIGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0
aGlzIHdlYiBwcm9jZXNzIGRvZXNuJ3Qga25vdwogICAgIC8vIGFueXRoaW5nIGFib3V0IHRoZSBw
bHVnLWluIHByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKaW5kZXgg
NDU1MTVjZGYxNGQ2MmI0Yzc0NDIxMmIzN2MwMjA3MTc4MGZlNjhhYi4uODY0NDlmNjUxYmM2ZTNk
YjEyYmE2NzJiZmIxYjY2ODg3OTAxOGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQog
CisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTUxLDE3ICs1MiwxNyBAQCBwdWJsaWM6CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyKCk7CiAgICAgflBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcigpOwogCi0gICAgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCk7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luUHJvY2Vz
czo6VHlwZSk7CiAgICAgdm9pZCByZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiopOwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSB3ZWIgcHJvY2VzcyBj
b25uZWN0aW9uIHdvcmsgcXVldWUuCi0gICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlKTsKIAogcHJpdmF0ZToK
ICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiA+IG1fcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25zOwogCiAgICAgTXV0ZXggbV9wYXRoc0FuZENvbm5lY3Rpb25zTXV0ZXg7
Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiA+IG1fcGF0
aHNBbmRDb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFBsdWdpblBy
b2Nlc3M6OlR5cGU+LCBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gPiBtX3BhdGhzQW5kQ29u
bmVjdGlvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBmN2VhZDU2NjRkNTIwYjdjYTNjZTA0MDUwNDU0YjAz
OGQ5ZWJiMTdmLi42NjMzZDgyNDcyNjJlNTc2MWNhMGNjZTM4NjlmMWVkNjhkNWIwMTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAK
QEAgLTU1LDEyICs1NSwxMiBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQbHVnaW5JbnN0YW5j
ZUlEKCkKICAgICByZXR1cm4gKyt1bmlxdWVQbHVnaW5JbnN0YW5jZUlEOwogfQogCi1QYXNzUmVm
UHRyPFBsdWdpblByb3h5PiBQbHVnaW5Qcm94eTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCkKK1Bhc3NSZWZQdHI8UGx1Z2luUHJveHk+IFBsdWdpblByb3h5OjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlIHByb2Nlc3NUeXBlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJveHkocGx1Z2luUGF0aCkpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJveHkocGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUpKTsK
IH0KIAotUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkK
K1BsdWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdp
blByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUpCiAgICAgOiBtX3BsdWdpblBhdGgocGx1Z2luUGF0
aCkKICAgICAsIG1fcGx1Z2luSW5zdGFuY2VJRChnZW5lcmF0ZVBsdWdpbkluc3RhbmNlSUQoKSkK
ICAgICAsIG1fcGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEoZmFsc2UpCkBAIC02
OSw2ICs2OSw3IEBAIFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpCiAgICAgLCBtX3dhbnRzV2hlZWxFdmVudHMoZmFsc2UpCiAgICAgLCBtX3JlbW90ZUxh
eWVyQ2xpZW50SUQoMCkKICAgICAsIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRp
b24oZmFsc2UpCisgICAgLCBtX3Byb2Nlc3NUeXBlKHByb2Nlc3NUeXBlKQogewogfQogCkBAIC04
NCw3ICs4NSw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkKCkKIGJv
b2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKICAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Ci0gICAgbV9jb25uZWN0aW9uID0gV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKCkuZ2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24obV9wbHVnaW5QYXRoKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIoKS5nZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihtX3BsdWdpblBhdGgsIG1fcHJvY2Vzc1R5cGUpOwogICAgIAog
ICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDUzNWM4Yzdm
ZWZmNDQ0OWY4ZjY3MWI2ZDVmYTNhOWJiNmMxNDkxM2IuLmFmMWQ1ZTFlZDlhYTAzNzQ2ZDVhYjYz
YmJjNGE0Zjg2NTYxODdhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtNTQsNyAr
NTUsNyBAQCBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBQbHVnaW5Q
cm94eSA6IHB1YmxpYyBQbHVnaW4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
dWdpblByb3h5PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luUHJvY2Vzczo6VHlwZSk7CiAgICAgflBsdWdpblByb3h5KCk7CiAKICAgICB1aW50NjRf
dCBwbHVnaW5JbnN0YW5jZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5JbnN0YW5jZUlEOyB9
CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmVpbmdBc3luY2hyb25vdXNs
eUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAgZXhwbGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Qcm9jZXNzOjpUeXBlKTsKIAogICAgIC8vIFBsdWdpbgog
ICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKQEAgLTIwNSw2
ICsyMDYsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gbV9wbHVnaW5MYXllcjsKICNlbmRpZgorCisgICAgUGx1Z2luUHJvY2Vzczo6VHlwZSBt
X3Byb2Nlc3NUeXBlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggODNjMGFlN2ZkMmVhOTg1
MDdmM2U5MzdkNmMyNDM2M2YxZTRhYjY0Yi4uOTQ1NGRmZDAxNDdiNjlhZWQ4MDg2NGYxMjQyMWJl
MTE5MmQyOWE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNTM1LDcgKzUzNSw4IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpj
cmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBIVE1MUGx1Z0luRWxlbWVudCogcGx1CiAgICAg
fQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIHJldHVybiBQbHVnaW5Qcm94eTo6
Y3JlYXRlKHBsdWdpblBhdGgpOworICAgIFBsdWdpblByb2Nlc3M6OlR5cGUgcHJvY2Vzc1R5cGUg
PSAocGx1Z2luRWxlbWVudC0+ZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6Oldh
aXRpbmdGb3JTbmFwc2hvdCA/IFBsdWdpblByb2Nlc3M6OlR5cGVTbmFwc2hvdFByb2Nlc3MgOiBQ
bHVnaW5Qcm9jZXNzOjpUeXBlUmVndWxhclByb2Nlc3MpOworICAgIHJldHVybiBQbHVnaW5Qcm94
eTo6Y3JlYXRlKHBsdWdpblBhdGgsIHByb2Nlc3NUeXBlKTsKICNlbHNlCiAgICAgTmV0c2NhcGVQ
bHVnaW46OnNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKE5QUnVudGltZU9iamVjdE1hcDo6c2V0R2xv
YmFsRXhjZXB0aW9uKTsKICAgICByZXR1cm4gTmV0c2NhcGVQbHVnaW46OmNyZWF0ZShOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUocGx1Z2luUGF0aCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjhiN2JmZDdiMDIzNjZmMzQwZjI0NzFlMDc3
YzM2OTBmMmFhOGI2ZC4uMTYyMTYxMmYyZGE3MTY1OWMwZTRiMzg5MzBlN2VlOTE5ZDAxMGFlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDc5LDkgKzEw
NzksOSBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpD
b25uZWN0aW9uKikKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotdm9pZCBX
ZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5QYXRoKQordm9pZCBXZWJQcm9jZXNzOjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZChDb3JlSVBDOjpDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCB1aW50
MzJfdCBwcm9jZXNzVHlwZSkKIHsKLSAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoKTsKKyAgICBtX3BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5wbHVnaW5Qcm9jZXNzQ3Jhc2hlZChwbHVnaW5QYXRoLCBzdGF0aWNf
Y2FzdDxQbHVnaW5Qcm9jZXNzOjpUeXBlPihwcm9jZXNzVHlwZSkpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODJlNmNjOGYyYWIxZThlMDNk
OGNlNGE0OTI4MTRmMzk3NzY3ODk1ZC4uMDEzMzBhNjA3OTEwZDQxODMzODE1NzZiODkwZWMzNmU3
MjRjZGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI1NCw3
ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKENvcmVJ
UEM6OkNvbm5lY3Rpb24qKTsKICNlbmRpZgogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAg
ICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgpOworICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgdWludDMyX3QgcHJvY2Vz
c1R5cGUpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IGVkY2FkMzRmZjM3Y2VhN2FkMTM1ZDZkMjY0NDJlMWRlYzQ4OGQzMDYuLjQzNDZiOWQ4MTM1Mzdk
ODkzODIzYjhhZDVmMDgzMTNjNzVmZGRjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY5LDcgKzY5LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2VzcyB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAg
ICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJvY2VzcykgRGlzcGF0Y2hPbkNv
bm5lY3Rpb25RdWV1ZQorICAgIFBsdWdpblByb2Nlc3NDcmFzaGVkKFN0cmluZyBwbHVnaW5Qcm9j
ZXNzLCB1aW50MzJfdCBwcm9jZXNzVHlwZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2Vu
ZGlmCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBXVEY6OlN0cmluZyBzYW1wbGVMb2dGaWxl
UGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>