<?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>106513</bug_id>
          
          <creation_ts>2013-01-09 17:43:06 -0800</creation_ts>
          <short_desc>Groundwork to enable process suppression by default on Mac</short_desc>
          <delta_ts>2013-01-16 09:46:29 -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>
          
          <blocked>106804</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kiran Muppala">cmuppala</reporter>
          <assigned_to name="Kiran Muppala">cmuppala</assigned_to>
          <cc>andersca</cc>
    
    <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>mrowe</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>803888</commentid>
    <comment_count>0</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 17:43:06 -0800</bug_when>
    <thetext>Process suppression has so far been controlled by a user default and disabled by default.  This needs to be replaced with the policy of &quot;enabled by default&quot; and add a private API to change this value on a per-context basis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803940</commentid>
    <comment_count>1</comment_count>
      <attachid>182045</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 19:03:13 -0800</bug_when>
    <thetext>Created attachment 182045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803943</commentid>
    <comment_count>2</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 19:04:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/12984009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803946</commentid>
    <comment_count>3</comment_count>
      <attachid>182045</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-09 19:11:54 -0800</bug_when>
    <thetext>Comment on attachment 182045
Patch

Attachment 182045 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15761712</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803960</commentid>
    <comment_count>4</comment_count>
      <attachid>182045</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-09 19:26:08 -0800</bug_when>
    <thetext>Comment on attachment 182045
Patch

Attachment 182045 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15759786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803961</commentid>
    <comment_count>5</comment_count>
      <attachid>182045</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 19:26:45 -0800</bug_when>
    <thetext>Comment on attachment 182045
Patch

Attachment 182045 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15762764</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803975</commentid>
    <comment_count>6</comment_count>
      <attachid>182051</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 19:40:58 -0800</bug_when>
    <thetext>Created attachment 182051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803976</commentid>
    <comment_count>7</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 19:41:49 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=182051) [details]
&gt; Patch

Fixed build failure due to Mac specific API being declared in WKContextPrivate.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804005</commentid>
    <comment_count>8</comment_count>
      <attachid>182051</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 20:20:19 -0800</bug_when>
    <thetext>Comment on attachment 182051
Patch

Attachment 182051 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15759802</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804035</commentid>
    <comment_count>9</comment_count>
      <attachid>182059</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 21:31:42 -0800</bug_when>
    <thetext>Created attachment 182059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804038</commentid>
    <comment_count>10</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-09 21:33:10 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=182059) [details]
&gt; Patch

Fixed build failure due to a method not correctly guarded by __MAC_OS_X_VERSION_MIN_REQUIRED resulting in a unused method error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804422</commentid>
    <comment_count>11</comment_count>
      <attachid>182152</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 09:08:11 -0800</bug_when>
    <thetext>Created attachment 182152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804428</commentid>
    <comment_count>12</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 09:11:11 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=182152) [details]
&gt; Patch

Added a internal user default to omit process suppression support globally in (WebContext::processSuppressionSupportChanged).  This is useful for doing comparisons with and without process suppression.  No other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804681</commentid>
    <comment_count>13</comment_count>
      <attachid>182198</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 13:32:45 -0800</bug_when>
    <thetext>Created attachment 182198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804682</commentid>
    <comment_count>14</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 13:33:51 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=182198) [details]
&gt; Patch

Added missing API getter method to determine the current state of process suppression support of a context.  Update ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804729</commentid>
    <comment_count>15</comment_count>
      <attachid>182198</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-10 14:29:10 -0800</bug_when>
    <thetext>Comment on attachment 182198
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:373
&gt; +    // Register for occlusion notifications if atleast one context has process suppression support enabled

&quot;atleast&quot;.
No period.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:395
&gt; +        }
&gt; +        else {

Coding style.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:5079
&gt;  				E1790891169BAA82006904C7 /* SecItemShimMessages.h in Headers */,
&gt; +				9FB5F395169E6A80002C25BF /* WKContextPrivateMac.h in Headers */,

Keeping the build section sorted helps with the merges.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:6059
&gt;  				E1790890169BAA7F006904C7 /* SecItemShimMessageReceiver.cpp in Sources */,
&gt; +				9FB5F394169E6A80002C25BF /* WKContextPrivateMac.cpp in Sources */,

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804758</commentid>
    <comment_count>16</comment_count>
      <attachid>182198</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-10 14:54:05 -0800</bug_when>
    <thetext>Comment on attachment 182198
Patch

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

I&apos;m not sure if it&apos;s beneficial for NetworkProcess to ever be suppressed.

It might be helpful to explain the initial state in ChildProcess::platformInitialize(). Perhaps something like below, or maybe more in-depth:

    // Starting with suppression disabled. UI process will set an actual value from didFinishLaunching().

r- for readability refactoring, as discussed in person.

&gt; Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h:27
&gt; +#ifndef WKContextPrivateMac_h
&gt; +#define WKContextPrivateMac_h

I&apos;m a little uneasy about adding an API header with &quot;Mac&quot; in it, but given the precedent of WKPagePrivateMac.h, it&apos;s probably OK.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:368
&gt; +void WebContext::processSuppressionSupportChanged()

I have a very difficult time understanding what this function does, and when it should be called. Kiran and myself spent some time in person discussing this, and it seems like this would really benefit from a re-design. There are multiple things done here:

1. Iterate over contexts, check if any or all of them disable the feature

2. Notify global processes (plugin, shared worker)

3. Register or unregister for notifications

Can you split this into functions that do each of these things, and have descriptive names?

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:374
&gt; +    bool newOcclusionNotificationsEnabled = false;

This should be called either newProcessSuppressionSupportEnabledForAnyContext, or shouldEnableOccusionNotifications.

Perhaps you can split the iteration into separate functions. This is not hot code, so it&apos;s OK to iterate contexts twice, or even more.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:395
&gt; +        }
&gt; +        else {

Style nit: there should be no newline here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804894</commentid>
    <comment_count>17</comment_count>
      <attachid>182246</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 19:55:51 -0800</bug_when>
    <thetext>Created attachment 182246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804898</commentid>
    <comment_count>18</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 20:02:58 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 182198 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182198&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:373
&gt; &gt; +    // Register for occlusion notifications if atleast one context has process suppression support enabled
&gt; 
&gt; &quot;atleast&quot;.
&gt; No period.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:395
&gt; &gt; +        }
&gt; &gt; +        else {
&gt; 
&gt; Coding style.
&gt; 

I fixed both of these prior to start of refactoring, although they don&apos;t show up in the final product.  Thanks for pointing these out.

&gt; &gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:5079
&gt; &gt;  				E1790891169BAA82006904C7 /* SecItemShimMessages.h in Headers */,
&gt; &gt; +				9FB5F395169E6A80002C25BF /* WKContextPrivateMac.h in Headers */,
&gt; 
&gt; Keeping the build section sorted helps with the merges.
&gt; 
&gt; &gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:6059
&gt; &gt;  				E1790890169BAA7F006904C7 /* SecItemShimMessageReceiver.cpp in Sources */,
&gt; &gt; +				9FB5F394169E6A80002C25BF /* WKContextPrivateMac.cpp in Sources */,
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804899</commentid>
    <comment_count>19</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-10 20:07:48 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 182198 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182198&amp;action=review
&gt; 
&gt; I&apos;m not sure if it&apos;s beneficial for NetworkProcess to ever be suppressed.
&gt; 

Even if the benefits are not clear, I am under the impression based on what Maciej and others have told me is to enable it for as broad a scope as possible.  If we run into issues because of this, we can revisit the decision.

&gt; It might be helpful to explain the initial state in ChildProcess::platformInitialize(). Perhaps something like below, or maybe more in-depth:
&gt; 
&gt;     // Starting with suppression disabled. UI process will set an actual value from didFinishLaunching().
&gt; 

Added a comment.

&gt; r- for readability refactoring, as discussed in person.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h:27
&gt; &gt; +#ifndef WKContextPrivateMac_h
&gt; &gt; +#define WKContextPrivateMac_h
&gt; 
&gt; I&apos;m a little uneasy about adding an API header with &quot;Mac&quot; in it, but given the precedent of WKPagePrivateMac.h, it&apos;s probably OK.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:368
&gt; &gt; +void WebContext::processSuppressionSupportChanged()
&gt; 
&gt; I have a very difficult time understanding what this function does, and when it should be called. Kiran and myself spent some time in person discussing this, and it seems like this would really benefit from a re-design. There are multiple things done here:
&gt; 
&gt; 1. Iterate over contexts, check if any or all of them disable the feature
&gt; 
&gt; 2. Notify global processes (plugin, shared worker)
&gt; 
&gt; 3. Register or unregister for notifications
&gt; 
&gt; Can you split this into functions that do each of these things, and have descriptive names?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:374
&gt; &gt; +    bool newOcclusionNotificationsEnabled = false;
&gt; 
&gt; This should be called either newProcessSuppressionSupportEnabledForAnyContext, or shouldEnableOccusionNotifications.
&gt; 
&gt; Perhaps you can split the iteration into separate functions. This is not hot code, so it&apos;s OK to iterate contexts twice, or even more.
&gt; 

I created two new functions updateProcessSuppressionEnabledForAnyContext() and updateProcessSuppressionEnabledForAllContexts() that do the iteration separately as you suggested.  I find the new code much easier to read and follow.  Thanks for giving me very helpful pointers for refactoring.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:395
&gt; &gt; +        }
&gt; &gt; +        else {
&gt; 
&gt; Style nit: there should be no newline here.

I fixed this prior to refactoring, although it is not to be found in the final result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805551</commentid>
    <comment_count>20</comment_count>
      <attachid>182246</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-11 13:05:23 -0800</bug_when>
    <thetext>Comment on attachment 182246
Patch

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

My only serious concern is apparent duplication of the notifyGlobalChildProcessesOfApplicationOcclusionState handling between WebContext::setProcessSuppressionEnabled and WebContext::updateProcessSuppressionEnabledForAllContexts.

This seems deficient for the case where one window in the app is occluded and the other window is not, and there is a child process only used in the occluded window.

&gt; Source/WebKit2/UIProcess/WebContext.h:351
&gt; +    static void updateProcessSuppressionEnabledForAnyContext();
&gt; +    static void updateProcessSuppressionEnabledForAllContexts();

I think it would be slightly nicer factoring here to use three functions. One that would loop through the processes and compute new values for both processSuppressionEnabledForAnyContext and processSuppressionEnabledForAllContexts. And two other that the first function calls that are just setters that would check to see if the values changed and then do the necessary work triggered by those changes. But this current structure is probably OK. I just like mine slightly better.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:298
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090

Would be nicer to define something named at the top of the file instead of checking the OS version directly at each call site. That name could also help explain why the code is conditional perhaps.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:299
&gt; +    bool occluded = m_processSuppressionEnabled &amp;&amp; s_applicationIsOccluded;

Would be nicer to name this isOccluded.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:312
&gt; +    bool occluded = s_processSuppressionEnabledForAllContexts &amp;&amp; s_applicationIsOccluded;

Would be nicer to name this isOccluded.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:330
&gt; +    if (s_applicationIsOccluded)
&gt; +        notifyChildProcessesOfApplicationOcclusionState();

This is non-obvious. Two things are not obvious.

1) Why is a change in process suppression the right time to tell child processes the application is occluded? Especially, why is it equally important to do this both when enabling process suppression and also when disabling it? Really mysterious.

2) Why do we only want to tell child processes if the application is occluded? What about telling them it is not occluded?

I’m sure there is a good explanation, but it’s not obvious and probably requires a brief comment.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:366
&gt; +        if (s_applicationIsOccluded)
&gt; +            notifyGlobalChildProcessesOfApplicationOcclusionState();

Given this code, I don’t understand why WebContext::setProcessSuppressionEnabled also has to do this. But I have the same two questions as above:

1) Why is a change in process suppression the right time to tell child processes the application is occluded? Especially, why is it equally important to do this both when enabling process suppression and also when disabling it? Really mysterious.

2) Why do we only want to tell child processes if the application is occluded? What about telling them it is not occluded?

I’m sure there is a good explanation, but it’s not obvious and probably requires a brief comment.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:374
&gt; +    static bool omitProcessSuppression = [[NSUserDefaults standardUserDefaults] boolForKey:@&quot;WebKit2OmitProcessSuppression&quot;];
&gt; +    if (omitProcessSuppression)
&gt;          return;

It seems a little oblique to turn off process suppression by just not registering occlusion notification handlers. In fact, it seems a bit random to have the check here in this function. It could instead be in the registerOcclusionNotificationHandlers function, for example. A brief comment could make it clear why this is function is a good choice.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:425
&gt; +        WTFLogAlways(&quot;Unregistration of \&quot;Applicaton Became Occluded\&quot; notification handler failed.\n&quot;);

Typo: &quot;applicaton&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805755</commentid>
    <comment_count>21</comment_count>
      <attachid>182447</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-11 16:50:00 -0800</bug_when>
    <thetext>Created attachment 182447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805762</commentid>
    <comment_count>22</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-11 17:06:03 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 182246 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182246&amp;action=review
&gt; 
&gt; My only serious concern is apparent duplication of the notifyGlobalChildProcessesOfApplicationOcclusionState handling between WebContext::setProcessSuppressionEnabled and WebContext::updateProcessSuppressionEnabledForAllContexts.
&gt; 

The duplication is a misunderstanding caused by the similarly named notify methods.  The first method only notifies child processes belonging to the context, namely web and network processes, where as the latter notifies them for non context specific (which I have called global) processes, namely plugin and shared worker processes.

&gt; This seems deficient for the case where one window in the app is occluded and the other window is not, and there is a child process only used in the occluded window.
&gt;

Yes, right now only occluding all windows triggers suppression.  But, a patch in the near future will add support for a single window occlusion as well.

&gt; &gt; Source/WebKit2/UIProcess/WebContext.h:351
&gt; &gt; +    static void updateProcessSuppressionEnabledForAnyContext();
&gt; &gt; +    static void updateProcessSuppressionEnabledForAllContexts();
&gt; 
&gt; I think it would be slightly nicer factoring here to use three functions. One that would loop through the processes and compute new values for both processSuppressionEnabledForAnyContext and processSuppressionEnabledForAllContexts. And two other that the first function calls that are just setters that would check to see if the values changed and then do the necessary work triggered by those changes. But this current structure is probably OK. I just like mine slightly better.
&gt; 

Thank you for the suggestion, I created a single method called updateProcessSuppressionEnabledForAnyAndAllContexts and added setters for each of the two variables.  I find the setters approach better too and eliminated the need for updateOcclusionNotificationRegistration.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:298
&gt; &gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
&gt; 
&gt; Would be nicer to define something named at the top of the file instead of checking the OS version directly at each call site. That name could also help explain why the code is conditional perhaps.
&gt; 

I was looking for fixing this but on closer inspection, the version check is only required in register and unregister occlusion notifications, where a comment is probably unnecessary since there are WKSI methods immediately following the check.  And the reason these are unnecessary in the notify methods is that they are only triggered if s_applicationIsOccluded ever becomes true, which can&apos;t happen unless the notifications fire.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:299
&gt; &gt; +    bool occluded = m_processSuppressionEnabled &amp;&amp; s_applicationIsOccluded;
&gt; 
&gt; Would be nicer to name this isOccluded.
&gt; 

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:312
&gt; &gt; +    bool occluded = s_processSuppressionEnabledForAllContexts &amp;&amp; s_applicationIsOccluded;
&gt; 
&gt; Would be nicer to name this isOccluded.
&gt; 

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:330
&gt; &gt; +    if (s_applicationIsOccluded)
&gt; &gt; +        notifyChildProcessesOfApplicationOcclusionState();
&gt; 
&gt; This is non-obvious. Two things are not obvious.
&gt; 
&gt; 1) Why is a change in process suppression the right time to tell child processes the application is occluded? Especially, why is it equally important to do this both when enabling process suppression and also when disabling it? Really mysterious.
&gt; 
&gt; 2) Why do we only want to tell child processes if the application is occluded? What about telling them it is not occluded?
&gt; 
&gt; I’m sure there is a good explanation, but it’s not obvious and probably requires a brief comment.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:366
&gt; &gt; +        if (s_applicationIsOccluded)
&gt; &gt; +            notifyGlobalChildProcessesOfApplicationOcclusionState();
&gt; 
&gt; Given this code, I don’t understand why WebContext::setProcessSuppressionEnabled also has to do this. But I have the same two questions as above:
&gt; 
&gt; 1) Why is a change in process suppression the right time to tell child processes the application is occluded? Especially, why is it equally important to do this both when enabling process suppression and also when disabling it? Really mysterious.
&gt; 
&gt; 2) Why do we only want to tell child processes if the application is occluded? What about telling them it is not occluded?
&gt; 
&gt; I’m sure there is a good explanation, but it’s not obvious and probably requires a brief comment.
&gt; 

You are right, the code wasn&apos;t very clear.  I added the following comment in code.

    // If the application is currently occluded, then notify child processes.
    // This will ensure that, when enabling process suppression, the processes
    // set themselves as occluded and become eligible for suppression and when disabling
    // process suppression, they set themselves as unoccluded and become unsuppressed.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:374
&gt; &gt; +    static bool omitProcessSuppression = [[NSUserDefaults standardUserDefaults] boolForKey:@&quot;WebKit2OmitProcessSuppression&quot;];
&gt; &gt; +    if (omitProcessSuppression)
&gt; &gt;          return;
&gt; 
&gt; It seems a little oblique to turn off process suppression by just not registering occlusion notification handlers. In fact, it seems a bit random to have the check here in this function. It could instead be in the registerOcclusionNotificationHandlers function, for example. A brief comment could make it clear why this is function is a good choice.
&gt; 

Yeah, the register notification functions are the better place to put it.  I created a omitProcessSuppression() getter and added the check there itself.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:425
&gt; &gt; +        WTFLogAlways(&quot;Unregistration of \&quot;Applicaton Became Occluded\&quot; notification handler failed.\n&quot;);
&gt; 
&gt; Typo: &quot;applicaton&quot;

Fixed.

Besides those fixes, I decided to leave process suppression disabled by default (m_processSuppressionEnabled is initialized to false), since a stable OS build is not available where it can be enabled.  Will use a followup patch to enable it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806691</commentid>
    <comment_count>23</comment_count>
      <attachid>182447</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-14 15:46:47 -0800</bug_when>
    <thetext>Comment on attachment 182447
Patch

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

This looks much clearer to me! Please see more comments below.

&gt; Source/WebKit2/UIProcess/WebContext.cpp:186
&gt; +    updateProcessSuppressionEnabledForAnyAndAllContexts();

I still don&apos;t think that this is descriptive enough. Given that there are two actions to take here, perhaps this can be spit into two function calls? Something like

    installOcclusionNotificationHandlerIfNeeded();
    disableOcclusionHandlingForGlobalProcesses(); // FIXME (106804): Remove when m_processSuppressionEnabled is changed to start with true.

Starting from here, I think that you&apos;ll need to refactor other functions a bit more.

&gt; Source/WebKit2/UIProcess/WebContext.h:358
&gt; +    static bool omitProcessSuppression();

Maybe processSuppressionIsDisabledViaDebugPreference()?

&gt; Source/WebKit2/UIProcess/WebContext.h:463
&gt; +    static bool s_processSuppressionEnabledForAnyContext;
&gt; +    static bool s_processSuppressionEnabledForAllContexts;

Please consider moving these to implementation file. The reason is that future refactorings will not touch the header then, and recompiles will be faster.

For the same reason, we like to have static functions declared in .cpp files, too, if they don&apos;t access member variables through a pointer.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:298
&gt; +    bool isOccluded = m_processSuppressionEnabled &amp;&amp; s_applicationIsOccluded;

isOccluded probably needs a better name now, because it combines &quot;is occluded&quot; with &quot;this context tracks occlusion&quot;.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:307
&gt; +{

I&apos;d put a comment here, explaining that we intend to get rid of global processes eventually.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:331
&gt; +    updateProcessSuppressionEnabledForAnyAndAllContexts();

This needs to be split into more specific function calls, too.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:407
&gt; +    if (omitProcessSuppression())
&gt; +        return;

This function is only called once. It would be nice to make it do exactly what its name says  by moving the check out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806901</commentid>
    <comment_count>24</comment_count>
      <attachid>182682</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-14 19:17:50 -0800</bug_when>
    <thetext>Created attachment 182682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806905</commentid>
    <comment_count>25</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-14 19:27:34 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 182447 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182447&amp;action=review
&gt; 
&gt; This looks much clearer to me! Please see more comments below.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebContext.cpp:186
&gt; &gt; +    updateProcessSuppressionEnabledForAnyAndAllContexts();
&gt; 
&gt; I still don&apos;t think that this is descriptive enough. Given that there are two actions to take here, perhaps this can be spit into two function calls? Something like
&gt; 
&gt;     installOcclusionNotificationHandlerIfNeeded();
&gt;     disableOcclusionHandlingForGlobalProcesses(); // FIXME (106804): Remove when m_processSuppressionEnabled is changed to start with true.
&gt; 
&gt; Starting from here, I think that you&apos;ll need to refactor other functions a bit more.
&gt; 

I dropped the update method completely and moved initialization code to platformInitialize.  The initialization code now just calls couple of setters to update the value of s_processSuppressionEnabledForAnyContext and s_processSuppressionEnabledForAllContexts.  This way, it works correctly regardless of whether the default value is true or false.  But, I am not sure if I sacrificed readability.  Please let me know if you think so and I will find better method names.

&gt; &gt; Source/WebKit2/UIProcess/WebContext.h:358
&gt; &gt; +    static bool omitProcessSuppression();
&gt; 
&gt; Maybe processSuppressionIsDisabledViaDebugPreference()?
&gt; 

I moved the check to one place and hence dropped this method all together.

&gt; &gt; Source/WebKit2/UIProcess/WebContext.h:463
&gt; &gt; +    static bool s_processSuppressionEnabledForAnyContext;
&gt; &gt; +    static bool s_processSuppressionEnabledForAllContexts;
&gt; 
&gt; Please consider moving these to implementation file. The reason is that future refactorings will not touch the header then, and recompiles will be faster.
&gt; 
&gt; For the same reason, we like to have static functions declared in .cpp files, too, if they don&apos;t access member variables through a pointer.
&gt; 

I moved all private methods and static data members to the implementation file.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:298
&gt; &gt; +    bool isOccluded = m_processSuppressionEnabled &amp;&amp; s_applicationIsOccluded;
&gt; 
&gt; isOccluded probably needs a better name now, because it combines &quot;is occluded&quot; with &quot;this context tracks occlusion&quot;.
&gt; 

I modified this method to take a isOccluded parameter.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:307
&gt; &gt; +{
&gt; 
&gt; I&apos;d put a comment here, explaining that we intend to get rid of global processes eventually.
&gt; 

Added a comment.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:331
&gt; &gt; +    updateProcessSuppressionEnabledForAnyAndAllContexts();
&gt; 
&gt; This needs to be split into more specific function calls, too.
&gt; 

I broke this up into two getters and two setters.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:407
&gt; &gt; +    if (omitProcessSuppression())
&gt; &gt; +        return;
&gt; 
&gt; This function is only called once. It would be nice to make it do exactly what its name says  by moving the check out.

Fixed, moved the check out of these methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806926</commentid>
    <comment_count>26</comment_count>
      <attachid>182682</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-14 20:22:11 -0800</bug_when>
    <thetext>Comment on attachment 182682
Patch

Attachment 182682 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15871751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806978</commentid>
    <comment_count>27</comment_count>
      <attachid>182682</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-14 22:02:06 -0800</bug_when>
    <thetext>Comment on attachment 182682
Patch

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

This looks good to me. Since you are not a committer, and need to update the patch anyway to fix the build, I&apos;ll say r-, but there is nothing really else blocking this from being landed.

Comments below are optional, although I think that you&apos;ll want to address some of them.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:65
&gt; +static bool s_applicationIsOccluded = false;

I&apos;m not sure if this variable&apos;s value is accurate. Do we get an occlusion notification if the application launches in background in an invisible space (e.g. as part of relaunching applications after a restart)? Even if we get one, that might happen before we installed a handler.

This is more like a stored value of latest occlusion handler invocation than accurate information about occlusion state, unless I&apos;m missing something. This variable name is too tempting, and someone could use it in an incorrect way later.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:67
&gt; +static bool s_processSuppressionEnabledForAllContexts = true; // Initializing to true simplifies WebContext::platformInitialize.

I don&apos;t think that this comment is helpful. The value is logically true when there are no contexts (because it&apos;s a result of statement applied to an empty set).

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:85
&gt; +static void setApplicationIsOccludedForChildProcessesInContext(bool isOccluded, WebContext* context)

Despite what I said about moving functions to .cpp files, this might be going further than we usually go, an is thus surprising.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:109
&gt; +static void setApplicationIsOccluded(bool isOccluded)

I think that behavior of this function is just fine, but the name makes it confusingly look like a simple setter (same applies to specialized versions above). Perhaps &quot;notifyProcessesIfOcclusionStateChanged()&quot; would be correct and more helpful?

Alternatively, one can think about this as common code for applicationBecameVisible and applicationBecameOccluded functions, and name this &quot;applicationBecameOccluded()&quot;.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:114
&gt; +    if (s_applicationIsOccluded == isOccluded)
&gt; +        return;
&gt; +
&gt; +    s_applicationIsOccluded = isOccluded;

In fact, I&apos;d consider moving this logic to callers, even though this means a few lines of duplicated code. That way, this function would only do one thing, not two.

Also, this would make it clearer that we don&apos;t rely on these notifications to not come twice, and perhaps trigger an interesting investigation of why we can&apos;t rely on them.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:161
&gt; +static void setProcessSuppressionEnabledForAnyContext(bool enabled)

Here as well, the name is more appropriate for a plain setter, not for a function whose primary goal is to register or unregister handlers. It&apos;s an implementation detail that a static variable tracks having the handlers currently installed.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:193
&gt; +static bool isProcessSuppressionEnabledForAnyContext()

We normally try to make function names are grammatically correct as feasible. Here, processSuppressionIsEnabledForAnyContext() would be more in accordance with WebKit style.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:226
&gt; +    if (m_processSuppressionEnabled)
&gt; +        setProcessSuppressionEnabledForAnyContext(true);
&gt; +    else
&gt; +        setProcessSuppressionEnabledForAllContexts(false);

I don&apos;t get this. Isn&apos;t this condition a constant? I think that platformInitialize() is called before a client could have a chance to change the value of m_processSuppressionEnabled.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:436
&gt; +    return s_applicationIsOccluded;

This function is dead code AFAICT, and should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807901</commentid>
    <comment_count>28</comment_count>
      <attachid>182894</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 18:28:27 -0800</bug_when>
    <thetext>Created attachment 182894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807913</commentid>
    <comment_count>29</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 18:39:52 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 182682 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182682&amp;action=review
&gt; 
&gt; This looks good to me. Since you are not a committer, and need to update the patch anyway to fix the build, I&apos;ll say r-, but there is nothing really else blocking this from being landed.
&gt; 
&gt; Comments below are optional, although I think that you&apos;ll want to address some of them.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:65
&gt; &gt; +static bool s_applicationIsOccluded = false;
&gt; 
&gt; I&apos;m not sure if this variable&apos;s value is accurate. Do we get an occlusion notification if the application launches in background in an invisible space (e.g. as part of relaunching applications after a restart)? Even if we get one, that might happen before we installed a handler.
&gt; 
&gt; This is more like a stored value of latest occlusion handler invocation than accurate information about occlusion state, unless I&apos;m missing something. This variable name is too tempting, and someone could use it in an incorrect way later.
&gt; 

You are right about this.  In fact the occlusion notification API as initially provided did not have a mechanism to handle this correctly.  But they have since added a way to get the occlusion state, and there is a separate radar on that &lt;rdar://problem/12929903&gt; and would like to address it in a patch for that issue alone.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:67
&gt; &gt; +static bool s_processSuppressionEnabledForAllContexts = true; // Initializing to true simplifies WebContext::platformInitialize.
&gt; 
&gt; I don&apos;t think that this comment is helpful. The value is logically true when there are no contexts (because it&apos;s a result of statement applied to an empty set).
&gt;
Ok, dropped the comment.
 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:85
&gt; &gt; +static void setApplicationIsOccludedForChildProcessesInContext(bool isOccluded, WebContext* context)
&gt; 
&gt; Despite what I said about moving functions to .cpp files, this might be going further than we usually go, an is thus surprising.
&gt;

I made this a member function and renamed it as updateChildProcessesApplicationOcclusionState in line with the fixes for the comments below.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:109
&gt; &gt; +static void setApplicationIsOccluded(bool isOccluded)
&gt; 
&gt; I think that behavior of this function is just fine, but the name makes it confusingly look like a simple setter (same applies to specialized versions above). Perhaps &quot;notifyProcessesIfOcclusionStateChanged()&quot; would be correct and more helpful?
&gt; 
&gt; Alternatively, one can think about this as common code for applicationBecameVisible and applicationBecameOccluded functions, and name this &quot;applicationBecameOccluded()&quot;.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:114
&gt; &gt; +    if (s_applicationIsOccluded == isOccluded)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    s_applicationIsOccluded = isOccluded;
&gt; 
&gt; In fact, I&apos;d consider moving this logic to callers, even though this means a few lines of duplicated code. That way, this function would only do one thing, not two.
&gt; 
&gt; Also, this would make it clearer that we don&apos;t rely on these notifications to not come twice, and perhaps trigger an interesting investigation of why we can&apos;t rely on them.
&gt; 

Ok, I moved the setting part of the method to the applicationBecameVisible and applicationBecameOccluded.  Renamed this to applicationOcclusionStateChanged().

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:161
&gt; &gt; +static void setProcessSuppressionEnabledForAnyContext(bool enabled)
&gt; 
&gt; Here as well, the name is more appropriate for a plain setter, not for a function whose primary goal is to register or unregister handlers. It&apos;s an implementation detail that a static variable tracks having the handlers currently installed.
&gt; 

This comment is the single most helpful feedback I got during this review.  Until now I was refactoring with the only goal being to reduce function complexity, but never paid attention to the part that I was naming them after implementation details.  Thanks for this very insightful comment.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:193
&gt; &gt; +static bool isProcessSuppressionEnabledForAnyContext()
&gt; 
&gt; We normally try to make function names are grammatically correct as feasible. Here, processSuppressionIsEnabledForAnyContext() would be more in accordance with WebKit style.
&gt;

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:226
&gt; &gt; +    if (m_processSuppressionEnabled)
&gt; &gt; +        setProcessSuppressionEnabledForAnyContext(true);
&gt; &gt; +    else
&gt; &gt; +        setProcessSuppressionEnabledForAllContexts(false);
&gt; 
&gt; I don&apos;t get this. Isn&apos;t this condition a constant? I think that platformInitialize() is called before a client could have a chance to change the value of m_processSuppressionEnabled.
&gt;

Yes, I was trying handle both cases because it gave me a sense, probably false, of robustness, but I guess less code is better code, so I removed the true case.

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:436
&gt; &gt; +    return s_applicationIsOccluded;
&gt; 
&gt; This function is dead code AFAICT, and should be removed.

This getter is used by WebProcessProxy, NetworkProcessProxy e.t.c in didFinishLaunching(), just not used within this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807938</commentid>
    <comment_count>30</comment_count>
      <attachid>182894</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-15 19:12:21 -0800</bug_when>
    <thetext>Comment on attachment 182894
Patch

Attachment 182894 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15910139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807945</commentid>
    <comment_count>31</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-15 19:19:01 -0800</bug_when>
    <thetext>&gt; You are right about this.  In fact the occlusion notification API as initially provided did not have a mechanism to handle this correctly.  But they have since added a way to get the occlusion state, and there is a separate radar on that &lt;rdar://problem/12929903&gt; and would like to address it in a patch for that issue alone.

I think that we will still need a variable with the semantics of s_applicationIsOccluded - it&apos;s not helpful to know true current occlusion state when the goal is to decide whether to update handler registration. It still appears that this variable (and its getter) need more precise names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807947</commentid>
    <comment_count>32</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-15 19:20:13 -0800</bug_when>
    <thetext>&gt; Yes, I was trying handle both cases because it gave me a sense, probably false, of robustness, but I guess less code is better code, so I removed the true case.

You could ASSERT that m_processSuppressionEnabled has expected value. In fact, I suggest that you add such an assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807948</commentid>
    <comment_count>33</comment_count>
      <attachid>182906</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 19:20:34 -0800</bug_when>
    <thetext>Created attachment 182906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807963</commentid>
    <comment_count>34</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 19:45:17 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; You are right about this.  In fact the occlusion notification API as initially provided did not have a mechanism to handle this correctly.  But they have since added a way to get the occlusion state, and there is a separate radar on that &lt;rdar://problem/12929903&gt; and would like to address it in a patch for that issue alone.
&gt; 
&gt; I think that we will still need a variable with the semantics of s_applicationIsOccluded - it&apos;s not helpful to know true current occlusion state when the goal is to decide whether to update handler registration. It still appears that this variable (and its getter) need more precise names.

I don&apos;t follow.  Handler registration is based on whether any context has process suppression enabled.  s_applicationIsOccluded does represent if the application is currently occluded although some child processes may not think it is if process suppression is disabled for them.  I plan to rename the variable used by a individual process to something like processVisibility to make that more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807973</commentid>
    <comment_count>35</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-15 19:50:16 -0800</bug_when>
    <thetext>Yes, I misspoke, handler registration is unrelated. 

Anyway, this variable feel more more like &quot;latestOcclusionNotification&quot; or &quot;savedOcclusionState&quot; to me than a plain &quot;applicationIsOccluded&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807993</commentid>
    <comment_count>36</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 20:04:32 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Yes, I misspoke, handler registration is unrelated. 
&gt; 
&gt; Anyway, this variable feel more more like &quot;latestOcclusionNotification&quot; or &quot;savedOcclusionState&quot; to me than a plain &quot;applicationIsOccluded&quot;.

Yeah, I see the danger now.  I will separate process suppression from occlusion notifications, which need to be enabled all the time for other reasons.  Then this variable will truly reflect the current state.  I will leave this as is for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808003</commentid>
    <comment_count>37</comment_count>
      <attachid>182913</attachid>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 20:23:42 -0800</bug_when>
    <thetext>Created attachment 182913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808005</commentid>
    <comment_count>38</comment_count>
    <who name="Kiran Muppala">cmuppala</who>
    <bug_when>2013-01-15 20:26:46 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; Yes, I was trying handle both cases because it gave me a sense, probably false, of robustness, but I guess less code is better code, so I removed the true case.
&gt; 
&gt; You could ASSERT that m_processSuppressionEnabled has expected value. In fact, I suggest that you add such an assertion.

Added ASSERT in latest patch.  Besides that fixed a bug, which is that didFinishLaunching() functions were not checking if process suppression is enabled for their context or globally before messaging the process.  Added the additional check for the four didFinishLaunching() methods.  Also fixed the build failure due to unused method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808439</commentid>
    <comment_count>39</comment_count>
      <attachid>182913</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-16 09:42:17 -0800</bug_when>
    <thetext>Comment on attachment 182913
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:68
&gt; +static bool s_applicationIsOccluded = false;

I still think that this should have a less misleading name, but OK, let&apos;s deal with this later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808442</commentid>
    <comment_count>40</comment_count>
      <attachid>182913</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 09:46:22 -0800</bug_when>
    <thetext>Comment on attachment 182913
Patch

Clearing flags on attachment: 182913

Committed r139888: &lt;http://trac.webkit.org/changeset/139888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808443</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 09:46:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182045</attachid>
            <date>2013-01-09 19:03:13 -0800</date>
            <delta_ts>2013-01-09 19:40:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130109190017.patch</filename>
            <type>text/plain</type>
            <size>16351</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uNTBhZTJkYzRjNDI3NmRiNzlhMzcyYmEwNzYxNDlm
NjMxYjgxMWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTA5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGJ5IGRlZmF1bHQgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzIHN1cHByZXNzaW9uIGhhcyBzbyBmYXIgYmVl
biBjb250cm9sbGVkIGJ5IGEgdXNlciBkZWZhdWx0IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgaXQgYnkgZGVmYXVsdCBhbmQgYWRkcyBhIHByaXZh
dGUgQVBJIHRvIGRpc2FibGUgaXQgb24gYSBwZXItY29udGV4dCBiYXNpcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0UHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOiBBZGQgcHJpdmF0ZSBBUEkgdG8gZW5hYmxl
L2Rpc2FibGUKKyAgICAgICAgcHJvY2VzcyBzdXBwcmVzc2lvbiBzdXBwb3J0IG9uIGEgcGVyLWNv
bnRleHQgYmFzaXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmNyZWF0ZSk6IFJlbW92ZSBjYWxsIHRvIGluaXRpYWxpemVQcm9jZXNzU3Vw
cHJlc3Npb25TdXBwb3J0LCBzaW5jZSBwcm9jZXNzCisgICAgICAgIHN1cHByZXNzaW9uIGluaXRp
YWxpemF0aW9uIGlzIG5vdyBwZXJmb3JtZWQgYnkgV2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydENoYW5nZWQsIHdoaWNoCisgICAgICAgIGluIHR1cm4gaXMgY2FsbGVkIHdoZW4g
YSBuZXcgY29udGV4dCBpcyBjcmVhdGVkIG9mIGlmIHRoZSBzdGF0dXMgb2YgcHJvY2VzcyBzdXBw
cmVzc2lvbiBzdXBwb3J0CisgICAgICAgIGNoYW5nZWQgZm9yIGFueSBjb250ZXh0LgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KTogQWRkIGNhbGwgdG8gcHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydENoYW5nZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVu
YWJsZWQpOiBBZGQgbWV0aG9kIHRvIHVwZGF0ZSBwcm9jZXNzIHN1cHByZXNzaW9uCisgICAgICAg
IHN1cHBvcnQgc3RhdGUgYW5kIG5vdGlmeSBhZmZlY3RlZCBwcm9jZXNzZXMuCisgICAgICAgIChX
ZWJLaXQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvclByb2Nlc3Nlc0luQ29udGV4dCk6IEhl
bHBlciBmdW5jdGlvbiB0byBtZXNzYWdlIE5ldHdvcmsgYW5kCisgICAgICAgIFdlYlByb2Nlc3Nl
cyBpbiBhIGNvbnRleHQgcmVnYXJkaW5nIGNoYW5nZXMgdG8gYXBwbGljYXRpb24gb2NjbHVzaW9u
IHN0YXR1cy4KKyAgICAgICAgKFdlYktpdDo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xv
YmFsUHJvY2Vzc2VzKTogSGVscGVyIGZ1bmN0aW9uIHRvIG1lc3NhZ2UgUGx1Z2luUHJvY2VzcyBh
bmQKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2VzcyByZWdhcmRpbmcgY2hhbmdlcyB0byBhcHBs
aWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpz
ZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQpOiBGYWN0b3JlZCBvdXQgY29kZSBjb21tb24gdG8gYXBw
bGljYXRpb25CZWNhbWVWaXNpYmxlIGFuZAorICAgICAgICBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2li
bGUpOiBTaW1wbGlmaWVkIGJ5IGZhY3RvcmluZyBvdXQgY29kZSBpbnRvIGFib3ZlIHRocmVlIG1l
dGhvZHMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2Nj
bHVkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydENoYW5nZWQpOiBSZS1ldmFsdWF0ZSBpZiBhdCBsZWFzdCBvbmUgY29udGV4
dCBoYXMKKyAgICAgICAgcHJvY2VzcyBzdXBwcmVzc2lvbiBzdXBwb3J0IGVuYWJsZWQgYW5kIGlm
IGV2ZXJ5IGNvbnRleHQgaGFzIGl0IGVuYWJsZWQuICBVc2UgdGhlIG5ldyB2YWx1ZXMgdG8KKyAg
ICAgICAgcmVnaXN0ZXIvdW5yZWdpc3RlciBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJz
IGFuZCB1cGRhdGUgb2NjbHVzaW9uIHN0YXRlIG9mIGdsb2JhbCBwcm9jZXNzZXMuCisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMpOiBGaXggdHlwb3MuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnVucmVnaXN0ZXJP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEFkZCBtZXRob2QgdG8gdW5yZWdpc3RlciBv
Y2NsdXNpb24KKyAgICAgICAgbm90aWZpY2F0aW9ucywgdXNlZCB3aGVuIGFsbCBjb250ZXh0cyBo
YXZlIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBkaXNhYmxlZC4KKwogMjAxMy0wMS0wOSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBidWls
ZHMgb2YgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIGhhdmUgYSBwcm9jZXNzIGljb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNWM4MzhmZTg3N2Jl
ZDdmNDMxNDlhNzdlNzlkNWE5MDJlNzAwYmZkNS4uMTEzYWUzNDc1ZWUzZmZlNmMzMTUxNzc1ZDY3
YmZmZGFhYjQyMWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKQEAgLTM2MSw2ICszNjEsMTEgQEAgdm9pZCBXS0NvbnRleHRTZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGljdGlvbmEKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygqdG9J
bXBsKGRpY3Rpb25hcnlSZWYpKTsKIH0KIAordm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJl
c3Npb25TdXBwb3J0RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBlbmFibGVk
KQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWQoZW5hYmxlZCk7Cit9CisKIC8vIERlcHJlY2F0ZWQgZnVuY3Rpb25zLgogdm9pZCBf
V0tDb250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLU3RyaW5nUmVmIHBsdWdpbnNEaXJlY3RvcnkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRleCBjN2M5MDcxNjBjODFk
YjBiZTRiMjhiMjQ4Nzk2MzJkZGM3YTQxNjkwLi4wMmE1N2RmZGEzMjllN2RkZjQ0OGFiMTNiZmU2
YWQ1YzcyYTE4OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHRQcml2YXRlLmgKQEAgLTc4LDYgKzc4LDggQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250
ZXh0V2FybUluaXRpYWxQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIC8vIEF0IHNvbWUg
cG9pbnQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRV
c2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgdXNlc05ldHdvcmtQ
cm9jZXNzKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgZW5hYmxlZCk7CisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAKaW5kZXggMmNiOGMyYTZiOTdmMTQ4ODk0YjQzNWRlNDM1NmFmYTc5YzJhMjlkOS4u
N2FkMDQwNmQ1YmNjNmRhMzllZDdkZDI3MjIzMjQ5OTlmZDFkOGIzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTA1LDkgKzEwNSw2IEBAIFBhc3NSZWZQdHI8
V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5k
bGVQYXRoKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsK
LSNpZiBQTEFURk9STShNQUMpCi0gICAgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBw
cmVzc2lvblN1cHBvcnQoKTsKLSNlbmRpZgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29u
dGV4dChQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzLCBpbmplY3RlZEJ1bmRsZVBh
dGgpKTsKIH0KIApAQCAtMTQzLDYgKzE0MCw5IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJv
Y2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAsIG1fdXNlc05ldHdvcmtQcm9jZXNzKGZh
bHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9wcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0RW5hYmxlZCh0cnVlKQorI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgLCBtX2ln
bm9yZVRMU0Vycm9ycyh0cnVlKQogI2VuZGlmCkBAIC0xODIsNiArMTgyLDEwIEBAIFdlYkNvbnRl
eHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBp
bmplY3RlZEJ1bmRsZVBhCiAKICAgICBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHRoaXMsIGxh
bmd1YWdlQ2hhbmdlZCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgcHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydENoYW5nZWQoKTsKKyNlbmRpZgorCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFdl
YkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwogICAgIFdlYktp
dDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCmluZGV4IGZjOTNhMDhiOTlkMzZmMzBlOGI0ZTEyMzU0YmM1ZWI0Y2M4
YjJmNGUuLmRiZGE3ODM4NGVkYTdkZmZmNTEyOWMwZGE0MDZlMWYxMGZiZTY5ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjcwLDYgKzI3MCw4IEBAIHB1YmxpYzoK
IAogCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQ7
IH0KICAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSB7IHJldHVybiBzX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZDsgfQogI2VuZGlmCiAKQEAgLTM0MywxMCArMzQ1LDEyIEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCBzZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQoYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVW
aXNpYmxlKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CiAgICAg
c3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVp
bnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0KCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydENoYW5nZWQoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CiAgICAgdm9pZCByZWdpc3Rlck5vdGlmaWNhdGlvbk9i
c2VydmVycygpOwogICAgIHZvaWQgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpOwog
I2VuZGlmCkBAIC00NDgsNyArNDUyLDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKIAog
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVu
YWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisgICAgc3Rh
dGljIGJvb2wgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRz
OwogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCBhMGM1N2MxM2I0N2M5YThjODUwNWRmNzhjZTZjMjM2
NzM3MTQzMTk5Li4xNmJiMWE2M2EwYjBlZmE2NmZlNGNkMmUxMTFiZDFiYzEyNDBhNjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02Myw2
ICs2Myw3IEBAIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3Rp
ZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVGb3JDCiBOU1N0cmluZyAqU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7CiAKIGJvb2wgV2ViQ29u
dGV4dDo6c19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29udGV4dDo6
c19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzID0gdHJ1ZTsK
IAogc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiB7CkBAIC0yOTEs
ODAgKzI5MiwxNDUgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRU
eXBlKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQorc3RhdGljIHZvaWQgc2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KFdlYkNvbnRleHQgKmNv
bnRleHQsIGJvb2wgb2NjbHVkZWQpCiB7Ci0gICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVk
KSB7Ci0gICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7Ci0KLSAgICAgICAg
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250
ZXh0cygpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXpl
KCk7IGkgPCBjb3VudDsgKytpKSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDkwCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgICAgIGlmIChj
b250ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQ
cm9jZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCkt
PnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisgICAgaWYgKGNvbnRleHQtPnVzZXNO
ZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHQtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIGNv
bnRleHQtPm5ldHdvcmtQcm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChvY2NsdWRl
ZCk7CiAjZW5kaWYKKyAgICBjb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChvY2NsdWRlZCkpOworI2VuZGlmCit9
CiAKLSAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkpOwotICAgICAgICB9
Ci0KK3N0YXRpYyB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2JhbFByb2Nlc3Nl
cyhib29sIG9jY2x1ZGVkKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICAgICAgUGx1Z2luUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisgICAg
UGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChv
Y2NsdWRlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotICAg
ICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGZhbHNlKTsKKyAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVk
KCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKG9jY2x1ZGVkKTsKKyNlbmRpZgogI2VuZGlmCit9
CisKK3ZvaWQgV2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQoreworICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFi
bGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydEVuYWJsZWQgPSBlbmFibGVkOworICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRFbmFibGVkKSB7CisgICAgICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkK
KyAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvclByb2Nlc3Nlc0luQ29udGV4
dCh0aGlzLCB0cnVlKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChzX2FwcGxpY2F0
aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvclBy
b2Nlc3Nlc0luQ29udGV4dCh0aGlzLCBmYWxzZSk7CisgICAgfQorCisgICAgcHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydENoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlv
bkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCkKK3ZvaWQgV2ViQ29udGV4dDo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgb2NjbHVk
ZWQpCiB7Ci0gICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewotICAgICAgICBzX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRydWU7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkg
ewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4dHNb
aV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBs
aWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7Ci0jZW5kaWYKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPT0g
b2NjbHVkZWQpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgY29udGV4dHNbaV0tPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkKHRydWUpKTsKLSAgICAgICAgfQorICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0g
b2NjbHVkZWQ7CisgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJD
b250ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNv
bnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRzW2ld
LT5wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCgpKQorICAgICAgICAgICAgc2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KGNvbnRleHRzW2ldLCBzX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZCk7CisgICAgfQogCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQotICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKHRydWUpOworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFi
bGVkRm9yQWxsQ29udGV4dHMpCisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckds
b2JhbFByb2Nlc3NlcyhzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFu
YWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCi0g
ICAgfQogfQogCi12b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25T
dXBwb3J0KCkKK3ZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQz
Ml90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBzZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWQoZmFsc2UpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9u
QmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
KQogewotICAgIHN0YXRpYyBib29sIGRpZEluaXRpYWxpemUgPSBmYWxzZTsKLSAgICBpZiAoZGlk
SW5pdGlhbGl6ZSkKLSAgICAgICAgcmV0dXJuOworICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCh0cnVlKTsKK30KIAotICAgIGRpZEluaXRpYWxpemUgPSB0cnVlOwotICAgIC8vIEEgdGVtcG9y
YXJ5IGRlZmF1bHQgdW50aWwgcHJvY2VzcyBzdXBwcmVzc2lvbiBpcyBlbmFibGVkIGJ5IGRlZmF1
bHQsIGF0IHdoaWNoIHBvaW50IGEgY29udGV4dCBzZXR0aW5nIGNhbiBiZSBhZGRlZCB3aXRoIHRo
ZQotICAgIC8vIGludGVycHJldGF0aW9uIHRoYXQgYW55IGNvbnRleHQgZGlzYWJsaW5nIHByb2Nl
c3Mgc3VwcHJlc3Npb24gZGlzYWJsZXMgaXQgZm9yIHBsdWdpbi9uZXR3b3JrIGFuZCBzaGFyZWQg
d29ya2VyIHByb2Nlc3Nlcy4KLSAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFi
bGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpA
IldlYktpdFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkIl07Ci0gICAgaWYgKHByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKQotICAgICAgICByZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXJzKCk7Cit2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRDaGFuZ2VkKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKKyAgICBzdGF0aWMgYm9vbCBvY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9
IGZhbHNlOworCisgICAgLy8gUmVnaXN0ZXIgZm9yIG9jY2x1c2lvbiBub3RpZmljYXRpb25zIGlm
IGF0bGVhc3Qgb25lIGNvbnRleHQgaGFzIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBlbmFi
bGVkCisgICAgYm9vbCBuZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOwor
ICAgIGJvb2wgbmV3UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0
cyA9IHRydWU7CisKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdl
YkNvbnRleHQ6OmFsbENvbnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0g
Y29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoY29udGV4dHNb
aV0tPnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKCkpCisgICAgICAgICAgICBuZXdP
Y2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMg
PSBmYWxzZTsKKworICAgICAgICBpZiAobmV3T2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQg
JiYgIW5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMpCisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25T
dXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzICE9IG5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBv
cnRFbmFibGVkRm9yQWxsQ29udGV4dHMpIHsKKyAgICAgICAgc19wcm9jZXNzU3VwcHJlc3Npb25T
dXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzID0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWRGb3JBbGxDb250ZXh0czsKKworICAgICAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzKSB7CisgICAgICAgICAgICBpZiAoc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgICAgICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1
ZGVkRm9yR2xvYmFsUHJvY2Vzc2VzKHRydWUpOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICAgICAgICAg
IHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2JhbFByb2Nlc3NlcyhmYWxzZSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAob2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgIT0g
bmV3T2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQpIHsKKyAgICAgICAgb2NjbHVzaW9uTm90
aWZpY2F0aW9uc0VuYWJsZWQgPSBuZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZDsKKwor
ICAgICAgICBpZiAob2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQpCisgICAgICAgICAgICBy
ZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAg
IH0KKyNlbmRpZgogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcnMoKQogewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAogICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIo
V0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBs
aWNhdGlvbkJlY2FtZVZpc2libGUpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJh
dGlvbiBvZiBcIkFwcCBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxl
ZC5cbiIpOworICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0
aW9uIEJlY2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVj
YW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQpKQotICAgICAgICBXVEZMb2dB
bHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0
aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0cmF0
aW9uIG9mIFwiQXBwbGljYXRpb24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRs
ZXIgZmFpbGVkLlxuIik7CiAjZW5kaWYKIH0KKwordm9pZCBXZWJDb250ZXh0Ojp1bnJlZ2lzdGVy
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkgeworICAgICAgICBXVEZM
b2dBbHdheXMoIlVucmVnaXN0cmF0aW9uIG9mIFwiQXBwbGljYXRvbiBCZWNhbWUgT2NjbHVkZWRc
IiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICAKKyAgICBpZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwg
YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJVbnJlZ2lz
dHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhh
bmRsZXIgZmFpbGVkLlxuIik7CisjZW5kaWYKK30KKwogdm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rl
ck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiB7CiAgICAgbV9jdXN0b21TY2hlbWVSZWdpc3RlcmVk
T2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2Vy
dmVyRm9yTmFtZTpXZWJLaXQ6OlNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlm
aWNhdGlvbk5hbWUgb2JqZWN0Om5pbCBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50UXVl
dWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182051</attachid>
            <date>2013-01-09 19:40:58 -0800</date>
            <delta_ts>2013-01-09 21:31:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130109193802.patch</filename>
            <type>text/plain</type>
            <size>23418</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uNzllOTJiMDc1ZTJlMDdkNTAyNjk2NzIzOGQ4ODk0
ODg2OWNkZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTA5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGJ5IGRlZmF1bHQgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzIHN1cHByZXNzaW9uIGhhcyBzbyBmYXIgYmVl
biBjb250cm9sbGVkIGJ5IGEgdXNlciBkZWZhdWx0IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgaXQgYnkgZGVmYXVsdCBhbmQgYWRkcyBhIHByaXZh
dGUgQVBJIHRvIGRpc2FibGUgaXQgb24gYSBwZXItY29udGV4dCBiYXNpcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOiBBZGQg
cHJpdmF0ZSBBUEkgdG8gZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IG9uIGEgcGVyLWNvbnRleHQgYmFzaXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlKTog
UmVtb3ZlIGNhbGwgdG8gaW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQsIHNpbmNl
IHByb2Nlc3MKKyAgICAgICAgc3VwcHJlc3Npb24gaW5pdGlhbGl6YXRpb24gaXMgbm93IHBlcmZv
cm1lZCBieSBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCwgd2hp
Y2gKKyAgICAgICAgaW4gdHVybiBpcyBjYWxsZWQgd2hlbiBhIG5ldyBjb250ZXh0IGlzIGNyZWF0
ZWQgb2YgaWYgdGhlIHN0YXR1cyBvZiBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQKKyAgICAg
ICAgY2hhbmdlZCBmb3IgYW55IGNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OldlYkNvbnRleHQpOiBBZGQgY2FsbCB0byBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6IEFkZCBtZXRob2QgdG8g
dXBkYXRlIHByb2Nlc3Mgc3VwcHJlc3Npb24KKyAgICAgICAgc3VwcG9ydCBzdGF0ZSBhbmQgbm90
aWZ5IGFmZmVjdGVkIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KTogSGVscGVyIGZ1bmN0aW9uIHRvIG1lc3Nh
Z2UgTmV0d29yayBhbmQKKyAgICAgICAgV2ViUHJvY2Vzc2VzIGluIGEgY29udGV4dCByZWdhcmRp
bmcgY2hhbmdlcyB0byBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2Vi
S2l0OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMpOiBIZWxwZXIg
ZnVuY3Rpb24gdG8gbWVzc2FnZSBQbHVnaW5Qcm9jZXNzIGFuZAorICAgICAgICBTaGFyZWRXb3Jr
ZXJQcm9jZXNzIHJlZ2FyZGluZyBjaGFuZ2VzIHRvIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0
dXMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCk6IEZhY3RvcmVkIG91dCBjb2RlIGNvbW1vbiB0byBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUg
YW5kCisgICAgICAgIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSk6IFNpbXBsaWZpZWQgYnkgZmFj
dG9yaW5nIG91dCBjb2RlIGludG8gYWJvdmUgdGhyZWUgbWV0aG9kcy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCk6
IFJlLWV2YWx1YXRlIGlmIGF0IGxlYXN0IG9uZSBjb250ZXh0IGhhcworICAgICAgICBwcm9jZXNz
IHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZCBhbmQgaWYgZXZlcnkgY29udGV4dCBoYXMgaXQg
ZW5hYmxlZC4gIFVzZSB0aGUgbmV3IHZhbHVlcyB0bworICAgICAgICByZWdpc3Rlci91bnJlZ2lz
dGVyIG9jY2x1c2lvbiBub3RpZmljYXRpb24gaGFuZGxlcnMgYW5kIHVwZGF0ZSBvY2NsdXNpb24g
c3RhdGUgb2YgZ2xvYmFsIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEZpeCB0eXBvcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKTogQWRkIG1ldGhvZCB0byB1bnJlZ2lzdGVyIG9jY2x1c2lvbgorICAgICAgICBub3Rp
ZmljYXRpb25zLCB1c2VkIHdoZW4gYWxsIGNvbnRleHRzIGhhdmUgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IGRpc2FibGVkLgorCiAyMDEzLTAxLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGJ1aWxkcyBvZiBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgaGF2ZSBhIHByb2Nlc3MgaWNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmMzYTI0ODMzYTc3NjNhOWIwMjE5NGJjOTUzZmY4NzU5YmFmZjM0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K3ZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJl
ZiktPnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGVuYWJsZWQpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzlkODAxNzZjYTMxNGM1ZDE3ODM0NDRjMzg1Yzc2MjQ5
MGNmZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVN
YWNfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBl
bmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdL
Q29udGV4dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCmluZGV4IDJjYjhjMmE2Yjk3ZjE0ODg5NGI0MzVkZTQzNTZhZmE3OWMyYTI5ZDkuLjdhZDA0
MDZkNWJjYzZkYTM5ZWQ3ZGQyNzIyMzI0OTk5ZmQxZDhiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwNSw5ICsxMDUsNiBAQCBQYXNzUmVmUHRyPFdlYkNv
bnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0
aCkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQo
UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7
CiB9CiAKQEAgLTE0Myw2ICsxNDAsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NN
b2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX3VzZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVU
TFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMTgyLDYgKzE4MiwxMCBAQCBXZWJDb250ZXh0OjpX
ZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYQogCiAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzLCBsYW5ndWFn
ZUNoYW5nZWQpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHByb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRDaGFuZ2VkKCk7CisjZW5kaWYKKwogI2lmICFMT0dfRElTQUJMRUQKICAgICBXZWJDb3Jl
Ojppbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKICAgICBXZWJLaXQ6Omlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCBmYzkzYTA4Yjk5ZDM2ZjMwZThiNGUxMjM1NGJjNWViNGNjOGIyZjRl
Li5kYmRhNzgzODRlZGE3ZGZmZjUxMjljMGRhNDA2ZTFmMTBmYmU2OWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI3MCw2ICsyNzAsOCBAQCBwdWJsaWM6CiAKIAog
I2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wpOworICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkOyB9CiAg
ICAgc3RhdGljIGJvb2wgYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgeyByZXR1cm4gc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQ7IH0KICNlbmRpZgogCkBAIC0zNDMsMTAgKzM0NSwxMiBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJs
ZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogICAgIHN0YXRp
YyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydCgpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRDaGFuZ2VkKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVycygpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVycygpOwogICAgIHZvaWQgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZl
cnMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRp
ZgpAQCAtNDQ4LDcgKzQ1Miw5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICNpZiBQ
TEFURk9STShNQUMpCisgICAgYm9vbCBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVk
OwogICAgIHN0YXRpYyBib29sIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOworICAgIHN0YXRpYyBi
b29sIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0czsKICNl
bmRpZgogCiAjaWYgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KaW5kZXggYTBjNTdjMTNiNDdjOWE4Yzg1MDVkZjc4Y2U2YzIzNjczNzE0
MzE5OS4uMTZiYjFhNjNhMGIwZWZhNjZmZTRjZDJlMTExYmQxYmMxMjQwYTYyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtNjMsNiArNjMs
NyBAQCBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0
aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQwogTlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVBy
b3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwogCiBib29sIFdlYkNvbnRleHQ6
OnNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7Citib29sIFdlYkNvbnRleHQ6OnNfcHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7CiAKIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQogewpAQCAtMjkxLDgwICsy
OTIsMTQ1IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7
CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3N0YXRpYyB2b2lkIHNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZEZvclByb2Nlc3Nlc0luQ29udGV4dChXZWJDb250ZXh0ICpjb250ZXh0
LCBib29sIG9jY2x1ZGVkKQogewotICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewot
ICAgICAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwotCi0gICAgICAgIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBp
IDwgY291bnQ7ICsraSkgeworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4
dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2Vz
cygpKQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOworICAgIGlmIChjb250ZXh0LT51c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBjb250ZXh0LT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICBjb250ZXh0
LT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpOwog
I2VuZGlmCisgICAgY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpKTsKKyNlbmRpZgorfQogCi0g
ICAgICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKLSAgICAgICAgfQotCitz
dGF0aWMgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMoYm9v
bCBvY2NsdWRlZCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgICAgIFBsdWdpblByb2Nlc3NNYW5h
Z2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOworICAgIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVk
ZWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAgICAgICAg
U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZChmYWxzZSk7CisgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZChvY2NsdWRlZCk7CisjZW5kaWYKICNlbmRpZgorfQorCit2
b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRFbmFibGVkID0gZW5hYmxlZDsKKyAgICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0RW5hYmxlZCkgeworICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAg
ICAgICAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JQcm9jZXNzZXNJbkNvbnRleHQodGhp
cywgdHJ1ZSk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklz
T2NjbHVkZWQpCisgICAgICAgICAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JQcm9jZXNz
ZXNJbkNvbnRleHQodGhpcywgZmFsc2UpOworICAgIH0KKworICAgIHByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNh
bWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit2
b2lkIFdlYkNvbnRleHQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIG9jY2x1ZGVkKQog
ewotICAgIGlmICghc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpIHsKLSAgICAgICAgc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQgPSB0cnVlOwotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+
JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICAgICAgaWYgKGNvbnRleHRzW2ldLT51
c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKS0+c2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCisgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID09IG9jY2x1
ZGVkKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCh0cnVlKSk7Ci0gICAgICAgIH0KKyAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IG9jY2x1
ZGVkOworICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4
dDo6YWxsQ29udGV4dHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0
cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoKSkKKyAgICAgICAgICAgIHNldEFwcGxpY2F0
aW9uSXNPY2NsdWRlZEZvclByb2Nlc3Nlc0luQ29udGV4dChjb250ZXh0c1tpXSwgc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQpOworICAgIH0KIAotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAg
ICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZCh0cnVlKTsKKyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZv
ckFsbENvbnRleHRzKQorICAgICAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQ
cm9jZXNzZXMoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6
OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgotICAgIH0K
IH0KIAotdm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dCgpCit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGZhbHNlKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKIHsK
LSAgICBzdGF0aWMgYm9vbCBkaWRJbml0aWFsaXplID0gZmFsc2U7Ci0gICAgaWYgKGRpZEluaXRp
YWxpemUpCi0gICAgICAgIHJldHVybjsKKyAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1
ZSk7Cit9CiAKLSAgICBkaWRJbml0aWFsaXplID0gdHJ1ZTsKLSAgICAvLyBBIHRlbXBvcmFyeSBk
ZWZhdWx0IHVudGlsIHByb2Nlc3Mgc3VwcHJlc3Npb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBh
dCB3aGljaCBwb2ludCBhIGNvbnRleHQgc2V0dGluZyBjYW4gYmUgYWRkZWQgd2l0aCB0aGUKLSAg
ICAvLyBpbnRlcnByZXRhdGlvbiB0aGF0IGFueSBjb250ZXh0IGRpc2FibGluZyBwcm9jZXNzIHN1
cHByZXNzaW9uIGRpc2FibGVzIGl0IGZvciBwbHVnaW4vbmV0d29yayBhbmQgc2hhcmVkIHdvcmtl
ciBwcm9jZXNzZXMuCi0gICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJL
aXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCJdOwotICAgIGlmIChwcm9jZXNzU3Vw
cHJlc3Npb25TdXBwb3J0RW5hYmxlZCkKLSAgICAgICAgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVycygpOwordm9pZCBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0Q2hhbmdlZCgpCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCisgICAgc3RhdGljIGJvb2wgb2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgPSBmYWxz
ZTsKKworICAgIC8vIFJlZ2lzdGVyIGZvciBvY2NsdXNpb24gbm90aWZpY2F0aW9ucyBpZiBhdGxl
YXN0IG9uZSBjb250ZXh0IGhhcyBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZAor
ICAgIGJvb2wgbmV3T2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgPSBmYWxzZTsKKyAgICBi
b29sIG5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMgPSB0
cnVlOworCisgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250
ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRl
eHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5w
cm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCgpKQorICAgICAgICAgICAgbmV3T2NjbHVz
aW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuZXdQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzID0gZmFs
c2U7CisKKyAgICAgICAgaWYgKG5ld09jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkICYmICFu
ZXdQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWRGb3JBbGxDb250ZXh0cyAhPSBuZXdQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5h
YmxlZEZvckFsbENvbnRleHRzKSB7CisgICAgICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IG5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFi
bGVkRm9yQWxsQ29udGV4dHM7CisKKyAgICAgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cykgeworICAgICAgICAgICAgaWYgKHNfYXBwbGljYXRp
b25Jc09jY2x1ZGVkKQorICAgICAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZv
ckdsb2JhbFByb2Nlc3Nlcyh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgICAgICAgICBzZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMoZmFsc2UpOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKG9jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkICE9IG5ld09j
Y2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkKSB7CisgICAgICAgIG9jY2x1c2lvbk5vdGlmaWNh
dGlvbnNFbmFibGVkID0gbmV3T2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQ7CisKKyAgICAg
ICAgaWYgKG9jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkKQorICAgICAgICAgICAgcmVnaXN0
ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlv
bkhhbmRsZXJzKCkKIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKICAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2Nj
bHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRp
b25CZWNhbWVWaXNpYmxlKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24g
b2YgXCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4i
KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBC
ZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9j
Y2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBwIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBo
YW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdHJhdGlvbiBv
ZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZh
aWxlZC5cbiIpOwogI2VuZGlmCiB9CisKK3ZvaWQgV2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVP
Y2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpIHsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJVbnJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0b24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90
aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdL
T2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxp
Y2F0aW9uQmVjYW1lVmlzaWJsZSkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5yZWdpc3RyYXRp
b24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVy
IGZhaWxlZC5cbiIpOworI2VuZGlmCit9CisKIHZvaWQgV2ViQ29udGV4dDo6cmVnaXN0ZXJOb3Rp
ZmljYXRpb25PYnNlcnZlcnMoKQogewogICAgIG1fY3VzdG9tU2NoZW1lUmVnaXN0ZXJlZE9ic2Vy
dmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZv
ck5hbWU6V2ViS2l0OjpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRp
b25OYW1lIG9iamVjdDpuaWwgcXVldWU6W05TT3BlcmF0aW9uUXVldWUgY3VycmVudFF1ZXVlXSB1
c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyMTIyMzAz
OGQ4Zjk0OTYzOWE5MTk0OTQ0MTQ1NWY5MzQwZTkxODQuLmNhMDMyOGJlMDlkNTAzODIxMjgyM2M0
N2U0MzgwZjE0MjdkMGM0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2Niw2ICs1NjYsOCBAQAogCQk5RjRGNTk0NDE2NDhC
NjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY0RjU5NDMxNjQ4QjY3RjAwNDkz
QjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSAqLzsgfTsKIAkJOUY1NEY4OEYx
NjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBD
aGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlck1hYy5tbSAqLzsgfTsKKwkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
Y3BwICovOyB9OworCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZC
NUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCNjJFNzMxMDE0MzA0N0E2
MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3MzBGMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRl
c3RSZXN1bHQuY3BwICovOyB9OwogCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRU
ZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNjJFNzMxMTE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjYzNDAzRjkxNDkxMEQ1
NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNw
cCAqLzsgfTsKQEAgLTE4NDcsNiArMTg0OSw4IEBACiAJCTlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3
RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGls
ZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
aGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0
MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYg
LyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmNwcDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2
YXRlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUZCNUYzOTMxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JB
ODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjYyRTczMEYxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3Vs
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0hpdFRlc3RSZXN1
bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM0Niw2ICszMzUwLDggQEAK
IAkJNkVFODQ5QzQxMzY4RDkwNDAwMzhENDgxIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdL
Q29udGV4dFByaXZhdGVNYWMuY3BwICovLAorCQkJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAv
KiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8sCiAJCQkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgx
IC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovLAogCQkJCUJDRTE3QjdCMTM4MUYxMTcwMDEy
QTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmNwcCAqLywKIAkJCQlCQ0UxN0I3QzEzODFGMTE3MDAx
MkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5oICovLApAQCAtNTA3MCw2ICs1MDc2LDcgQEAKIAkJ
CQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTc5MDg4RjE2OUJBQTZBMDA2OTA0QzcgLyogU2VjSXRlbVNoaW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxNzkwODkxMTY5QkFBODIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250
ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MDQ5LDYgKzYwNTYsNyBAQAogCQkJ
CUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE3OTA4OEQxNjlCQUE2MjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxNzkwODkwMTY5QkFBN0YwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RkI1RjM5NDE2OUU2QTgwMDAy
QzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182059</attachid>
            <date>2013-01-09 21:31:42 -0800</date>
            <delta_ts>2013-01-10 09:08:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130109212845.patch</filename>
            <type>text/plain</type>
            <size>23565</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uNzllOTJiMDc1ZTJlMDdkNTAyNjk2NzIzOGQ4ODk0
ODg2OWNkZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTA5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGJ5IGRlZmF1bHQgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzIHN1cHByZXNzaW9uIGhhcyBzbyBmYXIgYmVl
biBjb250cm9sbGVkIGJ5IGEgdXNlciBkZWZhdWx0IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgaXQgYnkgZGVmYXVsdCBhbmQgYWRkcyBhIHByaXZh
dGUgQVBJIHRvIGRpc2FibGUgaXQgb24gYSBwZXItY29udGV4dCBiYXNpcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOiBBZGQg
cHJpdmF0ZSBBUEkgdG8gZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IG9uIGEgcGVyLWNvbnRleHQgYmFzaXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlKTog
UmVtb3ZlIGNhbGwgdG8gaW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQsIHNpbmNl
IHByb2Nlc3MKKyAgICAgICAgc3VwcHJlc3Npb24gaW5pdGlhbGl6YXRpb24gaXMgbm93IHBlcmZv
cm1lZCBieSBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCwgd2hp
Y2gKKyAgICAgICAgaW4gdHVybiBpcyBjYWxsZWQgd2hlbiBhIG5ldyBjb250ZXh0IGlzIGNyZWF0
ZWQgb2YgaWYgdGhlIHN0YXR1cyBvZiBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQKKyAgICAg
ICAgY2hhbmdlZCBmb3IgYW55IGNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OldlYkNvbnRleHQpOiBBZGQgY2FsbCB0byBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6IEFkZCBtZXRob2QgdG8g
dXBkYXRlIHByb2Nlc3Mgc3VwcHJlc3Npb24KKyAgICAgICAgc3VwcG9ydCBzdGF0ZSBhbmQgbm90
aWZ5IGFmZmVjdGVkIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KTogSGVscGVyIGZ1bmN0aW9uIHRvIG1lc3Nh
Z2UgTmV0d29yayBhbmQKKyAgICAgICAgV2ViUHJvY2Vzc2VzIGluIGEgY29udGV4dCByZWdhcmRp
bmcgY2hhbmdlcyB0byBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2Vi
S2l0OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMpOiBIZWxwZXIg
ZnVuY3Rpb24gdG8gbWVzc2FnZSBQbHVnaW5Qcm9jZXNzIGFuZAorICAgICAgICBTaGFyZWRXb3Jr
ZXJQcm9jZXNzIHJlZ2FyZGluZyBjaGFuZ2VzIHRvIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0
dXMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCk6IEZhY3RvcmVkIG91dCBjb2RlIGNvbW1vbiB0byBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUg
YW5kCisgICAgICAgIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSk6IFNpbXBsaWZpZWQgYnkgZmFj
dG9yaW5nIG91dCBjb2RlIGludG8gYWJvdmUgdGhyZWUgbWV0aG9kcy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCk6
IFJlLWV2YWx1YXRlIGlmIGF0IGxlYXN0IG9uZSBjb250ZXh0IGhhcworICAgICAgICBwcm9jZXNz
IHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZCBhbmQgaWYgZXZlcnkgY29udGV4dCBoYXMgaXQg
ZW5hYmxlZC4gIFVzZSB0aGUgbmV3IHZhbHVlcyB0bworICAgICAgICByZWdpc3Rlci91bnJlZ2lz
dGVyIG9jY2x1c2lvbiBub3RpZmljYXRpb24gaGFuZGxlcnMgYW5kIHVwZGF0ZSBvY2NsdXNpb24g
c3RhdGUgb2YgZ2xvYmFsIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEZpeCB0eXBvcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKTogQWRkIG1ldGhvZCB0byB1bnJlZ2lzdGVyIG9jY2x1c2lvbgorICAgICAgICBub3Rp
ZmljYXRpb25zLCB1c2VkIHdoZW4gYWxsIGNvbnRleHRzIGhhdmUgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IGRpc2FibGVkLgorCiAyMDEzLTAxLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGJ1aWxkcyBvZiBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgaGF2ZSBhIHByb2Nlc3MgaWNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmMzYTI0ODMzYTc3NjNhOWIwMjE5NGJjOTUzZmY4NzU5YmFmZjM0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K3ZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJl
ZiktPnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGVuYWJsZWQpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzlkODAxNzZjYTMxNGM1ZDE3ODM0NDRjMzg1Yzc2MjQ5
MGNmZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVN
YWNfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBl
bmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdL
Q29udGV4dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCmluZGV4IDJjYjhjMmE2Yjk3ZjE0ODg5NGI0MzVkZTQzNTZhZmE3OWMyYTI5ZDkuLjdhZDA0
MDZkNWJjYzZkYTM5ZWQ3ZGQyNzIyMzI0OTk5ZmQxZDhiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwNSw5ICsxMDUsNiBAQCBQYXNzUmVmUHRyPFdlYkNv
bnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0
aCkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQo
UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7
CiB9CiAKQEAgLTE0Myw2ICsxNDAsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NN
b2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX3VzZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVU
TFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMTgyLDYgKzE4MiwxMCBAQCBXZWJDb250ZXh0OjpX
ZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYQogCiAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzLCBsYW5ndWFn
ZUNoYW5nZWQpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHByb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRDaGFuZ2VkKCk7CisjZW5kaWYKKwogI2lmICFMT0dfRElTQUJMRUQKICAgICBXZWJDb3Jl
Ojppbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKICAgICBXZWJLaXQ6Omlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCBmYzkzYTA4Yjk5ZDM2ZjMwZThiNGUxMjM1NGJjNWViNGNjOGIyZjRl
Li5kYmRhNzgzODRlZGE3ZGZmZjUxMjljMGRhNDA2ZTFmMTBmYmU2OWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI3MCw2ICsyNzAsOCBAQCBwdWJsaWM6CiAKIAog
I2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wpOworICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkOyB9CiAg
ICAgc3RhdGljIGJvb2wgYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgeyByZXR1cm4gc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQ7IH0KICNlbmRpZgogCkBAIC0zNDMsMTAgKzM0NSwxMiBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJs
ZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogICAgIHN0YXRp
YyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydCgpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRDaGFuZ2VkKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVycygpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVycygpOwogICAgIHZvaWQgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZl
cnMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRp
ZgpAQCAtNDQ4LDcgKzQ1Miw5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICNpZiBQ
TEFURk9STShNQUMpCisgICAgYm9vbCBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVk
OwogICAgIHN0YXRpYyBib29sIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOworICAgIHN0YXRpYyBi
b29sIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0czsKICNl
bmRpZgogCiAjaWYgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KaW5kZXggYTBjNTdjMTNiNDdjOWE4Yzg1MDVkZjc4Y2U2YzIzNjczNzE0
MzE5OS4uOTMyZjkzNWJlMzc5YzdlZjU2MDk2YzBkNDIzZWNmMWU4N2IyZjk5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtNjMsNiArNjMs
NyBAQCBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0
aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQwogTlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVBy
b3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwogCiBib29sIFdlYkNvbnRleHQ6
OnNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7Citib29sIFdlYkNvbnRleHQ6OnNfcHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7CiAKIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQogewpAQCAtMjkxLDgwICsy
OTIsMTQ5IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7
CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKK3N0YXRpYyB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZEZvclByb2Nlc3Nlc0luQ29udGV4dChXZWJDb250ZXh0ICpjb250ZXh0LCBib29sIG9jY2x1
ZGVkKQogewotICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewotICAgICAgICBzX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwotCi0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsr
aSkgewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4
dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2Vz
cygpKQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOworICAgIGlmIChjb250ZXh0LT51c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBjb250ZXh0LT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICBjb250ZXh0
LT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpOwog
I2VuZGlmCisgICAgY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpKTsKK30KIAotICAgICAgICAg
ICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7Ci0gICAgICAgIH0KLQorc3RhdGljIHZv
aWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xvYmFsUHJvY2Vzc2VzKGJvb2wgb2NjbHVk
ZWQpCit7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgICAgICBQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKKyAgICBQ
bHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKG9j
Y2x1ZGVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAg
ICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQoZmFsc2UpOworICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQo
KS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpOwogI2VuZGlmCi0gICAgfQogfQor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCi12b2lk
IFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1
aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQordm9pZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3Vw
cHJlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKCFzX2FwcGxp
Y2F0aW9uSXNPY2NsdWRlZCkgewotICAgICAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRy
dWU7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29u
dGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0g
Y29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2Vzcygp
ICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRl
eHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7
Ci0jZW5kaWYKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAg
ICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCA9PSBlbmFibGVkKQorICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7
Ci0gICAgICAgIH0KKyAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0gZW5h
YmxlZDsKKyAgICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCkgeworICAg
ICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgICAgICBzZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWRGb3JQcm9jZXNzZXNJbkNvbnRleHQodGhpcywgdHJ1ZSk7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAg
ICAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JQcm9jZXNzZXNJbkNvbnRleHQodGhpcywg
ZmFsc2UpOworICAgIH0KIAotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICAgICAgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVl
KTsKKyAgICBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCgpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9Q
Uk9DRVNTKQotICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCi0gICAgfQogfQogCi12b2lkIFdl
YkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCkKK3ZvaWQgV2Vi
Q29udGV4dDo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgb2NjbHVkZWQpCiB7Ci0gICAg
c3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZSA9IGZhbHNlOwotICAgIGlmIChkaWRJbml0aWFsaXpl
KQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmIChz
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9PSBvY2NsdWRlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZGlkSW5pdGlhbGl6ZSA9IHRydWU7Ci0gICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRp
bCBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9p
bnQgYSBjb250ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCi0gICAgLy8gaW50ZXJw
cmV0YXRpb24gdGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBk
aXNhYmxlcyBpdCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2Vz
LgotICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQiXTsKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQpCi0gICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMoKTsKKyAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IG9jY2x1ZGVkOworICAgIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQoKSkKKyAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZv
clByb2Nlc3Nlc0luQ29udGV4dChjb250ZXh0c1tpXSwgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQp
OworICAgIH0KKworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9y
QWxsQ29udGV4dHMpCisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2JhbFBy
b2Nlc3NlcyhzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShvY2NsdWRlZCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJl
Y2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQor
eworICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUp
OworfQorCit2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRDaGFuZ2Vk
KCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBz
dGF0aWMgYm9vbCBvY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOworCisgICAg
Ly8gUmVnaXN0ZXIgZm9yIG9jY2x1c2lvbiBub3RpZmljYXRpb25zIGlmIGF0bGVhc3Qgb25lIGNv
bnRleHQgaGFzIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBlbmFibGVkCisgICAgYm9vbCBu
ZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOworICAgIGJvb2wgbmV3UHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7CisKKyAg
ICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENv
bnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgp
OyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoY29udGV4dHNbaV0tPnByb2Nlc3NTdXBw
cmVzc2lvblN1cHBvcnRFbmFibGVkKCkpCisgICAgICAgICAgICBuZXdPY2NsdXNpb25Ob3RpZmlj
YXRpb25zRW5hYmxlZCA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld1Byb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMgPSBmYWxzZTsKKworICAg
ICAgICBpZiAobmV3T2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgJiYgIW5ld1Byb2Nlc3NT
dXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZv
ckFsbENvbnRleHRzICE9IG5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxs
Q29udGV4dHMpIHsKKyAgICAgICAgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZv
ckFsbENvbnRleHRzID0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxD
b250ZXh0czsKKworICAgICAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxl
ZEZvckFsbENvbnRleHRzKSB7CisgICAgICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVk
ZWQpCisgICAgICAgICAgICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xvYmFsUHJv
Y2Vzc2VzKHRydWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYg
KHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICAgICAgICAgIHNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZEZvckdsb2JhbFByb2Nlc3NlcyhmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAob2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgIT0gbmV3T2NjbHVzaW9uTm90
aWZpY2F0aW9uc0VuYWJsZWQpIHsKKyAgICAgICAgb2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJs
ZWQgPSBuZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZDsKKworICAgICAgICBpZiAob2Nj
bHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQpCisgICAgICAgICAgICByZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVucmVn
aXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgIH0KKyNlbmRpZiAvLyBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIH0KIAogdm9pZCBXZWJDb250
ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKIHsKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAoIVdLUmVnaXN0ZXJP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFw
cGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkgewotICAg
ICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIFZpc2libGVc
IiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJSZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNh
dGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5v
dGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkKSkKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBw
IEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAg
ICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBP
Y2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOwogI2VuZGlmCiB9CisK
K3ZvaWQgV2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJz
KCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBp
ZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25O
b3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNh
bWVPY2NsdWRlZCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJVbnJlZ2lzdHJhdGlvbiBvZiBc
IkFwcGxpY2F0b24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVk
LlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCisgICAgaWYgKCFXS1VucmVnaXN0
ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlw
ZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkpCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiVW5yZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNh
bWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworI2VuZGlmCit9
CisKIHZvaWQgV2ViQ29udGV4dDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKQogewog
ICAgIG1fY3VzdG9tU2NoZW1lUmVnaXN0ZXJlZE9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6V2ViS2l0OjpTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6
W05TT3BlcmF0aW9uUXVldWUgY3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRp
b24gKm5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyMTIyMzAzOGQ4Zjk0OTYzOWE5MTk0OTQ0MTQ1NWY5
MzQwZTkxODQuLmNhMDMyOGJlMDlkNTAzODIxMjgyM2M0N2U0MzgwZjE0MjdkMGM0MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU2Niw2ICs1NjYsOCBAQAogCQk5RjRGNTk0NDE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eU1hYy5tbSAqLzsgfTsKIAkJOUY1NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxk
UHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07
CiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0
MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKKwkJ
OUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovOyB9OworCQk5RkI1RjM5NTE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8q
IFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCNjJFNzMxMDE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVz
dWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2
MkU3MzBGMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQlC
NjJFNzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJFNzMxMTE0MzA0N0IwMDA2OUVD
MzUgLyogV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjM0MDNG
ODE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE4NDcsNiArMTg0
OSw4IEBACiAJCTlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVn
aW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRl
TWFjLmNwcDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFBy
aXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJp
dmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVB
NTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjYyRTczMEYx
NDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS0hpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM0Niw2ICszMzUwLDggQEAKIAkJNkVFODQ5QzQxMzY4RDkwNDAwMzhE
NDgxIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICov
LAorCQkJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmgg
Ki8sCiAJCQkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1h
Yy5oICovLAogCQkJCUJDRTE3QjdCMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFj
LmNwcCAqLywKIAkJCQlCQ0UxN0I3QzEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1h
Yy5oICovLApAQCAtNTA3MCw2ICs1MDc2LDcgQEAKIAkJCQlCQzJFNkU4RTExNDE5NzE1MDBBNjNC
MUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5MDg4RjE2OUJBQTZBMDA2
OTA0QzcgLyogU2VjSXRlbVNoaW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzkwODkxMTY5QkFB
ODIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC02MDQ5LDYgKzYwNTYsNyBAQAogCQkJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUy
QSAvKiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OTA4OEQxNjlCQUE2
MjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzkwODkw
MTY5QkFBN0YwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5RkI1RjM5NDE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182152</attachid>
            <date>2013-01-10 09:08:11 -0800</date>
            <delta_ts>2013-01-10 13:32:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130110090516.patch</filename>
            <type>text/plain</type>
            <size>23784</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uNzllOTJiMDc1ZTJlMDdkNTAyNjk2NzIzOGQ4ODk0
ODg2OWNkZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTA5ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGJ5IGRlZmF1bHQgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzIHN1cHByZXNzaW9uIGhhcyBzbyBmYXIgYmVl
biBjb250cm9sbGVkIGJ5IGEgdXNlciBkZWZhdWx0IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgaXQgYnkgZGVmYXVsdCBhbmQgYWRkcyBhIHByaXZh
dGUgQVBJIHRvIGRpc2FibGUgaXQgb24gYSBwZXItY29udGV4dCBiYXNpcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOiBBZGQg
cHJpdmF0ZSBBUEkgdG8gZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IG9uIGEgcGVyLWNvbnRleHQgYmFzaXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlKTog
UmVtb3ZlIGNhbGwgdG8gaW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQsIHNpbmNl
IHByb2Nlc3MKKyAgICAgICAgc3VwcHJlc3Npb24gaW5pdGlhbGl6YXRpb24gaXMgbm93IHBlcmZv
cm1lZCBieSBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCwgd2hp
Y2gKKyAgICAgICAgaW4gdHVybiBpcyBjYWxsZWQgd2hlbiBhIG5ldyBjb250ZXh0IGlzIGNyZWF0
ZWQgb2YgaWYgdGhlIHN0YXR1cyBvZiBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQKKyAgICAg
ICAgY2hhbmdlZCBmb3IgYW55IGNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OldlYkNvbnRleHQpOiBBZGQgY2FsbCB0byBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6IEFkZCBtZXRob2QgdG8g
dXBkYXRlIHByb2Nlc3Mgc3VwcHJlc3Npb24KKyAgICAgICAgc3VwcG9ydCBzdGF0ZSBhbmQgbm90
aWZ5IGFmZmVjdGVkIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KTogSGVscGVyIGZ1bmN0aW9uIHRvIG1lc3Nh
Z2UgTmV0d29yayBhbmQKKyAgICAgICAgV2ViUHJvY2Vzc2VzIGluIGEgY29udGV4dCByZWdhcmRp
bmcgY2hhbmdlcyB0byBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2Vi
S2l0OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMpOiBIZWxwZXIg
ZnVuY3Rpb24gdG8gbWVzc2FnZSBQbHVnaW5Qcm9jZXNzIGFuZAorICAgICAgICBTaGFyZWRXb3Jr
ZXJQcm9jZXNzIHJlZ2FyZGluZyBjaGFuZ2VzIHRvIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0
dXMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCk6IEZhY3RvcmVkIG91dCBjb2RlIGNvbW1vbiB0byBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUg
YW5kCisgICAgICAgIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSk6IFNpbXBsaWZpZWQgYnkgZmFj
dG9yaW5nIG91dCBjb2RlIGludG8gYWJvdmUgdGhyZWUgbWV0aG9kcy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCk6
IFJlLWV2YWx1YXRlIGlmIGF0IGxlYXN0IG9uZSBjb250ZXh0IGhhcworICAgICAgICBwcm9jZXNz
IHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZCBhbmQgaWYgZXZlcnkgY29udGV4dCBoYXMgaXQg
ZW5hYmxlZC4gIFVzZSB0aGUgbmV3IHZhbHVlcyB0bworICAgICAgICByZWdpc3Rlci91bnJlZ2lz
dGVyIG9jY2x1c2lvbiBub3RpZmljYXRpb24gaGFuZGxlcnMgYW5kIHVwZGF0ZSBvY2NsdXNpb24g
c3RhdGUgb2YgZ2xvYmFsIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEZpeCB0eXBvcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKTogQWRkIG1ldGhvZCB0byB1bnJlZ2lzdGVyIG9jY2x1c2lvbgorICAgICAgICBub3Rp
ZmljYXRpb25zLCB1c2VkIHdoZW4gYWxsIGNvbnRleHRzIGhhdmUgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IGRpc2FibGVkLgorCiAyMDEzLTAxLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGJ1aWxkcyBvZiBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgaGF2ZSBhIHByb2Nlc3MgaWNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmMzYTI0ODMzYTc3NjNhOWIwMjE5NGJjOTUzZmY4NzU5YmFmZjM0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K3ZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJl
ZiktPnNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGVuYWJsZWQpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzlkODAxNzZjYTMxNGM1ZDE3ODM0NDRjMzg1Yzc2MjQ5
MGNmZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVN
YWNfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9j
ZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBl
bmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdL
Q29udGV4dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCmluZGV4IDJjYjhjMmE2Yjk3ZjE0ODg5NGI0MzVkZTQzNTZhZmE3OWMyYTI5ZDkuLjdhZDA0
MDZkNWJjYzZkYTM5ZWQ3ZGQyNzIyMzI0OTk5ZmQxZDhiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwNSw5ICsxMDUsNiBAQCBQYXNzUmVmUHRyPFdlYkNv
bnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0
aCkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQo
UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7
CiB9CiAKQEAgLTE0Myw2ICsxNDAsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NN
b2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX3VzZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVU
TFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMTgyLDYgKzE4MiwxMCBAQCBXZWJDb250ZXh0OjpX
ZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYQogCiAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzLCBsYW5ndWFn
ZUNoYW5nZWQpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHByb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRDaGFuZ2VkKCk7CisjZW5kaWYKKwogI2lmICFMT0dfRElTQUJMRUQKICAgICBXZWJDb3Jl
Ojppbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKICAgICBXZWJLaXQ6Omlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCBmYzkzYTA4Yjk5ZDM2ZjMwZThiNGUxMjM1NGJjNWViNGNjOGIyZjRl
Li5kYmRhNzgzODRlZGE3ZGZmZjUxMjljMGRhNDA2ZTFmMTBmYmU2OWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI3MCw2ICsyNzAsOCBAQCBwdWJsaWM6CiAKIAog
I2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkKGJvb2wpOworICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkOyB9CiAg
ICAgc3RhdGljIGJvb2wgYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgeyByZXR1cm4gc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQ7IH0KICNlbmRpZgogCkBAIC0zNDMsMTAgKzM0NSwxMiBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJs
ZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogICAgIHN0YXRp
YyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydCgpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NTdXBwcmVzc2lvblN1
cHBvcnRDaGFuZ2VkKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVycygpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVycygpOwogICAgIHZvaWQgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZl
cnMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRp
ZgpAQCAtNDQ4LDcgKzQ1Miw5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICNpZiBQ
TEFURk9STShNQUMpCisgICAgYm9vbCBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVk
OwogICAgIHN0YXRpYyBib29sIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOworICAgIHN0YXRpYyBi
b29sIHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0czsKICNl
bmRpZgogCiAjaWYgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KaW5kZXggYTBjNTdjMTNiNDdjOWE4Yzg1MDVkZjc4Y2U2YzIzNjczNzE0
MzE5OS4uZGQzMDE2YmU1ODNjNDBhMjcyMjFkMzk5OGI5ZWM4MTliN2M1YTBmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtNjMsNiArNjMs
NyBAQCBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0
aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQwogTlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVBy
b3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwogCiBib29sIFdlYkNvbnRleHQ6
OnNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7Citib29sIFdlYkNvbnRleHQ6OnNfcHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7CiAKIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQogewpAQCAtMjkxLDgwICsy
OTIsMTUyIEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7
CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKK3N0YXRpYyB2b2lkIHNldEFwcGxpY2F0aW9uSXNPY2Ns
dWRlZEZvclByb2Nlc3Nlc0luQ29udGV4dChXZWJDb250ZXh0ICpjb250ZXh0LCBib29sIG9jY2x1
ZGVkKQogewotICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewotICAgICAgICBzX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwotCi0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJD
b250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsr
aSkgewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4
dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2Vz
cygpKQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOworICAgIGlmIChjb250ZXh0LT51c2VzTmV0d29y
a1Byb2Nlc3MoKSAmJiBjb250ZXh0LT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICBjb250ZXh0
LT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpOwog
I2VuZGlmCisgICAgY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpKTsKK30KIAotICAgICAgICAg
ICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKSk7Ci0gICAgICAgIH0KLQorc3RhdGljIHZv
aWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xvYmFsUHJvY2Vzc2VzKGJvb2wgb2NjbHVk
ZWQpCit7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgICAgICBQbHVnaW5Qcm9jZXNz
TWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKKyAgICBQ
bHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKG9j
Y2x1ZGVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAg
ICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklz
T2NjbHVkZWQoZmFsc2UpOworICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQo
KS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpOwogI2VuZGlmCi0gICAgfQogfQor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCi12b2lk
IFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1
aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQordm9pZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3Vw
cHJlc3Npb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKCFzX2FwcGxp
Y2F0aW9uSXNPY2NsdWRlZCkgewotICAgICAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRy
dWU7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29u
dGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0g
Y29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2Vzcygp
ICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRl
eHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7
Ci0jZW5kaWYKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAg
ICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCA9PSBlbmFibGVkKQorICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKSk7
Ci0gICAgICAgIH0KKyAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0gZW5h
YmxlZDsKKyAgICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCkgeworICAg
ICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgICAgICBzZXRBcHBsaWNh
dGlvbklzT2NjbHVkZWRGb3JQcm9jZXNzZXNJbkNvbnRleHQodGhpcywgdHJ1ZSk7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAg
ICAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JQcm9jZXNzZXNJbkNvbnRleHQodGhpcywg
ZmFsc2UpOworICAgIH0KIAotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICAgICAgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVl
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAgICAgIFNo
YXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQodHJ1ZSk7CisgICAgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydENoYW5nZWQoKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCi0gICAgfQogfQogCi12b2lkIFdl
YkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCkKK3ZvaWQgV2Vi
Q29udGV4dDo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgb2NjbHVkZWQpCiB7Ci0gICAg
c3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZSA9IGZhbHNlOwotICAgIGlmIChkaWRJbml0aWFsaXpl
KQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmIChz
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9PSBvY2NsdWRlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZGlkSW5pdGlhbGl6ZSA9IHRydWU7Ci0gICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRp
bCBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9p
bnQgYSBjb250ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCi0gICAgLy8gaW50ZXJw
cmV0YXRpb24gdGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBk
aXNhYmxlcyBpdCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2Vz
LgotICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQiXTsKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQpCi0gICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMoKTsKKyAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IG9jY2x1ZGVkOworICAgIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQoKSkKKyAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZv
clByb2Nlc3Nlc0luQ29udGV4dChjb250ZXh0c1tpXSwgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQp
OworICAgIH0KKworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9y
QWxsQ29udGV4dHMpCisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2JhbFBy
b2Nlc3NlcyhzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShvY2NsdWRlZCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJl
Y2FtZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQor
eworICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90
LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUp
OworfQorCit2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRDaGFuZ2Vk
KCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBz
dGF0aWMgYm9vbCBvY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOworCisgICAg
Ly8gUmVnaXN0ZXIgZm9yIG9jY2x1c2lvbiBub3RpZmljYXRpb25zIGlmIGF0bGVhc3Qgb25lIGNv
bnRleHQgaGFzIHByb2Nlc3Mgc3VwcHJlc3Npb24gc3VwcG9ydCBlbmFibGVkCisgICAgYm9vbCBu
ZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOworICAgIGJvb2wgbmV3UHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7CisKKyAg
ICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENv
bnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgp
OyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoY29udGV4dHNbaV0tPnByb2Nlc3NTdXBw
cmVzc2lvblN1cHBvcnRFbmFibGVkKCkpCisgICAgICAgICAgICBuZXdPY2NsdXNpb25Ob3RpZmlj
YXRpb25zRW5hYmxlZCA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld1Byb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMgPSBmYWxzZTsKKworICAg
ICAgICBpZiAobmV3T2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgJiYgIW5ld1Byb2Nlc3NT
dXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxsQ29udGV4dHMpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZv
ckFsbENvbnRleHRzICE9IG5ld1Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkRm9yQWxs
Q29udGV4dHMpIHsKKyAgICAgICAgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZv
ckFsbENvbnRleHRzID0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxD
b250ZXh0czsKKworICAgICAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxl
ZEZvckFsbENvbnRleHRzKSB7CisgICAgICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVk
ZWQpCisgICAgICAgICAgICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xvYmFsUHJv
Y2Vzc2VzKHRydWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYg
KHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICAgICAgICAgIHNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZEZvckdsb2JhbFByb2Nlc3NlcyhmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAob2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJsZWQgIT0gbmV3T2NjbHVzaW9uTm90
aWZpY2F0aW9uc0VuYWJsZWQpIHsKKyAgICAgICAgb2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJs
ZWQgPSBuZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZDsKKworICAgICAgICBzdGF0aWMg
Ym9vbCBvbWl0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCA9IFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXQyT21pdFByb2Nlc3NTdXBwcmVz
c2lvblN1cHBvcnQiXTsKKyAgICAgICAgaWYgKCFvbWl0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dCkgeworICAgICAgICAgICAgaWYgKG9jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkKQorICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcnMoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpyZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKIHsKICNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25O
b3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9u
QmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkgewotICAgICAgICBXVEZM
b2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmlj
YXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3Ry
YXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5k
bGVyIGZhaWxlZC5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFXS1Jl
Z2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlv
blR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVk
KSkKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBwIEJlY2FtZSBP
Y2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICBXVEZM
b2dBbHdheXMoIlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZFwi
IG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOwogI2VuZGlmCiB9CisKK3ZvaWQgV2Vi
Q29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoIVdLVW5y
ZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRp
b25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRl
ZCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJVbnJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0
b24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0
aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkpCisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiVW5yZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJs
ZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworI2VuZGlmCit9CisKIHZvaWQg
V2ViQ29udGV4dDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKQogewogICAgIG1fY3Vz
dG9tU2NoZW1lUmVnaXN0ZXJlZE9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6V2ViS2l0OjpTY2hlbWVGb3JDdXN0b21Qcm90
b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6W05TT3BlcmF0
aW9uUXVldWUgY3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGIyMTIyMzAzOGQ4Zjk0OTYzOWE5MTk0OTQ0MTQ1NWY5MzQwZTkxODQu
LmNhMDMyOGJlMDlkNTAzODIxMjgyM2M0N2U0MzgwZjE0MjdkMGM0MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2Niw2ICs1
NjYsOCBAQAogCQk5RjRGNTk0NDE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1h
Yy5tbSAqLzsgfTsKIAkJOUY1NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRG
ODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJCTlGNTRG
ODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUw
MDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKKwkJOUZCNUYzOTQx
NjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJG
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovOyB9OworCQk5RkI1RjM5NTE2OUU2QTgwMDAy
QzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4
dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCNjJFNzMxMDE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3MzBGMTQz
MDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQlCNjJFNzMxMjE0
MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJFNzMxMTE0MzA0N0IwMDA2OUVDMzUgLyogV0tI
aXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjM0MDNGODE0OTEwRDU3
MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE4NDcsNiArMTg0OSw4IEBACiAJ
CTlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODhF
MTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBs
dWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmNwcDsg
cGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5o
OyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVBNTUxMkUwRUQy
RDAwRjRGRUI3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBj
b25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjYyRTczMEYxNDMwNDdBNjAw
NjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0hpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzM0Niw2ICszMzUwLDggQEAKIAkJNkVFODQ5QzQxMzY4RDkwNDAwMzhENDgxIC8qIG1h
YyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUZCNUYz
OTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovLAorCQkJCTlG
QjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8sCiAJCQkJ
NkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovLAog
CQkJCUJDRTE3QjdCMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmNwcCAqLywK
IAkJCQlCQ0UxN0I3QzEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5oICovLApA
QCAtNTA3MCw2ICs1MDc2LDcgQEAKIAkJCQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29y
a1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5MDg4RjE2OUJBQTZBMDA2OTA0QzcgLyog
U2VjSXRlbVNoaW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzkwODkxMTY5QkFBODIwMDY5MDRD
NyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5RkI1RjM5NTE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC02MDQ5LDYgKzYwNTYsNyBAQAogCQkJCUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3Jr
UXVldWVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OTA4OEQxNjlCQUE2MjAwNjkwNEM3
IC8qIFNlY0l0ZW1TaGltLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzkwODkwMTY5QkFBN0Yw
MDY5MDRDNyAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5RkI1RjM5NDE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182198</attachid>
            <date>2013-01-10 13:32:45 -0800</date>
            <delta_ts>2013-01-10 19:55:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130110132947.patch</filename>
            <type>text/plain</type>
            <size>24077</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uN2VhZTc3OTM4YTdlNmY2MmQ5NjUzYTY5NzkxNTYw
Njc0OWFlMDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAxLTEwICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGJ5IGRlZmF1bHQgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzIHN1cHByZXNzaW9uIGhhcyBzbyBmYXIgYmVl
biBjb250cm9sbGVkIGJ5IGEgdXNlciBkZWZhdWx0IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgaXQgYnkgZGVmYXVsdCBhbmQgYWRkcyBhIHByaXZh
dGUgQVBJIHRvIGRpc2FibGUgaXQgb24gYSBwZXItY29udGV4dCBiYXNpcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAg
ICAgICAoV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQpOgorICAg
ICAgICBBZGQgcHJpdmF0ZSBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IG9uIGEgcGVyLWNvbnRleHQgYmFzaXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlKTog
UmVtb3ZlIGNhbGwgdG8gaW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQsIHNpbmNl
IHByb2Nlc3MKKyAgICAgICAgc3VwcHJlc3Npb24gaW5pdGlhbGl6YXRpb24gaXMgbm93IHBlcmZv
cm1lZCBieSBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCwgd2hp
Y2gKKyAgICAgICAgaW4gdHVybiBpcyBjYWxsZWQgd2hlbiBhIG5ldyBjb250ZXh0IGlzIGNyZWF0
ZWQgb2YgaWYgdGhlIHN0YXR1cyBvZiBwcm9jZXNzIHN1cHByZXNzaW9uIHN1cHBvcnQKKyAgICAg
ICAgY2hhbmdlZCBmb3IgYW55IGNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OldlYkNvbnRleHQpOiBBZGQgY2FsbCB0byBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCk6IEFkZCBtZXRob2QgdG8g
dXBkYXRlIHByb2Nlc3Mgc3VwcHJlc3Npb24KKyAgICAgICAgc3VwcG9ydCBzdGF0ZSBhbmQgbm90
aWZ5IGFmZmVjdGVkIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6c2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KTogSGVscGVyIGZ1bmN0aW9uIHRvIG1lc3Nh
Z2UgTmV0d29yayBhbmQKKyAgICAgICAgV2ViUHJvY2Vzc2VzIGluIGEgY29udGV4dCByZWdhcmRp
bmcgY2hhbmdlcyB0byBhcHBsaWNhdGlvbiBvY2NsdXNpb24gc3RhdHVzLgorICAgICAgICAoV2Vi
S2l0OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMpOiBIZWxwZXIg
ZnVuY3Rpb24gdG8gbWVzc2FnZSBQbHVnaW5Qcm9jZXNzIGFuZAorICAgICAgICBTaGFyZWRXb3Jr
ZXJQcm9jZXNzIHJlZ2FyZGluZyBjaGFuZ2VzIHRvIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0
dXMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCk6IEZhY3RvcmVkIG91dCBjb2RlIGNvbW1vbiB0byBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUg
YW5kCisgICAgICAgIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSk6IFNpbXBsaWZpZWQgYnkgZmFj
dG9yaW5nIG91dCBjb2RlIGludG8gYWJvdmUgdGhyZWUgbWV0aG9kcy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCk6
IFJlLWV2YWx1YXRlIGlmIGF0IGxlYXN0IG9uZSBjb250ZXh0IGhhcworICAgICAgICBwcm9jZXNz
IHN1cHByZXNzaW9uIHN1cHBvcnQgZW5hYmxlZCBhbmQgaWYgZXZlcnkgY29udGV4dCBoYXMgaXQg
ZW5hYmxlZC4gIFVzZSB0aGUgbmV3IHZhbHVlcyB0bworICAgICAgICByZWdpc3Rlci91bnJlZ2lz
dGVyIG9jY2x1c2lvbiBub3RpZmljYXRpb24gaGFuZGxlcnMgYW5kIHVwZGF0ZSBvY2NsdXNpb24g
c3RhdGUgb2YgZ2xvYmFsIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
cmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEZpeCB0eXBvcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKTogQWRkIG1ldGhvZCB0byB1bnJlZ2lzdGVyIG9jY2x1c2lvbgorICAgICAgICBub3Rp
ZmljYXRpb25zLCB1c2VkIHdoZW4gYWxsIGNvbnRleHRzIGhhdmUgcHJvY2VzcyBzdXBwcmVzc2lv
biBzdXBwb3J0IGRpc2FibGVkLgorCiAyMDEzLTAxLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGJ1aWxkcyBvZiBOZXR3b3JrUHJvY2VzcyBz
aG91bGQgaGF2ZSBhIHByb2Nlc3MgaWNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2RiNTQwYmI4NzRmODMyNWVkZTVlOGFhMzdjMjBjNzNhNGMwZGFjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K2Jvb2wgV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChjb250ZXh0UmVmKS0+cHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoKTsKK30KKwordm9pZCBXS0NvbnRleHRTZXRQ
cm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwg
Ym9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydEVuYWJsZWQoZW5hYmxlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzYjgxMGU2MDZiMDJkZjExNWYyNGJmMTRjMTA3MjE2NDNlNWJhNTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRQ
cml2YXRlTWFjX2gKKyNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBib29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBv
cnRFbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dFNldFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBib29sIGVuYWJsZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLyogV0tDb250ZXh0UHJpdmF0ZU1hY19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAKaW5kZXggMmNiOGMyYTZiOTdmMTQ4ODk0YjQzNWRlNDM1NmFmYTc5YzJhMjlk
OS4uN2FkMDQwNmQ1YmNjNmRhMzllZDdkZDI3MjIzMjQ5OTlmZDFkOGIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTA1LDkgKzEwNSw2IEBAIFBhc3NSZWZQ
dHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRC
dW5kbGVQYXRoKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NT
dXBwcmVzc2lvblN1cHBvcnQoKTsKLSNlbmRpZgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Q29udGV4dChQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzLCBpbmplY3RlZEJ1bmRs
ZVBhdGgpKTsKIH0KIApAQCAtMTQzLDYgKzE0MCw5IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQo
UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBh
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAsIG1fdXNlc05ldHdvcmtQcm9jZXNz
KGZhbHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9wcm9jZXNzU3VwcHJl
c3Npb25TdXBwb3J0RW5hYmxlZCh0cnVlKQorI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgLCBt
X2lnbm9yZVRMU0Vycm9ycyh0cnVlKQogI2VuZGlmCkBAIC0xODIsNiArMTgyLDEwIEBAIFdlYkNv
bnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5n
JiBpbmplY3RlZEJ1bmRsZVBhCiAKICAgICBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHRoaXMs
IGxhbmd1YWdlQ2hhbmdlZCk7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgcHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydENoYW5nZWQoKTsKKyNlbmRpZgorCiAjaWYgIUxPR19ESVNBQkxFRAogICAg
IFdlYkNvcmU6OmluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwogICAgIFdl
YktpdDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGZjOTNhMDhiOTlkMzZmMzBlOGI0ZTEyMzU0YmM1ZWI0
Y2M4YjJmNGUuLmRiZGE3ODM4NGVkYTdkZmZmNTEyOWMwZGE0MDZlMWYxMGZiZTY5ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjcwLDYgKzI3MCw4IEBAIHB1Ymxp
YzoKIAogCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWQ7IH0KICAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKSB7IHJldHVybiBz
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQogI2VuZGlmCiAKQEAgLTM0MywxMCArMzQ1LDEyIEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCBzZXRBcHBs
aWNhdGlvbklzT2NjbHVkZWQoYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNh
bWVWaXNpYmxlKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7CiAg
ICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQ
cm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc1N1cHBy
ZXNzaW9uU3VwcG9ydENoYW5nZWQoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CiAgICAgdm9pZCByZWdpc3Rlck5vdGlmaWNhdGlv
bk9ic2VydmVycygpOwogICAgIHZvaWQgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygp
OwogI2VuZGlmCkBAIC00NDgsNyArNDUyLDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsK
IAogI2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dEVuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisgICAg
c3RhdGljIGJvb2wgc19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRl
eHRzOwogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCBhMGM1N2MxM2I0N2M5YThjODUwNWRmNzhjZTZj
MjM2NzM3MTQzMTk5Li5kZDMwMTZiZTU4M2M0MGEyNzIyMWQzOTk4YjllYzgxOWI3YzVhMGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02
Myw2ICs2Myw3IEBAIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWRO
b3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVGb3JDCiBOU1N0cmluZyAqU2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7CiAKIGJvb2wgV2Vi
Q29udGV4dDo6c19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29udGV4
dDo6c19wcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzID0gdHJ1
ZTsKIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiB7CkBAIC0y
OTEsODAgKzI5MiwxNTIgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9h
cmRUeXBlKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUo
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQorI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorc3RhdGljIHZvaWQgc2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KFdlYkNvbnRleHQgKmNvbnRleHQsIGJv
b2wgb2NjbHVkZWQpCiB7Ci0gICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7Ci0gICAg
ICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7Ci0KLSAgICAgICAgY29uc3QgVmVj
dG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKSB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgICAgIGlm
IChjb250ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNz
KCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisgICAgaWYgKGNvbnRleHQtPnVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHQtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAg
IGNvbnRleHQtPm5ldHdvcmtQcm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChvY2Ns
dWRlZCk7CiAjZW5kaWYKKyAgICBjb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChvY2NsdWRlZCkpOworfQogCi0g
ICAgICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKLSAgICAgICAgfQotCitz
dGF0aWMgdm9pZCBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JHbG9iYWxQcm9jZXNzZXMoYm9v
bCBvY2NsdWRlZCkKK3sKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgICAgIFBsdWdp
blByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2Up
OworICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQob2NjbHVkZWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VT
UykKLSAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6
OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChvY2NsdWRlZCk7CiAjZW5kaWYKLSAg
ICB9CiB9CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit2b2lkIFdlYkNvbnRleHQ6OnNldFBy
b2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAo
IXNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7Ci0gICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1
ZGVkID0gdHJ1ZTsKLSAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMg
PSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwg
Y291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7Ci0jaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSAgICAgICAgICAgIGlmIChjb250ZXh0c1tpXS0+dXNlc05ldHdvcmtQ
cm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICAg
ICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRl
ZCh0cnVlKTsKLSNlbmRpZgorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAorICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID09IGVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVk
KHRydWUpKTsKLSAgICAgICAgfQorICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWQgPSBlbmFibGVkOworICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVk
KSB7CisgICAgICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgICAgIHNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvclByb2Nlc3Nlc0luQ29udGV4dCh0aGlzLCB0cnVlKTsK
KyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkK
KyAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvclByb2Nlc3Nlc0luQ29udGV4
dCh0aGlzLCBmYWxzZSk7CisgICAgfQogCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAg
ICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1
ZGVkKHRydWUpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAg
ICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZCh0cnVlKTsKKyAgICBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0Q2hhbmdlZCgp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKLSAgICB9CiB9CiAK
LXZvaWQgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKQor
dm9pZCBXZWJDb250ZXh0OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBvY2NsdWRlZCkK
IHsKLSAgICBzdGF0aWMgYm9vbCBkaWRJbml0aWFsaXplID0gZmFsc2U7Ci0gICAgaWYgKGRpZElu
aXRpYWxpemUpCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisg
ICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID09IG9jY2x1ZGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBkaWRJbml0aWFsaXplID0gdHJ1ZTsKLSAgICAvLyBBIHRlbXBvcmFyeSBkZWZh
dWx0IHVudGlsIHByb2Nlc3Mgc3VwcHJlc3Npb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBhdCB3
aGljaCBwb2ludCBhIGNvbnRleHQgc2V0dGluZyBjYW4gYmUgYWRkZWQgd2l0aCB0aGUKLSAgICAv
LyBpbnRlcnByZXRhdGlvbiB0aGF0IGFueSBjb250ZXh0IGRpc2FibGluZyBwcm9jZXNzIHN1cHBy
ZXNzaW9uIGRpc2FibGVzIGl0IGZvciBwbHVnaW4vbmV0d29yayBhbmQgc2hhcmVkIHdvcmtlciBw
cm9jZXNzZXMuCi0gICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCA9IFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRQ
cm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCJdOwotICAgIGlmIChwcm9jZXNzU3VwcHJl
c3Npb25TdXBwb3J0RW5hYmxlZCkKLSAgICAgICAgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVycygpOworICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gb2NjbHVkZWQ7Cisg
ICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxD
b250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUo
KTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3Vw
cHJlc3Npb25TdXBwb3J0RW5hYmxlZCgpKQorICAgICAgICAgICAgc2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkRm9yUHJvY2Vzc2VzSW5Db250ZXh0KGNvbnRleHRzW2ldLCBzX2FwcGxpY2F0aW9uSXNP
Y2NsdWRlZCk7CisgICAgfQorCisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVu
YWJsZWRGb3JBbGxDb250ZXh0cykKKyAgICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9y
R2xvYmFsUHJvY2Vzc2VzKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKG9jY2x1ZGVkKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvbnRleHQ6OmFwcGxp
Y2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QpCit7CisgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKK30KKwordm9p
ZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQodHJ1ZSk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9y
dENoYW5nZWQoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5
MAorICAgIHN0YXRpYyBib29sIG9jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkID0gZmFsc2U7
CisKKyAgICAvLyBSZWdpc3RlciBmb3Igb2NjbHVzaW9uIG5vdGlmaWNhdGlvbnMgaWYgYXRsZWFz
dCBvbmUgY29udGV4dCBoYXMgcHJvY2VzcyBzdXBwcmVzc2lvbiBzdXBwb3J0IGVuYWJsZWQKKyAg
ICBib29sIG5ld09jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkID0gZmFsc2U7CisgICAgYm9v
bCBuZXdQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZEZvckFsbENvbnRleHRzID0gdHJ1
ZTsKKworICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4
dDo6YWxsQ29udGV4dHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0
cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQoKSkKKyAgICAgICAgICAgIG5ld09jY2x1c2lv
bk5vdGlmaWNhdGlvbnNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bmV3UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IGZhbHNl
OworCisgICAgICAgIGlmIChuZXdPY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCAmJiAhbmV3
UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWRGb3JBbGxDb250ZXh0cykKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkRm9yQWxsQ29udGV4dHMgIT0gbmV3UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWRGb3JBbGxDb250ZXh0cykgeworICAgICAgICBzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRF
bmFibGVkRm9yQWxsQ29udGV4dHMgPSBuZXdQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxl
ZEZvckFsbENvbnRleHRzOworCisgICAgICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvblN1cHBv
cnRFbmFibGVkRm9yQWxsQ29udGV4dHMpIHsKKyAgICAgICAgICAgIGlmIChzX2FwcGxpY2F0aW9u
SXNPY2NsdWRlZCkKKyAgICAgICAgICAgICAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWRGb3JH
bG9iYWxQcm9jZXNzZXModHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgICAgICAgICAgc2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkRm9yR2xvYmFsUHJvY2Vzc2VzKGZhbHNlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChvY2NsdXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCAhPSBuZXdPY2Ns
dXNpb25Ob3RpZmljYXRpb25zRW5hYmxlZCkgeworICAgICAgICBvY2NsdXNpb25Ob3RpZmljYXRp
b25zRW5hYmxlZCA9IG5ld09jY2x1c2lvbk5vdGlmaWNhdGlvbnNFbmFibGVkOworCisgICAgICAg
IHN0YXRpYyBib29sIG9taXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0ID0gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdDJPbWl0UHJvY2Vz
c1N1cHByZXNzaW9uU3VwcG9ydCJdOworICAgICAgICBpZiAoIW9taXRQcm9jZXNzU3VwcHJlc3Np
b25TdXBwb3J0KSB7CisgICAgICAgICAgICBpZiAob2NjbHVzaW9uTm90aWZpY2F0aW9uc0VuYWJs
ZWQpCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
cygpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVucmVnaXN0ZXJPY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogfQogCiB2b2lkIFdlYkNvbnRl
eHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQogewogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGlmICghV0tSZWdpc3Rlck9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBw
bGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpKSB7Ci0gICAg
ICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgVmlzaWJsZVwi
IG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICBXVEZMb2dBbHdheXMo
IlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0
aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90
aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1l
T2NjbHVkZWQpKQotICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAg
QmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0cmF0aW9uIG9mIFwiQXBwbGljYXRpb24gQmVjYW1lIE9j
Y2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CiAjZW5kaWYKIH0KKwor
dm9pZCBXZWJDb250ZXh0Ojp1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMo
KQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlm
ICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5v
dGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlVucmVnaXN0cmF0aW9uIG9mIFwi
QXBwbGljYXRvbiBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQu
XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKKyAgICBpZiAoIVdLVW5yZWdpc3Rl
ck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBl
QXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJVbnJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2Ft
ZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisjZW5kaWYKK30K
Kwogdm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiB7CiAg
ICAgbV9jdXN0b21TY2hlbWVSZWdpc3RlcmVkT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpXZWJLaXQ6OlNjaGVtZUZvckN1
c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbCBxdWV1ZTpb
TlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlv
biAqbm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjIxMjIzMDM4ZDhmOTQ5NjM5YTkxOTQ5NDQxNDU1Zjkz
NDBlOTE4NC4uY2EwMzI4YmUwOWQ1MDM4MjEyODIzYzQ3ZTQzODBmMTQyN2QwYzQyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTY2LDYgKzU2Niw4IEBACiAJCTlGNEY1OTQ0MTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWFjLm1tICovOyB9OwogCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQ
cm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsK
IAkJOUY1NEY4OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTQx
NjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9OworCQk5
RkI1RjM5NDE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgw
MDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi87IH07CisJCTlGQjVGMzk1MTY5
RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyog
V0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUI2MkU3MzEwMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1
bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYy
RTczMEYxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCUI2
MkU3MzEyMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3MzExMTQzMDQ3QjAwMDY5RUMz
NSAvKiBXS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCNjM0MDNGOTE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MzQwM0Y4
MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovOyB9OwpAQCAtMTg0Nyw2ICsxODQ5
LDggQEAKIAkJOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdp
blByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVN
YWMuY3BwOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJp
dmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2
YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzk2RUE1
NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMwRjE0
MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMzQ2LDYgKzMzNTAsOCBAQAogCQk2RUU4NDlDNDEzNjhEOTA0MDAzOEQ0
ODEgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi8s
CisJCQkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAq
LywKIAkJCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFj
LmggKi8sCiAJCQkJQkNFMTdCN0IxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMu
Y3BwICovLAogCQkJCUJDRTE3QjdDMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFj
LmggKi8sCkBAIC01MDcwLDYgKzUwNzYsNyBAQAogCQkJCUJDMkU2RThFMTE0MTk3MTUwMEE2M0Ix
RSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzkwODhGMTY5QkFBNkEwMDY5
MDRDNyAvKiBTZWNJdGVtU2hpbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3OTA4OTExNjlCQUE4
MjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTlG
QjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTYwNDksNiArNjA1Niw3IEBACiAJCQkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJB
IC8qIFdvcmtRdWV1ZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTc5MDg4RDE2OUJBQTYy
MDA2OTA0QzcgLyogU2VjSXRlbVNoaW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OTA4OTAx
NjlCQUE3RjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRl
TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182246</attachid>
            <date>2013-01-10 19:55:51 -0800</date>
            <delta_ts>2013-01-11 16:49:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130110195254.patch</filename>
            <type>text/plain</type>
            <size>25389</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uYzE5ZjU3NWUxNjM4ZWI5YjMxOWEyYjlkMGI2NjEw
NTk3NGIxZmEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAxLTEwICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGJ5IGRlZmF1bHQgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzIHN1cHByZXNzaW9uIGhhcyBzbyBmYXIgYmVl
biBjb250cm9sbGVkIGJ5IGEgdXNlciBkZWZhdWx0IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgaXQgYnkgZGVmYXVsdCBhbmQgYWRkcyBhIHByaXZh
dGUgQVBJIHRvIGRpc2FibGUgaXQgb24gYSBwZXItY29udGV4dCBiYXNpcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAgICAgIChX
S0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgQWRkIHByaXZh
dGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gb24gYSBwZXItY29u
dGV4dCBiYXNpcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKTogQWRk
IGNvbW1lbnQgYWJvdXQgaW5pdGlsaXphdGlvbiBvZiBhcHBsaWNhdGlvbgorICAgICAgICBvY2Ns
dXNpb24gc3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGUpOiBSZW1vdmUgY2FsbCB0byBpbml0aWFsaXpl
UHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCwgc2luY2UKKyAgICAgICAgdGhlIGNvbnN0cnVjdG9y
IGhhcyBiZWVuIG1vZGlmaWVkIHRvIHBlcmZvcm0gaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRleHQpOiBBZGQgY2FsbHMgdG8gdXBkYXRlUHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZEZvckFueUNvbnRleHQKKyAgICAgICAgYW5kIHVwZGF0ZVByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKTogUmVtb3ZlICJTdXBwb3J0IiBmcm9tIHRoZSBtZXRob2QgbmFtZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6Om5vdGlmeUNoaWxkUHJvY2Vzc2VzT2ZBcHBsaWNhdGlvbk9jY2x1c2lvblN0
YXRlKTogSGVscGVyIG1ldGhvZCB0bworICAgICAgICB0byBub3RpZnkgdGhlIGN1cnJlbnQgb2Nj
bHVzaW9uIHN0YXRlIHRvIHRoZSBjb250ZXh0J3Mgd2ViIHByb2Nlc3NlcyBhbmQgbmV0d29yayBw
cm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpub3RpZnlHbG9iYWxDaGlsZFBy
b2Nlc3Nlc09mQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSk6IERpdHRvIGZvcgorICAgICAgICBw
bHVnaW4gYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKTogTm90aWZ5IGNoaWxkIHByb2Nl
c3NlcyBvZiBhcHBsaWNhdGlvbgorICAgICAgICBvY2NsdXNpb24gc3RhdGUgaWYgbmVjZXNzYXJ5
IGFuZCBjYWxsIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0LAor
ICAgICAgICB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMuCisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWRGb3JBbnlDb250ZXh0KTogUmUtZXZhbHVhdGUgaWYgYW55CisgICAgICAgIGNvbnRleHQgaGFz
IHByb2Nlc3Mgc3VwcHJlc3Npb24gZW5hYmxlZCBhbmQgY2FsbCB1cGRhdGVPY2NsdXNpb25Ob3Rp
ZmljYXRpb25SZWdpc3RyYXRpb24KKyAgICAgICAgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0Ojp1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29u
dGV4dHMpOiBSZS1ldmFsdWF0ZSBpZiBhbGwKKyAgICAgICAgY29udGV4dHMgaGF2ZSBwcm9jZXNz
IHN1cHByZXNzaW9uIGVuYWJsZWQgYW5kIGNhbGwgbm90aWZ5IGdsb2JhbCBjaGlsZCBwcm9jZXNz
ZXMgb2YKKyAgICAgICAgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlIGlmIG5lY2Vzc2FyeS4K
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dXBkYXRlT2NjbHVzaW9uTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uKTogUmVnaXN0ZXIgb3IgVW5yZWdpc3RlcgorICAgICAgICBvY2NsdXNpb24g
bm90aWZpY2F0aW9uIGhhbmRsZXJzIGJhc2VkIG9mIHdoZXRoZXIgYW55IGNvbnRleHQgaGFzIHBy
b2Nlc3Mgc3VwcHJlc3Npb24KKyAgICAgICAgZW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKTogU2ltcGxpZnkgYnkgbW92aW5nIG1l
c3NhZ2luZyBjb2RlCisgICAgICAgIHRvIHRoZSBub3RpZnkgaGVscGVyIG1ldGhvZHMgbGlzdGVk
IGFib3ZlLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZU9j
Y2x1ZGVkKToKKyAgICAgICAgU2ltcGxpZnkgYnkgbW92aW5nIGNvZGUgdG8gc2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1
c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKTogRml4IHR5cG9zLgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Ojp1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpOiBBZGQg
bWV0aG9kIHRvIHVucmVnaXN0ZXIKKyAgICAgICAgb2NjbHVzaW9uIG5vdGlmaWNhdGlvbiBoYW5k
bGVycyB3aGVuIG5vIGNvbnRleHQgaGFzIHByb2Nlc3Mgc3VwcHJlc3Npb24gZW5hYmxlZC4KKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMDEtMDkg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYWwgYnVp
bGRzIG9mIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBoYXZlIGEgcHJvY2VzcyBpY29uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDQ4MGU5Y2NiNWVl
MDc1ZjEzMmI3ODc1NTM4NDNhMTc4NTVmY2VhYzQuLjgwMGNlOTM0MGFmYTFhYjMwMDlhYmM5OTM4
MzgyNDYwN2Q0NDRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hp
bGRQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9j
ZXNzTWFjLm1tCkBAIC02MCw2ICs2MCw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemUoKQogICAgIHNldHByaW9yaXR5KFBSSU9fREFSV0lOX1BST0NFU1MsIDAsIDApOwog
ICAgIGluaXRpYWxpemVUaW1lckNvYWxlc2NpbmdQb2xpY3koKTsKICNlbmRpZgorICAgIC8vIFN0
YXJ0aW5nIGFzIHVub2NjbHVkZWQuICBUaGUgcHJveHkgZm9yIHRoaXMgcHJvY2VzcyB3aWxsIHNl
dCB0aGUgYWN0dWFsIHZhbHVlIGZyb20gZGlkRmluaXNoTGF1bmNoaW5nKCkuCiAgICAgc2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2QwOGY4NGE1NGM1MzVjZTE2OWQ2ZjY4NTdlYTA1ODc1NjhmNmNkZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK2Jvb2wgV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbnRleHRSZWYpLT5wcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBlbmFibGVkKQor
eworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChl
bmFibGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVhZDgxM2U1M2VmMTc3MTc1
YjQ3NTUxN2NjNTdlZDNiOGYzMWRiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29udGV4dFByaXZhdGVNYWNfaAorI2RlZmluZSBX
S0NvbnRleHRQcml2YXRlTWFjX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIGJvb2wg
V0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4
dCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGVuYWJsZWQpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tDb250ZXh0UHJpdmF0ZU1hY19oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMmNiOGMyYTZiOTdmMTQ4ODk0
YjQzNWRlNDM1NmFmYTc5YzJhMjlkOS4uMjg3Y2Q1NGJiZmU0ZTZjYTBhMzgwYzQ4MGI4ODY2YWZl
Y2FmNDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTA1
LDkgKzEwNSw2IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgV2ViQ29udGV4
dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKTsKLSNlbmRpZgogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dChQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQ
cm9jZXNzLCBpbmplY3RlZEJ1bmRsZVBhdGgpKTsKIH0KIApAQCAtMTQzLDYgKzE0MCw5IEBAIFdl
YkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3Ry
aW5nJiBpbmplY3RlZEJ1bmRsZVBhCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAs
IG1fdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKHRydWUpCisjZW5kaWYKICNpZiBVU0Uo
U09VUCkKICAgICAsIG1faWdub3JlVExTRXJyb3JzKHRydWUpCiAjZW5kaWYKQEAgLTE4Miw2ICsx
ODIsMTEgQEAgV2ViQ29udGV4dDo6V2ViQ29udGV4dChQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVs
LCBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGEKIAogICAgIGFkZExhbmd1YWdlQ2hhbmdl
T2JzZXJ2ZXIodGhpcywgbGFuZ3VhZ2VDaGFuZ2VkKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCgpOworICAgIHVw
ZGF0ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cygpOworI2VuZGlmCisK
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVs
c0lmTmVjZXNzYXJ5KCk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vz
c2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZmM5M2EwOGI5
OWQzNmYzMGU4YjRlMTIzNTRiYzVlYjRjYzhiMmY0ZS4uNjMzNzkwMTk0MTFiMWFjOTlkZDcyNDI2
YmMxZTczYzQyZTc3MzFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBA
IC0yNzAsNiArMjcwLDggQEAgcHVibGljOgogCiAKICNpZiBQTEFURk9STShNQUMpCisgICAgdm9p
ZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOworICAgIGJvb2wgcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZDsgfQogICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHsgcmV0dXJu
IHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CiAjZW5kaWYKIApAQCAtMzQzLDEwICszNDUsMTYg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgbm90aWZ5Q2hpbGRQ
cm9jZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKKyAgICBzdGF0aWMgdm9pZCBu
b3RpZnlHbG9iYWxDaGlsZFByb2Nlc3Nlc09mQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpOwor
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250
ZXh0KCk7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZv
ckFsbENvbnRleHRzKCk7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlT2NjbHVzaW9uTm90aWZpY2F0
aW9uUmVnaXN0cmF0aW9uKCk7CisgICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1
ZGVkKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50
MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwogICAgIHN0YXRpYyB2b2lk
IGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9p
ZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydCgpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlcnMoKTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIHJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
KCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCk7CiAjZW5kaWYK
QEAgLTQ0OCw3ICs0NTYsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKIAogI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZDsKICAgICBz
dGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyAgICBzdGF0aWMgYm9vbCBzX3By
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0OworICAgIHN0YXRpYyBib29sIHNf
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzOwogI2VuZGlmCiAKICNpZiBV
U0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5t
bQppbmRleCBhMGM1N2MxM2I0N2M5YThjODUwNWRmNzhjZTZjMjM2NzM3MTQzMTk5Li5kZWFlMTg1
ZjkwMGYyOTM2MGJiYmJiZGEyYzQ1OTBiYmExMzA2MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02Myw2ICs2Myw4IEBAIE5TU3RyaW5n
ICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJX
ZWJLaXRTY2hlbWVGb3JDCiBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lz
dGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVu
cmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7CiAKIGJvb2wgV2ViQ29udGV4dDo6c19hcHBsaWNhdGlv
bklzT2NjbHVkZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29udGV4dDo6c19wcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkRm9yQW55Q29udGV4dCA9IGZhbHNlOworYm9vbCBXZWJDb250ZXh0OjpzX3Byb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IGZhbHNlOwogCiBzdGF0aWMgdm9p
ZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKIHsKQEAgLTI5MSw4MCArMjkzLDE0NCBA
QCB2b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQogCi12
b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCos
IHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit2b2lkIFdlYkNvbnRleHQ6Om5vdGlmeUNoaWxk
UHJvY2Vzc2VzT2ZBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBpZiAoc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQpIHsKLSAgICAgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBm
YWxzZTsKLQotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdl
YkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3Vu
dCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBib29sIG9jY2x1ZGVkID0gbV9wcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkICYmIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOwogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3
b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAg
ICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQoZmFsc2UpOworICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJv
Y2VzcygpKQorICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQob2NjbHVkZWQpOwogI2VuZGlmCisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpKTsKKyNlbmRpZgor
fQogCi0gICAgICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpKTsKLSAgICAgICAg
fQotCit2b2lkIFdlYkNvbnRleHQ6Om5vdGlmeUdsb2JhbENoaWxkUHJvY2Vzc2VzT2ZBcHBsaWNh
dGlvbk9jY2x1c2lvblN0YXRlKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTAKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpIHx8IEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCisgICAgYm9vbCBvY2NsdWRlZCA9IHNfcHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZEZvckFsbENvbnRleHRzICYmIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOworI2VuZGlm
CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdl
cjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKKyAgICBQbHVnaW5Q
cm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKG9jY2x1ZGVk
KTsKICNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAgICAgIFNo
YXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoZmFsc2UpOworICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQob2NjbHVkZWQpOworI2VuZGlmCiAjZW5kaWYKLSAgICB9CiB9
CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit2b2lkIFdlYkNvbnRleHQ6OnNldFBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIGlmICghc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQpIHsKLSAgICAgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSB0
cnVlOwotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNv
bnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9
IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotICAgICAgICAgICAgaWYgKGNvbnRleHRzW2ldLT51c2VzTmV0d29ya1Byb2Nlc3Mo
KSAmJiBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgICAgICBjb250
ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKS0+c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUp
OwotI2VuZGlmCisgICAgaWYgKG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9PSBlbmFibGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPSBl
bmFibGVkOworICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgbm90aWZ5
Q2hpbGRQcm9jZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKKyAgICB1cGRhdGVQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCgpOworICAgIHVwZGF0ZVByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cygpOworfQogCi0gICAgICAgICAgICBj
b250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOwordm9pZCBXZWJDb250ZXh0Ojp1cGRhdGVQcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCgpCit7CisgICAgYm9vbCBuZXdQcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCA9IGZhbHNlOworICAgIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3Vu
dDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCgpKSB7CisgICAgICAgICAgICBuZXdQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55
Q29udGV4dCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgIH0KIAot
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6
OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgotI2lmIEVO
QUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NN
YW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7Ci0jZW5kaWYK
KyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCAhPSBuZXdQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCkgeworICAgICAgICBzX3Byb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0ID0gbmV3UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZEZvckFueUNvbnRleHQ7CisgICAgICAgIHVwZGF0ZU9jY2x1c2lvbk5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbigpOworICAgIH0KK30KKwordm9pZCBXZWJDb250ZXh0Ojp1cGRhdGVQcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMoKQoreworICAgIGJvb2wgbmV3UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzID0gdHJ1ZTsKKyAgICBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291
bnQ7ICsraSkgeworICAgICAgICBpZiAoIWNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKCkpIHsKKyAgICAgICAgICAgIG5ld1Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JB
bGxDb250ZXh0cyA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMgIT0g
bmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzKSB7CisgICAgICAgIHNf
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzID0gbmV3UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzOworICAgICAgICBpZiAoc19hcHBsaWNhdGlvbklz
T2NjbHVkZWQpCisgICAgICAgICAgICBub3RpZnlHbG9iYWxDaGlsZFByb2Nlc3Nlc09mQXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZSgpOwogICAgIH0KIH0KIAotdm9pZCBXZWJDb250ZXh0Ojppbml0
aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCgpCit2b2lkIFdlYkNvbnRleHQ6OnVwZGF0
ZU9jY2x1c2lvbk5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbigpCiB7Ci0gICAgc3RhdGljIGJvb2wg
ZGlkSW5pdGlhbGl6ZSA9IGZhbHNlOwotICAgIGlmIChkaWRJbml0aWFsaXplKQorICAgIHN0YXRp
YyBib29sIG9taXRQcm9jZXNzU3VwcHJlc3Npb24gPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0Mk9taXRQcm9jZXNzU3VwcHJlc3Npb24i
XTsKKyAgICBpZiAob21pdFByb2Nlc3NTdXBwcmVzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZGlkSW5pdGlhbGl6ZSA9IHRydWU7Ci0gICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRp
bCBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9p
bnQgYSBjb250ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCi0gICAgLy8gaW50ZXJw
cmV0YXRpb24gdGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBk
aXNhYmxlcyBpdCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2Vz
LgotICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1
cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQiXTsKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3Vw
cG9ydEVuYWJsZWQpCisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFueUNv
bnRleHQpCiAgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsK
KyAgICBlbHNlCisgICAgICAgIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
cygpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29s
IG9jY2x1ZGVkKQoreworICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9PSBvY2NsdWRl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBvY2Ns
dWRlZDsKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRl
eHQ6OmFsbENvbnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4
dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoY29udGV4dHNbaV0tPnBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNvbnRleHRzW2ldLT5ub3Rp
ZnlDaGlsZFByb2Nlc3Nlc09mQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpOworICAgIH0KKwor
ICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cykKKyAgICAg
ICAgbm90aWZ5R2xvYmFsQ2hpbGRQcm9jZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUo
KTsKK30KKwordm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMy
X3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQoreworICAgIHNldEFwcGxpY2F0
aW9uSXNPY2NsdWRlZChmYWxzZSk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25C
ZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3Qp
Cit7CisgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOwogfQogCiB2b2lkIFdlYkNv
bnRleHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQogewogI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGlmICghV0tSZWdpc3Rl
ck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBl
QXBwbGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpKSB7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgVmlzaWJs
ZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICBXVEZMb2dBbHdh
eXMoIlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxlXCIgbm90aWZp
Y2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9u
Tm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVj
YW1lT2NjbHVkZWQpKQotICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJB
cHAgQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0cmF0aW9uIG9mIFwiQXBwbGljYXRpb24gQmVjYW1l
IE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CiAjZW5kaWYKIH0K
Kwordm9pZCBXZWJDb250ZXh0Ojp1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAg
IGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lv
bk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlVucmVnaXN0cmF0aW9uIG9m
IFwiQXBwbGljYXRvbiBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWls
ZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKKyAgICBpZiAoIVdLVW5yZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25U
eXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJVbnJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJl
Y2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisjZW5kaWYK
K30KKwogdm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiB7
CiAgICAgbV9jdXN0b21TY2hlbWVSZWdpc3RlcmVkT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpXZWJLaXQ6OlNjaGVtZUZv
ckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbCBxdWV1
ZTpbTlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNh
dGlvbiAqbm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjIxMjIzMDM4ZDhmOTQ5NjM5YTkxOTQ5NDQxNDU1
ZjkzNDBlOTE4NC4uNzIyMzMxODM3NzVkYjc1ZWM5NWRkMWU3YTdmOTRlYjg2ODNiOTI1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTY2LDYgKzU2Niw4IEBACiAJCTlGNEY1OTQ0MTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5TWFjLm1tICovOyB9OwogCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLzsg
fTsKIAkJOUY1NEY4OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4
OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9Owor
CQk5RkI1RjM5NDE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2
QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi87IH07CisJCTlGQjVGMzk1
MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYg
LyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUI2MkU3MzEwMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RS
ZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjYyRTczMEYxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJ
CUI2MkU3MzEyMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3MzExMTQzMDQ3QjAwMDY5
RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCNjM0MDNGOTE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MzQw
M0Y4MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovOyB9OwpAQCAtMTg0Nyw2ICsx
ODQ5LDggQEAKIAkJOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBs
dWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZh
dGVNYWMuY3BwOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0
UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQ
cml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzk2
RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMw
RjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMzQ2LDYgKzMzNTAsOCBAQAogCQk2RUU4NDlDNDEzNjhEOTA0MDAz
OEQ0ODEgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAg
Ki8sCisJCQkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCAqLywKIAkJCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRl
TWFjLmggKi8sCiAJCQkJQkNFMTdCN0IxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVN
YWMuY3BwICovLAogCQkJCUJDRTE3QjdDMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRl
TWFjLmggKi8sCkBAIC00OTc3LDYgKzQ5ODMsNyBAQAogCQkJCTUxQTU1NUY2MTI4QzZDNDcwMDlB
QkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU2MDEx
MjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQzkzOEUxMTE4MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJp
dmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NUIxMzE1Qjk5ODAwOTdBN0JDIC8q
IFdLQ29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4RkExMkE4OEE1NDAw
NjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNGMTExMkIw
MTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU5
NzUsNiArNTk4Miw3IEBACiAJCQkJQkM0QTYyOTYxNDczMTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVj
dGlvblJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0I5RTI0QzExMjBFMTVDMDBBMTM3RTAg
LyogV0tDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTU1NUY1MTI4QzZDNDcwMDlB
QkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RkI1RjM5
NDE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRp
YWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RjcxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
RGF0YS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182447</attachid>
            <date>2013-01-11 16:50:00 -0800</date>
            <delta_ts>2013-01-14 19:17:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130111164702.patch</filename>
            <type>text/plain</type>
            <size>26068</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uMGQzOTIzNDgyOWE2ZmQ2YTk0MjM1MjY0ZDRkYTI5
ODVmY2U2ZTY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEzLTAxLTExICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEdyb3VuZHdvcmsgdG8g
ZW5hYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gYnkgZGVmYXVsdCBvbiBNYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3Mgc3VwcHJlc3Npb24g
aGFzIHNvIGZhciBiZWVuIGNvbnRyb2xsZWQgYnkgYSB1c2VyIGRlZmF1bHQgYW5kIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCisgICAgICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgdGhlIGdyb3VuZHdvcmsg
dG8gZW5hYmxlIGl0IGJ5IGRlZmF1bHQgYW5kIGFkZHMgYSBwcml2YXRlIEFQSSB0bworICAgICAg
ICBlbmFibGUvZGlzYWJsZSBpdCBvbiBhIHBlci1jb250ZXh0IGJhc2lzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS0NvbnRleHRHZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKFdL
Q29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOgorICAgICAgICBBZGQgcHJpdmF0
ZSBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgcHJvY2VzcyBzdXBwcmVzc2lvbiBvbiBhIHBlci1jb250
ZXh0IGJhc2lzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQg
Y29tbWVudCBhYm91dCBpbml0aWxpemF0aW9uIG9mIGFwcGxpY2F0aW9uCisgICAgICAgIG9jY2x1
c2lvbiBzdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZSk6IFJlbW92ZSBjYWxsIHRvIGluaXRpYWxpemVQ
cm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0LCBzaW5jZQorICAgICAgICB0aGUgY29uc3RydWN0b3Ig
aGFzIGJlZW4gbW9kaWZpZWQgdG8gcGVyZm9ybSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgIEFkZCBjYWxsIHRvIHVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlBbmRBbGxDb250ZXh0cygpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOiBSZW1vdmUgIlN1cHBvcnQiIGZyb20gdGhlIG1l
dGhvZCBuYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bm90aWZ5Q2hpbGRQcm9jZXNzZXNPZkFwcGxpY2F0
aW9uT2NjbHVzaW9uU3RhdGUpOiBIZWxwZXIgbWV0aG9kIHRvCisgICAgICAgIHRvIG5vdGlmeSB0
aGUgY3VycmVudCBvY2NsdXNpb24gc3RhdGUgdG8gdGhlIGNvbnRleHQncyB3ZWIgcHJvY2Vzc2Vz
IGFuZCBuZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6Om5vdGlm
eUdsb2JhbENoaWxkUHJvY2Vzc2VzT2ZBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKTogRGl0dG8g
Zm9yCisgICAgICAgIHRoZSBnbG9iYWwgcGx1Z2luIGFuZCBzaGFyZWQgd29ya2VyIHByb2Nlc3Nl
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCk6IE5vdGlmeSBjaGlsZCBwcm9jZXNzZXMgb2YgYXBwbGljYXRpb24KKyAgICAgICAgb2Nj
bHVzaW9uIHN0YXRlIGlmIG5lY2Vzc2FyeSBhbmQgY2FsbCB1cGRhdGVQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkRm9yQW55QW5kQWxsQ29udGV4dHMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHQ6OnVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlBbmRBbGxDb250ZXh0cyk6
IFJlLWV2YWx1YXRlIGlmIGFueQorICAgICAgICBjb250ZXh0IGFuZCBhbGwgY29udGV4dHMgaGF2
ZSBwcm9jZXNzIHN1cHByZXNzaW9uIGVuYWJsZWQgYW5kIGNhbGwgY29ycmVzcG9uZGluZyBzZXR0
ZXIgbWV0aG9kcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZEZvckFueUNvbnRleHQpOiBSZWdpc3RlciBvciBVbnJlZ2lzdGVyCisgICAg
ICAgIG9jY2x1c2lvbiBub3RpZmljYXRpb24gaGFuZGxlcnMgYmFzZWQgb24gd2hldGhlciBhbnkg
Y29udGV4dCBoYXMgcHJvY2VzcyBzdXBwcmVzc2lvbiBlbmFibGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMp
OiBOb3RpZnkKKyAgICAgICAgZ2xvYmFsIGNoaWxkIHByb2Nlc3NlcyBvZiBhcHBsaWNhdGlvbiBv
Y2NsdXNpb24gc3RhdGUgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQpOiBTaW1wbGlmeSBieSBtb3ZpbmcgbWVzc2FnaW5n
IGNvZGUKKyAgICAgICAgdG8gdGhlIG5vdGlmeSBoZWxwZXIgbWV0aG9kcyBsaXN0ZWQgYWJvdmUu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQp
OgorICAgICAgICBTaW1wbGlmeSBieSBtb3ZpbmcgY29kZSB0byBzZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcnMpOiBBZGQgY2hlY2sgZm9yCisgICAgICAgIG9taXRQcm9jZXNzU3Vw
cHJlc3Npb24oKSBhbmQgZml4IHR5cG9zLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp1
bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpOiBBZGQgbWV0aG9kIHRvIHVu
cmVnaXN0ZXIKKyAgICAgICAgb2NjbHVzaW9uIG5vdGlmaWNhdGlvbiBoYW5kbGVycyB3aGVuIG5v
IGNvbnRleHQgaGFzIHByb2Nlc3Mgc3VwcHJlc3Npb24gZW5hYmxlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6b21pdFByb2Nlc3NTdXBwcmVzc2lvbik6IEFkZCBtZXRob2QgdG8gc3Vw
cG9ydCBhIGludGVybmFsIHVzZXIgZGVmYXVsdAorICAgICAgICB0byBkaXNhYmxlIHByb2Nlc3Mg
c3VwcHJlc3Npb24sIG92ZXJyaWRpbmcgdGhlIGNvbnRleHQgc2V0dGluZ3MuCisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTAxLTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsIGJ1aWxkcyBvZiBO
ZXR3b3JrUHJvY2VzcyBzaG91bGQgaGF2ZSBhIHByb2Nlc3MgaWNvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCA0ODBlOWNjYjVlZTA3NWYxMzJi
Nzg3NTUzODQzYTE3ODU1ZmNlYWM0Li44MDBjZTkzNDBhZmExYWIzMDA5YWJjOTkzODM4MjQ2MDdk
NDQ0Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bQpAQCAtNjAsNiArNjAsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KCkKICAgICBzZXRwcmlvcml0eShQUklPX0RBUldJTl9QUk9DRVNTLCAwLCAwKTsKICAgICBpbml0
aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5KCk7CiAjZW5kaWYKKyAgICAvLyBTdGFydGluZyBh
cyB1bm9jY2x1ZGVkLiAgVGhlIHByb3h5IGZvciB0aGlzIHByb2Nlc3Mgd2lsbCBzZXQgdGhlIGFj
dHVhbCB2YWx1ZSBmcm9tIGRpZEZpbmlzaExhdW5jaGluZygpLgogICAgIHNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZChmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
MDhmODRhNTRjNTM1Y2UxNjlkNmY2ODU3ZWEwNTg3NTY4ZjZjZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
Y3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZU1hYy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCiti
b29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChjb250ZXh0UmVmKS0+cHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCgpOworfQorCit2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0
b0ltcGwoY29udGV4dFJlZiktPnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoZW5hYmxlZCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tD
b250ZXh0UHJpdmF0ZU1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1YWQ4MTNlNTNlZjE3NzE3NWI0NzU1MTdj
YzU3ZWQzYjhmMzFkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaApAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRQcml2YXRlTWFjX2gKKyNkZWZpbmUgV0tDb250ZXh0
UHJpdmF0ZU1hY19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBib29sIFdLQ29udGV4
dEdldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQpOworV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRl
eHRSZWYgY29udGV4dCwgYm9vbCBlbmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8qIFdLQ29udGV4dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDJjYjhjMmE2Yjk3ZjE0ODg5NGI0MzVkZTQz
NTZhZmE3OWMyYTI5ZDkuLmIxNzJlN2RjY2QyZDFmNDMyYzM5ZTQ0MmNjNDU5ZDBhY2ZiOTA4ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwNSw5ICsxMDUs
NiBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGluamVjdGVkQnVuZGxlUGF0aCkKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6
ZU1haW5SdW5Mb29wKCk7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFdlYkNvbnRleHQ6OmluaXRp
YWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkNvbnRleHQoUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcywg
aW5qZWN0ZWRCdW5kbGVQYXRoKSk7CiB9CiAKQEAgLTE0Myw2ICsxNDAsOSBAQCBXZWJDb250ZXh0
OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5q
ZWN0ZWRCdW5kbGVQYQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX3VzZXNO
ZXR3b3JrUHJvY2VzcyhmYWxzZSkKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1f
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChmYWxzZSkKKyNlbmRpZgogI2lmIFVTRShTT1VQKQog
ICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1ZSkKICNlbmRpZgpAQCAtMTgyLDYgKzE4MiwxMCBA
QCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0
IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogCiAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
cih0aGlzLCBsYW5ndWFnZUNoYW5nZWQpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlBbmRBbGxDb250ZXh0cygpOworI2VuZGlm
CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ2dpbmdDaGFu
bmVsc0lmTmVjZXNzYXJ5KCk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5l
Y2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZmM5M2Ew
OGI5OWQzNmYzMGU4YjRlMTIzNTRiYzVlYjRjYzhiMmY0ZS4uNGI3YWM3MjUyZDZmM2Y3NDY5MmI4
ZmM5YTQ1Y2NhYzJkNmJlNzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CkBAIC0yNzAsNiArMjcwLDggQEAgcHVibGljOgogCiAKICNpZiBQTEFURk9STShNQUMpCisgICAg
dm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOworICAgIGJvb2wgcHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHsgcmV0
dXJuIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOyB9CiAjZW5kaWYKIApAQCAtMzQzLDEwICszNDUs
MTcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgbm90aWZ5Q2hp
bGRQcm9jZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKKyAgICBzdGF0aWMgdm9p
ZCBub3RpZnlHbG9iYWxDaGlsZFByb2Nlc3Nlc09mQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgp
OworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlB
bmRBbGxDb250ZXh0cygpOworICAgIHN0YXRpYyB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWRGb3JBbnlDb250ZXh0KGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cyhib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25C
ZWNhbWVWaXNpYmxlKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7
CiAgICAgc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9p
ZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0KCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0
ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpOworICAgIHN0YXRpYyBib29sIG9taXRQ
cm9jZXNzU3VwcHJlc3Npb24oKTsKICAgICB2b2lkIHJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCk7CiAjZW5k
aWYKQEAgLTQ0OCw3ICs0NTcsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKIAogI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZDsKICAg
ICBzdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyAgICBzdGF0aWMgYm9vbCBz
X3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0OworICAgIHN0YXRpYyBib29s
IHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzOwogI2VuZGlmCiAKICNp
ZiBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1h
Yy5tbQppbmRleCBhMGM1N2MxM2I0N2M5YThjODUwNWRmNzhjZTZjMjM2NzM3MTQzMTk5Li44ZDRh
YzRkOTc5MzczZjhhNGIyMjhlMDZjNDlhNDQ5ODAwYmUyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02Myw2ICs2Myw4IEBAIE5TU3Ry
aW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0g
QCJXZWJLaXRTY2hlbWVGb3JDCiBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJl
Z2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bFVucmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7CiAKIGJvb2wgV2ViQ29udGV4dDo6c19hcHBsaWNh
dGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKK2Jvb2wgV2ViQ29udGV4dDo6c19wcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkRm9yQW55Q29udGV4dCA9IGZhbHNlOworYm9vbCBXZWJDb250ZXh0OjpzX3By
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IGZhbHNlOwogCiBzdGF0aWMg
dm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKIHsKQEAgLTI5MSw4MCArMjkzLDE1
MiBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQog
Ci12b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9p
ZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit2b2lkIFdlYkNvbnRleHQ6Om5vdGlmeUNo
aWxkUHJvY2Vzc2VzT2ZBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBpZiAoc19h
cHBsaWNhdGlvbklzT2NjbHVkZWQpIHsKLSAgICAgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQg
PSBmYWxzZTsKLQotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9
IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBj
b3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICBib29sIGlzT2Nj
bHVkZWQgPSBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgJiYgc19hcHBsaWNhdGlvbklzT2Nj
bHVkZWQ7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgICAgIGlmIChjb250
ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9j
ZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCktPnNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2Vz
cygpICYmIG5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNldEFw
cGxpY2F0aW9uSXNPY2NsdWRlZChpc09jY2x1ZGVkKTsKICNlbmRpZgorICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGlz
T2NjbHVkZWQpKTsKK30KIAotICAgICAgICAgICAgY29udGV4dHNbaV0tPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGZhbHNl
KSk7Ci0gICAgICAgIH0KLQordm9pZCBXZWJDb250ZXh0Ojpub3RpZnlHbG9iYWxDaGlsZFByb2Nl
c3Nlc09mQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpCit7CisjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKSB8fCBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgIGJvb2wgaXNPY2Ns
dWRlZCA9IHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzICYmIHNfYXBw
bGljYXRpb25Jc09jY2x1ZGVkOworI2VuZGlmCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQot
ICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkKGZhbHNlKTsKKyAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkKGlzT2NjbHVkZWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQVJF
RF9XT1JLRVJfUFJPQ0VTUykKLSAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNo
YXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CisgICAgU2hhcmVkV29ya2Vy
UHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChpc09jY2x1
ZGVkKTsKICNlbmRpZgotICAgIH0KIH0KIAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkK
K3ZvaWQgV2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpCiB7Ci0gICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewotICAgICAgICBzX2Fw
cGxpY2F0aW9uSXNPY2NsdWRlZCA9IHRydWU7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkg
ewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBpZiAoY29udGV4dHNb
aV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2Vzcygp
KQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2VzcygpLT5zZXRBcHBs
aWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7Ci0jZW5kaWYKLQotICAgICAgICAgICAgY29udGV4dHNb
aV0tPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkKHRydWUpKTsKLSAgICAgICAgfQorICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQotICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0
QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJfUFJPQ0VTUykKLSAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6OnNoYXJl
ZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgorICAgIG1fcHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgLy8gSWYgdGhlIGFwcGxpY2F0aW9u
IGlzIGN1cnJlbnRseSBvY2NsdWRlZCwgdGhlbiBub3RpZnkgY2hpbGQgcHJvY2Vzc2VzLgorICAg
IC8vIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCwgd2hlbiBlbmFibGluZyBwcm9jZXNzIHN1cHByZXNz
aW9uLCB0aGUgcHJvY2Vzc2VzCisgICAgLy8gc2V0IHRoZW1zZWx2ZXMgYXMgb2NjbHVkZWQgYW5k
IGJlY29tZSBlbGlnaWJsZSBmb3Igc3VwcHJlc3Npb24gYW5kIHdoZW4gZGlzYWJsaW5nCisgICAg
Ly8gcHJvY2VzcyBzdXBwcmVzc2lvbiwgdGhleSBzZXQgdGhlbXNlbHZlcyBhcyB1bm9jY2x1ZGVk
IGFuZCBiZWNvbWUgdW5zdXBwcmVzc2VkLgorICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRl
ZCkKKyAgICAgICAgbm90aWZ5Q2hpbGRQcm9jZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3Rh
dGUoKTsKKyAgICB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55QW5kQWxsQ29u
dGV4dHMoKTsKK30KKwordm9pZCBXZWJDb250ZXh0Ojp1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkRm9yQW55QW5kQWxsQ29udGV4dHMoKQoreworICAgIGJvb2wgbmV3UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZEZvckFueUNvbnRleHQgPSBmYWxzZTsKKyAgICBib29sIG5ld1Byb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7CisgICAgY29uc3QgVmVjdG9y
PFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyAr
K2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KCkpCisgICAgICAgICAgICBuZXdQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4
dCA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld1Byb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IGZhbHNlOworCisgICAgICAgIGlmIChuZXdQcm9jZXNz
U3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCAmJiAhbmV3UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZEZvckFsbENvbnRleHRzKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIHNl
dFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0KG5ld1Byb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0KTsKKyAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkRm9yQWxsQ29udGV4dHMobmV3UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRl
eHRzKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydCgpCit2b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRG
b3JBbnlDb250ZXh0KGJvb2wgZW5hYmxlZCkKIHsKLSAgICBzdGF0aWMgYm9vbCBkaWRJbml0aWFs
aXplID0gZmFsc2U7Ci0gICAgaWYgKGRpZEluaXRpYWxpemUpCisgICAgaWYgKHNfcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZEZvckFueUNvbnRleHQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZGlkSW5pdGlhbGl6ZSA9IHRydWU7Ci0gICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVs
dCB1bnRpbCBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hp
Y2ggcG9pbnQgYSBjb250ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCi0gICAgLy8g
aW50ZXJwcmV0YXRpb24gdGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVz
c2lvbiBkaXNhYmxlcyBpdCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJv
Y2Vzc2VzLgotICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJv
Y2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQiXTsKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydEVuYWJsZWQpCisgICAgc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55
Q29udGV4dCA9IGVuYWJsZWQ7CisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZv
ckFueUNvbnRleHQpCiAgICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMoKTsKKyAgICBlbHNlCisgICAgICAgIHVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVycygpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWRGb3JBbGxDb250ZXh0cyhib29sIGVuYWJsZWQpCit7CisgICAgaWYgKHNfcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzID09IGVuYWJsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzID0gZW5h
YmxlZDsKKyAgICAvLyBJZiB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IG9jY2x1ZGVkLCB0
aGVuIG5vdGlmeSBnbG9iYWwgY2hpbGQgcHJvY2Vzc2VzLgorICAgIC8vIFRoaXMgd2lsbCBlbnN1
cmUgdGhhdCwgd2hlbiBlbmFibGluZyBwcm9jZXNzIHN1cHByZXNzaW9uLCB0aGUgcHJvY2Vzc2Vz
CisgICAgLy8gc2V0IHRoZW1zZWx2ZXMgYXMgb2NjbHVkZWQgYW5kIGJlY29tZSBlbGlnaWJsZSBm
b3Igc3VwcHJlc3Npb24gYW5kIHdoZW4gZGlzYWJsaW5nCisgICAgLy8gcHJvY2VzcyBzdXBwcmVz
c2lvbiwgdGhleSBzZXQgdGhlbXNlbHZlcyBhcyB1bm9jY2x1ZGVkIGFuZCBiZWNvbWUgdW5zdXBw
cmVzc2VkLgorICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgbm90aWZ5
R2xvYmFsQ2hpbGRQcm9jZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKK30KKwor
dm9pZCBXZWJDb250ZXh0OjpzZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoYm9vbCBvY2NsdWRlZCkK
K3sKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPT0gb2NjbHVkZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gb2NjbHVkZWQ7CisgICAg
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250
ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsg
aSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKCkpCisgICAgICAgICAgICBjb250ZXh0c1tpXS0+bm90aWZ5Q2hpbGRQcm9j
ZXNzZXNPZkFwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKKyAgICB9CisKKyAgICBpZiAoc19w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMpCisgICAgICAgIG5vdGlmeUds
b2JhbENoaWxkUHJvY2Vzc2VzT2ZBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7Cit9CisKK3Zv
aWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBzZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQoZmFsc2UpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVk
ZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQoreworICAgIHNl
dEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpyZWdp
c3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKIHsKKyAgICBpZiAob21pdFByb2Nl
c3NTdXBwcmVzc2lvbigpKQorICAgICAgICByZXR1cm47CisKICNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVj
YW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkgewotICAgICAgICBXVEZMb2dB
bHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRp
b24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RyYXRp
b24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVy
IGZhaWxlZC5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFXS1JlZ2lz
dGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5
cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RlcmF0aW9uIG9mIFwiQXBwIEJlY2FtZSBPY2Ns
dWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICBXVEZMb2dB
bHdheXMoIlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZFwiIG5v
dGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOwogI2VuZGlmCiB9CisKK3ZvaWQgV2ViQ29u
dGV4dDo6dW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyAgICBp
ZiAob21pdFByb2Nlc3NTdXBwcmVzc2lvbigpKQorICAgICAgICByZXR1cm47CisKKyNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoIVdLVW5yZWdpc3Rl
ck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBl
QXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpIHsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJVbnJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJl
Y2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIAorICAgIGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90
aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpKQorICAgICAgICBXVEZMb2dB
bHdheXMoIlVucmVnaXN0cmF0aW9uIG9mIFwiQXBwbGljYXRpb24gQmVjYW1lIFZpc2libGVcIiBu
b3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQorCitib29sIFdlYkNv
bnRleHQ6Om9taXRQcm9jZXNzU3VwcHJlc3Npb24oKQoreworICAgIHN0YXRpYyBib29sIHJlc3Vs
dCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJX
ZWJLaXQyT21pdFByb2Nlc3NTdXBwcmVzc2lvbiJdOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IHZvaWQgV2ViQ29udGV4dDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKQogewogICAg
IG1fY3VzdG9tU2NoZW1lUmVnaXN0ZXJlZE9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6V2ViS2l0OjpTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6W05T
T3BlcmF0aW9uUXVldWUgY3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24g
Km5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGIyMTIyMzAzOGQ4Zjk0OTYzOWE5MTk0OTQ0MTQ1NWY5MzQw
ZTkxODQuLjcyMjMzMTgzNzc1ZGI3NWVjOTVkZDFlN2E3Zjk0ZWI4NjgzYjkyNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2
Niw2ICs1NjYsOCBAQAogCQk5RjRGNTk0NDE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1hYy5tbSAqLzsgfTsKIAkJOUY1NEY4OEYxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi87IH07CiAJ
CTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0
OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKKwkJOUZC
NUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAw
MkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovOyB9OworCQk5RkI1RjM5NTE2OUU2
QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdL
Q29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCNjJFNzMxMDE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3
MzBGMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQlCNjJF
NzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJFNzMxMTE0MzA0N0IwMDA2OUVDMzUg
LyogV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjYzNDAzRjkxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjM0MDNGODE0
OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE4NDcsNiArMTg0OSw4
IEBACiAJCTlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlG
NTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Q
cm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFj
LmNwcDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0
ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM5NkVBNTUx
MkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjYyRTczMEYxNDMw
NDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0hpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzM0Niw2ICszMzUwLDggQEAKIAkJNkVFODQ5QzQxMzY4RDkwNDAwMzhENDgx
IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
OUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwICovLAor
CQkJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi8s
CiAJCQkJNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
ICovLAogCQkJCUJDRTE3QjdCMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmNw
cCAqLywKIAkJCQlCQ0UxN0I3QzEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5o
ICovLApAQCAtNDk3Nyw2ICs0OTgzLDcgQEAKIAkJCQk1MUE1NTVGNjEyOEM2QzQ3MDA5QUJDRUMg
LyogV0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTU1NjAxMTI4QzZE
OTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0M5MzhFMTExODBERTQ0MDA4NUU1RkUgLyogV0tDb250ZXh0UHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDVCMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nv
b2tpZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1OEZBMTJBODhBNTQwMDYyOTUz
MCAvKiBXS0NyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEFDRjExMTJCMDE1Rjgw
MEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTc1LDYg
KzU5ODIsNyBAQAogCQkJCUJDNEE2Mjk2MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25S
ZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCOUUyNEMxMTIwRTE1QzAwQTEzN0UwIC8qIFdL
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE1NTVGNTEyOEM2QzQ3MDA5QUJDRUMg
LyogV0tDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUZCNUYzOTQxNjlF
NkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzMwOTM0NUExMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTJGNThGOTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY3MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182682</attachid>
            <date>2013-01-14 19:17:50 -0800</date>
            <delta_ts>2013-01-15 18:28:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130114191450.patch</filename>
            <type>text/plain</type>
            <size>26186</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uODAxM2VmMjc5NDQ4OWNhOTg5ZGFkZmFlMTgwMzJi
NDc5MGVjNzNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAxLTE0ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEdyb3VuZHdvcmsgdG8g
ZW5hYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gYnkgZGVmYXVsdCBvbiBNYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3Mgc3VwcHJlc3Npb24g
aGFzIHNvIGZhciBiZWVuIGNvbnRyb2xsZWQgYnkgYSB1c2VyIGRlZmF1bHQgYW5kCisgICAgICAg
IGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBncm91bmR3b3Jr
IHRvIGVuYWJsZSBpdCBieQorICAgICAgICBkZWZhdWx0IGFuZCBhZGRzIGEgcHJpdmF0ZSBBUEkg
dG8gZW5hYmxlL2Rpc2FibGUgaXQgb24gYSBwZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IEFkZCBjb21tZW50IGFib3V0Cisg
ICAgICAgIGluaXRpbGl6YXRpb24gb2YgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAg
ICAgIChXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgQWRk
IHByaXZhdGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gb24gYSBw
ZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGUpOiBSZW1vdmUg
Y2FsbCB0bworICAgICAgICBpbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCwgc2lu
Y2UgcGxhdGZvcm1Jbml0aWFsaXplIGhhcyBiZWVuCisgICAgICAgIG1vZGlmaWVkIHRvIHBlcmZv
cm0gaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRl
eHQpOiBJbml0aWFsaXplIG5ldyBtZW1iZXIgdmFyaWFibGUKKyAgICAgICAgbV9wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkIHRvIGZhbHNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQpOiBSZW1vdmUgIlN1cHBvcnQiCisgICAgICAgIGZyb20gdGhlIG1ldGhvZCBuYW1lLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yQ2hpbGRQcm9jZXNzZXNJbkNvbnRleHQpOiBIZWxw
ZXIKKyAgICAgICAgbWV0aG9kIHRvIHNlbmQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkIG1lc3Nh
Z2UgdG8gdGhlIGNvbnRleHQncyB3ZWIKKyAgICAgICAgcHJvY2Vzc2VzIGFuZCBuZXR3b3JrIHBy
b2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2Jh
bENoaWxkUHJvY2Vzc2VzKTogRGl0dG8gZm9yCisgICAgICAgIHRoZSBnbG9iYWwgcGx1Z2luIGFu
ZCBzaGFyZWQgd29ya2VyIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
YXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCk6CisgICAgICAgIFNpbXBsaWZ5IGJ5IG1vdmluZyBj
b2RlIHRvIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6c2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKTogU2ltcGxpZnkgYnkgbW92aW5nCisgICAg
ICAgIG1lc3NhZ2luZyBjb2RlIHRvIHRoZSB0d28gaGVscGVyIG1ldGhvZHMgbGlzdGVkIGFib3Zl
LgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXJzKTogRml4IHR5cG9zLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp1
bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpOiBBZGQKKyAgICAgICAgbWV0
aG9kIHRvIHVucmVnaXN0ZXIgb2NjbHVzaW9uIG5vdGlmaWNhdGlvbiBoYW5kbGVycyB3aGVuIG5v
IGNvbnRleHQKKyAgICAgICAgaGFzIHByb2Nlc3Mgc3VwcHJlc3Npb24gZW5hYmxlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFu
eUNvbnRleHQpOgorICAgICAgICBSZWdpc3RlciBvciB1bnJlZ2lzdGVyIG9jY2x1c2lvbiBub3Rp
ZmljYXRpb24gaGFuZGxlcnMgYmFzZWQgb24gd2hldGhlcgorICAgICAgICBhbnkgY29udGV4dCBo
YXMgcHJvY2VzcyBzdXBwcmVzc2lvbiBlbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMpOiBOb3RpZnkK
KyAgICAgICAgZ2xvYmFsIGNoaWxkIHByb2Nlc3NlcyBvZiBhcHBsaWNhdGlvbiBvY2NsdXNpb24g
c3RhdGUgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViS2l0Ojppc1Byb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWRGb3JBbnlDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6aXNQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBTZXQgbmV3IHZhbHVlcyBmb3IgcHJvY2VzcworICAgICAg
ICBzdXBwcmVzc2lvbiBiZWluZyBlbmFibGVkIGZvciBhbnkgYW5kIGFsbCBjb250ZXh0cyBiYXNl
ZCBvbiB0aGUKKyAgICAgICAgaW5pdGlhbGl6ZWQgdmFsdWUgb2YgY3VycmVudCBjb250ZXh0Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKTog
Tm90aWZ5IGNoaWxkCisgICAgICAgIHByb2Nlc3NlcyBvZiBhcHBsaWNhdGlvbiBvY2NsdXNpb24g
c3RhdGUgaWYgbmVjZXNzYXJ5IGFuZCByZWNvbXB1dGUgaWYKKyAgICAgICAgcHJvY2VzcyBzdXBw
cmVzc2lvbiBpcyBlbmFibGVkIGZvciBhbnkgYW5kIGFsbCBjb250ZXh0cy4KKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMDEtMDkgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTG9jYWwgYnVpbGRzIG9mIE5l
dHdvcmtQcm9jZXNzIHNob3VsZCBoYXZlIGEgcHJvY2VzcyBpY29uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDQ4MGU5Y2NiNWVlMDc1ZjEzMmI3
ODc1NTM4NDNhMTc4NTVmY2VhYzQuLjgwMGNlOTM0MGFmYTFhYjMwMDlhYmM5OTM4MzgyNDYwN2Q0
NDRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
CkBAIC02MCw2ICs2MCw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUo
KQogICAgIHNldHByaW9yaXR5KFBSSU9fREFSV0lOX1BST0NFU1MsIDAsIDApOwogICAgIGluaXRp
YWxpemVUaW1lckNvYWxlc2NpbmdQb2xpY3koKTsKICNlbmRpZgorICAgIC8vIFN0YXJ0aW5nIGFz
IHVub2NjbHVkZWQuICBUaGUgcHJveHkgZm9yIHRoaXMgcHJvY2VzcyB3aWxsIHNldCB0aGUgYWN0
dWFsIHZhbHVlIGZyb20gZGlkRmluaXNoTGF1bmNoaW5nKCkuCiAgICAgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Qw
OGY4NGE1NGM1MzVjZTE2OWQ2ZjY4NTdlYTA1ODc1NjhmNmNkZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5j
cHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
KyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2Jv
b2wgV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbnRleHRSZWYpLT5wcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRv
SW1wbChjb250ZXh0UmVmKS0+c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChlbmFibGVkKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVhZDgxM2U1M2VmMTc3MTc1YjQ3NTUxN2Nj
NTdlZDNiOGYzMWRiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdLQ29udGV4dFByaXZhdGVNYWNfaAorI2RlZmluZSBXS0NvbnRleHRQ
cml2YXRlTWFjX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0
R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCk7CitXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBib29sIGVuYWJsZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgorCisjZW5kaWYgLyogV0tDb250ZXh0UHJpdmF0ZU1hY19oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMmNiOGMyYTZiOTdmMTQ4ODk0YjQzNWRlNDM1
NmFmYTc5YzJhMjlkOS4uM2I3NGY3OTkzNDEyODNlYTgwZjdjYTgxOTY2ZmI4NmQyYzBhYWJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTA1LDkgKzEwNSw2
IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXpl
TWFpblJ1bkxvb3AoKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgV2ViQ29udGV4dDo6aW5pdGlh
bGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKTsKLSNlbmRpZgogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViQ29udGV4dChQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzLCBp
bmplY3RlZEJ1bmRsZVBhdGgpKTsKIH0KIApAQCAtMTQzLDYgKzE0MCw5IEBAIFdlYkNvbnRleHQ6
OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBpbmpl
Y3RlZEJ1bmRsZVBhCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAsIG1fdXNlc05l
dHdvcmtQcm9jZXNzKGZhbHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGZhbHNlKQorI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAg
ICAgLCBtX2lnbm9yZVRMU0Vycm9ycyh0cnVlKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAppbmRleCBmYzkzYTA4Yjk5ZDM2ZjMwZThiNGUxMjM1NGJjNWViNGNjOGIy
ZjRlLi4yMGU1ODMyYTRlODA0MmEyMTA4Y2RmYmYwMjQ2ZmE3MzA3ODZjZTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI3MCw3ICsyNzAsOSBAQCBwdWJsaWM6CiAK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVk
ZWQoKSB7IHJldHVybiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsgfQorICAgIHZvaWQgc2V0UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKKyAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7IH0K
KyAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbklzT2NjbHVkZWQoKTsKICNlbmRpZgogCiAgICAg
c3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKQEAgLTM0MywxMCAr
MzQ1LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyB2b2lk
IGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lk
KiwgdWludDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQo
dWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCgpOwotICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIHJl
Z2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm90aWZp
Y2F0aW9uT2JzZXJ2ZXJzKCk7CiAjZW5kaWYKQEAgLTQ0OCw3ICs0NDYsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+ID4gbV9kaWN0
aW9uYXJ5Q2FsbGJhY2tzOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBib29sIHNf
YXBwbGljYXRpb25Jc09jY2x1ZGVkOworICAgIGJvb2wgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkOwogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCBhMGM1N2MxM2I0N2M5YThjODUwNWRmNzhjZTZj
MjM2NzM3MTQzMTk5Li42MmEyMTBjNjE0NDE2NzRlYjE1OThmZjAzNGRlNjQ2YmExODM0NTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02
Miw3ICs2Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogTlNTdHJpbmcgKlNjaGVtZUZvckN1c3Rv
bVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1
c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7CiBOU1N0cmluZyAqU2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7CiAKLWJvb2wgV2Vi
Q29udGV4dDo6c19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNf
YXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzX3Byb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzX3Byb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cyA9IHRydWU7IC8vIEluaXRpYWxpemlu
ZyB0byB0cnVlIHNpbXBsaWZpZXMgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplLgogCiBz
dGF0aWMgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKIHsKQEAgLTgwLDEwICs4
MiwxNDggQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpy
ZWdpc3RyYXRpb25EaWN0aW9uYXJ5XTsKIH0KIAorc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkRm9yQ2hpbGRQcm9jZXNzZXNJbkNvbnRleHQoYm9vbCBpc09jY2x1ZGVkLCBXZWJD
b250ZXh0KiBjb250ZXh0KQoreworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgaWYg
KGNvbnRleHQtPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHQtPm5ldHdvcmtQcm9jZXNz
KCkpCisgICAgICAgIGNvbnRleHQtPm5ldHdvcmtQcm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNP
Y2NsdWRlZChpc09jY2x1ZGVkKTsKKyNlbmRpZgorICAgIGNvbnRleHQtPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGlzT2Nj
bHVkZWQpKTsKK30KKworc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xv
YmFsQ2hpbGRQcm9jZXNzZXMoYm9vbCBpc09jY2x1ZGVkKQoreworICAgIC8vIFRoZSBwbGFuIGlz
IHRvIGhhdmUgYWxsIGNoaWxkIHByb2Nlc3NlcyBiZWNvbWUgY29udGV4dCBzcGVjaWZpYy4gIFRo
aXMgZnVuY3Rpb24KKyAgICAvLyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoYXQgaXMgY29tcGxldGUu
CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpz
aGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoaXNPY2NsdWRlZCk7CisjZW5kaWYKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgIFNoYXJlZFdvcmtlclByb2Nlc3NN
YW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoaXNPY2NsdWRlZCk7Cisj
ZW5kaWYKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKSAmJiAhRU5BQkxFKFNIQVJFRF9XT1JL
RVJfUFJPQ0VTUykKKyAgICBVTlVTRURfUEFSQU0oaXNPY2NsdWRlZCk7CisjZW5kaWYKK30KKwor
c3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wgaXNPY2NsdWRlZCkKK3sK
KyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPT0gaXNPY2NsdWRlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBpc09jY2x1ZGVkOworICAg
IGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29u
dGV4dHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7
IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9y
Q2hpbGRQcm9jZXNzZXNJbkNvbnRleHQoaXNPY2NsdWRlZCwgY29udGV4dHNbaV0pOworICAgIH0K
KworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cykKKyAg
ICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoaXNP
Y2NsdWRlZCk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50
MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7CisgICAgc2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKK30KKworc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNh
bWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit7
CisgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOworfQorCitzdGF0aWMgdm9pZCBy
ZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0
aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxlKSkgeworICAgICAgICBX
VEZMb2dBbHdheXMoIlJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxl
XCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBh
cHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3Ry
YXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFu
ZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2Ft
ZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkgeworICAgICAgICBXVEZMb2dB
bHdheXMoIlVucmVnaXN0cmF0aW9uIG9mIFwiQXBwbGljYXRpb24gQmVjYW1lIE9jY2x1ZGVkXCIg
bm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaWYgKCFXS1VucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
KFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFw
cGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5yZWdpc3Ry
YXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5k
bGVyIGZhaWxlZC5cbiIpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHNldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoc19w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQW55Q29udGV4dCA9PSBlbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0
ID0gZW5hYmxlZDsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRPbWl0UHJvY2Vzc1N1cHByZXNzaW9u
ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldl
YktpdDJPbWl0UHJvY2Vzc1N1cHByZXNzaW9uIl07CisgICAgaWYgKHNob3VsZE9taXRQcm9jZXNz
U3VwcHJlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0KQorICAgICAgICByZWdpc3Rlck9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXJzKCk7CisgICAgZWxzZQorICAgICAgICB1bnJlZ2lzdGVyT2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKK30KKworc3RhdGljIHZvaWQgc2V0UHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoc19w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4dHMgPT0gZW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yQWxsQ29udGV4
dHMgPSBlbmFibGVkOworCisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFs
bENvbnRleHRzKSB7CisgICAgICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAg
ICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2JhbENoaWxkUHJvY2Vzc2VzKHRy
dWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkK
KyAgICAgICAgICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZEZvckdsb2JhbENoaWxkUHJvY2Vz
c2VzKGZhbHNlKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzUHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZEZvckFueUNvbnRleHQoKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAg
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250
ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsg
aSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRzW2ldLT5wcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0
aWMgYm9vbCBpc1Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JBbGxDb250ZXh0cygpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSB0cnVlOworICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNv
bnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlm
ICghY29udGV4dHNbaV0tPnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkgeworICAgICAgICAg
ICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCiB7CiAgICAgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogICAgIHJlZ2lz
dGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCk7CisgICAgaWYgKG1fcHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCkKKyAgICAgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFueUNvbnRl
eHQodHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
Rm9yQWxsQ29udGV4dHMoZmFsc2UpOwogfQogCiBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCkBAIC0yOTEsODAgKzQzMSwzMCBAQCB2b2lkIFdlYkNvbnRleHQ6
OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmFw
cGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpCitib29sIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpCiB7Ci0g
ICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7Ci0gICAgICAgIHNfYXBwbGljYXRpb25J
c09jY2x1ZGVkID0gZmFsc2U7Ci0KLSAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYg
Y29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7Ci0jaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgICAgIGlmIChjb250ZXh0c1tpXS0+dXNl
c05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAg
ICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCktPnNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZChmYWxzZSk7Ci0jZW5kaWYKLQotICAgICAgICAgICAgY29udGV4dHNbaV0tPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkKGZhbHNlKSk7Ci0gICAgICAgIH0KLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
LSAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNP
Y2NsdWRlZChmYWxzZSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNT
KQotICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKLSNlbmRpZgotICAgIH0KKyAgICByZXR1cm4gc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQ7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6YXBwbGljYXRpb25CZWNh
bWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QpCit2
b2lkIFdlYkNvbnRleHQ6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBlbmFibGVk
KQogewotICAgIGlmICghc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpIHsKLSAgICAgICAgc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQgPSB0cnVlOwotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICAgICAgaWYgKGNvbnRleHRzW2ld
LT51c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKSkK
LSAgICAgICAgICAgICAgICBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKS0+c2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCi0KLSAgICAgICAgICAgIGNvbnRleHRzW2ld
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZCh0cnVlKSk7Ci0gICAgICAgIH0KLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLSAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9u
SXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NF
U1MpCi0gICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBs
aWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KLXZvaWQgV2ViQ29u
dGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnQoKQotewotICAgIHN0YXRp
YyBib29sIGRpZEluaXRpYWxpemUgPSBmYWxzZTsKLSAgICBpZiAoZGlkSW5pdGlhbGl6ZSkKKyAg
ICBpZiAobV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkID09IGVuYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGRpZEluaXRpYWxpemUgPSB0cnVlOwotICAgIC8vIEEgdGVtcG9yYXJ5IGRl
ZmF1bHQgdW50aWwgcHJvY2VzcyBzdXBwcmVzc2lvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGF0
IHdoaWNoIHBvaW50IGEgY29udGV4dCBzZXR0aW5nIGNhbiBiZSBhZGRlZCB3aXRoIHRoZQotICAg
IC8vIGludGVycHJldGF0aW9uIHRoYXQgYW55IGNvbnRleHQgZGlzYWJsaW5nIHByb2Nlc3Mgc3Vw
cHJlc3Npb24gZGlzYWJsZXMgaXQgZm9yIHBsdWdpbi9uZXR3b3JrIGFuZCBzaGFyZWQgd29ya2Vy
IHByb2Nlc3Nlcy4KLSAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkID0g
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktp
dFByb2Nlc3NTdXBwcmVzc2lvblN1cHBvcnRFbmFibGVkIl07Ci0gICAgaWYgKHByb2Nlc3NTdXBw
cmVzc2lvblN1cHBvcnRFbmFibGVkKQotICAgICAgICByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNh
dGlvbkhhbmRsZXJzKCk7Ci19CisgICAgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkID0gZW5h
YmxlZDsKIAotdm9pZCBXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKCkKLXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
LSAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVz
aW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25C
ZWNhbWVWaXNpYmxlKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2Yg
XCJBcHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsK
LSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpIHsK
KyAgICAgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICAgICAgc2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkRm9yQ2hpbGRQcm9jZXNzZXNJbkNvbnRleHQodHJ1ZSwgdGhpcyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAg
ICAgICAgICAgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkRm9yQ2hpbGRQcm9jZXNzZXNJbkNvbnRl
eHQoZmFsc2UsIHRoaXMpOwogICAgIH0KIAotICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25C
ZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpCi0gICAgICAgIFdURkxv
Z0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmlj
YXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKLSNlbmRpZgorICAgIHNldFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWRGb3JBbnlDb250ZXh0KGlzUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFu
eUNvbnRleHQoKSk7CisgICAgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRl
eHRzKGlzUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckFsbENvbnRleHRzKCkpOwogfQotICAg
IAorCiB2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKIHsK
ICAgICBtX2N1c3RvbVNjaGVtZVJlZ2lzdGVyZWRPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOldlYktpdDo6U2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsIHF1ZXVl
OltOU09wZXJhdGlvblF1ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjEyMjMwMzhkOGY5NDk2MzlhOTE5NDk0NDE0NTVm
OTM0MGU5MTg0Li43MjIzMzE4Mzc3NWRiNzVlYzk1ZGQxZTdhN2Y5NGViODY4M2I5MjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NjYsNiArNTY2LDggQEAKIAkJOUY0RjU5NDQxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHlNYWMubW0gKi87IH07CiAJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGls
ZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9
OwogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5
NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CisJ
CTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkyMTY5RTZB
ODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAqLzsgfTsKKwkJOUZCNUYzOTUx
NjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAv
KiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJ
QjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlF
QzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAz
RjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBAIC0xODQ3LDYgKzE4
NDksOCBAQAogCQk5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9jZXNzTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1
Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0
ZU1hYy5jcHA7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQ
cml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4dFBy
aXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOTZF
QTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2MkU3MzBG
MTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMzNDYsNiArMzM1MCw4IEBACiAJCTZFRTg0OUM0MTM2OEQ5MDQwMDM4
RDQ4MSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAq
LywKKwkJCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5o
ICovLAogCQkJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVN
YWMuaCAqLywKIAkJCQlCQ0UxN0I3QjEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1h
Yy5jcHAgKi8sCiAJCQkJQkNFMTdCN0MxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVN
YWMuaCAqLywKQEAgLTQ5NzcsNiArNDk4Myw3IEBACiAJCQkJNTFBNTU1RjYxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE1NTYwMTEy
OEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNDOTM4RTExMTgwREU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2
YXRlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1QjEzMTVCOTk4MDA5N0E3QkMgLyog
V0tDb29raWVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGQTEyQTg4QTU0MDA2
Mjk1MzAgLyogV0tDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThBQ0YxMTEyQjAx
NUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk3
NSw2ICs1OTgyLDcgQEAKIAkJCQlCQzRBNjI5NjE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0
aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjlFMjRDMTEyMEUxNUMwMEExMzdFMCAv
KiBXS0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNTU1RjUxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGQjVGMzk0
MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMzMDkzNDVBMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4RjkxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlh
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGNzEyNEZGMDI3MDA2OEYyMEEgLyogV0tE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182894</attachid>
            <date>2013-01-15 18:28:27 -0800</date>
            <delta_ts>2013-01-15 19:20:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130115182530.patch</filename>
            <type>text/plain</type>
            <size>26414</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGYyZmI1NzBmYzc1YmQ0
YWVjODI0Y2Q2ZGQyZWEyYTkyYzc2ZTgzYS4uZTM0MDFhMzk5NTNhNGE3NGU1NjljMzEyOTVkNzg1
ZjdkZmRhNzNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTE1ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEdyb3VuZHdvcmsgdG8g
ZW5hYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gYnkgZGVmYXVsdCBvbiBNYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3Mgc3VwcHJlc3Npb24g
aGFzIHNvIGZhciBiZWVuIGNvbnRyb2xsZWQgYnkgYSB1c2VyIGRlZmF1bHQgYW5kCisgICAgICAg
IGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBncm91bmR3b3Jr
IHRvIGVuYWJsZSBpdCBieQorICAgICAgICBkZWZhdWx0IGFuZCBhZGRzIGEgcHJpdmF0ZSBBUEkg
dG8gZW5hYmxlL2Rpc2FibGUgaXQgb24gYSBwZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IEFkZCBjb21tZW50IGFib3V0Cisg
ICAgICAgIGluaXRpbGl6YXRpb24gb2YgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAg
ICAgIChXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgQWRk
IHByaXZhdGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gb24gYSBw
ZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGUpOiBSZW1vdmUg
Y2FsbCB0bworICAgICAgICBpbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCwgc2lu
Y2UgcGxhdGZvcm1Jbml0aWFsaXplIGhhcyBiZWVuCisgICAgICAgIG1vZGlmaWVkIHRvIHBlcmZv
cm0gaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRl
eHQpOiBJbml0aWFsaXplIG5ldyBtZW1iZXIgdmFyaWFibGUKKyAgICAgICAgbV9wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkIHRvIGZhbHNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQpOiBSZW1vdmUgIlN1cHBvcnQiCisgICAgICAgIGZyb20gdGhlIG1ldGhvZCBuYW1lLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
dXBkYXRlR2xvYmFsQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6YXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQpOiBVcGRhdGUg
dGhlIGFwcGxpY2F0aW9uCisgICAgICAgIG9jY2x1c2lvbiBzdGF0ZSBvZiBjaGlsZCBwcm9jZXNz
ZXMgaGF2aW5nIHByb2Nlc3Mgc3VwcHJlc2lvbiBlbmFibGVkLgorICAgICAgICAoV2ViS2l0Ojph
cHBsaWNhdGlvbkJlY2FtZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjphcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkKToKKyAgICAgICAgU2ltcGxpZnkgYnkgbW92aW5nIGNvZGUgdG8gYXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpOiBGaXggdHlwb3MuCisgICAgICAgIChXZWJLaXQ6
OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEFkZAorICAgICAgICBt
ZXRob2QgdG8gdW5yZWdpc3RlciBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzIHdoZW4g
bm8gY29udGV4dAorICAgICAgICBoYXMgcHJvY2VzcyBzdXBwcmVzc2lvbiBlbmFibGVkLgorICAg
ICAgICAoV2ViS2l0OjplbmFibGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6ZGlzYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0Ojpl
bmFibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk6CisgICAgICAg
IChXZWJLaXQ6OmRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3Nl
cyk6CisgICAgICAgIChXZWJLaXQ6OnByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFueUNv
bnRleHQpOgorICAgICAgICAoV2ViS2l0Ojpwcm9jZXNzU3VwcHJlc3Npb25Jc0VuYWJsZWRGb3JB
bGxDb250ZXh0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZSk6IERpc2FibGUgcHJvY2VzcyBzdXBwcmVzc2lvbgorICAgICAgICBmb3IgZ2xvYmFsIGNo
aWxkIHByb2Nlc3NlcyBzaW5jZSBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGRpc2FibGVkIGZvciBh
CisgICAgICAgIGNvbnRleHQgb24gY29uc3RydWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENoYW5nZWQpOiBVcGRhdGUgY2hpbGQK
KyAgICAgICAgcHJvY2Vzc2VzIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0ZSwgZW5hYmxlL2Rp
c2FibGUgb2NjbHVzaW9uCisgICAgICAgIG5vdGlmaWNhdGlvbnMgYW5kIGVuYWJsZS9kaXNhYmxl
IHByb2Nlc3Mgc3VwcHJlc3Npb24gZm9yIGdsb2JhbCBjaGlsZAorICAgICAgICBwcm9jZXNzZXMu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnVwZGF0ZUNoaWxkUHJvY2Vzc2VzQXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDEzLTAxLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIExvY2FsIGJ1aWxkcyBvZiBOZXR3b3JrUHJvY2VzcyBzaG91bGQgaGF2
ZSBhIHByb2Nlc3MgaWNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
aGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbQppbmRleCA0ODBlOWNjYjVlZTA3NWYxMzJiNzg3NTUzODQzYTE3ODU1ZmNlYWM0Li44
MDBjZTkzNDBhZmExYWIzMDA5YWJjOTkzODM4MjQ2MDdkNDQ0Y2Q4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtNjAsNiArNjAsNyBAQCB2b2lk
IENoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBzZXRwcmlvcml0eShQUklP
X0RBUldJTl9QUk9DRVNTLCAwLCAwKTsKICAgICBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9s
aWN5KCk7CiAjZW5kaWYKKyAgICAvLyBTdGFydGluZyBhcyB1bm9jY2x1ZGVkLiAgVGhlIHByb3h5
IGZvciB0aGlzIHByb2Nlc3Mgd2lsbCBzZXQgdGhlIGFjdHVhbCB2YWx1ZSBmcm9tIGRpZEZpbmlz
aExhdW5jaGluZygpLgogICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMDhmODRhNTRjNTM1Y2UxNjlkNmY2ODU3
ZWEwNTg3NTY4ZjZjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0
ZU1hYy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitib29sIFdLQ29udGV4dEdldFByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAgcmV0dXJu
IHRvSW1wbChjb250ZXh0UmVmKS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpOworfQorCit2
b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1YWQ4MTNlNTNlZjE3NzE3NWI0NzU1MTdjYzU3ZWQzYjhmMzFkYmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRl
eHRQcml2YXRlTWFjX2gKKyNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK1dLX0VYUE9SVCBib29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBlbmFi
bGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CmluZGV4IDJjYjhjMmE2Yjk3ZjE0ODg5NGI0MzVkZTQzNTZhZmE3OWMyYTI5ZDkuLjNiNzRmNzk5
MzQxMjgzZWE4MGY3Y2E4MTk2NmZiODZkMmMwYWFiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTEwNSw5ICsxMDUsNiBAQCBQYXNzUmVmUHRyPFdlYkNvbnRl
eHQ+IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCkK
ICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0jaWYgUExB
VEZPUk0oTUFDKQotICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25T
dXBwb3J0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQoUHJv
Y2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CiB9
CiAKQEAgLTE0Myw2ICsxNDAsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2Rl
bCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX3VzZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkKICNl
bmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZChmYWxzZSkKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVUTFNFcnJvcnMo
dHJ1ZSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZmM5
M2EwOGI5OWQzNmYzMGU4YjRlMTIzNTRiYzVlYjRjYzhiMmY0ZS4uM2M0YTcyNmI4MmVmODRiZTVm
ZjdjZTgzYzI0OTM0YTM1YzA3NDE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCkBAIC0yNzAsNyArMjcwLDEwIEBAIHB1YmxpYzoKIAogCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHsgcmV0dXJuIHNfYXBwbGlj
YXRpb25Jc09jY2x1ZGVkOyB9CisgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
KGJvb2wpOworICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZDsgfQorICAgIHZvaWQgdXBkYXRlQ2hpbGRQ
cm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7CisgICAgc3RhdGljIGJvb2wgYXBw
bGljYXRpb25Jc09jY2x1ZGVkKCk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTdGFy
dFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7CkBAIC0zNDMsMTAgKzM0Niw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZp
c2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBz
dGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QsIHZvaWQqLCB1aW50MzJfdCk7Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVByb2Nl
c3NTdXBwcmVzc2lvblN1cHBvcnQoKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lv
bk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgdm9pZCBwcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkQ2hhbmdlZCgpOwogICAgIHZvaWQgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRpZgpAQCAt
NDQ4LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERp
Y3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisgICAgYm9v
bCBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IGEw
YzU3YzEzYjQ3YzlhOGM4NTA1ZGY3OGNlNmMyMzY3MzcxNDMxOTkuLjYzMWRlYTBmODk2Mzg3NTA5
ZTRkYTFmMTg3ZTY2OTk2OTRiMjIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTYyLDcgKzYyLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9u
TmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0
aW9uIjsKIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlm
aWNhdGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVk
Tm90aWZpY2F0aW9uIjsKIAotYm9vbCBXZWJDb250ZXh0OjpzX2FwcGxpY2F0aW9uSXNPY2NsdWRl
ZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsK
K3N0YXRpYyBib29sIHNfb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNSZWdpc3RlcmVkID0g
ZmFsc2U7CitzdGF0aWMgYm9vbCBzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JHbG9iYWxD
aGlsZFByb2Nlc3NlcyA9IHRydWU7CiAKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRz
SWZOZWVkZWQoKQogewpAQCAtODAsMTAgKzgyLDE1MCBAQCBzdGF0aWMgdm9pZCByZWdpc3RlclVz
ZXJEZWZhdWx0c0lmTmVlZGVkKCkKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOnJlZ2lzdHJhdGlvbkRpY3Rpb25hcnldOwogfQogCitz
dGF0aWMgdm9pZCB1cGRhdGVHbG9iYWxDaGlsZFByb2Nlc3Nlc0FwcGxpY2F0aW9uT2NjbHVzaW9u
U3RhdGUoKQoreworICAgIC8vIFRoZSBwbGFuIGlzIHRvIGhhdmUgYWxsIGNoaWxkIHByb2Nlc3Nl
cyBiZWNvbWUgY29udGV4dCBzcGVjaWZpYy4gIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBjYW4gYmUg
cmVtb3ZlZCBvbmNlIHRoYXQgaXMgY29tcGxldGUuCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KSB8fCBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgIGJvb2wgaXNPY2NsdWRlZEZv
ckdsb2JhbENoaWxkUHJvY2Vzc2VzID0gc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yR2xv
YmFsQ2hpbGRQcm9jZXNzZXMgJiYgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisjZW5kaWYKKyNp
ZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJl
ZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChpc09jY2x1ZGVkRm9yR2xvYmFsQ2hpbGRQcm9j
ZXNzZXMpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1
ZGVkKGlzT2NjbHVkZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk7CisjZW5kaWYKK30KKworc3Rh
dGljIHZvaWQgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKQoreworICAgIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCgpKQorICAgICAgICAgICAgY29udGV4dHNbaV0tPnVwZGF0ZUNoaWxkUHJvY2Vzc2Vz
QXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpOworICAgIH0KKworICAgIGlmIChzX3Byb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3NlcykKKyAgICAgICAgdXBkYXRl
R2xvYmFsQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7Cit9CisKKyNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKK3N0YXRpYyB2b2lkIGFw
cGxpY2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwg
dWludDMyX3QpCit7CisgICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7CisgICAgYXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKTsKK30KKworc3RhdGljIHZvaWQgYXBwbGljYXRp
b25CZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMy
X3QpCit7CisgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICByZXR1cm47
CisgICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSB0cnVlOworICAgIGFwcGxpY2F0aW9uT2Nj
bHVzaW9uU3RhdGVDaGFuZ2VkKCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgcmVnaXN0ZXJP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDkwCisgICAgaWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZp
Y2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2Ft
ZVZpc2libGUsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkpIHsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJSZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlm
aWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2Ns
dXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRp
b25CZWNhbWVPY2NsdWRlZCkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0cmF0aW9uIG9m
IFwiQXBwbGljYXRpb24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFp
bGVkLlxuIik7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgdW5yZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTAKKyAgICBpZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRl
ZCwgYXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJV
bnJlZ2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNh
dGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1
c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlv
bkJlY2FtZVZpc2libGUpKQorICAgICAgICBXVEZMb2dBbHdheXMoIlVucmVnaXN0cmF0aW9uIG9m
IFwiQXBwbGljYXRpb24gQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWls
ZWQuXG4iKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBlbmFibGVPY2NsdXNpb25Ob3RpZmlj
YXRpb25zKCkKK3sKKyAgICBpZiAoc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lz
dGVyZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBib29sIHNob3VsZE9taXRQcm9j
ZXNzU3VwcHJlc3Npb24gPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBi
b29sRm9yS2V5OkAiV2ViS2l0Mk9taXRQcm9jZXNzU3VwcHJlc3Npb24iXTsKKyAgICBpZiAoc2hv
dWxkT21pdFByb2Nlc3NTdXBwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc19vY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQgPSB0cnVlOworICAgIHJlZ2lzdGVy
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKK30KKworc3RhdGljIHZvaWQgZGlzYWJs
ZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmICghc19vY2NsdXNpb25Ob3RpZmlj
YXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHNfb2NjbHVz
aW9uTm90aWZpY2F0aW9uSGFuZGxlcnNSZWdpc3RlcmVkID0gZmFsc2U7CisgICAgdW5yZWdpc3Rl
ck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJs
ZVByb2Nlc3NTdXBwcmVzc2lvbkZvckdsb2JhbENoaWxkUHJvY2Vzc2VzKCkKK3sKKyAgICBpZiAo
c19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMpCisgICAg
ICAgIHJldHVybjsKKworICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENo
aWxkUHJvY2Vzc2VzID0gdHJ1ZTsKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisg
ICAgICAgIHVwZGF0ZUdsb2JhbENoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2NsdXNpb25TdGF0
ZSgpOworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFs
Q2hpbGRQcm9jZXNzZXMoKQoreworICAgIGlmICghc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
Rm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMpCisgICAgICAgIHJldHVybjsKKworICAgIHNfcHJvY2Vz
c1N1cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENoaWxkUHJvY2Vzc2VzID0gZmFsc2U7CisgICAg
aWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICB1cGRhdGVHbG9iYWxDaGlsZFBy
b2Nlc3Nlc0FwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKK30KKworc3RhdGljIGJvb2wgcHJv
Y2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQW55Q29udGV4dCgpCit7CisgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdl
YkNvbnRleHQ6OmFsbENvbnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0g
Y29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoY29udGV4dHNb
aV0tPnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgcmVzdWx0ID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3N0YXRpYyBib29sIHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFs
bENvbnRleHRzKCkKK3sKKyAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgY29uc3QgVmVjdG9y
PFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyAr
K2kpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgV2ViQ29udGV4
dDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVl
ZGVkKCk7CiAgICAgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKKyAgICBkaXNhYmxl
UHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKIH0KIAogU3RyaW5n
IFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQpAQCAtMjkxLDgwICs0MzMs
NDYgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0K
IAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZv
aWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQorYm9vbCBXZWJDb250ZXh0OjphcHBsaWNh
dGlvbklzT2NjbHVkZWQoKQogewotICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewot
ICAgICAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwotCi0gICAgICAgIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBp
IDwgY291bnQ7ICsraSkgewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAg
ICBpZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5u
ZXR3b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJv
Y2VzcygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOwotI2VuZGlmCi0KLSAgICAg
ICAgICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkpOwotICAgICAgICB9Ci0KLSNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFy
ZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOwotI2VuZGlmCi0jaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXI6OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7Ci0jZW5kaWYKLSAg
ICB9CisgICAgcmV0dXJuIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOwogfQogCi12b2lkIFdlYkNv
bnRleHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCwgdm9pZCosIHVpbnQzMl90KQordm9pZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1
ZGVkKSB7Ci0gICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gdHJ1ZTsKLSAgICAgICAg
Y29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250
ZXh0cygpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXpl
KCk7IGkgPCBjb3VudDsgKytpKSB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNb
aV0tPm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdv
cmtQcm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgotCi0g
ICAgICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOwotICAgICAgICB9Ci0KLSNp
ZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpz
aGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFu
YWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCi0g
ICAgfQorICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IGVuYWJsZWQ7
CisgICAgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJD
b250ZXh0Ojppbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCgpCit2b2lkIFdlYkNv
bnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRDaGFuZ2VkKCkKIHsKLSAgICBzdGF0aWMg
Ym9vbCBkaWRJbml0aWFsaXplID0gZmFsc2U7Ci0gICAgaWYgKGRpZEluaXRpYWxpemUpCi0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgIHVw
ZGF0ZUNoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpOwogCi0gICAgZGlk
SW5pdGlhbGl6ZSA9IHRydWU7Ci0gICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRpbCBwcm9j
ZXNzIHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9pbnQgYSBj
b250ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCi0gICAgLy8gaW50ZXJwcmV0YXRp
b24gdGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBkaXNhYmxl
cyBpdCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2VzLgotICAg
IGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1cHByZXNz
aW9uU3VwcG9ydEVuYWJsZWQiXTsKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVu
YWJsZWQpCi0gICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsK
KyAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQW55Q29udGV4dCgpKQorICAg
ICAgICBlbmFibGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKCk7CisgICAgZWxzZQorICAgICAgICBk
aXNhYmxlT2NjbHVzaW9uTm90aWZpY2F0aW9ucygpOworCisgICAgaWYgKHByb2Nlc3NTdXBwcmVz
c2lvbklzRW5hYmxlZEZvckFsbENvbnRleHRzKCkpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBw
cmVzc2lvbkZvckdsb2JhbENoaWxkUHJvY2Vzc2VzKCk7CisgICAgZWxzZQorICAgICAgICBkaXNh
YmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKIH0KIAotdm9p
ZCBXZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3Zv
aWQgV2ViQ29udGV4dDo6dXBkYXRlQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0
YXRlKCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAg
ICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9u
Tm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNh
bWVWaXNpYmxlKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJB
cHAgQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBib29sIGlzT2NjbHVkZWRGb3JDaGlsZFByb2Nlc3Nl
cyA9IG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCAmJiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRl
ZDsKIAotICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tP
Y2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGlj
YXRpb25CZWNhbWVPY2NsdWRlZCkpCi0gICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlv
biBvZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQu
XG4iKTsKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIGlmICh1c2VzTmV0d29ya1By
b2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKQorICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5z
ZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoaXNPY2NsdWRlZEZvckNoaWxkUHJvY2Vzc2VzKTsKICNl
bmRpZgorICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBw
bGljYXRpb25Jc09jY2x1ZGVkKGlzT2NjbHVkZWRGb3JDaGlsZFByb2Nlc3NlcykpOwogfQotICAg
IAorCiB2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKIHsK
ICAgICBtX2N1c3RvbVNjaGVtZVJlZ2lzdGVyZWRPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOldlYktpdDo6U2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsIHF1ZXVl
OltOU09wZXJhdGlvblF1ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjEyMjMwMzhkOGY5NDk2MzlhOTE5NDk0NDE0NTVm
OTM0MGU5MTg0Li43MjIzMzE4Mzc3NWRiNzVlYzk1ZGQxZTdhN2Y5NGViODY4M2I5MjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NjYsNiArNTY2LDggQEAKIAkJOUY0RjU5NDQxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHlNYWMubW0gKi87IH07CiAJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGls
ZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9
OwogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5
NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CisJ
CTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkyMTY5RTZB
ODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAqLzsgfTsKKwkJOUZCNUYzOTUx
NjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAv
KiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJl
c3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NjJFNzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJ
QjYyRTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlF
QzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAz
RjgxNDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBAIC0xODQ3LDYgKzE4
NDksOCBAQAogCQk5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9jZXNzTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1
Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0
ZU1hYy5jcHA7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQ
cml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4dFBy
aXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOTZF
QTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2MkU3MzBG
MTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMzNDYsNiArMzM1MCw4IEBACiAJCTZFRTg0OUM0MTM2OEQ5MDQwMDM4
RDQ4MSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAq
LywKKwkJCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5o
ICovLAogCQkJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVN
YWMuaCAqLywKIAkJCQlCQ0UxN0I3QjEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1h
Yy5jcHAgKi8sCiAJCQkJQkNFMTdCN0MxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVN
YWMuaCAqLywKQEAgLTQ5NzcsNiArNDk4Myw3IEBACiAJCQkJNTFBNTU1RjYxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE1NTYwMTEy
OEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNDOTM4RTExMTgwREU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2
YXRlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1QjEzMTVCOTk4MDA5N0E3QkMgLyog
V0tDb29raWVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGQTEyQTg4QTU0MDA2
Mjk1MzAgLyogV0tDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThBQ0YxMTEyQjAx
NUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk3
NSw2ICs1OTgyLDcgQEAKIAkJCQlCQzRBNjI5NjE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0
aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjlFMjRDMTEyMEUxNUMwMEExMzdFMCAv
KiBXS0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNTU1RjUxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGQjVGMzk0
MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMzMDkzNDVBMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4RjkxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlh
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGNzEyNEZGMDI3MDA2OEYyMEEgLyogV0tE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182906</attachid>
            <date>2013-01-15 19:20:34 -0800</date>
            <delta_ts>2013-01-15 20:23:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130115191736.patch</filename>
            <type>text/plain</type>
            <size>26411</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZmZTE3YTcxYjBlYjJh
YmNmYWRkOGE2MWQ3NjU2ZThjNjU2NmI0NS4uZjhjNzQ4ODQyODE3Mjg3MjcxYTcyMTAyZmZiNzgz
ZGY4NzdmOWM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTE1ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEdyb3VuZHdvcmsgdG8g
ZW5hYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gYnkgZGVmYXVsdCBvbiBNYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3Mgc3VwcHJlc3Npb24g
aGFzIHNvIGZhciBiZWVuIGNvbnRyb2xsZWQgYnkgYSB1c2VyIGRlZmF1bHQgYW5kCisgICAgICAg
IGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBncm91bmR3b3Jr
IHRvIGVuYWJsZSBpdCBieQorICAgICAgICBkZWZhdWx0IGFuZCBhZGRzIGEgcHJpdmF0ZSBBUEkg
dG8gZW5hYmxlL2Rpc2FibGUgaXQgb24gYSBwZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IEFkZCBjb21tZW50IGFib3V0Cisg
ICAgICAgIGluaXRpbGl6YXRpb24gb2YgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAg
ICAgIChXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgQWRk
IHByaXZhdGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gb24gYSBw
ZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGUpOiBSZW1vdmUg
Y2FsbCB0bworICAgICAgICBpbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCwgc2lu
Y2UgcGxhdGZvcm1Jbml0aWFsaXplIGhhcyBiZWVuCisgICAgICAgIG1vZGlmaWVkIHRvIHBlcmZv
cm0gaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRl
eHQpOiBJbml0aWFsaXplIG5ldyBtZW1iZXIgdmFyaWFibGUKKyAgICAgICAgbV9wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkIHRvIGZhbHNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQpOiBSZW1vdmUgIlN1cHBvcnQiCisgICAgICAgIGZyb20gdGhlIG1ldGhvZCBuYW1lLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
dXBkYXRlR2xvYmFsQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6YXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQpOiBVcGRhdGUg
dGhlIGFwcGxpY2F0aW9uCisgICAgICAgIG9jY2x1c2lvbiBzdGF0ZSBvZiBjaGlsZCBwcm9jZXNz
ZXMgaGF2aW5nIHByb2Nlc3Mgc3VwcHJlc2lvbiBlbmFibGVkLgorICAgICAgICAoV2ViS2l0Ojph
cHBsaWNhdGlvbkJlY2FtZVZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjphcHBsaWNhdGlvbkJl
Y2FtZU9jY2x1ZGVkKToKKyAgICAgICAgU2ltcGxpZnkgYnkgbW92aW5nIGNvZGUgdG8gYXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMpOiBGaXggdHlwb3MuCisgICAgICAgIChXZWJLaXQ6
OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVycyk6IEFkZAorICAgICAgICBt
ZXRob2QgdG8gdW5yZWdpc3RlciBvY2NsdXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzIHdoZW4g
bm8gY29udGV4dAorICAgICAgICBoYXMgcHJvY2VzcyBzdXBwcmVzc2lvbiBlbmFibGVkLgorICAg
ICAgICAoV2ViS2l0OjplbmFibGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6ZGlzYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0Ojpl
bmFibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk6CisgICAgICAg
IChXZWJLaXQ6OmRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3Nl
cyk6CisgICAgICAgIChXZWJLaXQ6OnByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFueUNv
bnRleHQpOgorICAgICAgICAoV2ViS2l0Ojpwcm9jZXNzU3VwcHJlc3Npb25Jc0VuYWJsZWRGb3JB
bGxDb250ZXh0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZSk6IERpc2FibGUgcHJvY2VzcyBzdXBwcmVzc2lvbgorICAgICAgICBmb3IgZ2xvYmFsIGNo
aWxkIHByb2Nlc3NlcyBzaW5jZSBwcm9jZXNzIHN1cHByZXNzaW9uIGlzIGRpc2FibGVkIGZvciBh
CisgICAgICAgIGNvbnRleHQgb24gY29uc3RydWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENoYW5nZWQpOiBVcGRhdGUgY2hpbGQK
KyAgICAgICAgcHJvY2Vzc2VzIGFwcGxpY2F0aW9uIG9jY2x1c2lvbiBzdGF0ZSwgZW5hYmxlL2Rp
c2FibGUgb2NjbHVzaW9uCisgICAgICAgIG5vdGlmaWNhdGlvbnMgYW5kIGVuYWJsZS9kaXNhYmxl
IHByb2Nlc3Mgc3VwcHJlc3Npb24gZm9yIGdsb2JhbCBjaGlsZAorICAgICAgICBwcm9jZXNzZXMu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnVwZGF0ZUNoaWxkUHJvY2Vzc2VzQXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDEzLTAxLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIENsYW1wIFRpbGVDYWNoZSB2aXNpYmxlUmVjdCB0byBXS1ZpZXcn
cyB2aXNpYmxlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01h
Yy5tbQppbmRleCA0ODBlOWNjYjVlZTA3NWYxMzJiNzg3NTUzODQzYTE3ODU1ZmNlYWM0Li44MDBj
ZTkzNDBhZmExYWIzMDA5YWJjOTkzODM4MjQ2MDdkNDQ0Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtNjAsNiArNjAsNyBAQCB2b2lkIENo
aWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBzZXRwcmlvcml0eShQUklPX0RB
UldJTl9QUk9DRVNTLCAwLCAwKTsKICAgICBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5
KCk7CiAjZW5kaWYKKyAgICAvLyBTdGFydGluZyBhcyB1bm9jY2x1ZGVkLiAgVGhlIHByb3h5IGZv
ciB0aGlzIHByb2Nlc3Mgd2lsbCBzZXQgdGhlIGFjdHVhbCB2YWx1ZSBmcm9tIGRpZEZpbmlzaExh
dW5jaGluZygpLgogICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMDhmODRhNTRjNTM1Y2UxNjlkNmY2ODU3ZWEw
NTg3NTY4ZjZjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitib29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAgcmV0dXJuIHRv
SW1wbChjb250ZXh0UmVmKS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpOworfQorCit2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1YWQ4MTNlNTNlZjE3NzE3NWI0NzU1MTdjYzU3ZWQzYjhmMzFkYmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRQ
cml2YXRlTWFjX2gKKyNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBib29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQoV0tDb250ZXh0UmVmIGNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBlbmFibGVk
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQ29udGV4
dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IGVjMjVlMzg0NGMzZmNmMmFhZmMzNDIzNWQ5MmQwOGI0NWM2N2I2MmQuLjFmNzg1NTllOGE5
MTllMzYyMmJhOWE4NjQxOTQ1YWU1NDZhNTYyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTEwNiw5ICsxMDYsNiBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+
IFdlYkNvbnRleHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCkKICAg
ICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJlc3Npb25TdXBw
b3J0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHQoUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcywgaW5qZWN0ZWRCdW5kbGVQYXRoKSk7CiB9CiAK
QEAgLTE0NCw2ICsxNDEsOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBw
cm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgLCBtX3VzZXNOZXR3b3JrUHJvY2VzcyhmYWxzZSkKICNlbmRp
ZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChm
YWxzZSkKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgICwgbV9pZ25vcmVUTFNFcnJvcnModHJ1
ZSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZmM5M2Ew
OGI5OWQzNmYzMGU4YjRlMTIzNTRiYzVlYjRjYzhiMmY0ZS4uM2M0YTcyNmI4MmVmODRiZTVmZjdj
ZTgzYzI0OTM0YTM1YzA3NDE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CkBAIC0yNzAsNyArMjcwLDEwIEBAIHB1YmxpYzoKIAogCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IHN0YXRpYyBib29sIGFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpIHsgcmV0dXJuIHNfYXBwbGljYXRp
b25Jc09jY2x1ZGVkOyB9CisgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJv
b2wpOworICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZDsgfQorICAgIHZvaWQgdXBkYXRlQ2hpbGRQcm9j
ZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7CisgICAgc3RhdGljIGJvb2wgYXBwbGlj
YXRpb25Jc09jY2x1ZGVkKCk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTdGFydFVz
aW5nUHJpdmF0ZUJyb3dzaW5nKCk7CkBAIC0zNDMsMTAgKzM0Niw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZVZpc2li
bGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0
aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMy
X3QsIHZvaWQqLCB1aW50MzJfdCk7Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3NT
dXBwcmVzc2lvblN1cHBvcnQoKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lvbk5v
dGlmaWNhdGlvbkhhbmRsZXJzKCk7CisgICAgdm9pZCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVk
Q2hhbmdlZCgpOwogICAgIHZvaWQgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICAg
ICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRpZgpAQCAtNDQ4
LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERpY3Rp
b25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisgICAgYm9vbCBt
X3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IDE3ODAw
NzQwMWE3NzNmN2FkNzg2NTk4MDljNGZmNTk0YTY1MzQ1Y2UuLjMzY2FlNjMxNGYwZGQzNDRjMjYy
MjJkZDE2NmIwNDkzMjYyNDM4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNYWMubW0KQEAgLTY1LDcgKzY1LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBO
U1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFt
ZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9u
IjsKIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlmaWNh
dGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVkTm90
aWZpY2F0aW9uIjsKIAotYm9vbCBXZWJDb250ZXh0OjpzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9
IGZhbHNlOworc3RhdGljIGJvb2wgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKK3N0
YXRpYyBib29sIHNfb2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnNSZWdpc3RlcmVkID0gZmFs
c2U7CitzdGF0aWMgYm9vbCBzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JHbG9iYWxDaGls
ZFByb2Nlc3NlcyA9IHRydWU7CiAKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZO
ZWVkZWQoKQogewpAQCAtODMsMTAgKzg1LDE1MCBAQCBzdGF0aWMgdm9pZCByZWdpc3RlclVzZXJE
ZWZhdWx0c0lmTmVlZGVkKCkKICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSByZWdpc3RlckRlZmF1bHRzOnJlZ2lzdHJhdGlvbkRpY3Rpb25hcnldOwogfQogCitzdGF0
aWMgdm9pZCB1cGRhdGVHbG9iYWxDaGlsZFByb2Nlc3Nlc0FwcGxpY2F0aW9uT2NjbHVzaW9uU3Rh
dGUoKQoreworICAgIC8vIFRoZSBwbGFuIGlzIHRvIGhhdmUgYWxsIGNoaWxkIHByb2Nlc3NlcyBi
ZWNvbWUgY29udGV4dCBzcGVjaWZpYy4gIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBjYW4gYmUgcmVt
b3ZlZCBvbmNlIHRoYXQgaXMgY29tcGxldGUuCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKSB8
fCBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgIGJvb2wgaXNPY2NsdWRlZEZvckds
b2JhbENoaWxkUHJvY2Vzc2VzID0gc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yR2xvYmFs
Q2hpbGRQcm9jZXNzZXMgJiYgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQ7CisjZW5kaWYKKyNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCisgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgp
LnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChpc09jY2x1ZGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNz
ZXMpOworI2VuZGlmCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKKyAgICBTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVk
KGlzT2NjbHVkZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk7CisjZW5kaWYKK30KKworI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorc3RhdGljIHZvaWQgYXBwbGlj
YXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKQoreworICAgIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7Cisg
ICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpKQorICAg
ICAgICAgICAgY29udGV4dHNbaV0tPnVwZGF0ZUNoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2Ns
dXNpb25TdGF0ZSgpOworICAgIH0KKworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3NlcykKKyAgICAgICAgdXBkYXRlR2xvYmFsQ2hpbGRQcm9j
ZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGxp
Y2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QpCit7CisgICAgaWYgKCFzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7CisgICAgYXBwbGljYXRp
b25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKTsKK30KKworc3RhdGljIHZvaWQgYXBwbGljYXRpb25C
ZWNhbWVPY2NsdWRlZCh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3Qp
Cit7CisgICAgaWYgKHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgc19hcHBsaWNhdGlvbklzT2NjbHVkZWQgPSB0cnVlOworICAgIGFwcGxpY2F0aW9uT2NjbHVz
aW9uU3RhdGVDaGFuZ2VkKCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgcmVnaXN0ZXJPY2Ns
dXNpb25Ob3RpZmljYXRpb25IYW5kbGVycygpCit7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCisgICAgaWYgKCFXS1JlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0
aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZVZp
c2libGUsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJSZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUgVmlzaWJsZVwiIG5vdGlmaWNh
dGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNp
b25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRpb25C
ZWNhbWVPY2NsdWRlZCkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0cmF0aW9uIG9mIFwi
QXBwbGljYXRpb24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVk
LlxuIik7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgdW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlm
aWNhdGlvbkhhbmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKKyAgICBpZiAoIVdLVW5yZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwg
YXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJVbnJl
Z2lzdHJhdGlvbiBvZiBcIkFwcGxpY2F0aW9uIEJlY2FtZSBPY2NsdWRlZFwiIG5vdGlmaWNhdGlv
biBoYW5kbGVyIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGlmICghV0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lv
bk5vdGlmaWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJl
Y2FtZVZpc2libGUpKQorICAgICAgICBXVEZMb2dBbHdheXMoIlVucmVnaXN0cmF0aW9uIG9mIFwi
QXBwbGljYXRpb24gQmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQu
XG4iKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBlbmFibGVPY2NsdXNpb25Ob3RpZmljYXRp
b25zKCkKK3sKKyAgICBpZiAoc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVy
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBib29sIHNob3VsZE9taXRQcm9jZXNz
U3VwcHJlc3Npb24gPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29s
Rm9yS2V5OkAiV2ViS2l0Mk9taXRQcm9jZXNzU3VwcHJlc3Npb24iXTsKKyAgICBpZiAoc2hvdWxk
T21pdFByb2Nlc3NTdXBwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc19vY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQgPSB0cnVlOworICAgIHJlZ2lzdGVyT2Nj
bHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKK30KKworc3RhdGljIHZvaWQgZGlzYWJsZU9j
Y2x1c2lvbk5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmICghc19vY2NsdXNpb25Ob3RpZmljYXRp
b25IYW5kbGVyc1JlZ2lzdGVyZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHNfb2NjbHVzaW9u
Tm90aWZpY2F0aW9uSGFuZGxlcnNSZWdpc3RlcmVkID0gZmFsc2U7CisgICAgdW5yZWdpc3Rlck9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCk7Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJsZVBy
b2Nlc3NTdXBwcmVzc2lvbkZvckdsb2JhbENoaWxkUHJvY2Vzc2VzKCkKK3sKKyAgICBpZiAoc19w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENoaWxk
UHJvY2Vzc2VzID0gdHJ1ZTsKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAg
ICAgIHVwZGF0ZUdsb2JhbENoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgp
OworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hp
bGRQcm9jZXNzZXMoKQoreworICAgIGlmICghc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9y
R2xvYmFsQ2hpbGRQcm9jZXNzZXMpCisgICAgICAgIHJldHVybjsKKworICAgIHNfcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENoaWxkUHJvY2Vzc2VzID0gZmFsc2U7CisgICAgaWYg
KHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICB1cGRhdGVHbG9iYWxDaGlsZFByb2Nl
c3Nlc0FwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKK30KKworc3RhdGljIGJvb2wgcHJvY2Vz
c1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQW55Q29udGV4dCgpCit7CisgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IFdlYkNv
bnRleHQ6OmFsbENvbnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29u
dGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoY29udGV4dHNbaV0t
PnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBib29sIHByb2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFsbENv
bnRleHRzKCkKK3sKKyAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgY29uc3QgVmVjdG9yPFdl
YkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kp
IHsKKyAgICAgICAgaWYgKCFjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgp
KSB7CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgV2ViQ29udGV4dDo6
cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVk
KCk7CiAgICAgcmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKKyAgICBkaXNhYmxlUHJv
Y2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKIH0KIAogU3RyaW5nIFdl
YkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQpAQCAtMjk3LDgwICs0MzksNDYg
QEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAot
dm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUodWludDMyX3QsIHZvaWQq
LCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQorYm9vbCBXZWJDb250ZXh0OjphcHBsaWNhdGlv
bklzT2NjbHVkZWQoKQogewotICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkgewotICAg
ICAgICBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwotCi0gICAgICAgIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwg
Y291bnQ7ICsraSkgewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgICAgICAgICBp
ZiAoY29udGV4dHNbaV0tPnVzZXNOZXR3b3JrUHJvY2VzcygpICYmIGNvbnRleHRzW2ldLT5uZXR3
b3JrUHJvY2VzcygpKQotICAgICAgICAgICAgICAgIGNvbnRleHRzW2ldLT5uZXR3b3JrUHJvY2Vz
cygpLT5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOwotI2VuZGlmCi0KLSAgICAgICAg
ICAgIGNvbnRleHRzW2ldLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSkpOwotICAgICAgICB9Ci0KLSNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCi0gICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQo
KS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAgICAgICAgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6
OnNoYXJlZCgpLnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7Ci0jZW5kaWYKLSAgICB9
CisgICAgcmV0dXJuIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkOwogfQogCi12b2lkIFdlYkNvbnRl
eHQ6OmFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwg
dm9pZCosIHVpbnQzMl90KQordm9pZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1ZGVk
KSB7Ci0gICAgICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gdHJ1ZTsKLSAgICAgICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0
cygpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7
IGkgPCBjb3VudDsgKytpKSB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0t
Pm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQ
cm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgotCi0gICAg
ICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSkpOwotICAgICAgICB9Ci0KLSNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFy
ZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUl9QUk9DRVNTKQotICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
cjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKHRydWUpOwotI2VuZGlmCi0gICAg
fQorICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IGVuYWJsZWQ7Cisg
ICAgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJDb250
ZXh0Ojppbml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCgpCit2b2lkIFdlYkNvbnRl
eHQ6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRDaGFuZ2VkKCkKIHsKLSAgICBzdGF0aWMgYm9v
bCBkaWRJbml0aWFsaXplID0gZmFsc2U7Ci0gICAgaWYgKGRpZEluaXRpYWxpemUpCi0gICAgICAg
IHJldHVybjsKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgIHVwZGF0
ZUNoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpOwogCi0gICAgZGlkSW5p
dGlhbGl6ZSA9IHRydWU7Ci0gICAgLy8gQSB0ZW1wb3JhcnkgZGVmYXVsdCB1bnRpbCBwcm9jZXNz
IHN1cHByZXNzaW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYXQgd2hpY2ggcG9pbnQgYSBjb250
ZXh0IHNldHRpbmcgY2FuIGJlIGFkZGVkIHdpdGggdGhlCi0gICAgLy8gaW50ZXJwcmV0YXRpb24g
dGhhdCBhbnkgY29udGV4dCBkaXNhYmxpbmcgcHJvY2VzcyBzdXBwcmVzc2lvbiBkaXNhYmxlcyBp
dCBmb3IgcGx1Z2luL25ldHdvcmsgYW5kIHNoYXJlZCB3b3JrZXIgcHJvY2Vzc2VzLgotICAgIGJv
b2wgcHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0UHJvY2Vzc1N1cHByZXNzaW9u
U3VwcG9ydEVuYWJsZWQiXTsKLSAgICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydEVuYWJs
ZWQpCi0gICAgICAgIHJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAg
ICBpZiAocHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQW55Q29udGV4dCgpKQorICAgICAg
ICBlbmFibGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKCk7CisgICAgZWxzZQorICAgICAgICBkaXNh
YmxlT2NjbHVzaW9uTm90aWZpY2F0aW9ucygpOworCisgICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lv
bklzRW5hYmxlZEZvckFsbENvbnRleHRzKCkpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBwcmVz
c2lvbkZvckdsb2JhbENoaWxkUHJvY2Vzc2VzKCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxl
UHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKIH0KIAotdm9pZCBX
ZWJDb250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3ZvaWQg
V2ViQ29udGV4dDo6dXBkYXRlQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRl
KCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBp
ZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90
aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25CZWNhbWVW
aXNpYmxlKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAg
QmVjYW1lIFZpc2libGVcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBib29sIGlzT2NjbHVkZWRGb3JDaGlsZFByb2Nlc3NlcyA9
IG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCAmJiBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsK
IAotICAgIGlmICghV0tSZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2Ns
dXNpb25Ob3RpZmljYXRpb25UeXBlQXBwbGljYXRpb25CZWNhbWVPY2NsdWRlZCwgYXBwbGljYXRp
b25CZWNhbWVPY2NsdWRlZCkpCi0gICAgICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBv
ZiBcIkFwcCBCZWNhbWUgT2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4i
KTsKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgIGlmICh1c2VzTmV0d29ya1Byb2Nl
c3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKQorICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoaXNPY2NsdWRlZEZvckNoaWxkUHJvY2Vzc2VzKTsKICNlbmRp
ZgorICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKGlzT2NjbHVkZWRGb3JDaGlsZFByb2Nlc3NlcykpOwogfQotICAgIAor
CiB2b2lkIFdlYkNvbnRleHQ6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKIHsKICAg
ICBtX2N1c3RvbVNjaGVtZVJlZ2lzdGVyZWRPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOldlYktpdDo6U2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsIHF1ZXVlOltO
U09wZXJhdGlvblF1ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9u
ICpub3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxYjA0NjNhYTc3MGYyYTFjZjdiNDcyYjNiYWEwNzcwZGEy
N2I4NGIwLi42NjNjYzQ0ZjVlM2U1ZWQ3NGVjMGZhODJjMjBlNGNkNmExNDlmMDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
NjgsNiArNTY4LDggQEAKIAkJOUY0RjU5NDQxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHlNYWMubW0gKi87IH07CiAJCTlGNTRGODhGMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFBy
b2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovOyB9Owog
CQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2
NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CisJCTlG
QjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkyMTY5RTZBODAw
MDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAqLzsgfTsKKwkJOUZCNUYzOTUxNjlF
NkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBX
S0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjYyRTczMTAxNDMwNDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3Vs
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNjJF
NzMwRjE0MzA0N0E2MDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJQjYy
RTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMTExNDMwNDdCMDAwNjlFQzM1
IC8qIFdLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUI2MzQwM0Y5MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYzNDAzRjgx
NDkxMEQ1NzAwMTA3MEI1IC8qIEFQSU9iamVjdC5jcHAgKi87IH07CkBAIC0xODQ5LDYgKzE4NTEs
OCBAQAogCQk5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2lu
UHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1h
Yy5jcHA7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2
YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4dFByaXZh
dGVNYWMuaDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOTZFQTU1
MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2MkU3MzBGMTQz
MDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tIaXRUZXN0UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTMzNDYsNiArMzM1MCw4IEBACiAJCTZFRTg0OUM0MTM2OEQ5MDQwMDM4RDQ4
MSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAqLywK
KwkJCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICov
LAogCQkJCTZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMu
aCAqLywKIAkJCQlCQ0UxN0I3QjEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5j
cHAgKi8sCiAJCQkJQkNFMTdCN0MxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMu
aCAqLywKQEAgLTQ5NzYsNiArNDk4Miw3IEBACiAJCQkJNTFBNTU1RjYxMjhDNkM0NzAwOUFCQ0VD
IC8qIFdLQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE1NTYwMTEyOEM2
RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDOTM4RTExMTgwREU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRl
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1QjEzMTVCOTk4MDA5N0E3QkMgLyogV0tD
b29raWVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGQTEyQTg4QTU0MDA2Mjk1
MzAgLyogV0tDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThBQ0YxMTEyQjAxNUY4
MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk3NCw2
ICs1OTgxLDcgQEAKIAkJCQlCQzRBNjI5NjE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9u
UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjlFMjRDMTEyMEUxNUMwMEExMzdFMCAvKiBX
S0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VD
IC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGQjVGMzk0MTY5
RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMzMDkzNDVBMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEyRjU4RjkxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGNzEyNEZGMDI3MDA2OEYyMEEgLyogV0tEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182913</attachid>
            <date>2013-01-15 20:23:42 -0800</date>
            <delta_ts>2013-01-16 09:46:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106513-20130115202044.patch</filename>
            <type>text/plain</type>
            <size>30507</size>
            <attacher name="Kiran Muppala">cmuppala</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZmZTE3YTcxYjBlYjJh
YmNmYWRkOGE2MWQ3NjU2ZThjNjU2NmI0NS4uNDIwYWFjZmIwNzk2ODM0NjQ4MTBhNmY4NTQ2Y2Ji
NWFkZjYyZjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAxLTE1ICBLaXJh
biBNdXBwYWxhICA8Y211cHBhbGFAYXBwbGUuY29tPgorCisgICAgICAgIEdyb3VuZHdvcmsgdG8g
ZW5hYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gYnkgZGVmYXVsdCBvbiBNYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb2Nlc3Mgc3VwcHJlc3Npb24g
aGFzIHNvIGZhciBiZWVuIGNvbnRyb2xsZWQgYnkgYSB1c2VyIGRlZmF1bHQgYW5kCisgICAgICAg
IGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUaGlzIHBhdGNoIHByb3ZpZGVzIHRoZSBncm91bmR3b3Jr
IHRvIGVuYWJsZSBpdCBieQorICAgICAgICBkZWZhdWx0IGFuZCBhZGRzIGEgcHJpdmF0ZSBBUEkg
dG8gZW5hYmxlL2Rpc2FibGUgaXQgb24gYSBwZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IEFkZCBjb21tZW50IGFib3V0Cisg
ICAgICAgIGluaXRpbGl6YXRpb24gb2YgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tDb250ZXh0R2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisgICAg
ICAgIChXS0NvbnRleHRTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKToKKyAgICAgICAgQWRk
IHByaXZhdGUgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gb24gYSBw
ZXItY29udGV4dAorICAgICAgICBiYXNpcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IENoZWNrIGlmIG93bmluZworICAgICAgICBj
b250ZXh0IGhhcyBwcm9jZXNzIHN1cHByZXNzaW9uIGVuYWJsZWQgYmVmb3JlIHVwZGF0aW5nIGFw
cGxpY2F0aW9uCisgICAgICAgIG9jY2x1c2lvbiBzdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jaGluZyk6IENoZWNrIGlmCisgICAgICAgIHByb2Nlc3Mgc3VwcHJl
c3Npb24gaXMgZW5hYmxlZCBmb3IgZ2xvYmFsIGNoaWxkIHByb2Nlc3NlcyBiZWZvcmUKKyAgICAg
ICAgdXBkYXRpbmcgYXBwbGljYXRpb24gb2NjbHVzaW9uIHN0YXRlLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0OjpjcmVhdGUpOiBSZW1vdmUgY2FsbCB0bworICAgICAgICBpbml0aWFs
aXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCwgc2luY2UgcGxhdGZvcm1Jbml0aWFsaXplIGhh
cyBiZWVuCisgICAgICAgIG1vZGlmaWVkIHRvIHBlcmZvcm0gaW5pdGlhbGl6YXRpb24uCisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRleHQpOiBJbml0aWFsaXplIG5ldyBtZW1i
ZXIgdmFyaWFibGUKKyAgICAgICAgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkIHRvIGZhbHNl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQpOiBSZW1vdmUgIlN1cHBvcnQiCisg
ICAgICAgIGZyb20gdGhlIG1ldGhvZCBuYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6dXBkYXRlR2xvYmFsQ2hpbGRQcm9jZXNz
ZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6YXBwbGljYXRp
b25PY2NsdXNpb25TdGF0ZUNoYW5nZWQpOiBVcGRhdGUgdGhlIGFwcGxpY2F0aW9uCisgICAgICAg
IG9jY2x1c2lvbiBzdGF0ZSBvZiBjaGlsZCBwcm9jZXNzZXMgaGF2aW5nIHByb2Nlc3Mgc3VwcHJl
c2lvbiBlbmFibGVkLgorICAgICAgICAoV2ViS2l0OjphcHBsaWNhdGlvbkJlY2FtZVZpc2libGUp
OgorICAgICAgICAoV2ViS2l0OjphcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKToKKyAgICAgICAg
U2ltcGxpZnkgYnkgbW92aW5nIGNvZGUgdG8gYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5n
ZWQuCisgICAgICAgIChXZWJLaXQ6OnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxl
cnMpOiBGaXggdHlwb3MuCisgICAgICAgIChXZWJLaXQ6OnVucmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVycyk6IEFkZAorICAgICAgICBtZXRob2QgdG8gdW5yZWdpc3RlciBvY2Ns
dXNpb24gbm90aWZpY2F0aW9uIGhhbmRsZXJzIHdoZW4gbm8gY29udGV4dAorICAgICAgICBoYXMg
cHJvY2VzcyBzdXBwcmVzc2lvbiBlbmFibGVkLgorICAgICAgICAoV2ViS2l0OjplbmFibGVPY2Ns
dXNpb25Ob3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6ZGlzYWJsZU9jY2x1c2lvbk5v
dGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjplbmFibGVQcm9jZXNzU3VwcHJlc3Npb25G
b3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OmRpc2FibGVQcm9jZXNz
U3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OnBy
b2Nlc3NTdXBwcmVzc2lvbklzRW5hYmxlZEZvckFueUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0
Ojpwcm9jZXNzU3VwcHJlc3Npb25Jc0VuYWJsZWRGb3JBbGxDb250ZXh0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6IERpc2FibGUgcHJvY2VzcyBz
dXBwcmVzc2lvbgorICAgICAgICBmb3IgZ2xvYmFsIGNoaWxkIHByb2Nlc3NlcyBzaW5jZSBwcm9j
ZXNzIHN1cHByZXNzaW9uIGlzIGRpc2FibGVkIGZvciBhCisgICAgICAgIGNvbnRleHQgb24gY29u
c3RydWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dXBkYXRlQ2hpbGRQ
cm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENoaWxkUHJvY2Vzc2VzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENo
YW5nZWQpOiBVcGRhdGUgY2hpbGQKKyAgICAgICAgcHJvY2Vzc2VzIGFwcGxpY2F0aW9uIG9jY2x1
c2lvbiBzdGF0ZSwgZW5hYmxlL2Rpc2FibGUgb2NjbHVzaW9uCisgICAgICAgIG5vdGlmaWNhdGlv
bnMgYW5kIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Mgc3VwcHJlc3Npb24gZm9yIGdsb2JhbCBjaGls
ZAorICAgICAgICBwcm9jZXNzZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDEzLTAxLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIENsYW1wIFRpbGVDYWNoZSB2aXNpYmxlUmVjdCB0byBXS1ZpZXcn
cyB2aXNpYmxlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01h
Yy5tbQppbmRleCA0ODBlOWNjYjVlZTA3NWYxMzJiNzg3NTUzODQzYTE3ODU1ZmNlYWM0Li44MDBj
ZTkzNDBhZmExYWIzMDA5YWJjOTkzODM4MjQ2MDdkNDQ0Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtNjAsNiArNjAsNyBAQCB2b2lkIENo
aWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBzZXRwcmlvcml0eShQUklPX0RB
UldJTl9QUk9DRVNTLCAwLCAwKTsKICAgICBpbml0aWFsaXplVGltZXJDb2FsZXNjaW5nUG9saWN5
KCk7CiAjZW5kaWYKKyAgICAvLyBTdGFydGluZyBhcyB1bm9jY2x1ZGVkLiAgVGhlIHByb3h5IGZv
ciB0aGlzIHByb2Nlc3Mgd2lsbCBzZXQgdGhlIGFjdHVhbCB2YWx1ZSBmcm9tIGRpZEZpbmlzaExh
dW5jaGluZygpLgogICAgIHNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChmYWxzZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMDhmODRhNTRjNTM1Y2UxNjlkNmY2ODU3ZWEw
NTg3NTY4ZjZjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitib29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAgcmV0dXJuIHRv
SW1wbChjb250ZXh0UmVmKS0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpOworfQorCit2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1YWQ4MTNlNTNlZjE3NzE3NWI0NzU1MTdjYzU3ZWQzYjhmMzFkYmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZh
dGVNYWMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRQ
cml2YXRlTWFjX2gKKyNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBib29sIFdLQ29udGV4dEdldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQoV0tDb250ZXh0UmVmIGNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBlbmFibGVk
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQ29udGV4
dFByaXZhdGVNYWNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhNDRhZDY5ODNlMjk1ZWU1Njc1
NjI3MDQ4OTFhNTg1ZGI2Y2RiYTZkLi5lOWRhNWYyYWNkM2RiYWViYTJmYWVmNTgwYmJlMWE4ZjZk
MTBjNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNo
ZXIsIENvcmVJUEM6CiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0gMDsKIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1
ZGVkKCkpCisgICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpICYmIG1f
d2ViQ29udGV4dC0+cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpKQogICAgICAgICBjb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2Nj
bHVkZWQodHJ1ZSksIDApOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTQ5Zjk1OTg0
ZTE4NTFiZTE0NTRhY2E1ZjQyMGE5NjE0YTEzYjBlLi43ZDkwYzQxZTg3NGI0NWJjMjZkOGViN2I4
YWM2NWM1YjU5OGEyMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlcios
IENvcmVJUEM6OkNvbm5lY3RpbwogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9
IDA7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9u
SXNPY2NsdWRlZCgpKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2NjbHVkZWQo
KSAmJiBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yR2xvYmFsQ2hpbGRQ
cm9jZXNzZXMoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Q
cm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQodHJ1ZSksIDApOwogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdv
cmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiODA4ZWZiYWNkZmFiODg4
NmFmYzhhMTU3ZjUwY2U4OGU4OTFhMDQyLi4wM2FmZmU1YmNmNWNjMTQ0Njc4MDYwMjdmMTdlNjE5
OGI4ZTViMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29y
a2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTE2
Niw3ICsxNjYsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbgogICAgIG1fbnVtUGVuZGluZ0Nv
bm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKFdlYkNv
bnRleHQ6OmFwcGxpY2F0aW9uSXNPY2NsdWRlZCgpKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBs
aWNhdGlvbklzT2NjbHVkZWQoKSAmJiBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQo
dHJ1ZSksIDApOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKaW5kZXggZWMyNWUzODQ0YzNmY2YyYWFmYzM0MjM1ZDkyZDA4YjQ1YzY3YjYyZC4uMWY3ODU1
OWU4YTkxOWUzNjIyYmE5YTg2NDE5NDVhZTU0NmE1NjJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTA2LDkgKzEwNiw2IEBAIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dD4gV2ViQ29udGV4dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRo
KQogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgV2ViQ29udGV4dDo6aW5pdGlhbGl6ZVByb2Nlc3NTdXBwcmVzc2lv
blN1cHBvcnQoKTsKLSNlbmRpZgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dChQ
cm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzLCBpbmplY3RlZEJ1bmRsZVBhdGgpKTsK
IH0KIApAQCAtMTQ0LDYgKzE0MSw5IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01v
ZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhCiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAsIG1fdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQog
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkKGZhbHNlKQorI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgLCBtX2lnbm9yZVRMU0Vycm9y
cyh0cnVlKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBm
YzkzYTA4Yjk5ZDM2ZjMwZThiNGUxMjM1NGJjNWViNGNjOGIyZjRlLi4zZjc1YzA4NTQzZTRiYzk1
ZmU1NjRiMGY4NDFkMzk2OTBmODAwYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgKQEAgLTI3MCw3ICsyNzAsMTEgQEAgcHVibGljOgogCiAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgc3RhdGljIGJvb2wgYXBwbGljYXRpb25Jc09jY2x1ZGVkKCkgeyByZXR1cm4gc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQ7IH0KKyAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQoYm9vbCk7CisgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkOyB9CisgICAgdm9pZCB1cGRhdGVDaGls
ZFByb2Nlc3Nlc0FwcGxpY2F0aW9uT2NjbHVzaW9uU3RhdGUoKTsKKyAgICBzdGF0aWMgYm9vbCBh
cHBsaWNhdGlvbklzT2NjbHVkZWQoKTsKKyAgICBzdGF0aWMgYm9vbCBwcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKICNlbmRpZgogCiAgICAgc3RhdGlj
IHZvaWQgd2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKQEAgLTM0MywxMCArMzQ3LDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyB2b2lkIGFwcGxp
Y2F0aW9uQmVjYW1lVmlzaWJsZSh1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90LCB2b2lkKiwgdWlu
dDMyX3QpOwotICAgIHN0YXRpYyB2b2lkIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQodWludDMy
X3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KTsKLSAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplUHJvY2Vzc1N1cHByZXNzaW9uU3VwcG9ydCgpOwotICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKTsKKyAgICB2b2lkIHByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRDaGFuZ2VkKCk7CiAgICAgdm9pZCByZWdpc3Rlck5vdGlmaWNhdGlv
bk9ic2VydmVycygpOwogICAgIHZvaWQgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygp
OwogI2VuZGlmCkBAIC00NDgsNyArNDQ5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgYm9vbCBzX2FwcGxpY2F0aW9uSXNPY2Ns
dWRlZDsKKyAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZDsKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDA4MDVlMGUzNTM2MzkwZGQ3ZjA4MjBhNzdhMDdjZWNiMDRiZjgzN2YuLjdkYTVi
Mzg1OWU0OTEzOWVkNmJjZjQ0YjY2NDNhMDRlNzA2MTM2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5j
aGVyLCBDb3JlSVBDOjpDb24KICAgICBtX2NvbnRleHQtPnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hp
bmcodGhpcyk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKFdlYkNvbnRleHQ6OmFwcGxp
Y2F0aW9uSXNPY2NsdWRlZCgpKQorICAgIGlmIChXZWJDb250ZXh0OjphcHBsaWNhdGlvbklzT2Nj
bHVkZWQoKSAmJiBtX2NvbnRleHQtPnByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSkKICAgICAg
ICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQodHJ1ZSksIDApOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KaW5kZXggMTc4MDA3NDAxYTc3M2Y3YWQ3ODY1OTgw
OWM0ZmY1OTRhNjUzNDVjZS4uMzlkZDNiZWY1YmFkMTg5Y2E0OTZiMDY1YTQyOThjNjkxYjA2MjA1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpA
QCAtNjUsNyArNjUsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE5TU3RyaW5nICpTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwogTlNTdHJpbmcgKlNjaGVt
ZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSA9IEAiV2ViS2l0
U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwogCi1ib29s
IFdlYkNvbnRleHQ6OnNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gZmFsc2U7CitzdGF0aWMgYm9v
bCBzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc19vY2NsdXNp
b25Ob3RpZmljYXRpb25IYW5kbGVyc1JlZ2lzdGVyZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNf
cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENoaWxkUHJvY2Vzc2VzID0gdHJ1ZTsK
IAogc3RhdGljIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiB7CkBAIC04Mywx
MCArODUsMTUxIEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKQog
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVs
dHM6cmVnaXN0cmF0aW9uRGljdGlvbmFyeV07CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZUdsb2Jh
bENoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZSgpCit7CisgICAgLy8gVGhl
IHBsYW4gaXMgdG8gaGF2ZSBhbGwgY2hpbGQgcHJvY2Vzc2VzIGJlY29tZSBjb250ZXh0IHNwZWNp
ZmljLiAgVGhpcyBmdW5jdGlvbgorICAgIC8vIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBj
b21wbGV0ZS4KKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpIHx8IEVOQUJMRShTSEFSRURfV09S
S0VSX1BST0NFU1MpCisgICAgYm9vbCBpc09jY2x1ZGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMg
PSBzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3NlcyAmJiBz
X2FwcGxpY2F0aW9uSXNPY2NsdWRlZDsKKyNlbmRpZgorI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKKyAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25Jc09j
Y2x1ZGVkKGlzT2NjbHVkZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3Nlcyk7CisjZW5kaWYKKyNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQorICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5h
Z2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVkZWQoaXNPY2NsdWRlZEZvckdsb2Jh
bENoaWxkUHJvY2Vzc2VzKTsKKyNlbmRpZgorfQorCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCitzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRl
Q2hhbmdlZCgpCit7CisgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBX
ZWJDb250ZXh0OjphbGxDb250ZXh0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9
IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGNvbnRleHRz
W2ldLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpCisgICAgICAgICAgICBjb250ZXh0c1tp
XS0+dXBkYXRlQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7CisgICAg
fQorCisgICAgaWYgKHNfcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEZvckdsb2JhbENoaWxkUHJv
Y2Vzc2VzKQorICAgICAgICB1cGRhdGVHbG9iYWxDaGlsZFByb2Nlc3Nlc0FwcGxpY2F0aW9uT2Nj
bHVzaW9uU3RhdGUoKTsKK30KKworc3RhdGljIHZvaWQgYXBwbGljYXRpb25CZWNhbWVWaXNpYmxl
KHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBpZiAo
IXNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKQorICAgICAgICByZXR1cm47CisgICAgc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKKyAgICBhcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlQ2hh
bmdlZCgpOworfQorCitzdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKHVpbnQz
Ml90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCkKK3sKKyAgICBpZiAoc19hcHBs
aWNhdGlvbklzT2NjbHVkZWQpCisgICAgICAgIHJldHVybjsKKyAgICBzX2FwcGxpY2F0aW9uSXNP
Y2NsdWRlZCA9IHRydWU7CisgICAgYXBwbGljYXRpb25PY2NsdXNpb25TdGF0ZUNoYW5nZWQoKTsK
K30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCByZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhh
bmRsZXJzKCkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAK
KyAgICBpZiAoIVdLUmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVz
aW9uTm90aWZpY2F0aW9uVHlwZUFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSwgYXBwbGljYXRpb25C
ZWNhbWVWaXNpYmxlKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdHJhdGlvbiBvZiBc
IkFwcGxpY2F0aW9uIEJlY2FtZSBWaXNpYmxlXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVk
LlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFXS1JlZ2lzdGVy
T2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlmaWNhdGlvblR5cGVB
cHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkKSkKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJSZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUg
T2NjbHVkZWRcIiBub3RpZmljYXRpb24gaGFuZGxlciBmYWlsZWQuXG4iKTsKKyNlbmRpZgorfQor
CitzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcnMoKQor
eworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorICAgIGlmICgh
V0tVbnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9uSGFuZGxlcihXS09jY2x1c2lvbk5vdGlm
aWNhdGlvblR5cGVBcHBsaWNhdGlvbkJlY2FtZU9jY2x1ZGVkLCBhcHBsaWNhdGlvbkJlY2FtZU9j
Y2x1ZGVkKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlVucmVnaXN0cmF0aW9uIG9mIFwiQXBw
bGljYXRpb24gQmVjYW1lIE9jY2x1ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxu
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFXS1VucmVnaXN0ZXJP
Y2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlwZUFw
cGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lVmlzaWJsZSkpCisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiVW5yZWdpc3RyYXRpb24gb2YgXCJBcHBsaWNhdGlvbiBCZWNhbWUg
VmlzaWJsZVwiIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOworI2VuZGlmCit9CisK
K3N0YXRpYyB2b2lkIGVuYWJsZU9jY2x1c2lvbk5vdGlmaWNhdGlvbnMoKQoreworICAgIGlmIChz
X29jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzUmVnaXN0ZXJlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkT21pdFByb2Nlc3NTdXBwcmVzc2lvbiA9IFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXQyT21p
dFByb2Nlc3NTdXBwcmVzc2lvbiJdOworICAgIGlmIChzaG91bGRPbWl0UHJvY2Vzc1N1cHByZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzX29jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRs
ZXJzUmVnaXN0ZXJlZCA9IHRydWU7CisgICAgcmVnaXN0ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25I
YW5kbGVycygpOworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlT2NjbHVzaW9uTm90aWZpY2F0aW9u
cygpCit7CisgICAgaWYgKCFzX29jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzUmVnaXN0ZXJl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc19vY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVy
c1JlZ2lzdGVyZWQgPSBmYWxzZTsKKyAgICB1bnJlZ2lzdGVyT2NjbHVzaW9uTm90aWZpY2F0aW9u
SGFuZGxlcnMoKTsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9y
R2xvYmFsQ2hpbGRQcm9jZXNzZXMoKQoreworICAgIGlmIChzX3Byb2Nlc3NTdXBwcmVzc2lvbkVu
YWJsZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3NlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgc19w
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMgPSB0cnVlOwor
ICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgdXBkYXRlR2xvYmFsQ2hp
bGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGRpc2FibGVQcm9jZXNzU3VwcHJlc3Npb25Gb3JHbG9iYWxDaGlsZFByb2Nlc3NlcygpCit7Cisg
ICAgaWYgKCFzX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3Nl
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgc19wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRm9y
R2xvYmFsQ2hpbGRQcm9jZXNzZXMgPSBmYWxzZTsKKyAgICBpZiAoc19hcHBsaWNhdGlvbklzT2Nj
bHVkZWQpCisgICAgICAgIHVwZGF0ZUdsb2JhbENoaWxkUHJvY2Vzc2VzQXBwbGljYXRpb25PY2Ns
dXNpb25TdGF0ZSgpOworfQorCitzdGF0aWMgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25Jc0VuYWJs
ZWRGb3JBbnlDb250ZXh0KCkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gV2ViQ29udGV4dDo6YWxsQ29udGV4dHMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlmIChjb250ZXh0c1tpXS0+cHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJv
b2wgcHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQWxsQ29udGV4dHMoKQoreworICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0
cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIGNv
dW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoIWNv
bnRleHRzW2ldLT5wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkpIHsKKyAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemUo
KQogewogICAgIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKICAgICByZWdpc3Rlck5v
dGlmaWNhdGlvbk9ic2VydmVycygpOworICAgIEFTU0VSVCghbV9wcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKTsKKyAgICBkaXNhYmxlUHJvY2Vzc1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9j
ZXNzZXMoKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQpAQCAtMjk3LDgwICs0NDAsNTEgQEAgdm9pZCBXZWJDb250ZXh0OjpzZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdAogICAgIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIs
IHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkJlY2Ft
ZVZpc2libGUodWludDMyX3QsIHZvaWQqLCB1aW50MzJfdCwgdm9pZCosIHVpbnQzMl90KQordm9p
ZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBpZiAoc19hcHBsaWNhdGlvbklzT2NjbHVkZWQpIHsKLSAgICAgICAgc19hcHBsaWNh
dGlvbklzT2NjbHVkZWQgPSBmYWxzZTsKLQotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dCo+JiBjb250ZXh0cyA9IFdlYkNvbnRleHQ6OmFsbENvbnRleHRzKCk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgICAgICAgICAgaWYgKGNvbnRleHRzW2ld
LT51c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKSkK
LSAgICAgICAgICAgICAgICBjb250ZXh0c1tpXS0+bmV0d29ya1Byb2Nlc3MoKS0+c2V0QXBwbGlj
YXRpb25Jc09jY2x1ZGVkKGZhbHNlKTsKLSNlbmRpZgotCi0gICAgICAgICAgICBjb250ZXh0c1tp
XS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlv
bklzT2NjbHVkZWQoZmFsc2UpKTsKLSAgICAgICAgfQotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQotICAgICAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRp
b25Jc09jY2x1ZGVkKGZhbHNlKTsKLSNlbmRpZgotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BS
T0NFU1MpCi0gICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRB
cHBsaWNhdGlvbklzT2NjbHVkZWQoZmFsc2UpOwotI2VuZGlmCi0gICAgfQorICAgIGlmIChtX3By
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgcHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjphcHBsaWNhdGlv
bkJlY2FtZU9jY2x1ZGVkKHVpbnQzMl90LCB2b2lkKiwgdWludDMyX3QsIHZvaWQqLCB1aW50MzJf
dCkKK3ZvaWQgV2ViQ29udGV4dDo6dXBkYXRlQ2hpbGRQcm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1
c2lvblN0YXRlKCkKIHsKLSAgICBpZiAoIXNfYXBwbGljYXRpb25Jc09jY2x1ZGVkKSB7Ci0gICAg
ICAgIHNfYXBwbGljYXRpb25Jc09jY2x1ZGVkID0gdHJ1ZTsKLSAgICAgICAgY29uc3QgVmVjdG9y
PFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3Vu
dDsgKytpKSB7Ci0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICAgICAgICAgIGlmIChj
b250ZXh0c1tpXS0+dXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgY29udGV4dHNbaV0tPm5ldHdvcmtQ
cm9jZXNzKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dHNbaV0tPm5ldHdvcmtQcm9jZXNzKCkt
PnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZCh0cnVlKTsKLSNlbmRpZgorICAgIGJvb2wgaXNPY2Ns
dWRlZEZvckNoaWxkUHJvY2Vzc2VzID0gbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkICYmIHNf
YXBwbGljYXRpb25Jc09jY2x1ZGVkOwogCi0gICAgICAgICAgICBjb250ZXh0c1tpXS0+c2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQodHJ1ZSkpOwotICAgICAgICB9Ci0KLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAg
ICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRBcHBsaWNhdGlvbklzT2NjbHVk
ZWQodHJ1ZSk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotICAg
ICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuc2V0QXBwbGljYXRpb25J
c09jY2x1ZGVkKHRydWUpOworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgaWYgKHVz
ZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzKCktPnNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChpc09jY2x1ZGVkRm9yQ2hpbGRQcm9j
ZXNzZXMpOwogI2VuZGlmCi0gICAgfQorICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViUHJvY2Vzczo6U2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGlzT2NjbHVkZWRGb3JDaGlsZFBy
b2Nlc3NlcykpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVQcm9jZXNzU3VwcHJl
c3Npb25TdXBwb3J0KCkKK2Jvb2wgV2ViQ29udGV4dDo6YXBwbGljYXRpb25Jc09jY2x1ZGVkKCkK
IHsKLSAgICBzdGF0aWMgYm9vbCBkaWRJbml0aWFsaXplID0gZmFsc2U7Ci0gICAgaWYgKGRpZElu
aXRpYWxpemUpCi0gICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gc19hcHBsaWNhdGlvbklzT2Nj
bHVkZWQ7Cit9CiAKLSAgICBkaWRJbml0aWFsaXplID0gdHJ1ZTsKLSAgICAvLyBBIHRlbXBvcmFy
eSBkZWZhdWx0IHVudGlsIHByb2Nlc3Mgc3VwcHJlc3Npb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0
LCBhdCB3aGljaCBwb2ludCBhIGNvbnRleHQgc2V0dGluZyBjYW4gYmUgYWRkZWQgd2l0aCB0aGUK
LSAgICAvLyBpbnRlcnByZXRhdGlvbiB0aGF0IGFueSBjb250ZXh0IGRpc2FibGluZyBwcm9jZXNz
IHN1cHByZXNzaW9uIGRpc2FibGVzIGl0IGZvciBwbHVnaW4vbmV0d29yayBhbmQgc2hhcmVkIHdv
cmtlciBwcm9jZXNzZXMuCi0gICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxl
ZCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJX
ZWJLaXRQcm9jZXNzU3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCJdOwotICAgIGlmIChwcm9jZXNz
U3VwcHJlc3Npb25TdXBwb3J0RW5hYmxlZCkKLSAgICAgICAgcmVnaXN0ZXJPY2NsdXNpb25Ob3Rp
ZmljYXRpb25IYW5kbGVycygpOworYm9vbCBXZWJDb250ZXh0Ojpwcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKQoreworICAgIHJldHVybiBzX3Byb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRGb3JHbG9iYWxDaGlsZFByb2Nlc3NlczsKIH0KIAotdm9pZCBXZWJD
b250ZXh0OjpyZWdpc3Rlck9jY2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXJzKCkKK3ZvaWQgV2Vi
Q29udGV4dDo6cHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZENoYW5nZWQoKQogewotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIGlmICghV0tSZWdpc3Rlck9j
Y2x1c2lvbk5vdGlmaWNhdGlvbkhhbmRsZXIoV0tPY2NsdXNpb25Ob3RpZmljYXRpb25UeXBlQXBw
bGljYXRpb25CZWNhbWVWaXNpYmxlLCBhcHBsaWNhdGlvbkJlY2FtZVZpc2libGUpKSB7Ci0gICAg
ICAgIFdURkxvZ0Fsd2F5cygiUmVnaXN0ZXJhdGlvbiBvZiBcIkFwcCBCZWNhbWUgVmlzaWJsZVwi
IG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZhaWxlZC5cbiIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCkKKyAgICAgICAgdXBkYXRlQ2hpbGRQ
cm9jZXNzZXNBcHBsaWNhdGlvbk9jY2x1c2lvblN0YXRlKCk7CiAKLSAgICBpZiAoIVdLUmVnaXN0
ZXJPY2NsdXNpb25Ob3RpZmljYXRpb25IYW5kbGVyKFdLT2NjbHVzaW9uTm90aWZpY2F0aW9uVHlw
ZUFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQsIGFwcGxpY2F0aW9uQmVjYW1lT2NjbHVkZWQpKQot
ICAgICAgICBXVEZMb2dBbHdheXMoIlJlZ2lzdGVyYXRpb24gb2YgXCJBcHAgQmVjYW1lIE9jY2x1
ZGVkXCIgbm90aWZpY2F0aW9uIGhhbmRsZXIgZmFpbGVkLlxuIik7Ci0jZW5kaWYKKyAgICBpZiAo
cHJvY2Vzc1N1cHByZXNzaW9uSXNFbmFibGVkRm9yQW55Q29udGV4dCgpKQorICAgICAgICBlbmFi
bGVPY2NsdXNpb25Ob3RpZmljYXRpb25zKCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlT2Nj
bHVzaW9uTm90aWZpY2F0aW9ucygpOworCisgICAgaWYgKHByb2Nlc3NTdXBwcmVzc2lvbklzRW5h
YmxlZEZvckFsbENvbnRleHRzKCkpCisgICAgICAgIGVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZv
ckdsb2JhbENoaWxkUHJvY2Vzc2VzKCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlUHJvY2Vz
c1N1cHByZXNzaW9uRm9yR2xvYmFsQ2hpbGRQcm9jZXNzZXMoKTsKIH0KLSAgICAKKwogdm9pZCBX
ZWJDb250ZXh0OjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiB7CiAgICAgbV9jdXN0
b21TY2hlbWVSZWdpc3RlcmVkT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpXZWJLaXQ6OlNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbCBxdWV1ZTpbTlNPcGVyYXRp
b25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZp
Y2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMWIwNDYzYWE3NzBmMmExY2Y3YjQ3MmIzYmFhMDc3MGRhMjdiODRiMC4u
NjYzY2M0NGY1ZTNlNWVkNzRlYzBmYTgyYzIwZTRjZDZhMTQ5ZjAwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTY4LDYgKzU2
OCw4IEBACiAJCTlGNEY1OTQ0MTY0OEI2N0YwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5RjRGNTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFj
Lm1tICovOyB9OwogCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4
OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJOUY1NEY4
OTUxNjQ4QUUwRjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTQxNjQ4QUUwRTAw
N0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9OworCQk5RkI1RjM5NDE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYg
LyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi87IH07CisJCTlGQjVGMzk1MTY5RTZBODAwMDJD
MjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0
UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUI2MkU3MzEwMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjYyRTczMEYxNDMw
NDdBNjAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCUI2MkU3MzEyMTQz
MDQ3QjAwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MkU3MzExMTQzMDQ3QjAwMDY5RUMzNSAvKiBXS0hp
dFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCNjM0MDNGOTE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2MzQwM0Y4MTQ5MTBENTcw
MDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovOyB9OwpAQCAtMTg0OSw2ICsxODUxLDggQEAKIAkJ
OUY0RjU5NDMxNjQ4QjY3RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OEUx
NjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NN
YW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1
Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlG
QjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBw
YXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmg7
IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzk2RUE1NTEyRTBFRDJE
MDBGNEZFQjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNv
bmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjJFNzMwRjE0MzA0N0E2MDA2
OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMzQ2LDYgKzMzNTAsOCBAQAogCQk2RUU4NDlDNDEzNjhEOTA0MDAzOEQ0ODEgLyogbWFj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RkI1RjM5
MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgKi8sCisJCQkJOUZC
NUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLywKIAkJCQk2
RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJbnNwZWN0b3JQcml2YXRlTWFjLmggKi8sCiAJ
CQkJQkNFMTdCN0IxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwICovLAog
CQkJCUJDRTE3QjdDMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmggKi8sCkBA
IC00OTc2LDYgKzQ5ODIsNyBAQAogCQkJCTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0Nv
bnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU2MDExMjhDNkQ5MjAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzkz
OEUxMTE4MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NUIxMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4RkExMkE4OEE1NDAwNjI5NTMwIC8qIFdL
Q3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNGMTExMkIwMTVGODAwQjA0Qjgz
IC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NzQsNiArNTk4MSw3
IEBACiAJCQkJQkM0QTYyOTYxNDczMTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVjdGlvblJlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0I5RTI0QzExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTU1NUY1MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0Nv
bnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5RkI1RjM5NDE2OUU2QTgwMDAy
QzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5
MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM0MDc1RjcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGF0YS5jcHAgaW4g
U291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>