<?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>31639</bug_id>
          
          <creation_ts>2009-11-18 12:43:04 -0800</creation_ts>
          <short_desc>Add asserts to RefCounted to make sure ref/deref happens on the right thread.</short_desc>
          <delta_ts>2017-06-25 14:49:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173789</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32689</dependson>
    
    <dependson>59754</dependson>
    
    <dependson>59762</dependson>
    
    <dependson>59984</dependson>
    
    <dependson>64404</dependson>
    
    <dependson>64577</dependson>
    
    <dependson>65609</dependson>
          <blocked>58091</blocked>
    
    <blocked>58092</blocked>
    
    <blocked>58093</blocked>
    
    <blocked>58105</blocked>
    
    <blocked>58171</blocked>
    
    <blocked>58174</blocked>
    
    <blocked>65827</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>huajun.li.lee</cc>
    
    <cc>levin</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164671</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-18 12:43:04 -0800</bug_when>
    <thetext>See bug 30612 and bug 31615 for history and comments.

The idea is that there should be an assert that a RefCounted is used on the right thread. For cases when RefCounted is used cross-thread in a specific way intentionally, there should be a mechanism to relax the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165183</commentid>
    <comment_count>1</comment_count>
      <attachid>43545</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-19 20:26:31 -0800</bug_when>
    <thetext>Created attachment 43545
Intermediate patch

I&apos;ve tried to experiment with something like this... Intermediate patch.

There is makeExemptFromThreadCheck() function that stores a per-instance flag which I was hoping to use to have some sort of &apos;dynamic opt-out&apos;. To make it possible to &apos;temporarily exclude&apos; an instance of RefCounted from the requirement to be refcounted on the same thread - and then use it for things like String, relaxing the check in certain portions of code and still asserting in others. But IconDatabase quickly discouraged me from this... It is very hard, looking at code, to know where to enable/disable the check. Usage on different threads can happen in way distant codepaths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168230</commentid>
    <comment_count>2</comment_count>
      <attachid>44201</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-02 18:49:45 -0800</bug_when>
    <thetext>Created attachment 44201
Proposed patch.

Adds ASSERT to RefCountedBase to verify the ref()/deref() and hasOneref(), refCount() happen on the same thread.

For objects that are intentionally used in cross-process scenario, there is disableThreadVerification() which excludes them from the checks. I used this to exclude Stringimpl and classes used in IconDatabase.

Also, the checks only are activated when refcount becomes &gt;= 2 and deactivated when refcount goes below 2 (borrowed the idea from CrossThreadRefCounted). This prevents the assertions in a very typical scenario when object is created on one thread and then passed via PassRefPtr to another thread where it is used exclusively and then destroyed. It seems it&apos;s mostly ok to transfer an object with refcount 1 between threads - so the asserts are only activated when refcount is &gt;1, meaning the object is actually &apos;shared&apos;.

Perf impact on Debug build is about 2% on run-webkit-tests, and there are no asserts fired during the run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168269</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 21:14:15 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44201 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168828</commentid>
    <comment_count>4</comment_count>
      <attachid>44201</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-04 10:13:53 -0800</bug_when>
    <thetext>Comment on attachment 44201
Proposed patch.

&gt; diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
&gt; +        (WTF::ThreadVerifier::activate): Activates hecks. Called when ref count becomes above 2.

typo: hecks

&gt; diff --git a/JavaScriptCore/runtime/Structure.cpp b/JavaScriptCore/runtime/Structure.cpp
&gt; +    // Use of addressOfCount() in this calss prevents thread verification in RefCounted

typo: calss

&gt; +    // since it modifies refcount via other means then ref()/deref().

s/then/than/

&gt; diff --git a/JavaScriptCore/wtf/RefCounted.h b/JavaScriptCore/wtf/RefCounted.h
&gt; +#ifndef NDEBUG
&gt; +class ThreadVerifier {

This seems like it should be in its own file. (As a side benefit, the whole file can be ifndef NDEBUG include the wtf/Threading.h include.)

&gt; +#endif

#endif // NDEBUG
Since this is a long ifdef.


&gt; +#ifndef NDEBUG
&gt; +    void disableThreadVerification()
&gt; +    {

Personally, I&apos;d prefer moving the ifndef inside of the method. This would still make the call a no-op when NDEBUG is defined, but every call site wouldn&apos;t need a ifndef NDEBUG around it.

&gt; +        m_threadVerifier.disableThreadVerification();
&gt; +    }
&gt; +#endif
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169419</commentid>
    <comment_count>5</comment_count>
      <attachid>44423</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-07 12:21:13 -0800</bug_when>
    <thetext>Created attachment 44423
Updated per David&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169422</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-07 12:23:35 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; typo: hecks
&gt; typo: calss
&gt; s/then/than/

Fixed. 

&gt; &gt; diff --git a/JavaScriptCore/wtf/RefCounted.h b/JavaScriptCore/wtf/RefCounted.h
&gt; &gt; +#ifndef NDEBUG
&gt; &gt; +class ThreadVerifier {
&gt; 
&gt; This seems like it should be in its own file. (As a side benefit, the whole
&gt; file can be ifndef NDEBUG include the wtf/Threading.h include.)

Moved to a new file, wtf/ThreadVerifier.h
This added a couple of build files and ForwardingHeaders to the patch.

&gt; #endif // NDEBUG
&gt; Since this is a long ifdef.

Added &quot;// NDEBUG&quot;

&gt; &gt; +#ifndef NDEBUG
&gt; &gt; +    void disableThreadVerification()
&gt; &gt; +    {
&gt; 
&gt; Personally, I&apos;d prefer moving the ifndef inside of the method. This would still
&gt; make the call a no-op when NDEBUG is defined, but every call site wouldn&apos;t need
&gt; a ifndef NDEBUG around it.

Done.

Patch attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169424</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-07 12:24:09 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44423 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169443</commentid>
    <comment_count>8</comment_count>
      <attachid>44423</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-07 13:13:02 -0800</bug_when>
    <thetext>Comment on attachment 44423
Updated per David&apos;s comments.

The only thing I don&apos;t like about this is the name of disableThreadVerification. I would prefer a name that describes the threading regime being used rather than a simple &quot;disable&quot; call. But since the number of callers is extremely small at this time, it seems we can change this later.

I&apos;d eventually like to see the cross-thread string use be turned on, not in the allocation of the StringImpl, but at the call sites. I know the class is used cross thread &quot;everywhere&quot;, but I think eventually we could do that. There are tons of strings where it would be good to have the main thread assertion work.

&gt; +        // Start thread verification as soon as the ref count gets to 2.
&gt; +        // The class gets created with a ref count of 1 and then passed
&gt; +        // to another thread where to ref count get increased.  This
&gt; +        // is a heuristic but it seems to always work and has helped
&gt; +        // find some bugs.

We use one space after a period, nottwo.

&gt; +    ThreadVerifier()
&gt; +        : m_isActive(false)
&gt; +        , m_isThreadVerificationDisabled(false)
&gt; +        , m_isOwnedByMainThread(false)
&gt; +        , m_owningThread(0)
&gt; +    { }

We&apos;d normally put the braces on separate lines.

&gt; @@ -44,7 +44,7 @@ IconRecord::IconRecord(const String&amp; url)
&gt;      , m_stamp(0)
&gt;      , m_dataSet(false)
&gt;  {
&gt; -
&gt; +    disableThreadVerification();
&gt;  }

I&apos;d like to see a comment at all the disableThreadVerification call sites about why this needs to be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169755</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-08 12:28:26 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 44423 [details])
&gt; The only thing I don&apos;t like about this is the name of
&gt; disableThreadVerification. I would prefer a name that describes the threading
&gt; regime being used rather than a simple &quot;disable&quot; call. But since the number of
&gt; callers is extremely small at this time, it seems we can change this later.

Agreed.

&gt; I&apos;d eventually like to see the cross-thread string use be turned on, not in the
&gt; allocation of the StringImpl, but at the call sites. I know the class is used
&gt; cross thread &quot;everywhere&quot;, but I think eventually we could do that. There are
&gt; tons of strings where it would be good to have the main thread assertion work.

Added FIXME to StringImpl, will experiment with enforcing checks since we should be able to use crossThreadString in those cases.

..
&gt; We use one space after a period, nottwo.
..
&gt; We&apos;d normally put the braces on separate lines.
..
&gt; I&apos;d like to see a comment at all the disableThreadVerification call sites about
&gt; why this needs to be done.

Fixed those and landed: http://trac.webkit.org/changeset/51869</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169818</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-08 15:29:49 -0800</bug_when>
    <thetext>Reopening since I&apos;ve reverted it: http://trac.webkit.org/changeset/51875

It apparently caused stable crash of storage/change-version-handle-reuse.html on Leopard Debug bot. Also, the nmber of reported leaks increased about x10 on SnowLeopard leak-test-enabled bot.

Need to play with it a bit more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170858</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-11 11:33:13 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Also, the number of reported leaks increased about x10 on SnowLeopard leak-test-enabled bot.

Wow, I wonder what that was about?

I really want this back!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175390</commentid>
    <comment_count>12</comment_count>
      <attachid>44423</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 21:42:04 -0800</bug_when>
    <thetext>Comment on attachment 44423
Updated per David&apos;s comments.

Clearing Darin Adler&apos;s review on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379058</commentid>
    <comment_count>13</comment_count>
      <attachid>88125</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-04 14:05:06 -0700</bug_when>
    <thetext>Created attachment 88125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379166</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-04 16:07:01 -0700</bug_when>
    <thetext>Attachment 88125 did not build on win:
Build output: http://queues.webkit.org/results/8330130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379184</commentid>
    <comment_count>15</comment_count>
      <attachid>88125</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-04 16:20:35 -0700</bug_when>
    <thetext>Comment on attachment 88125
Patch

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

review- because the Windows build is failing

&gt; Source/JavaScriptCore/JavaScriptCore.exp:608
&gt; +__ZN3WTF26singleThreadVerifierCreateEv
&gt; +__ZN3WTF20noVerificationCreateEv
&gt; +__ZN3WTF19mutexVerifierCreateERNS_5MutexE

This file is sorted with the sort tool. New entries in it should be sorted in the same way.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.h:354
&gt; +    setNonThreadSafeVerifier(WTF::NonThreadSafeVerifier::createNoVerficationDoNotUseThis());

Classes in WTF should make use of &quot;using&quot; in the WTF way and not have WTF:: at the call site.

&gt; Source/JavaScriptCore/parser/SourceProvider.h:50
&gt; +            setNonThreadSafeVerifier(WTF::NonThreadSafeVerifier::createNoVerficationDoNotUseThis());

While factoring-wise I think it’s OK to have the verifier be a separate object, I think that it involves tons of memory allocation in debug builds and so could slow them to a crawly, and the idiom of setting up a verifier is so wordy that it almost obscures the meaning of what’s being done.

&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.cpp:52
&gt; +    virtual void setShared(bool);
&gt; +    virtual bool verifySafety() const;

I suggest making these private instead of public on the derived class.

&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.cpp:76
&gt; +    virtual void setShared(bool);
&gt; +    virtual bool verifySafety() const;

Ditto.

&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.cpp:183
&gt; +PassOwnPtr&lt;NonThreadSafeVerifier&gt; singleThreadVerifierCreate()
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +PassOwnPtr&lt;NonThreadSafeVerifier&gt; mutexVerifierCreate(Mutex&amp;)
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +PassOwnPtr&lt;NonThreadSafeVerifier&gt; noVerificationCreate()
&gt; +{
&gt; +    return 0;
&gt; +}

Why define these at all in NDEBUG versions?

&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.h:54
&gt; +    static PassOwnPtr&lt;NonThreadSafeVerifier&gt; createNoVerficationDoNotUseThis();

Typo: Verfication

&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.h:68
&gt; +// Don&apos;t use these directly.
&gt; +PassOwnPtr&lt;NonThreadSafeVerifier&gt; singleThreadVerifierCreate();
&gt; +PassOwnPtr&lt;NonThreadSafeVerifier&gt; mutexVerifierCreate(Mutex&amp;);
&gt; +PassOwnPtr&lt;NonThreadSafeVerifier&gt; noVerificationCreate();

Why not? Why do we need the extra level of indirection?

If we don’t want them used directly, then we could obfuscate them a little more by putting them into a namespace or making them private static member functions. And we could not even define them if NDEBUG is set.

&gt; Source/JavaScriptCore/wtf/RefCounted.h:45
&gt; +        // to another thread where to ref count get increased. This

“where to ref count get increased”?

&gt; Source/JavaScriptCore/wtf/RefCounted.h:88
&gt; +    void setNonThreadSafeVerifier(PassOwnPtr&lt;NonThreadSafeVerifier&gt; nonThreadSafeVerifier)
&gt; +    {
&gt; +        UNUSED_PARAM(nonThreadSafeVerifier.get());
&gt; +#ifndef NDEBUG
&gt; +        m_nonThreadSafeVerifier = nonThreadSafeVerifier;
&gt; +#endif
&gt; +    }
&gt; +
&gt; +    void setMutexAsThreadSafeVerifier(Mutex&amp; mutex)
&gt; +    {
&gt; +        UNUSED_PARAM(&amp;mutex);
&gt; +#ifndef NDEBUG
&gt; +        setNonThreadSafeVerifier(NonThreadSafeVerifier::createMutexVerifier(mutex));
&gt; +#endif
&gt; +    }

I suggest putting the whole functions inside an #ifndef to avoid the awkward uses of UNUSED_PARAM.

I also question the need to inline the debug versions. I think you could just declare these in the class, define the NDEBUG versions below with inline, and for the debug versions have them in a cpp file.

&gt; Source/JavaScriptCore/wtf/RefCounted.h:165
&gt; +    OwnPtr&lt;NonThreadSafeVerifier&gt; m_nonThreadSafeVerifier;

I think this data member could just be named m_verifier without losing clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379203</commentid>
    <comment_count>16</comment_count>
      <attachid>88125</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-04 16:41:54 -0700</bug_when>
    <thetext>Comment on attachment 88125
Patch

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

&gt;&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.cpp:183
&gt;&gt; +}
&gt; 
&gt; Why define these at all in NDEBUG versions?

I couldn&apos;t figure out a way to have DEBUG only exports from JavaScriptCore.exp or if there was a separate file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379210</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-04 16:45:06 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Why define these at all in NDEBUG versions?
&gt; 
&gt; I couldn&apos;t figure out a way to have DEBUG only exports from JavaScriptCore.exp or if there was a separate file.

Good point. I’m not sure there is a good way to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381820</commentid>
    <comment_count>18</comment_count>
      <attachid>88725</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-07 16:21:18 -0700</bug_when>
    <thetext>Created attachment 88725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381830</commentid>
    <comment_count>19</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-07 16:32:30 -0700</bug_when>
    <thetext>I fixed most things. I did a few things due to the exports issue.

Also, I left functions defined in the header even in release mode but empty so that the calling sites would not have to have ifndef NDEBUG whereever these methods were called.

But I&apos;m willing to change any of this.

I tried to check out the speed of this build compared to without these checks and it seemed comparable for running layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381863</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-07 17:07:29 -0700</bug_when>
    <thetext>Attachment 88725 did not build on chromium:
Build output: http://queues.webkit.org/results/8347778</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381866</commentid>
    <comment_count>21</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-07 17:13:06 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Attachment 88725 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/8347778

I will put the code NonThreadSafeVerifier.h inside of &quot;#ifndef NDEBUG&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381868</commentid>
    <comment_count>22</comment_count>
      <attachid>88739</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-07 17:16:07 -0700</bug_when>
    <thetext>Created attachment 88739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382307</commentid>
    <comment_count>23</comment_count>
      <attachid>88739</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-08 09:50:10 -0700</bug_when>
    <thetext>Comment on attachment 88739
Patch

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

Looks good. Not sure why it’s not applying with the EWS. I’m going to say review- because I want you to think over the naming a little more.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.h:353
&gt; +    reviewCarefullyTurnOffVerifier();

I applaud the notion of building the advice to review the use of a function carefully right into the function name, but I think we should do it in a way that’s more grammatically sound. One type of name along those lines is this:

turnOffVerifierNotingThatIsRarelyNeededAndRequiresCarefulReview

Of course that is comically long, but maybe you see my point? Once we figure out what we should say, we should try to state it rather than just putting words in there without grammatical glue.

&gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.h:46
&gt; +class NonThreadSafeVerifier {

I think that “non-safe” is an unpleasant and not entirely clear way to describe something that is designed to be used on a single thread.

I would call this ThreadRestrictionsVerifier or SingleThreadUsageVerifier or something roughly along those lines. What I don’t like about “not safe” is that clearly you can’t build a good computer program out of pieces that are “unsafe”. The use of “safety” as the metaphor for threads programming is one of the things that makes it harder for people. Instead of placing the emphasis on clear rules, there’s the implication that this is about risk taking, things might work if you just look both ways before crossing the street, and bold adventurous programmers might chose to take risks. That’s why the safety metaphor seems the wrong one to me.

&gt; Source/JavaScriptCore/wtf/RefCounted.h:44
&gt; +        // Start thread verification as soon as the ref count gets to 2. This
&gt; +        // is a heuristic but it seems to work and has helped find some bugs.

It would be better to explain where this heuristic comes from. There must be a relatively clear way to explain it. Maybe what you mean is that it’s common to create an object and then hand it over to another thread; always recording the thread where it was created would lead to too many false failures.

This is an OK policy for existing code, but it seems inelegant for new code, so we might want to consider a way that future uses of RefCount could start verifying immediately. I would like to catch an object created on one thread and destroyed on another without ever being ref&apos;d.

Again, we can probably defend this policy, and I think it’s better to do that with a little more specifics even if not many more words.

&gt; Source/JavaScriptCore/wtf/SizeLimits.cpp:45
&gt; +struct FakeDebugRefCounted {

I don’t entirely understand the meaning of the word “Fake” in this structure’s name. You should choose an even clearer name or add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382310</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-08 09:50:25 -0700</bug_when>
    <thetext>Thanks very much for tackling this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382312</commentid>
    <comment_count>25</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-08 09:52:45 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Thanks very much for tackling this!

Thanks for carefully reviewing it! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382646</commentid>
    <comment_count>26</comment_count>
      <attachid>88896</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-08 16:43:29 -0700</bug_when>
    <thetext>Created attachment 88896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382649</commentid>
    <comment_count>27</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-08 16:48:10 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 88739 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88739&amp;action=review
&gt; 
&gt;Not sure why it’s not applying with the EWS.

I had not sync&apos;ed in a bit. Now I have.

&gt; 
&gt; &gt; Source/JavaScriptCore/jit/ExecutableAllocator.h:353
&gt; &gt; +    reviewCarefullyTurnOffVerifier();
&gt; 
&gt; I applaud the notion of building the advice to review the use of a function carefully right into the function name,


I made what the method does totally opaque now from the calling site but made it clear that no one should call it --  &quot;neverCallThis&quot;. It is my goal to get rid of the method all together (and my current hope is to not get more instances of it in the code base).


&gt; &gt; Source/JavaScriptCore/wtf/NonThreadSafeVerifier.h:46
&gt; &gt; +class NonThreadSafeVerifier {
&gt; I would call this ThreadRestrictionsVerifier 

Done.
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/RefCounted.h:44
&gt; &gt; +        // Start thread verification as soon as the ref count gets to 2. This
&gt; &gt; +        // is a heuristic but it seems to work and has helped find some bugs.
&gt; 
&gt; I would like to catch an object created on one thread and destroyed on another without ever being ref&apos;d.

Added a bug for being more strict. I think we can get there but it will take a bit of time.

&gt; 
&gt; Again, we can probably defend this policy, and I think it’s better to do that with a little more specifics even if not many more words.

Attempted to explain it better.

&gt; &gt; Source/JavaScriptCore/wtf/SizeLimits.cpp:45
&gt; &gt; +struct FakeDebugRefCounted {
&gt; 
&gt; I don’t entirely understand the meaning of the word “Fake” in this structure’s name. You should choose an even clearer name or add a comment.

Attempted to clarify the wording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382691</commentid>
    <comment_count>28</comment_count>
      <attachid>88910</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-08 18:32:07 -0700</bug_when>
    <thetext>Created attachment 88910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384590</commentid>
    <comment_count>29</comment_count>
      <attachid>88910</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-12 18:09:43 -0700</bug_when>
    <thetext>Comment on attachment 88910
Patch

From ggaren, &quot;deprecatedXXX&quot; is usually how we migrate off of old patterns, as opposed to &quot;neverCallThis&quot; so, &quot;deprecatedTurnOffThreadingVerification&quot;, or something like that)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391841</commentid>
    <comment_count>30</comment_count>
      <attachid>90933</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-25 11:10:42 -0700</bug_when>
    <thetext>Created attachment 90933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393940</commentid>
    <comment_count>31</comment_count>
      <attachid>91371</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-27 16:22:02 -0700</bug_when>
    <thetext>Created attachment 91371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393950</commentid>
    <comment_count>32</comment_count>
      <attachid>91371</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 16:27:08 -0700</bug_when>
    <thetext>Comment on attachment 91371
Patch

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

&gt; Source/WebCore/ChangeLog:5
&gt; +

Extra line?

&gt; Source/WebCore/ForwardingHeaders/wtf/ThreadRestrictionVerifier.h:2
&gt; +#define WebCore_FWD_ThreadRestrictionVerifier_h

Is this the standard?  I don&apos;t know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393955</commentid>
    <comment_count>33</comment_count>
      <attachid>91374</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-27 16:33:24 -0700</bug_when>
    <thetext>Created attachment 91374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393957</commentid>
    <comment_count>34</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-27 16:34:29 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 91371 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91371&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:5
&gt; &gt; +
&gt; 
&gt; Extra line?
Fixed.

&gt; 
&gt; &gt; Source/WebCore/ForwardingHeaders/wtf/ThreadRestrictionVerifier.h:2
&gt; &gt; +#define WebCore_FWD_ThreadRestrictionVerifier_h
&gt; 
&gt; Is this the standard?
Yep (I checked several files at random in that dir and they all followed this pattern).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394617</commentid>
    <comment_count>35</comment_count>
      <attachid>91374</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-28 11:44:06 -0700</bug_when>
    <thetext>Comment on attachment 91374
Patch

I should probably land this by hand when it gets r+. Although I&apos;ve tried hard to make sure there won&apos;t be issues, this is a patch that has a higher probability of causing issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394665</commentid>
    <comment_count>36</comment_count>
      <attachid>91374</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-28 12:43:30 -0700</bug_when>
    <thetext>Comment on attachment 91374
Patch

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

&gt; Source/JavaScriptCore/wtf/RefCounted.h:77
&gt; +        UNUSED_PARAM(&amp;mutex);
&gt; +#ifndef NDEBUG
&gt; +        m_verifier.setMutexMode(mutex);
&gt; +#endif

We should only use UNUSED_PARAM when it’s actually unused. So it should be in an #else. But, better, I suggest writing it like this:

    void setMutexForVerifier(Mutex&amp;);

    ...

    #ifdef NDEBUG
    inline void RefCountedBase::setMutexForVerifier(Mutex&amp;)
    {
    }
    #else
    inline void RefCountedBase::setMutexForVerifier(Mutex&amp; mutex)
    {
        m_verifier.setMutexMode(mutex);
    }
    #endif

Or like this:


    #ifdef NDEBUG
    void setMutexForVerifier(Mutex&amp;) { }
    #else
    void setMutexForVerifier(Mutex&amp; mutex)
    {
        m_verifier.setMutexMode(mutex);
    }
    #endif

&gt; Source/JavaScriptCore/wtf/ThreadRestrictionVerifier.h:95
&gt; +    // Is it ok to use the object at this moment on the current thread?

Normally &quot;ok&quot; is spelled &quot;OK&quot;.

&gt; Source/JavaScriptCore/wtf/ThreadRestrictionVerifier.h:104
&gt; +            // isMainThread() is way faster than currentThread() on many platforms, so use it first.
&gt; +            return (m_isOwnedByMainThread &amp;&amp; isMainThread()) || (m_owningThread == currentThread());

If m_isOwnedByMainThread is false, then m_owningThread is not something we should look at; sure, it’s initialized to 0, but I’m not sure that’s even meaningful. So I suggest writing:

    return m_isOwnedByMainThread ? isMainThread() : (m_owningThread == currentThread());

Or factoring the code some other way, but doing that same effective check. I don’t think it’s good to look at m_owningThread at all if it wasn’t set to a thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394713</commentid>
    <comment_count>37</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-28 13:50:30 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/85233.

(In reply to comment #36)
&gt; (From update of attachment 91374 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91374&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/RefCounted.h:77
&gt; But, better, I suggest writing it like this:

Thanks for the detailed explanation. You said this before, and it is trivial to understand what you meant now that you wrote it out, but I just didn&apos;t get it previously.

&gt; &gt; Source/JavaScriptCore/wtf/ThreadRestrictionVerifier.h:104
&gt; I don’t think it’s good to look at m_owningThread at all if it wasn’t set to a thread.

Thanks. That shouldn&apos;t have been written that way and was essentially a bug. Fixed (as you suggested).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394714</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-28 13:52:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85233 might have broken Qt Linux ARMv7 Release and EFL Linux Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394718</commentid>
    <comment_count>39</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-28 13:57:14 -0700</bug_when>
    <thetext>Fixed build -- inverted ifdef (that I reversed during my last round of fixes) here: http://trac.webkit.org/changeset/85235

(I did another debug build but not another release build which would have caught this.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394929</commentid>
    <comment_count>40</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-28 16:57:26 -0700</bug_when>
    <thetext>Had to rollout due to jsc issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394951</commentid>
    <comment_count>41</comment_count>
      <attachid>91374</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-28 17:10:34 -0700</bug_when>
    <thetext>Comment on attachment 91374
Patch

This broke the jsc api/jsc command line app because they don&apos;t have a sense of what is the main thread and may never set the main thread.

I need to add some code to handle this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440158</commentid>
    <comment_count>42</comment_count>
      <attachid>101538</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-07-20 18:01:21 -0700</bug_when>
    <thetext>Created attachment 101538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440160</commentid>
    <comment_count>43</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-07-20 18:04:25 -0700</bug_when>
    <thetext>Same patch as what I checked in (which is the last patch with the suggested changes) plus the following changes:
1. This no longer relies on isMainThread since currentThread is now nearly as fast in debug.
2. I fixed the inverted ifndef that I changed here: http://trac.webkit.org/changeset/85235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445044</commentid>
    <comment_count>44</comment_count>
      <attachid>102601</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-01 17:52:54 -0700</bug_when>
    <thetext>Created attachment 102601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445045</commentid>
    <comment_count>45</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-01 17:53:54 -0700</bug_when>
    <thetext>Removed the exception for CString since the Chromium test code causing a failure has been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445077</commentid>
    <comment_count>46</comment_count>
      <attachid>102601</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-08-01 18:51:14 -0700</bug_when>
    <thetext>Comment on attachment 102601
Patch

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

r=me, one tiny nit.
It&apos;s so cool you are doing this! The amount of things already fixed in order to land this patch is already worth the trouble :-)

&gt; Source/JavaScriptCore/wtf/ThreadRestrictionVerifier.h:45
&gt; +// The mode may be change by calling useMutexMode (or turnOffVerification).

&quot;may be change&quot; -&gt; &quot;may be changed&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445125</commentid>
    <comment_count>47</comment_count>
      <attachid>102601</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-01 23:56:59 -0700</bug_when>
    <thetext>Comment on attachment 102601
Patch

Marking cq- as it looks like this triggers asserts in Chromium. I suspect this are due to access of WebKit before calling WebKit::initialize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445692</commentid>
    <comment_count>48</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-02 19:29:42 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/92254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461730</commentid>
    <comment_count>49</comment_count>
    <who name="Huajun.Li">huajun.li.lee</who>
    <bug_when>2011-09-02 21:44:18 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Committed as http://trac.webkit.org/changeset/92254


If a SharedBuffer is set with MutexVerificationMode, then how can user own/lock it for further operation?

For example, while user gets a image via :

WebCore::Image *icon = WebCore::iconDatabase().synchronousIconForPageURL(kurl.string(), WebCore::IntSize(16, 16));


How to make sure calling &quot;icon-&gt;nativeImageForCurrentFrame()&quot; is safe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461915</commentid>
    <comment_count>50</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-09-03 22:26:50 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #48)
&gt; &gt; Committed as http://trac.webkit.org/changeset/92254
&gt; 
&gt; 
&gt; If a SharedBuffer is set with MutexVerificationMode, then how can user own/lock it for further operation?
&gt; 
&gt; For example, while user gets a image via :
&gt; 
&gt; WebCore::Image *icon = WebCore::iconDatabase().synchronousIconForPageURL(kurl.string(), WebCore::IntSize(16, 16));
&gt; 
&gt; 
&gt; How to make sure calling &quot;icon-&gt;nativeImageForCurrentFrame()&quot; is safe?

If an object is using MutexVerificationMode, it means that a mutex must be taken (locked) when the object is being used. The specific mutex depends on the object but you should be able to determine if by looking at the place where the mutex verification mode is set up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461948</commentid>
    <comment_count>51</comment_count>
    <who name="Huajun.Li">huajun.li.lee</who>
    <bug_when>2011-09-04 07:32:38 -0700</bug_when>
    <thetext>&gt; 
&gt; If an object is using MutexVerificationMode, it means that a mutex must be taken (locked) when the object is being used. The specific mutex depends on the object but you should be able to determine if by looking at the place where the mutex verification mode is set up.

Yes, thanks. 
However I am calling &apos;ewk_history_item_icon_surface_get()&apos; recently(in  Source/WebKit/efl/ewk/ewk_history.cpp), it always gets exception like this:

ASSERTION FAILED: m_verifier.isSafeToUse()
../Source/JavaScriptCore/wtf/RefCounted.h(53) : void WTF::RefCountedBase::ref()


Below is the code, it gets exception at &quot;icon-&gt;nativeImageForCurrentFrame()&quot;. And have no idea how to take/lock the data before further operation?
-----------------------------------------------------------------------
However, cairo_surface_t* ewk_history_item_icon_surface_get(const Ewk_History_Item* item)
{
    EWK_HISTORY_ITEM_CORE_GET_OR_RETURN(item, core, 0);

    WebCore::Image* icon = WebCore::iconDatabase().synchronousIconForPageURL(core-&gt;url(), WebCore::IntSize(16, 16));
    if (!icon) {
        ERR(&quot;icon is NULL.&quot;);
        return 0;
    }
    return icon-&gt;nativeImageForCurrentFrame();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461954</commentid>
    <comment_count>52</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-04 10:08:30 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; However I am calling &apos;ewk_history_item_icon_surface_get()&apos; recently(in  Source/WebKit/efl/ewk/ewk_history.cpp), it always gets exception like this:
&gt; 
&gt; ASSERTION FAILED: m_verifier.isSafeToUse()
&gt; ../Source/JavaScriptCore/wtf/RefCounted.h(53) : void WTF::RefCountedBase::ref()
&gt; 
&gt; 
&gt; Below is the code, it gets exception at &quot;icon-&gt;nativeImageForCurrentFrame()&quot;. And have no idea how to take/lock the data before further operation?

We’ll need the whole backtrace to understand what the issue is. I suggest opening a new bug report to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462005</commentid>
    <comment_count>53</comment_count>
    <who name="Huajun.Li">huajun.li.lee</who>
    <bug_when>2011-09-04 19:43:06 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; 
&gt; We’ll need the whole backtrace to understand what the issue is. I suggest opening a new bug report to track this.

New bug opened at https://bugs.webkit.org/show_bug.cgi?id=67582</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43545</attachid>
            <date>2009-11-19 20:26:31 -0800</date>
            <delta_ts>2009-12-02 18:49:45 -0800</delta_ts>
            <desc>Intermediate patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5461</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9Dcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBi
L0phdmFTY3JpcHRDb3JlL3d0Zi9Dcm9zc1RocmVhZFJlZkNvdW50ZWQuaAppbmRleCBmNjgyZjBk
Li5mNThkYzE5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Nyb3NzVGhyZWFkUmVmQ291bnRlZC5o
CkBAIC03OCw2ICs3OCw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgLCBtX3RocmVh
ZElkKDApCiAjZW5kaWYKICAgICAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIG1f
cmVmQ291bnRlci5tYWtlRXhlbXB0RnJvbVRocmVhZENoZWNrKCk7CisjZW5kaWYKICAgICAgICAg
fQogCiAgICAgICAgIH5Dcm9zc1RocmVhZFJlZkNvdW50ZWQoKQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVk
LmgKaW5kZXggNzYxYTg1Ni4uZmUwN2U1NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3Rm
L1JlZkNvdW50ZWQuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oCkBAIC0y
NCw2ICsyNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBUaGlzIGJhc2UgY2xhc3MgaG9s
ZHMgdGhlIG5vbi10ZW1wbGF0ZSBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLgpAQCAtMzMsMTggKzM3
LDIxIEBAIGNsYXNzIFJlZkNvdW50ZWRCYXNlIHsKIHB1YmxpYzoKICAgICB2b2lkIHJlZigpCiAg
ICAgeworICAgICAgICBBU1NFUlQoaXNPbk5hdGl2ZVRocmVhZCgpKTsKICAgICAgICAgQVNTRVJU
KCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICArK21fcmVmQ291bnQ7CiAgICAgfQogCiAg
ICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzT25OYXRp
dmVUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAg
ICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gMTsKICAgICB9CiAKICAgICBpbnQgcmVmQ291bnQoKSBj
b25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzT25OYXRpdmVUaHJlYWQoKSk7CiAgICAgICAg
IHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIApAQCAtNTMsMTcgKzYwLDIyIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgOiBtX3JlZkNvdW50KDEpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAsIG1f
ZGVsZXRpb25IYXNCZWd1bihmYWxzZSkKKyAgICAgICAgLCBtX2lzRXhlbXB0RnJvbVRocmVhZENo
ZWNrKGZhbHNlKQorICAgICAgICAsIG1fY3JlYXRlZE9uTWFpblRocmVhZChpc01haW5UaHJlYWQo
KSkKKyAgICAgICAgLCBtX25hdGl2ZVRocmVhZChtX2NyZWF0ZWRPbk1haW5UaHJlYWQgPyAtMSA6
IGN1cnJlbnRUaHJlYWQoKSkKICNlbmRpZgogICAgIHsKICAgICB9CiAKICAgICB+UmVmQ291bnRl
ZEJhc2UoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzT25OYXRpdmVUaHJlYWQoKSk7CiAgICAg
fQogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBmcmVlZCBv
ciBub3QuCiAgICAgYm9vbCBkZXJlZkJhc2UoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzT25O
YXRpdmVUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAg
ICAgICAgQVNTRVJUKG1fcmVmQ291bnQgPiAwKTsKICAgICAgICAgaWYgKG1fcmVmQ291bnQgPT0g
MSkgewpAQCAtODgsNiArMTAwLDE3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIHJldHVy
biBtX2RlbGV0aW9uSGFzQmVndW47CiAgICAgfQorCisgICAgdm9pZCBtYWtlRXhlbXB0RnJvbVRo
cmVhZENoZWNrKCkKKyAgICB7CisgICAgICAgIG1faXNFeGVtcHRGcm9tVGhyZWFkQ2hlY2sgPSB0
cnVlOworICAgIH0KKworICAgIGJvb2wgaXNPbk5hdGl2ZVRocmVhZCgpIGNvbnN0CisgICAgewor
ICAgICAgICAvLyBpc01haW5UaHJlYWQoKSBpcyB3YXkgZmFzdGVyIHRoZW4gY3VycmVudFRocmVh
ZCgpIG9uIG1hbnkgcGxhdGZvcm1zLCB1c2UgaXQgZmlyc3QuCisgICAgICAgIHJldHVybiBtX2lz
RXhlbXB0RnJvbVRocmVhZENoZWNrIHx8IChtX2NyZWF0ZWRPbk1haW5UaHJlYWQgJiYgaXNNYWlu
VGhyZWFkKCkpIHx8IChtX25hdGl2ZVRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIH0K
ICNlbmRpZgogCiBwcml2YXRlOgpAQCAtOTcsNiArMTIwLDkgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9yZWZDb3VudDsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW47
CisgICAgYm9vbCBtX2lzRXhlbXB0RnJvbVRocmVhZENoZWNrOworICAgIGJvb2wgbV9jcmVhdGVk
T25NYWluVGhyZWFkOworICAgIFRocmVhZElkZW50aWZpZXIgbV9uYXRpdmVUaHJlYWQ7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuY3BwCmluZGV4IGZmZWEzMTguLjQ3OTRk
YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNwcApAQCAtNDQsNyArNDQsOSBAQCBJY29u
UmVjb3JkOjpJY29uUmVjb3JkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICwgbV9zdGFtcCgwKQog
ICAgICwgbV9kYXRhU2V0KGZhbHNlKQogewotCisjaWZuZGVmIE5ERUJVRworICAgIG1ha2VFeGVt
cHRGcm9tVGhyZWFkQ2hlY2soKTsKKyNlbmRpZgogfQogCiBJY29uUmVjb3JkOjp+SWNvblJlY29y
ZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNGEwZDBmMy4uYzM5YmMxMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzIsMTUgKzMyLDI0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogeworI2lmbmRlZiBOREVC
VUcKKyAgICBtYWtlRXhlbXB0RnJvbVRocmVhZENoZWNrKCk7CisjZW5kaWYKIH0KIAogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpCiB7CisjaWZu
ZGVmIE5ERUJVRworICAgIG1ha2VFeGVtcHRGcm9tVGhyZWFkQ2hlY2soKTsKKyNlbmRpZgogICAg
IG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgaW50IHNpemUpCiB7CisjaWZuZGVmIE5E
RUJVRworICAgIG1ha2VFeGVtcHRGcm9tVGhyZWFkQ2hlY2soKTsKKyNlbmRpZgogICAgIG1fYnVm
ZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzJhZWZjOS4uYWJkMjllNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTYzLDYgKzYzLDkgQEAgQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9oYXZlRnJh
bWVDb3VudChmYWxzZSkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogeworI2lmbmRlZiBOREVCVUcK
KyAgICBtYWtlRXhlbXB0RnJvbVRocmVhZENoZWNrKCk7CisjZW5kaWYKICAgICBpbml0UGxhdGZv
cm1EYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJ
bXBsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA1Y2Y0
Y2VkLi5jMDkzMDU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1w
bC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC04Myw2
ICs4MywxMCBAQCBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKCkKICAgICAsIG1fbGVuZ3RoKDApCiAg
ICAgLCBtX2hhc2goMCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgbWFrZUV4ZW1wdEZyb21UaHJl
YWRDaGVjaygpOworI2VuZGlmCisKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBjb21w
dXRlZCBzbyB0aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkKICAg
ICAvLyB3aXRoIGltcHVuaXR5LiBUaGUgZW1wdHkgc3RyaW5nIGlzIHNwZWNpYWwgYmVjYXVzZSBp
dCBpcyBuZXZlciBlbnRlcmVkIGludG8KICAgICAvLyBBdG9taWNTdHJpbmcncyBIYXNoS2V5LCBi
dXQgc3RpbGwgbmVlZHMgdG8gY29tcGFyZSBjb3JyZWN0bHkuCkBAIC05Niw2ICsxMDAsOSBAQCBp
bmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChjaGFyYWN0ZXJzKTsKICAgICBBU1NFUlQobGVu
Z3RoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgbWFrZUV4ZW1wdEZyb21UaHJlYWRDaGVjaygpOwor
I2VuZGlmCiB9CiAKIFN0cmluZ0ltcGw6On5TdHJpbmdJbXBsKCkKQEAgLTEwMDIsMTAgKzEwMDks
MTAgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRoVGVybWlu
YXRpbmdOdWxsQ2hhcmFjdGVyKGNvbnN0IFN0cmkKIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjp0aHJlYWRzYWZlQ29weSgpIGNvbnN0CiB7CisgICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXN1bHQ7CiAgICAgLy8gU3BlY2lhbC1jYXNlIGVtcHR5IHN0cmluZ3MgdG8gbWFr
ZSBzdXJlIHRoYXQgcGVyLXRocmVhZCBlbXB0eSBzdHJpbmcgaW5zdGFuY2UgaXNuJ3QgcmV0dXJu
ZWQuCi0gICAgaWYgKG1fbGVuZ3RoID09IDApCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3RyaW5nSW1wbCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShtX2RhdGEsIG1fbGVuZ3RoKTsKKyAgICBy
ZXN1bHQgPSAobV9sZW5ndGggPT0gMCA/IGFkb3B0UmVmKG5ldyBTdHJpbmdJbXBsKSA6IGNyZWF0
ZShtX2RhdGEsIG1fbGVuZ3RoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcm9zc1RocmVhZFN0cmluZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44201</attachid>
            <date>2009-12-02 18:49:45 -0800</date>
            <delta_ts>2009-12-07 12:21:13 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>8603</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjNmE4NmYxLi5mNWUzNDZkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMDktMTItMDIgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMg
dG8gUmVmQ291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0
IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNjM5CisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKTogRGlzYWJsZSB0aHJlYWQgdmVyaWZpY2F0aW9uIG9uIHRo
aXMgY2xhc3Mgc2luY2UgaXQgdXNlcyBhZGRyZXNzT2ZDb3VudCgpLgorICAgICAgICAqIHd0Zi9S
ZWZDb3VudGVkLmg6CisgICAgICAgIChXVEY6OlRocmVhZFZlcmlmaWVyOjpUaHJlYWRWZXJpZmll
cik6IE5ldyBEZWJ1Zy1vbmx5IGNsYXNzIHRvIHZlcmlmeSB0aGF0IHJlZi9kZXJlZiBvZiBSZWZD
b3VudGVkIGlzIGRvbmUgb24gdGhlIHNhbWUgdGhyZWFkLgorICAgICAgICAoV1RGOjpUaHJlYWRW
ZXJpZmllcjo6YWN0aXZhdGUpOiBBY3RpdmF0ZXMgaGVja3MuIENhbGxlZCB3aGVuIHJlZiBjb3Vu
dCBiZWNvbWVzIGFib3ZlIDIuCisgICAgICAgIChXVEY6OlRocmVhZFZlcmlmaWVyOjpkZWFjdGl2
YXRlKTogRGVhY3RpdmF0ZXMgY2hlY2tzLiBDYWxsZWQgd2hlbiByZWYgY291bnQgZHJvcHMgYmVs
b3cgMi4KKyAgICAgICAgKFdURjo6VGhyZWFkVmVyaWZpZXI6OmRpc2FibGVUaHJlYWRWZXJpZmlj
YXRpb24pOiB1c2VkIG9uIG9iamVjdHMgdGhhdCBzaG91bGQgbm90IGJlIGNoZWNrZWQgKFN0cmlu
Z0ltcGwgZXRjKQorICAgICAgICAoV1RGOjpUaHJlYWRWZXJpZmllcjo6dmVyaWZ5VGhyZWFkKToK
KyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnJlZik6IEFkZCBBU1NFUlQuCisgICAgICAg
IChXVEY6OlJlZkNvdW50ZWRCYXNlOjpoYXNPbmVSZWYpOiBEaXR0by4KKyAgICAgICAgKFdURjo6
UmVmQ291bnRlZEJhc2U6OnJlZkNvdW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRCYXNlOjpkZXJlZkJhc2UpOiBEaXR0by4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6
OmRpc2FibGVUaHJlYWRWZXJpZmljYXRpb24pOiBkZWxlZ2F0ZSB0byBUaHJlYWRWZXJpZmllciBt
ZXRob2QuCisKIDIwMDktMTItMDEgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAppbmRleCBlNGM5YWMzLi5lZWIyZTQ5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC0xNDYsNiArMTQ2LDEwIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTVmFs
dWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8pCiAgICAgICAgIGlnbm9yZVNl
dC5hZGQodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzdHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVu
dCgpOworCisgICAgLy8gVXNlIG9mIGFkZHJlc3NPZkNvdW50KCkgaW4gdGhpcyBjYWxzcyBwcmV2
ZW50cyB0aHJlYWQgdmVyaWZpY2F0aW9uIGluIFJlZkNvdW50ZWQKKyAgICAvLyBzaW5jZSBpdCBt
b2RpZmllcyByZWZjb3VudCB2aWEgb3RoZXIgbWVhbnMgdGhlbiByZWYoKS9kZXJlZigpLgorICAg
IGRpc2FibGVUaHJlYWRWZXJpZmljYXRpb24oKTsKICNlbmRpZgogCiAjaWYgRFVNUF9TVFJVQ1RV
UkVfSURfU1RBVElTVElDUwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50
ZWQuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKaW5kZXggNzYxYTg1Ni4uN2Zi
MDdiZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oCkBAIC0yNCw4ICsyNCw1NiBAQAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKKyNp
Zm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXVEYgewogCisjaWZuZGVmIE5ERUJVRworY2xhc3MgVGhyZWFkVmVyaWZpZXIgeworcHVi
bGljOgorICAgIFRocmVhZFZlcmlmaWVyKCkKKyAgICAgICAgOiBtX2lzQWN0aXZlKGZhbHNlKQor
ICAgICAgICAsIG1faXNUaHJlYWRWZXJpZmljYXRpb25EaXNhYmxlZChmYWxzZSkKKyAgICAgICAg
LCBtX2lzT3duZWRCeU1haW5UaHJlYWQoZmFsc2UpCisgICAgICAgICwgbV9vd25pbmdUaHJlYWQo
MCkKKyAgICB7IH0KKworICAgIC8vIENhcHR1cmUgdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBzdGFy
dCB2ZXJpZnlpbmcgdGhhdCBzdWJzZXF1ZW50IHJlZi9kZXJlZiBoYXBwZW4gb24gdGhpcyB0aHJl
YWQuCisgICAgdm9pZCBhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9pc1RocmVh
ZFZlcmlmaWNhdGlvbkRpc2FibGVkIHx8ICFtX2lzQWN0aXZlKTsKKyAgICAgICAgbV9pc0FjdGl2
ZSA9IHRydWU7CisgICAgICAgIG1faXNPd25lZEJ5TWFpblRocmVhZCA9IGlzTWFpblRocmVhZCgp
OworICAgICAgICBpZiAoIW1faXNPd25lZEJ5TWFpblRocmVhZCkKKyAgICAgICAgICAgIG1fb3du
aW5nVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0
ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9pc1RocmVhZFZlcmlmaWNhdGlvbkRpc2FibGVk
IHx8IG1faXNBY3RpdmUpOworICAgICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gUGVybWFuZW50bHkgZGlzYWJsZSB0aGUgdmVyaWZpY2F0aW9uIG9uIHRoZSBpbnN0YW5j
ZS4gVXNlZCBmb3IgUmVmQ291bnRlZCB0aGF0IGFyZSBpbnRlbnRpb25hbGx5IHVzZWQgY3Jvc3Mt
dGhyZWFkLgorICAgIHZvaWQgZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlvbigpIHsgbV9pc1RocmVh
ZFZlcmlmaWNhdGlvbkRpc2FibGVkID0gdHJ1ZTsgfQorCisgICAgYm9vbCB2ZXJpZnlUaHJlYWQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gaXNNYWluVGhyZWFkKCkgaXMgd2F5IGZhc3RlciB0
aGVuIGN1cnJlbnRUaHJlYWQoKSBvbiBtYW55IHBsYXRmb3JtcywgdXNlIGl0IGZpcnN0LgorICAg
ICAgICByZXR1cm4gbV9pc1RocmVhZFZlcmlmaWNhdGlvbkRpc2FibGVkIHx8ICFtX2lzQWN0aXZl
IHx8IChtX2lzT3duZWRCeU1haW5UaHJlYWQgJiYgaXNNYWluVGhyZWFkKCkpIHx8IChtX293bmlu
Z1RocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29s
IG1faXNBY3RpdmU7CisgICAgYm9vbCBtX2lzVGhyZWFkVmVyaWZpY2F0aW9uRGlzYWJsZWQ7Cisg
ICAgYm9vbCBtX2lzT3duZWRCeU1haW5UaHJlYWQ7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX293
bmluZ1RocmVhZDsKKworfTsKKyNlbmRpZgorCiAvLyBUaGlzIGJhc2UgY2xhc3MgaG9sZHMgdGhl
IG5vbi10ZW1wbGF0ZSBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLgogLy8gVGhlIFJlZkNvdW50ZWQg
Y2xhc3MgaW5oZXJpdHMgZnJvbSBpdCByZWR1Y2luZyB0aGUgdGVtcGxhdGUgYmxvYXQKIC8vIGdl
bmVyYXRlZCBieSB0aGUgY29tcGlsZXIgKHRlY2huaXF1ZSBjYWxsZWQgdGVtcGxhdGUgaG9pc3Rp
bmcpLgpAQCAtMzMsMjEgKzgxLDQwIEBAIGNsYXNzIFJlZkNvdW50ZWRCYXNlIHsKIHB1YmxpYzoK
ICAgICB2b2lkIHJlZigpCiAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RhcnQg
dGhyZWFkIHZlcmlmaWNhdGlvbiBhcyBzb29uIGFzIHRoZSByZWYgY291bnQgZ2V0cyB0byAyLgor
ICAgICAgICAvLyBUaGUgY2xhc3MgZ2V0cyBjcmVhdGVkIHdpdGggYSByZWYgY291bnQgb2YgMSBh
bmQgdGhlbiBwYXNzZWQKKyAgICAgICAgLy8gdG8gYW5vdGhlciB0aHJlYWQgd2hlcmUgdG8gcmVm
IGNvdW50IGdldCBpbmNyZWFzZWQuICBUaGlzCisgICAgICAgIC8vIGlzIGEgaGV1cmlzdGljIGJ1
dCBpdCBzZWVtcyB0byBhbHdheXMgd29yayBhbmQgaGFzIGhlbHBlZAorICAgICAgICAvLyBmaW5k
IHNvbWUgYnVncy4KKyAgICAgICAgaWYgKG1fcmVmQ291bnQgPT0gMSkKKyAgICAgICAgICAgIG1f
dGhyZWFkVmVyaWZpZXIuYWN0aXZhdGUoKTsKKyNlbmRpZgorICAgICAgICBBU1NFUlQobV90aHJl
YWRWZXJpZmllci52ZXJpZnlUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhh
c0JlZ3VuKTsKICAgICAgICAgKyttX3JlZkNvdW50OwogICAgIH0KIAogICAgIGJvb2wgaGFzT25l
UmVmKCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX3RocmVhZFZlcmlmaWVyLnZlcmlm
eVRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAg
ICByZXR1cm4gbV9yZWZDb3VudCA9PSAxOwogICAgIH0KIAogICAgIGludCByZWZDb3VudCgpIGNv
bnN0CiAgICAgeworICAgICAgICBBU1NFUlQobV90aHJlYWRWZXJpZmllci52ZXJpZnlUaHJlYWQo
KSk7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIAorI2lmbmRlZiBOREVCVUcK
KyAgICB2b2lkIGRpc2FibGVUaHJlYWRWZXJpZmljYXRpb24oKQorICAgIHsKKyAgICAgICAgbV90
aHJlYWRWZXJpZmllci5kaXNhYmxlVGhyZWFkVmVyaWZpY2F0aW9uKCk7CisgICAgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICBSZWZDb3VudGVkQmFzZSgpCiAgICAgICAgIDogbV9yZWZDb3Vu
dCgxKQpAQCAtNjQsNiArMTMxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgd2hldGhl
ciB0aGUgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgb3Igbm90LgogICAgIGJvb2wgZGVyZWZCYXNl
KCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3RocmVhZFZlcmlmaWVyLnZlcmlmeVRocmVhZCgp
KTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQo
bV9yZWZDb3VudCA+IDApOwogICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKSB7CkBAIC03NCw2
ICsxNDIsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAKICAgICAgICAgLS1tX3JlZkNvdW50
OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RvcCB0aHJlYWQgdmVyaWZpY2F0aW9uIHdo
ZW4gdGhlIHJlZiBnb2VzIHRvIDEgYmVjYXVzZSBpdAorICAgICAgICAvLyBpcyBzYWZlIHRvIGJl
IHBhc3NlZCB0byBhbm90aGVyIHRocmVhZCBhdCB0aGlzIHBvaW50LgorICAgICAgICBpZiAobV9y
ZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV90aHJlYWRWZXJpZmllci5kZWFjdGl2YXRlKCk7
CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTcsNiArMTcxLDcg
QEAgcHJpdmF0ZToKICAgICBpbnQgbV9yZWZDb3VudDsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9v
bCBtX2RlbGV0aW9uSGFzQmVndW47CisgICAgVGhyZWFkVmVyaWZpZXIgbV90aHJlYWRWZXJpZmll
cjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAxNDUwYTEyLi40NmI4NDY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTEy
LTAyICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhc3NlcnRzIHRvIFJlZkNvdW50
ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRoZSByaWdodCB0aHJlYWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYzOQorCisg
ICAgICAgKiBsb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25SZWNvcmQ6Okljb25SZWNvcmQpOiBEaXNhYmxlIHRocmVhZCB2ZXJpZmljYXRpb24gZm9yIHRo
aXMgY2xhc3MgYmVjYXVzZSBvZiBpdHMgY3Jvc3MtdGhyZWFkIHVzZSBpbiBJY29uRGF0YWJhc2Uu
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwpOiBEaXNhYmxlIHRocmVhZCB2ZXJpZmljYXRpb24gZm9yIHRoaXMgY2xhc3MgYmVjYXVz
ZSBvZiBpdHMgY3Jvc3MtdGhyZWFkIHVzZSBldmVyeXdoZXJlLgorCiAyMDA5LTEyLTAyICBEYXZl
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNwcCBiL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5jcHAKaW5kZXggZmZlYTMxOC4uM2ZjNjNjYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuY3BwCkBAIC00NCw3ICs0NCw5IEBAIEljb25SZWNv
cmQ6Okljb25SZWNvcmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgLCBtX3N0YW1wKDApCiAgICAg
LCBtX2RhdGFTZXQoZmFsc2UpCiB7Ci0KKyNpZm5kZWYgTkRFQlVHCisgICAgZGlzYWJsZVRocmVh
ZFZlcmlmaWNhdGlvbigpOworI2VuZGlmCiB9CiAKIEljb25SZWNvcmQ6On5JY29uUmVjb3JkKCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0YTBkMGYzLi44NDUyMDNiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMiwxNSArMzIsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiB7CisjaWZuZGVmIE5ERUJVRwor
ICAgIGRpc2FibGVUaHJlYWRWZXJpZmljYXRpb24oKTsKKyNlbmRpZgogfQogCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKIHsKKyNpZm5kZWYg
TkRFQlVHCisgICAgZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlvbigpOworI2VuZGlmCiAgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKIHsKKyNpZm5kZWYgTkRFQlVH
CisgICAgZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlvbigpOworI2VuZGlmCiAgICAgbV9idWZmZXIu
YXBwZW5kKGRhdGEsIHNpemUpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwu
Y3BwCmluZGV4IDVjZjRjZWQuLmQyYzI2NTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1w
bC5jcHAKQEAgLTgzLDYgKzgzLDEwIEBAIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoKQogICAgICwg
bV9sZW5ndGgoMCkKICAgICAsIG1faGFzaCgwKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBkaXNh
YmxlVGhyZWFkVmVyaWZpY2F0aW9uKCk7CisjZW5kaWYKKwogICAgIC8vIEVuc3VyZSB0aGF0IHRo
ZSBoYXNoIGlzIGNvbXB1dGVkIHNvIHRoYXQgQXRvbWljU3RyaW5nSGFzaCBjYW4gY2FsbCBleGlz
dGluZ0hhc2goKQogICAgIC8vIHdpdGggaW1wdW5pdHkuIFRoZSBlbXB0eSBzdHJpbmcgaXMgc3Bl
Y2lhbCBiZWNhdXNlIGl0IGlzIG5ldmVyIGVudGVyZWQgaW50bwogICAgIC8vIEF0b21pY1N0cmlu
ZydzIEhhc2hLZXksIGJ1dCBzdGlsbCBuZWVkcyB0byBjb21wYXJlIGNvcnJlY3RseS4KQEAgLTk2
LDYgKzEwMCw5IEBAIGlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGNoYXJhY3RlcnMpOwog
ICAgIEFTU0VSVChsZW5ndGgpOworI2lmbmRlZiBOREVCVUcKKyAgICBkaXNhYmxlVGhyZWFkVmVy
aWZpY2F0aW9uKCk7CisjZW5kaWYKIH0KIAogU3RyaW5nSW1wbDo6flN0cmluZ0ltcGwoKQo=
</data>
<flag name="review"
          id="25998"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="25999"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44423</attachid>
            <date>2009-12-07 12:21:13 -0800</date>
            <delta_ts>2009-12-28 21:42:04 -0800</delta_ts>
            <desc>Updated per David&apos;s comments.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18665</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjNmE4NmYxLi43NmNiZWRiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMDktMTItMDcgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMg
dG8gUmVmQ291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0
IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNjM5CisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKTogRGlzYWJsZSB0aHJlYWQgdmVyaWZpY2F0aW9uIG9uIHRo
aXMgY2xhc3Mgc2luY2UgaXQgdXNlcyBhZGRyZXNzT2ZDb3VudCgpLgorICAgICAgICAqIHd0Zi9S
ZWZDb3VudGVkLmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpyZWYpOiBBZGQgQVNT
RVJULgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6aGFzT25lUmVmKTogRGl0dG8uCisg
ICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpyZWZDb3VudCk6IERpdHRvLgorICAgICAgICAo
V1RGOjpSZWZDb3VudGVkQmFzZTo6ZGVyZWZCYXNlKTogRGl0dG8uCisgICAgICAgIChXVEY6OlJl
ZkNvdW50ZWRCYXNlOjpkaXNhYmxlVGhyZWFkVmVyaWZpY2F0aW9uKTogZGVsZWdhdGUgdG8gVGhy
ZWFkVmVyaWZpZXIgbWV0aG9kLgorICAgICAgICAqIHd0Zi9UaHJlYWRWZXJpZmllci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6VGhyZWFkVmVyaWZpZXI6OlRocmVhZFZlcmlmaWVyKTogTmV3IERl
YnVnLW9ubHkgY2xhc3MgdG8gdmVyaWZ5IHRoYXQgcmVmL2RlcmVmIG9mIFJlZkNvdW50ZWQgaXMg
ZG9uZSBvbiB0aGUgc2FtZSB0aHJlYWQuCisgICAgICAgIChXVEY6OlRocmVhZFZlcmlmaWVyOjph
Y3RpdmF0ZSk6IEFjdGl2YXRlcyBjaGVja3MuIENhbGxlZCB3aGVuIHJlZiBjb3VudCBiZWNvbWVz
IGFib3ZlIDIuCisgICAgICAgIChXVEY6OlRocmVhZFZlcmlmaWVyOjpkZWFjdGl2YXRlKTogRGVh
Y3RpdmF0ZXMgY2hlY2tzLiBDYWxsZWQgd2hlbiByZWYgY291bnQgZHJvcHMgYmVsb3cgMi4KKyAg
ICAgICAgKFdURjo6VGhyZWFkVmVyaWZpZXI6OmRpc2FibGVUaHJlYWRWZXJpZmljYXRpb24pOiB1
c2VkIG9uIG9iamVjdHMgdGhhdCBzaG91bGQgbm90IGJlIGNoZWNrZWQgKFN0cmluZ0ltcGwgZXRj
KQorICAgICAgICAoV1RGOjpUaHJlYWRWZXJpZmllcjo6dmVyaWZ5VGhyZWFkKToKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbTogQWRkIFRocmVhZFZlcmlmaWVyLmggdG8gdGhlIGJ1aWxkIGZpbGUu
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKwogMjAwOS0xMi0wMSAg
SmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyMTMyZjc3Li4yNjI1MTEwIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjgxLDYgKzI4MSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBcCiAJSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhy
ZWFkcy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRWZXJpZmllci5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBl
VHJhaXRzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9VbnVzZWRQYXJhbS5oIFwKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IDM4MDk3YzkuLjY4YzE0M2YgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQpAQCAtNDI3LDYgKzQyNyw3IEBACiAgICAgICAgICAgICAnd3RmL1Ro
cmVhZGluZ1dpbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRTcGVjaWZpYy5oJywKICAg
ICAgICAgICAgICd3dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwJywKKyAgICAgICAgICAgICd3dGYv
VGhyZWFkVmVyaWZpZXIuaCcsCiAgICAgICAgICAgICAnd3RmL1R5cGVUcmFpdHMuY3BwJywKICAg
ICAgICAgICAgICd3dGYvVHlwZVRyYWl0cy5oJywKICAgICAgICAgICAgICd3dGYvdW5pY29kZS9D
b2xsYXRvci5oJywKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9XVEYvV1RGLnZjcHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvagppbmRleCA3OGY1MDdhLi44OWE3OWM3IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKKysrIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCkBAIC01MTMs
NiArNTEzLDEwIEBACiAJCQk+DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5cd3RmXFRocmVhZFZlcmlmaWVyLmgiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJPEZp
bGUNCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxUeXBlVHJhaXRzLmNwcCINCiAJCQk+DQog
CQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTk3NzA0MS4uN2VmYmY2OSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzUsNiArMTc1LDcgQEAKIAkJMTRGOEJBNEYxMDdFQzg5OTAwOTg5MkRDIC8q
IENvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNjkyQTg1MjAyNTU1OTdEMDFGRjYwRjcgLyogQ29sbGVjdG9yLmNwcCAqLzsgfTsKIAkJ
MTgwQjlCMDgwRjE2RDk0RjAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUg
LyogQ3VycmVudFRpbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxODBCOUJGRTBGMTZFOTREMDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTgwQjlBRUYwRjE2
QzU2OTAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmNwcCAqLzsgfTsKKwkJMTg0NzBFODMxMENEOENC
QjAwNTQyNkM5IC8qIFRocmVhZFZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxODQ3MEU3MzEwQ0Q4QUI2MDA1NDI2QzkgLyogVGhyZWFkVmVy
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQzYxNTE2QzBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2QTBFQkFDN0EwMDAz
MTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdT
ID0gIi1mbm8tc3RyaWN0LWFsaWFzaW5nIjsgfTsgfTsKIAkJMUM2MTUxNkQwRUJBQzdBMDAwMzEz
NzZGIC8qIFByb2ZpbGVyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzYxNTE2QjBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIu
aCAqLzsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBB
RDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKQEAgLTY0Myw2ICs2NDQs
NyBAQAogCQkxNEYzNDg4RTBFOTVFRjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvckhlYXBJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODBCOUFFRjBGMTZDNTY5MDA5QkRC
QzUgLyogQ3VycmVudFRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3VycmVudFRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODBCOUFG
MDBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VycmVudFRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTg0NzBFNzMxMENEOEFCNjAwNTQyNkM5IC8qIFRocmVhZFZlcmlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNjE1MTZBMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFByb2ZpbGVyU2VydmVy
Lm1tOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJTZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNjE1MTZCMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlclNlcnZlci5oOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM5MDUxNDIwQkE5RThBNzAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzNTQsNiArMTM1Niw3IEBACiAJCQkJRTFFRTc5MjIwRDZDOTVDRDAw
RkVBM0JBIC8qIFRocmVhZGluZy5oICovLAogCQkJCUUxRUU3OTNDMEQ2QzlCOTIwMEZFQTNCQSAv
KiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi8sCiAJCQkJRTFCN0M4QkQwREEzQTMzNjAwNzRCMERD
IC8qIFRocmVhZFNwZWNpZmljLmggKi8sCisJCQkJMTg0NzBFNzMxMENEOEFCNjAwNTQyNkM5IC8q
IFRocmVhZFZlcmlmaWVyLmggKi8sCiAJCQkJMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5
cGVUcmFpdHMuY3BwICovLAogCQkJCTBCNEQ3RTYyMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJh
aXRzLmggKi8sCiAJCQkJOTM1QUY0NkIwOUU5RDlEQjAwQUNEMUQ4IC8qIFVudXNlZFBhcmFtLmgg
Ki8sCkBAIC0xOTc4LDYgKzE5ODEsNyBAQAogCQkJCUJDMThDNDZGMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBUQ1N5c3RlbUFsbG9jLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MDBFMTZGNUNEMDBC
MzQ0NjAgLyogVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MTBFMTZGNUNE
MDBCMzQ0NjAgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE4NDcwRTgz
MTBDRDhDQkIwMDU0MjZDOSAvKiBUaHJlYWRWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRBNDJFNDAwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGU0YzlhYzMuLmQy
ZjA1YzAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTE0Niw2ICsxNDYs
MTAgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJiB0eXBlSW5mbykKICAgICAgICAgaWdub3JlU2V0LmFkZCh0aGlzKTsKICAgICBlbHNlCiAg
ICAgICAgIHN0cnVjdHVyZUNvdW50ZXIuaW5jcmVtZW50KCk7CisKKyAgICAvLyBVc2Ugb2YgYWRk
cmVzc09mQ291bnQoKSBpbiB0aGlzIGNsYXNzIHByZXZlbnRzIHRocmVhZCB2ZXJpZmljYXRpb24g
aW4gUmVmQ291bnRlZAorICAgIC8vIHNpbmNlIGl0IG1vZGlmaWVzIHJlZmNvdW50IHZpYSBvdGhl
ciBtZWFucyB0aGFuIHJlZigpL2RlcmVmKCkuCisgICAgZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlv
bigpOwogI2VuZGlmCiAKICNpZiBEVU1QX1NUUlVDVFVSRV9JRF9TVEFUSVNUSUNTCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1JlZkNvdW50ZWQuaAppbmRleCA3NjFhODU2Li5mMzg0NTE0IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS93dGYvUmVmQ291bnRlZC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3Vu
dGVkLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFZlcmlmaWVy
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zMywyMSArMzQsNDAgQEAgY2xhc3MgUmVmQ291
bnRlZEJhc2UgewogcHVibGljOgogICAgIHZvaWQgcmVmKCkKICAgICB7CisjaWZuZGVmIE5ERUJV
RworICAgICAgICAvLyBTdGFydCB0aHJlYWQgdmVyaWZpY2F0aW9uIGFzIHNvb24gYXMgdGhlIHJl
ZiBjb3VudCBnZXRzIHRvIDIuCisgICAgICAgIC8vIFRoZSBjbGFzcyBnZXRzIGNyZWF0ZWQgd2l0
aCBhIHJlZiBjb3VudCBvZiAxIGFuZCB0aGVuIHBhc3NlZAorICAgICAgICAvLyB0byBhbm90aGVy
IHRocmVhZCB3aGVyZSB0byByZWYgY291bnQgZ2V0IGluY3JlYXNlZC4gIFRoaXMKKyAgICAgICAg
Ly8gaXMgYSBoZXVyaXN0aWMgYnV0IGl0IHNlZW1zIHRvIGFsd2F5cyB3b3JrIGFuZCBoYXMgaGVs
cGVkCisgICAgICAgIC8vIGZpbmQgc29tZSBidWdzLgorICAgICAgICBpZiAobV9yZWZDb3VudCA9
PSAxKQorICAgICAgICAgICAgbV90aHJlYWRWZXJpZmllci5hY3RpdmF0ZSgpOworI2VuZGlmCisg
ICAgICAgIEFTU0VSVChtX3RocmVhZFZlcmlmaWVyLnZlcmlmeVRocmVhZCgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICArK21fcmVmQ291bnQ7CiAgICAg
fQogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dGhyZWFkVmVyaWZpZXIudmVyaWZ5VGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRp
b25IYXNCZWd1bik7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09IDE7CiAgICAgfQogCiAg
ICAgaW50IHJlZkNvdW50KCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX3RocmVhZFZl
cmlmaWVyLnZlcmlmeVRocmVhZCgpKTsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAg
fQogCisgICAgdm9pZCBkaXNhYmxlVGhyZWFkVmVyaWZpY2F0aW9uKCkKKyAgICB7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICBtX3RocmVhZFZlcmlmaWVyLmRpc2FibGVUaHJlYWRWZXJpZmljYXRp
b24oKTsKKyNlbmRpZgorICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFJlZkNvdW50ZWRCYXNlKCkK
ICAgICAgICAgOiBtX3JlZkNvdW50KDEpCkBAIC02NCw2ICs4NCw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvaW50ZXIgc2hvdWxkIGJlIGZyZWVkIG9yIG5vdC4K
ICAgICBib29sIGRlcmVmQmFzZSgpCiAgICAgeworICAgICAgICBBU1NFUlQobV90aHJlYWRWZXJp
Zmllci52ZXJpZnlUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKICAgICAgICAgQVNTRVJUKG1fcmVmQ291bnQgPiAwKTsKICAgICAgICAgaWYgKG1fcmVmQ291
bnQgPT0gMSkgewpAQCAtNzQsNiArOTUsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAKICAg
ICAgICAgLS1tX3JlZkNvdW50OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RvcCB0aHJl
YWQgdmVyaWZpY2F0aW9uIHdoZW4gdGhlIHJlZiBnb2VzIHRvIDEgYmVjYXVzZSBpdAorICAgICAg
ICAvLyBpcyBzYWZlIHRvIGJlIHBhc3NlZCB0byBhbm90aGVyIHRocmVhZCBhdCB0aGlzIHBvaW50
LgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV90aHJlYWRWZXJp
Zmllci5kZWFjdGl2YXRlKCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtOTcsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9yZWZDb3VudDsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW47CisgICAgVGhyZWFkVmVyaWZp
ZXIgbV90aHJlYWRWZXJpZmllcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZFZlcmlmaWVyLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkVmVy
aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWJjMTBiCi0tLSAv
ZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFZlcmlmaWVyLmgKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVGhyZWFkVmVyaWZpZXJfaAorI2RlZmluZSBUaHJlYWRWZXJpZmll
cl9oCisKKyNpZm5kZWYgTkRFQlVHCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFRocmVh
ZFZlcmlmaWVyIHsKK3B1YmxpYzoKKyAgICBUaHJlYWRWZXJpZmllcigpCisgICAgICAgIDogbV9p
c0FjdGl2ZShmYWxzZSkKKyAgICAgICAgLCBtX2lzVGhyZWFkVmVyaWZpY2F0aW9uRGlzYWJsZWQo
ZmFsc2UpCisgICAgICAgICwgbV9pc093bmVkQnlNYWluVGhyZWFkKGZhbHNlKQorICAgICAgICAs
IG1fb3duaW5nVGhyZWFkKDApCisgICAgeyB9CisKKyAgICAvLyBDYXB0dXJlIHRoZSBjdXJyZW50
IHRocmVhZCBhbmQgc3RhcnQgdmVyaWZ5aW5nIHRoYXQgc3Vic2VxdWVudCByZWYvZGVyZWYgaGFw
cGVuIG9uIHRoaXMgdGhyZWFkLgorICAgIHZvaWQgYWN0aXZhdGUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1faXNUaHJlYWRWZXJpZmljYXRpb25EaXNhYmxlZCB8fCAhbV9pc0FjdGl2ZSk7Cisg
ICAgICAgIG1faXNBY3RpdmUgPSB0cnVlOworICAgICAgICBtX2lzT3duZWRCeU1haW5UaHJlYWQg
PSBpc01haW5UaHJlYWQoKTsKKyAgICAgICAgaWYgKCFtX2lzT3duZWRCeU1haW5UaHJlYWQpCisg
ICAgICAgICAgICBtX293bmluZ1RocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRlYWN0aXZhdGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faXNUaHJlYWRWZXJp
ZmljYXRpb25EaXNhYmxlZCB8fCBtX2lzQWN0aXZlKTsKKyAgICAgICAgbV9pc0FjdGl2ZSA9IGZh
bHNlOworICAgIH0KKworICAgIC8vIFBlcm1hbmVudGx5IGRpc2FibGUgdGhlIHZlcmlmaWNhdGlv
biBvbiB0aGUgaW5zdGFuY2UuIFVzZWQgZm9yIFJlZkNvdW50ZWQgdGhhdCBhcmUgaW50ZW50aW9u
YWxseSB1c2VkIGNyb3NzLXRocmVhZC4KKyAgICB2b2lkIGRpc2FibGVUaHJlYWRWZXJpZmljYXRp
b24oKSB7IG1faXNUaHJlYWRWZXJpZmljYXRpb25EaXNhYmxlZCA9IHRydWU7IH0KKworICAgIGJv
b2wgdmVyaWZ5VGhyZWFkKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIGlzTWFpblRocmVhZCgp
IGlzIHdheSBmYXN0ZXIgdGhlbiBjdXJyZW50VGhyZWFkKCkgb24gbWFueSBwbGF0Zm9ybXMsIHVz
ZSBpdCBmaXJzdC4KKyAgICAgICAgcmV0dXJuIG1faXNUaHJlYWRWZXJpZmljYXRpb25EaXNhYmxl
ZCB8fCAhbV9pc0FjdGl2ZSB8fCAobV9pc093bmVkQnlNYWluVGhyZWFkICYmIGlzTWFpblRocmVh
ZCgpKSB8fCAobV9vd25pbmdUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgYm9vbCBtX2lzQWN0aXZlOworICAgIGJvb2wgbV9pc1RocmVhZFZlcmlmaWNh
dGlvbkRpc2FibGVkOworICAgIGJvb2wgbV9pc093bmVkQnlNYWluVGhyZWFkOworICAgIFRocmVh
ZElkZW50aWZpZXIgbV9vd25pbmdUaHJlYWQ7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYgLy8gTkRFQlVHCisKKyNlbmRpZiAvLyBUaHJlYWRWZXJpZmllcl9oCisKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxv
ZwppbmRleCBhMjYyYjkzLi5hNWM1ZjJiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0R2x1ZS9DaGFu
Z2VMb2cKKysrIGIvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MDktMTItMDcgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVm
Q291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVh
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5
CisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaDogQWRk
ZWQuCisKIDIwMDktMTEtMjQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggcHJvZHVjdGlvbiBidWlsZHMgd2hlcmUgdGhlIHNvdXJjZSB0cmVlIG1heSBiZSByZWFk
LW9ubHkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
VGhyZWFkVmVyaWZpZXIuaCBiL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9U
aHJlYWRWZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYTZm
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvVGhyZWFkVmVyaWZpZXIuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVGhyZWFkVmVyaWZpZXIuaD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ1MGExMi4uYzhlYmNjYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAw
OS0xMi0wNyAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZD
b3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkK
KworICAgICAgICAqIGxvYWRlci9pY29uL0ljb25SZWNvcmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvblJlY29yZDo6SWNvblJlY29yZCk6IERpc2FibGUgdGhyZWFkIHZlcmlmaWNhdGlvbiBm
b3IgdGhpcyBjbGFzcyBiZWNhdXNlIG9mIGl0cyBjcm9zcy10aHJlYWQgdXNlIGluIEljb25EYXRh
YmFzZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6
U3RyaW5nSW1wbCk6IERpc2FibGUgdGhyZWFkIHZlcmlmaWNhdGlvbiBmb3IgdGhpcyBjbGFzcyBi
ZWNhdXNlIG9mIGl0cyBjcm9zcy10aHJlYWQgdXNlIGV2ZXJ5d2hlcmUuCisgICAgICAgICogRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZlcmlmaWVyLmg6IEFkZGVkLgorCiAyMDA5LTEyLTAy
ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhy
ZWFkVmVyaWZpZXIuaCBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZlcmlm
aWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDViY2ViNwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZlcmlmaWVy
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1RocmVhZFZlcmlmaWVyX2gK
KyNkZWZpbmUgV2ViQ29yZV9GV0RfVGhyZWFkVmVyaWZpZXJfaAorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1RocmVhZFZlcmlmaWVyLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvblJlY29yZC5jcHAgYi9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQu
Y3BwCmluZGV4IGZmZWEzMTguLjllMTgwMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvblJlY29yZC5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBJY29uUmVjb3JkOjpJY29uUmVjb3JkKGNvbnN0IFN0cmluZyYg
dXJsKQogICAgICwgbV9zdGFtcCgwKQogICAgICwgbV9kYXRhU2V0KGZhbHNlKQogewotCisgICAg
ZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlvbigpOwogfQogCiBJY29uUmVjb3JkOjp+SWNvblJlY29y
ZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNGEwZDBmMy4uODBhMGM2NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzIsMTUgKzMyLDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogeworICAgIGRpc2FibGVU
aHJlYWRWZXJpZmljYXRpb24oKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgaW50IHNpemUpCiB7CisgICAgZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlv
bigpOwogICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgaW50IHNpemUpCiB7Cisg
ICAgZGlzYWJsZVRocmVhZFZlcmlmaWNhdGlvbigpOwogICAgIG1fYnVmZmVyLmFwcGVuZChkYXRh
LCBzaXplKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJp
bmdJbXBsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA1
Y2Y0Y2VkLi44ODgyY2FlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
SW1wbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC04
Myw2ICs4Myw4IEBAIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoKQogICAgICwgbV9sZW5ndGgoMCkK
ICAgICAsIG1faGFzaCgwKQogeworICAgIGRpc2FibGVUaHJlYWRWZXJpZmljYXRpb24oKTsKKwog
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBoYXNoIGlzIGNvbXB1dGVkIHNvIHRoYXQgQXRvbWljU3Ry
aW5nSGFzaCBjYW4gY2FsbCBleGlzdGluZ0hhc2goKQogICAgIC8vIHdpdGggaW1wdW5pdHkuIFRo
ZSBlbXB0eSBzdHJpbmcgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGlzIG5ldmVyIGVudGVyZWQgaW50
bwogICAgIC8vIEF0b21pY1N0cmluZydzIEhhc2hLZXksIGJ1dCBzdGlsbCBuZWVkcyB0byBjb21w
YXJlIGNvcnJlY3RseS4KQEAgLTk2LDYgKzk4LDcgQEAgaW5saW5lIFN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBB
U1NFUlQoY2hhcmFjdGVycyk7CiAgICAgQVNTRVJUKGxlbmd0aCk7CisgICAgZGlzYWJsZVRocmVh
ZFZlcmlmaWNhdGlvbigpOwogfQogCiBTdHJpbmdJbXBsOjp+U3RyaW5nSW1wbCgpCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDlj
NTUyNDEuLjFlY2NhMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMTItMDcgIERtaXRyeSBU
aXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0byBtYWtlIHN1
cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaDogQWRkZWQuCisKIDIwMDktMTEtMTMg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUg
RE9NSFRNTElucHV0RWxlbWVudFByaXZhdGUuaCBhcyBhIHByaXZhdGUgaGVhZGVyLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaCBi
L1dlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZlcmlmaWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI1MTgyNAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9tYWMvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZlcmlmaWVyLmgKQEAgLTAs
MCArMSBAQAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVGhyZWFkVmVyaWZpZXIuaD4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCA3NGJlMTE1Li5lYjkyYjdlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMTItMDcgIERt
aXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0byBt
YWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaDog
QWRkZWQuCisKIDIwMDktMTItMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRWZXJpZmllci5oIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZl
cmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJhNmZlMgotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9UaHJlYWRWZXJpZmllci5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9UaHJlYWRWZXJpZmllci5oPgo=
</data>
<flag name="commit-queue"
          id="26277"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88125</attachid>
            <date>2011-04-04 14:05:06 -0700</date>
            <delta_ts>2011-04-07 16:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110404140505.patch</filename>
            <type>text/plain</type>
            <size>38582</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVl
OTJmY2VjZGU4NTRjMWJmYmRjNzhiODU5NjFjMTNkZDg4NGI2NGUuLmJlZTQ0NjhhNDkyOGY3NmM4
MDM2OTU5MDNmNjE2MGU5MWY4MzJiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA0LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMg
dG8gdGhlIGJ1aWxkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDogQWRkZWQgZXhwb3J0
cyBmb3IgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBBZGRl
ZCBuZXcgZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZVBvb2w6OkV4ZWN1dGFibGVQb29sKTog
VHVybmVkIG9mZiBjaGVja3MgZm9yIHRoaXMKKyAgICAgICAgIGR1ZSB0byBub3QgYmVpbmcgYWJs
ZSB0byBmaWd1cmUgb3V0IHdoYXQgd2FzIGd1YXJkaW5nIGl0LgorICAgICAgICAqIHBhcnNlci9T
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6U291cmNlUHJv
dmlkZXIpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6CisgICAgICAgIChK
U0M6OlJlZ0V4cDo6UmVnRXhwKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6IERpdHRvLgorICAgICAg
ICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZpbGVzIHRvIHRoZSBidWlsZC4KKyAg
ICAgICAgKiB3dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmNwcDogQWRkZWQuCisgICAgICAgICAg
VGhlIGNsYXNzZXMgd2hpY2ggdmVyaWZ5IHRoYXQgdGhlIGFwcHJvcHJpYXRlIHRocmVhZCBzYWZl
dHkgbWVjaGFuaXNtIGlzIHVzZWQuCisgICAgICAgICogd3RmL05vblRocmVhZFNhZmVWZXJpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgICBEaXR0by4KKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZC5o
OgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmVmKTogQWRkZWQgY2hlY2tzIHVzaW5n
IHRoZSBub24gdGhyZWFkIHNhZmUgdmVyaWZpZXIuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRC
YXNlOjpoYXNPbmVSZWYpOiBEaXR0by4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnJl
ZkNvdW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpzZXROb25UaHJl
YWRTYWZlVmVyaWZpZXIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnNl
dE11dGV4QXNUaHJlYWRTYWZlVmVyaWZpZXIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlZEJhc2U6OlJlZkNvdW50ZWRCYXNlKTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNvdW50
ZWRCYXNlOjpkZXJlZkJhc2UpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6
IEFkanVzdGVkIHRoZSBkZWJ1ZyBzaXplIGNoZWNrIGZvciBSZWZDb3VudGVkLgorICAgICAgICAq
IHd0Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6Q1N0cmlu
Z0J1ZmZlcik6IFR1cm5lZCBvZmYgY2hlY2tzIGZvciB0aGlzIHdoaWxlIGEgZml4IGlzIGJlaW5n
CisgICAgICAgICBkb25lIGluIENocm9taXVtJ3MgdGVzdF9zaGVsbC4KKwogMjAxMS0wNC0wNCAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDBhYjlm
YTgxY2MzNDA5MzE0YTRlYjkwOWZkMDI3ZGRhYTRmMTBmNTcuLjRlNDE2OWRmOTk4NDg2YTgwYmE3
MDBiNGY5NWYyNDVkMTZhNDkxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTQ5MCw2ICs0OTAsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL05vbkNvcHlpbmdTb3J0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTm9u
Y29weWFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRTYWZlVmVy
aWZpZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZp
ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL05vdEZvdW5kLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL09TQWxsb2NhdG9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKaW5kZXggYjllNTM1NDljZGY4OTRjMjAxYWI2YWVlZWZjOTkxYTdkOWRlODY3ZS4uOTVmMmZh
MmI1YjlmZDE4NTEwMzkzYWY1ODNmNmI1MWM1YjA4OGZlZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC02MDMsMyArNjAzLDYgQEAgX19aVFZOM0pTQzhKU09i
amVjdEUKIF9fWlRWTjNKU0M4SlNTdHJpbmdFCiBfanNjb3JlX2Zhc3RtYWxsb2NfaW50cm9zcGVj
dGlvbgogX2tKU0NsYXNzRGVmaW5pdGlvbkVtcHR5CitfX1pOM1dURjI2c2luZ2xlVGhyZWFkVmVy
aWZpZXJDcmVhdGVFdgorX19aTjNXVEYyMG5vVmVyaWZpY2F0aW9uQ3JlYXRlRXYKK19fWk4zV1RG
MTltdXRleFZlcmlmaWVyQ3JlYXRlRVJOU181TXV0ZXhFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IDUyYTgwMzUwZWMyNTM1ODliZjlmNGU3NjM3N2Y5MWZk
YzMwYzY5ZmUuLjgwNTEwYmI1MzI5NjhlZTBkYWI5MGFkYzY2OWFjZjdkY2M5M2U2MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCkBAIC0xNzUsNiArMTc1LDcg
QEAKICAgICAgICAgICAgICd3dGYvTm9uQ29weWluZ1NvcnQuaCcsCiAgICAgICAgICAgICAnd3Rm
L05vbmNvcHlhYmxlLmgnLAogICAgICAgICAgICAgJ3d0Zi9Ob3RGb3VuZC5oJywKKyAgICAgICAg
ICAgICd3dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9OdWxs
UHRyLmgnLAogICAgICAgICAgICAgJ3d0Zi9PU0FsbG9jYXRvci5oJywKICAgICAgICAgICAgICd3
dGYvT3duQXJyYXlQdHIuaCcsCkBAIC01ODQsNiArNTg1LDggQEAKICAgICAgICAgICAgICd3dGYv
TUQ1LmNwcCcsCiAgICAgICAgICAgICAnd3RmL01haW5UaHJlYWQuY3BwJywKICAgICAgICAgICAg
ICd3dGYvTWFsbG9jWm9uZVN1cHBvcnQuaCcsCisgICAgICAgICAgICAnd3RmL05vblRocmVhZFNh
ZmVWZXJpZmllci5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIu
aCcsCiAgICAgICAgICAgICAnd3RmL051bGxQdHIuY3BwJywKICAgICAgICAgICAgICd3dGYvT1NB
bGxvY2F0b3JQb3NpeC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9PU0FsbG9jYXRvclN5bWJpYW4u
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovV1RGL1dURi52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL1dURi9XVEYudmNwcm9qCmluZGV4IGQ5NTE0ZTQ0YTRkYTMzZTA5OGUwYWM3MDAx
MTk1ZWIzOGE5YmQ0YmMuLjc1ZDVmMzhkNzZiMWEwYzY5MmUzYTU3MDAzYjZiZmE3YzllOGJjMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
V1RGL1dURi52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9XVEYvV1RGLnZjcHJvagpAQCAtNzY1LDYgKzc2NSwxNCBAQAogCQkJPgogCQk8L0Zp
bGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxOb25UaHJlYWRTYWZlVmVy
aWZpZXIuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHd0ZlxOb25UaHJlYWRTYWZlVmVyaWZpZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8Rmls
ZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcTm90Rm91bmQuaCIKIAkJCT4KIAkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMmRkYzM5YTg4OThiMmZjYjliN2Yz
ODk5Yjk4NzMwMTViNWRkMzcyLi44NzQwNDgwZDNlNjliZmFlZTRhMGNjMjJkZTE3YTkwNmM1NWI0
MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQsNiArNDQsOCBAQAogCQkw
OEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAwN0RC
NTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAwNjky
REUzIC8qIFR5cGVUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwICov
OyB9OwogCQkwQjREN0U2MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFDODAw
QUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwQkFDOTQ5RjEzMzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2Fm
ZVZlcmlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCQUM5NDlEMTMzODcyODQwMENGMTM1QiAvKiBOb25UaHJlYWRTYWZlVmVyaWZpZXIuY3Bw
ICovOyB9OworCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJERkZBRTAwRkM2MTky
OTAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENy
b3NzVGhyZWFkUmVmQ291bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBCREZGQUUxMEZDNjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9j
UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRG
RkFEMTBGQzYxNkVDMDBENjlFRjQgLyogT3duRmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAq
LzsgfTsKQEAgLTY5OSw2ICs3MDEsOCBAQAogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyog
UmFuZG9tTnVtYmVyU2VlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5k
b21OdW1iZXJTZWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2MEYz
OEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFR5cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQjREN0U2MjBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBCQUM5NDlEMTMzODcyODQwMENGMTM1QiAvKiBOb25UaHJlYWRTYWZlVmVyaWZpZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9uVGhyZWFkU2FmZVZl
cmlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEJBQzk0OUUxMzM4NzI4
NDAwQ0YxMzVCIC8qIE5vblRocmVhZFNhZmVWZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOb25UaHJlYWRTYWZlVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyog
Q3Jvc3NUaHJlYWRSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyb3NzVGhyZWFkUmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
QkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NzgsNiArMTU4Miw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBN0M0
MEMwNzEzMEIwNTdEMDBEMDAyQTEgLyogQmxvY2tTdGFjay5oICovLAogCQkJCUE3QzQwQzA4MTMw
QjA1N0QwMEQwMDJBMSAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAqLywKKwkJCQkwQkFDOTQ5RDEz
Mzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmNwcCAqLywKKwkJCQkwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggKi8sCiAJCQkJ
QTdDNDBDMDkxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLywKIAkJCQk1
MTM1RkFENTEyRDI2ODU2MDAzQzA4M0IgLyogRGVjb2Rlci5oICovLAogCQkJCTUxMzVGQUQ2MTJE
MjY4NTYwMDNDMDgzQiAvKiBFbmNvZGVyLmggKi8sCkBAIC0yNTUzLDYgKzI1NTksNyBAQAogCQkJ
CTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkVDQTNGQTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQ0E0RjExMzJFQUE2RDAwMkIyQUQ3IC8qIERGR0FsaWFzVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIE5vblRocmVhZFNh
ZmVWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMDAwLDYgKzMwMDcsNyBAQAogCQkJCTg2
RUM5RENEMTMyOERGODIwMDJCMkFENyAvKiBERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NkVDOURDRjEzMjhERjgyMDAyQjJBRDcgLyogREZHT3BlcmF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOUREMjEzMjhERjgyMDAyQjJBRDcgLyogREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEJBQzk0OUYxMzM4NzI4NDAwQ0Yx
MzVCIC8qIE5vblRocmVhZFNhZmVWZXJpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggNzdhMjU2
N2EwYzVlYjYwODRlYzA1ZmMyYTQyNDM5YzEzOWNhMzE1ZC4uNzEzMGI2YWYzZTdhYWFjNzRhZWY4
ODY2ZmYyY2JmYmZmZjIxZTRhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxzdGRkZWYu
aD4gLy8gZm9yIHB0cmRpZmZfdAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaD4KICNpbmNs
dWRlIDx3dGYvUGFnZUFsbG9jYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNTAsNiArMzUxLDcgQEAgaW5saW5lIEV4
ZWN1dGFibGVQb29sOjpFeGVjdXRhYmxlUG9vbChzaXplX3QgbikKICAgICBpZiAoIW1fZnJlZVB0
cikKICAgICAgICAgQ1JBU0goKTsgLy8gRmFpbGVkIHRvIGFsbG9jYXRlCiAgICAgbV9lbmQgPSBt
X2ZyZWVQdHIgKyBhbGxvY1NpemU7CisgICAgc2V0Tm9uVGhyZWFkU2FmZVZlcmlmaWVyKFdURjo6
Tm9uVGhyZWFkU2FmZVZlcmlmaWVyOjpjcmVhdGVOb1ZlcmZpY2F0aW9uRG9Ob3RVc2VUaGlzKCkp
OwogfQogCiBpbmxpbmUgdm9pZCogRXhlY3V0YWJsZVBvb2w6OnBvb2xBbGxvY2F0ZShzaXplX3Qg
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRl
eCBlOWI2YjU2MTRlZDk2N2UxOWQwZjdmMTRkNzMwNzUwNGVhNDNhMmNkLi43ODRkNTJiMWFmYzAy
OWU5MDJlZGQ5NjlkYjdmMzE3YzE5OTM0ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJT
b3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgPHd0
Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CkBAIC00Niw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2NhY2hl
KGNhY2hlID8gY2FjaGUgOiBuZXcgU291cmNlUHJvdmlkZXJDYWNoZSkKICAgICAgICAgICAgICwg
bV9jYWNoZU93bmVkKCFjYWNoZSkKICAgICAgICAgeworICAgICAgICAgICAgc2V0Tm9uVGhyZWFk
U2FmZVZlcmlmaWVyKFdURjo6Tm9uVGhyZWFkU2FmZVZlcmlmaWVyOjpjcmVhdGVOb1ZlcmZpY2F0
aW9uRG9Ob3RVc2VUaGlzKCkpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgflNvdXJjZVBy
b3ZpZGVyKCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKaW5kZXggMjVjYjJkNWJlMDJkYWMwNjBmOTRlMmIxNGY1Y2RkNzYyMGNiZjA4NC4uZTVmNzhm
MWY0NzA2Y2RlYmU0ZmQwODgzNjliZDgzYTFhYTQzYmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8c3RkbGli
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL093bkFy
cmF5UHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODUsNiArODYsNyBAQCBpbmxpbmUgUmVn
RXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0
ZXJuU3RyaW5nLCBSZQogICAgICwgbV9yZXByZXNlbnRhdGlvbihhZG9wdFB0cihuZXcgUmVnRXhw
UmVwcmVzZW50YXRpb24pKQogewogICAgIG1fc3RhdGUgPSBjb21waWxlKGdsb2JhbERhdGEpOwor
ICAgIHNldE5vblRocmVhZFNhZmVWZXJpZmllcihXVEY6Ok5vblRocmVhZFNhZmVWZXJpZmllcjo6
Y3JlYXRlTm9WZXJmaWNhdGlvbkRvTm90VXNlVGhpcygpKTsKIH0KIAogUmVnRXhwOjp+UmVnRXhw
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDEz
MWVhNmJkZTMwYTU2MDk3NTE5OGRlMTE3ZmY0MmVjNjdiNzliN2UuLmE2Nzk3NDQzNTA3MTU3NmNl
OWE5YzU1ZWM1MDZkODJlMjMxODdmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKKyNpbmNsdWRlIDx3dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAt
MjE2LDYgKzIxNyw4IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBj
b25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIHVuc2lnbmVkIGFub255CiAgICAgICAgIGlnbm9yZVNl
dC5hZGQodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzdHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVu
dCgpOworCisgICAgc2V0Tm9uVGhyZWFkU2FmZVZlcmlmaWVyKFdURjo6Tm9uVGhyZWFkU2FmZVZl
cmlmaWVyOjpjcmVhdGVOb1ZlcmZpY2F0aW9uRG9Ob3RVc2VUaGlzKCkpOwogI2VuZGlmCiAKICNp
ZiBEVU1QX1NUUlVDVFVSRV9JRF9TVEFUSVNUSUNTCkBAIC0yNTAsNiArMjUzLDggQEAgU3RydWN0
dXJlOjpTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICAgICAgaWdub3Jl
U2V0LmFkZCh0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIHN0cnVjdHVyZUNvdW50ZXIuaW5jcmVt
ZW50KCk7CisKKyAgICBzZXROb25UaHJlYWRTYWZlVmVyaWZpZXIoV1RGOjpOb25UaHJlYWRTYWZl
VmVyaWZpZXI6OmNyZWF0ZU5vVmVyZmljYXRpb25Eb05vdFVzZVRoaXMoKSk7CiAjZW5kaWYKIAog
I2lmIERVTVBfU1RSVUNUVVJFX0lEX1NUQVRJU1RJQ1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDkxYjY5NDQ5NTU2MjM0ZWJlYTVlZDAzOWM1NGQ5NTg2MTY3
ZjJkMDYuLjJiMDQ5Y2U1Mjc5MTdlZTUyOWQxOWJhY2ViOWRlZDJhZDk3NmE0N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDEsNiArNDEsNyBAQCBTRVQo
V1RGX0hFQURFUlMKICAgICBNYXRoRXh0cmFzLmgKICAgICBNZXNzYWdlUXVldWUuaAogICAgIE5v
bkNvcHlpbmdTb3J0LmgKKyAgICBOb25UaHJlYWRTYWZlVmVyaWZpZXIuaAogICAgIE5vbmNvcHlh
YmxlLmgKICAgICBOb3RGb3VuZC5oCiAgICAgTnVsbFB0ci5oCkBAIC0xMTcsNiArMTE4LDcgQEAg
U0VUKFdURl9TT1VSQ0VTCiAgICAgSGFzaFRhYmxlLmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAg
ICAgTUQ1LmNwcAorICAgIE5vblRocmVhZFNhZmVWZXJpZmllci5jcHAKICAgICBPU1JhbmRvbVNv
dXJjZS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRTYWZl
VmVyaWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRTYWZlVmVy
aWZpZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNDc1ZTU4Yjc3YTBlODY4YzBmMDY5MWJjZGMzNWI3ZmQ1
NTcyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL05vblRo
cmVhZFNhZmVWZXJpZmllci5jcHAKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJOb25UaHJlYWRTYWZlVmVyaWZpZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmbmRlZiBOREVCVUcKKworY2xh
c3MgU2luZ2xlVGhyZWFkVmVyaWZpZXIgOiBwdWJsaWMgTm9uVGhyZWFkU2FmZVZlcmlmaWVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVUaHJlYWRWZXJpZmllcik7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2luZ2xlVGhyZWFkVmVyaWZpZXI+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNpbmdsZVRocmVhZFZlcmlmaWVyKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcmVkKGJvb2wpOworICAgIHZpcnR1YWwg
Ym9vbCB2ZXJpZnlTYWZldHkoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaW5nbGVUaHJlYWRW
ZXJpZmllcigpCisgICAgICAgIDogbV9vd25pbmdUaHJlYWQoMCkKKyAgICAgICAgLCBtX3NoYXJl
ZChmYWxzZSkKKyAgICAgICAgLCBtX2lzT3duZWRCeU1haW5UaHJlYWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworICAgIFRocmVhZElkZW50aWZpZXIgbV9vd25pbmdUaHJlYWQ7CisgICAgYm9vbCBt
X3NoYXJlZDsKKyAgICBib29sIG1faXNPd25lZEJ5TWFpblRocmVhZDsKK307CisKK2NsYXNzIE11
dGV4VmVyaWZpZXIgOiBwdWJsaWMgTm9uVGhyZWFkU2FmZVZlcmlmaWVyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNdXRleFZlcmlmaWVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxNdXRleFZlcmlmaWVyPiBjcmVhdGUoTXV0ZXgmIG11dGV4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRleFZlcmlmaWVyKG11dGV4KSk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHNldFNoYXJlZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5U2Fm
ZXR5KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgTXV0ZXhWZXJpZmllcihNdXRleCYgbXV0ZXgp
CisgICAgICAgIDogbV9tdXRleChtdXRleCkKKyAgICAgICAgLCBtX3NoYXJlZChmYWxzZSkKKyAg
ICB7CisgICAgfQorCisgICAgTXV0ZXgmIG1fbXV0ZXg7CisgICAgYm9vbCBtX3NoYXJlZDsKK307
CisKK2NsYXNzIE5vVmVyaWZpY2F0aW9uIDogcHVibGljIE5vblRocmVhZFNhZmVWZXJpZmllciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9WZXJpZmljYXRpb24pOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPE5vVmVyaWZpY2F0aW9uPiBjcmVhdGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb1ZlcmlmaWNhdGlvbik7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHNldFNoYXJlZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5U2FmZXR5
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgTm9WZXJpZmljYXRpb24oKSB7IH0KK307CisKK3Zv
aWQgU2luZ2xlVGhyZWFkVmVyaWZpZXI6OnNldFNoYXJlZChib29sIHNoYXJlZCkKK3sKKyAgICBB
U1NFUlQoc2hhcmVkID09ICFtX3NoYXJlZCk7CisgICAgbV9zaGFyZWQgPSBzaGFyZWQ7CisKKyAg
ICBpZiAoIW1fc2hhcmVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYXB0dXJlIHRoZSBj
dXJyZW50IHRocmVhZCB0byB2ZXJpZnkgdGhhdCBzdWJzZXF1ZW50IHJlZi9kZXJlZiBoYXBwZW4g
b24gdGhpcyB0aHJlYWQuCisgICAgbV9pc093bmVkQnlNYWluVGhyZWFkID0gaXNNYWluVGhyZWFk
KCk7CisgICAgaWYgKCFtX2lzT3duZWRCeU1haW5UaHJlYWQpCisgICAgICAgIG1fb3duaW5nVGhy
ZWFkID0gY3VycmVudFRocmVhZCgpOworfQorCitib29sIFNpbmdsZVRocmVhZFZlcmlmaWVyOjp2
ZXJpZnlTYWZldHkoKSBjb25zdAoreworICAgIGlmICghbV9zaGFyZWQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gaXNNYWluVGhyZWFkKCkgaXMgd2F5IGZhc3RlciB0aGFuIGN1cnJl
bnRUaHJlYWQoKSBvbiBtYW55IHBsYXRmb3Jtcywgc28gdXNlIGl0IGZpcnN0LgorICAgIHJldHVy
biAobV9pc093bmVkQnlNYWluVGhyZWFkICYmIGlzTWFpblRocmVhZCgpKSB8fCAobV9vd25pbmdU
aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKK30KKwordm9pZCBNdXRleFZlcmlmaWVyOjpzZXRT
aGFyZWQoYm9vbCBzaGFyZWQpCit7CisgICAgQVNTRVJUKHNoYXJlZCA9PSAhbV9zaGFyZWQpOwor
ICAgIG1fc2hhcmVkID0gc2hhcmVkOworfQorCitib29sIE11dGV4VmVyaWZpZXI6OnZlcmlmeVNh
ZmV0eSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NoYXJlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBpZiAoIW1fbXV0ZXgudHJ5TG9jaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBtX211dGV4LnVubG9jaygpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBOb1Zlcmlm
aWNhdGlvbjo6c2V0U2hhcmVkKGJvb2wpCit7Cit9CisKK2Jvb2wgTm9WZXJpZmljYXRpb246OnZl
cmlmeVNhZmV0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bhc3NPd25QdHI8
Tm9uVGhyZWFkU2FmZVZlcmlmaWVyPiBzaW5nbGVUaHJlYWRWZXJpZmllckNyZWF0ZSgpCit7Cisg
ICAgcmV0dXJuIFNpbmdsZVRocmVhZFZlcmlmaWVyOjpjcmVhdGUoKTsKK30KKworUGFzc093blB0
cjxOb25UaHJlYWRTYWZlVmVyaWZpZXI+IG11dGV4VmVyaWZpZXJDcmVhdGUoTXV0ZXgmIG11dGV4
KQoreworICAgIHJldHVybiBNdXRleFZlcmlmaWVyOjpjcmVhdGUobXV0ZXgpOworfQorCitQYXNz
T3duUHRyPE5vblRocmVhZFNhZmVWZXJpZmllcj4gbm9WZXJpZmljYXRpb25DcmVhdGUoKQorewor
ICAgIHJldHVybiBOb1ZlcmlmaWNhdGlvbjo6Y3JlYXRlKCk7Cit9CisKKyNlbHNlCisKK1Bhc3NP
d25QdHI8Tm9uVGhyZWFkU2FmZVZlcmlmaWVyPiBzaW5nbGVUaHJlYWRWZXJpZmllckNyZWF0ZSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NPd25QdHI8Tm9uVGhyZWFkU2FmZVZlcmlmaWVy
PiBtdXRleFZlcmlmaWVyQ3JlYXRlKE11dGV4JikKK3sKKyAgICByZXR1cm4gMDsKK30KKworUGFz
c093blB0cjxOb25UaHJlYWRTYWZlVmVyaWZpZXI+IG5vVmVyaWZpY2F0aW9uQ3JlYXRlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIE5ERUJVRworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL05vblRocmVhZFNh
ZmVWZXJpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRTYWZlVmVy
aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMmE0NjYwM2QwZDQwZTQyYzk3MWU4NGU3MzU0YzYyMDU0OTlj
OTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJl
YWRTYWZlVmVyaWZpZXIuaApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm9uVGhyZWFkU2FmZVZl
cmlmaWVyX2gKKyNkZWZpbmUgTm9uVGhyZWFkU2FmZVZlcmlmaWVyX2gKKworI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBNdXRleDsKKworY2xh
c3MgTm9uVGhyZWFkU2FmZVZlcmlmaWVyIHsKK3B1YmxpYzoKKyAgICAvLyBQcmVidWlsdCB2ZXJp
ZmllcnMgKG90aGVycyBtYXkgYmUgY3JlYXRlZCBieSBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZh
Y2UpLgorCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCB3aWxsIG9ubHkgYmUgdXNl
ZCBvbiBhIHNpbmdsZSB0aHJlYWQuCisgICAgLy8gVGhlIHRocmVhZCBnZXRzIGNhcHR1cmVkIHdo
ZW4gdGhlIHJlZiBjb3VudCBnb2VzIHRvIDIgYW5kIHVuc2V0IHdoZW4gdGhlCisgICAgLy8gcmVm
IGNvdW50IGdvZXMgdG8gMS4KKyAgICBzdGF0aWMgUGFzc093blB0cjxOb25UaHJlYWRTYWZlVmVy
aWZpZXI+IGNyZWF0ZVNpbmdsZVRocmVhZFZlcmlmaWVyKCk7CisKKyAgICAvLyBJbmRpY2F0ZXMg
dGhhdCBhY2Nlc3MgdG8gdGhlIG9iamVjdCBpcyBndWFyZGVkIGJ5IGEgbXV0ZXguCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Tm9uVGhyZWFkU2FmZVZlcmlmaWVyPiBjcmVhdGVNdXRleFZlcmlmaWVy
KE11dGV4Jik7CisKKyAgICAvLyBUdXJucyBvZmYgdmVyaWZpY2F0aW9uLiBJdCBpcyBoaWdobHkg
cmVjb21tZW5kZWQgbm90IHRvIHVzZSB0aGlzLiBJbnN0ZWFkIGVpdGhlcgorICAgIC8vIHVzZSBv
bmUgb2YgdGhlIGFib3ZlIG9yIGNyZWF0ZSB5b3VyIG93biB2ZXJpZmllciB0aGF0IGltcGxlbWVu
dHMgTm9uVGhyZWFkU2FmZVZlcmlmaWVyLgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE5vblRocmVh
ZFNhZmVWZXJpZmllcj4gY3JlYXRlTm9WZXJmaWNhdGlvbkRvTm90VXNlVGhpcygpOworCisgICAg
dmlydHVhbCB+Tm9uVGhyZWFkU2FmZVZlcmlmaWVyKCkgeyB9CisKKyAgICAvLyBJbmRpY2F0ZSB0
aGF0IHRoZSBvYmplY3QgbWF5IChvciBtYXkgbm90KSBiZSBvd25lZCBieSBtb3JlIHRoYW4gb25l
IHBsYWNlLgorICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFyZWQoYm9vbCkgPSAwOworCisgICAgLy8g
Q2hlY2sgdGhhdCBpdCBpcyBvayB0byB1c2UgdGhlIG9iamVjdCBhdCB0aGlzIG1vbWVudCBvbiB0
aGUgY3VycmVudCB0aHJlYWQuCisgICAgdmlydHVhbCBib29sIHZlcmlmeVNhZmV0eSgpIGNvbnN0
ID0gMDsKK307CisKKy8vIERvbid0IHVzZSB0aGVzZSBkaXJlY3RseS4KK1Bhc3NPd25QdHI8Tm9u
VGhyZWFkU2FmZVZlcmlmaWVyPiBzaW5nbGVUaHJlYWRWZXJpZmllckNyZWF0ZSgpOworUGFzc093
blB0cjxOb25UaHJlYWRTYWZlVmVyaWZpZXI+IG11dGV4VmVyaWZpZXJDcmVhdGUoTXV0ZXgmKTsK
K1Bhc3NPd25QdHI8Tm9uVGhyZWFkU2FmZVZlcmlmaWVyPiBub1ZlcmlmaWNhdGlvbkNyZWF0ZSgp
OworCisjaWZuZGVmIE5ERUJVRworCitpbmxpbmUgUGFzc093blB0cjxOb25UaHJlYWRTYWZlVmVy
aWZpZXI+IE5vblRocmVhZFNhZmVWZXJpZmllcjo6Y3JlYXRlU2luZ2xlVGhyZWFkVmVyaWZpZXIo
KQoreworICAgIHJldHVybiBzaW5nbGVUaHJlYWRWZXJpZmllckNyZWF0ZSgpOworfQorCitpbmxp
bmUgUGFzc093blB0cjxOb25UaHJlYWRTYWZlVmVyaWZpZXI+IE5vblRocmVhZFNhZmVWZXJpZmll
cjo6Y3JlYXRlTXV0ZXhWZXJpZmllcihNdXRleCYgbXV0ZXgpCit7CisgICAgcmV0dXJuIG11dGV4
VmVyaWZpZXJDcmVhdGUobXV0ZXgpOworfQorCitpbmxpbmUgUGFzc093blB0cjxOb25UaHJlYWRT
YWZlVmVyaWZpZXI+IE5vblRocmVhZFNhZmVWZXJpZmllcjo6Y3JlYXRlTm9WZXJmaWNhdGlvbkRv
Tm90VXNlVGhpcygpCit7CisgICAgcmV0dXJuIG5vVmVyaWZpY2F0aW9uQ3JlYXRlKCk7Cit9CisK
KyNlbHNlCisKK2lubGluZSBQYXNzT3duUHRyPE5vblRocmVhZFNhZmVWZXJpZmllcj4gTm9uVGhy
ZWFkU2FmZVZlcmlmaWVyOjpjcmVhdGVTaW5nbGVUaHJlYWRWZXJpZmllcigpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKK2lubGluZSBQYXNzT3duUHRyPE5vblRocmVhZFNhZmVWZXJpZmllcj4gTm9u
VGhyZWFkU2FmZVZlcmlmaWVyOjpjcmVhdGVNdXRleFZlcmlmaWVyKE11dGV4JikKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworaW5saW5lIFBhc3NPd25QdHI8Tm9uVGhyZWFkU2FmZVZlcmlmaWVyPiBO
b25UaHJlYWRTYWZlVmVyaWZpZXI6OmNyZWF0ZU5vVmVyZmljYXRpb25Eb05vdFVzZVRoaXMoKQor
eworICAgIHJldHVybiAwOworfQorCisjZW5kaWYgLy8gTkRFQlVHCisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gTm9uVGhyZWFkU2FmZVZlcmlmaWVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9SZWZDb3VudGVkLmgKaW5kZXggMTJiNjcwZTA3YzFlNWZhY2Q1ZGYzODNjZWQ2N2Fj
MGU2ZDQ2Y2JmMC4uNGVhZTBlOWM5YWU0ZWE1NmIwZmNjZWFjYWY1YWY2OGVkZDJlMTI4NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKQEAgLTIzLDEwICsyMywxNSBAQAog
CiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkZhc3RBbGxvY0Jhc2UuaCIKKyNp
bmNsdWRlICJOb25UaHJlYWRTYWZlVmVyaWZpZXIuaCIKICNpbmNsdWRlICJOb25jb3B5YWJsZS5o
IgorI2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgiCiAKIG5hbWVz
cGFjZSBXVEYgewogCitjbGFzcyBNdXRleDsKKwogLy8gVGhpcyBiYXNlIGNsYXNzIGhvbGRzIHRo
ZSBub24tdGVtcGxhdGUgbWV0aG9kcyBhbmQgYXR0cmlidXRlcy4KIC8vIFRoZSBSZWZDb3VudGVk
IGNsYXNzIGluaGVyaXRzIGZyb20gaXQgcmVkdWNpbmcgdGhlIHRlbXBsYXRlIGJsb2F0CiAvLyBn
ZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyICh0ZWNobmlxdWUgY2FsbGVkIHRlbXBsYXRlIGhvaXN0
aW5nKS4KQEAgLTM0LDYgKzM5LDIwIEBAIGNsYXNzIFJlZkNvdW50ZWRCYXNlIHsKIHB1YmxpYzoK
ICAgICB2b2lkIHJlZigpCiAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RhcnQg
dGhyZWFkIHZlcmlmaWNhdGlvbiBhcyBzb29uIGFzIHRoZSByZWYgY291bnQgZ2V0cyB0byAyLgor
ICAgICAgICAvLyBUaGUgY2xhc3MgZ2V0cyBjcmVhdGVkIHdpdGggYSByZWYgY291bnQgb2YgMSBh
bmQgdGhlbiBwYXNzZWQKKyAgICAgICAgLy8gdG8gYW5vdGhlciB0aHJlYWQgd2hlcmUgdG8gcmVm
IGNvdW50IGdldCBpbmNyZWFzZWQuIFRoaXMKKyAgICAgICAgLy8gaXMgYSBoZXVyaXN0aWMgYnV0
IGl0IHNlZW1zIHRvIGFsd2F5cyB3b3JrIGFuZCBoYXMgaGVscGVkCisgICAgICAgIC8vIGZpbmQg
c29tZSBidWdzLgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV9u
b25UaHJlYWRTYWZlVmVyaWZpZXItPnNldFNoYXJlZCh0cnVlKTsKKyNlbmRpZgorICAgICAgICAv
LyBJZiB0aGlzIGFzc2VydCBmaXJlcywgaXQgZWl0aGVyIGluZGljYXRlcyBhIHRocmVhZCBzYWZl
IHByb2JsZW0gb3IKKyAgICAgICAgLy8gdGhhdCB0aGUgc2FmZXR5IGlzbid0IGJlaW5nIGNoZWNr
ZWQgaW4gdGhlIGNvcnJlY3QgbWFubmVyLiBTZWUKKyAgICAgICAgLy8gTm9uVGhyZWFkU2FmZVZl
cmlmaWVyIGZvciB0aGUgZGlmZmVyZW50IG1lY2hhbmlzbXMgYW5kIGNhbGwKKyAgICAgICAgLy8g
c2V0Tm9uVGhyZWFkU2FmZVZlcmlmaWVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIG9uZS4KKyAgICAg
ICAgQVNTRVJUKG1fbm9uVGhyZWFkU2FmZVZlcmlmaWVyLT52ZXJpZnlTYWZldHkoKSk7CiAgICAg
ICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0
aW9uSXNSZXF1aXJlZCk7CiAgICAgICAgICsrbV9yZWZDb3VudDsKQEAgLTQxLDE1ICs2MCwzMyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CiAgICAgeworICAgICAgICBB
U1NFUlQobV9ub25UaHJlYWRTYWZlVmVyaWZpZXItPnZlcmlmeVNhZmV0eSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICByZXR1cm4gbV9yZWZDb3VudCA9
PSAxOwogICAgIH0KIAogICAgIGludCByZWZDb3VudCgpIGNvbnN0CiAgICAgeworICAgICAgICBB
U1NFUlQobV9ub25UaHJlYWRTYWZlVmVyaWZpZXItPnZlcmlmeVNhZmV0eSgpKTsKICAgICAgICAg
cmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQogCisgICAgdm9pZCBzZXROb25UaHJlYWRTYWZlVmVy
aWZpZXIoUGFzc093blB0cjxOb25UaHJlYWRTYWZlVmVyaWZpZXI+IG5vblRocmVhZFNhZmVWZXJp
ZmllcikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShub25UaHJlYWRTYWZlVmVyaWZpZXIu
Z2V0KCkpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9ub25UaHJlYWRTYWZlVmVyaWZpZXIg
PSBub25UaHJlYWRTYWZlVmVyaWZpZXI7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHNldE11
dGV4QXNUaHJlYWRTYWZlVmVyaWZpZXIoTXV0ZXgmIG11dGV4KQorICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKCZtdXRleCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBzZXROb25UaHJlYWRT
YWZlVmVyaWZpZXIoTm9uVGhyZWFkU2FmZVZlcmlmaWVyOjpjcmVhdGVNdXRleFZlcmlmaWVyKG11
dGV4KSk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVu
dCgpCiAgICAgewogI2lmbmRlZiBOREVCVUcKQEAgLTcxLDYgKzEwOCw3IEBAIHByb3RlY3RlZDoK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9kZWxldGlvbkhhc0JlZ3VuKGZhbHNlKQogICAg
ICAgICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKHRydWUpCisgICAgICAgICwgbV9ub25UaHJlYWRT
YWZlVmVyaWZpZXIoTm9uVGhyZWFkU2FmZVZlcmlmaWVyOjpjcmVhdGVTaW5nbGVUaHJlYWRWZXJp
ZmllcigpKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTg0LDYgKzEyMiw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvaW50ZXIgc2hvdWxkIGJlIGZyZWVkIG9y
IG5vdC4KICAgICBib29sIGRlcmVmQmFzZSgpCiAgICAgeworICAgICAgICBBU1NFUlQobV9ub25U
aHJlYWRTYWZlVmVyaWZpZXItPnZlcmlmeVNhZmV0eSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2Rl
bGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsK
IApAQCAtOTYsNiArMTM1LDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogCiAgICAgICAgIC0t
bV9yZWZDb3VudDsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN0b3AgdGhyZWFkIHZlcmlm
aWNhdGlvbiB3aGVuIHRoZSByZWYgZ29lcyB0byAxIGJlY2F1c2UgaXQKKyAgICAgICAgLy8gaXMg
c2FmZSB0byBiZSBwYXNzZWQgdG8gYW5vdGhlciB0aHJlYWQgYXQgdGhpcyBwb2ludC4KKyAgICAg
ICAgaWYgKG1fcmVmQ291bnQgPT0gMSkKKyAgICAgICAgICAgIG1fbm9uVGhyZWFkU2FmZVZlcmlm
aWVyLT5zZXRTaGFyZWQoZmFsc2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTExNyw2ICsxNjIsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIG1fZGVsZXRpb25IYXNCZWd1bjsKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVkOwor
ICAgIE93blB0cjxOb25UaHJlYWRTYWZlVmVyaWZpZXI+IG1fbm9uVGhyZWFkU2FmZVZlcmlmaWVy
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Np
emVMaW1pdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcApp
bmRleCA0ZTQ4MWJiOWMxMDM3YWU5YTA4YzgwMWExNWVkYjA1NGYyNWIxNmQ3Li5mMzc2OTg1NTE5
MDcwMWE1Y2VkMWQwM2VhMDk4MmM3MzRiMjQ3MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvU2l6ZUxpbWl0cy5jcHAKQEAgLTQxLDggKzQxLDEzIEBACiBuYW1lc3BhY2UgV1RGIHsKIAog
I2lmbmRlZiBOREVCVUcKLXN0cnVjdCBTdHJ1Y3RXaXRoSW50QW5kVHdvQm9vbHMgeyBpbnQgYTsg
Ym9vbCBiOyBib29sIGM7IH07Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURl
YnVnU2l6ZSA9IHNpemVvZihTdHJ1Y3RXaXRoSW50QW5kVHdvQm9vbHMpIC0gc2l6ZW9mKGludCk7
CitzdHJ1Y3QgRmFrZURlYnVnUmVmQ291bnRlZCB7CisgICAgaW50IGE7CisgICAgYm9vbCBiOwor
ICAgIGJvb2wgYzsKKyAgICBPd25QdHI8aW50PiBkOworfTsKK3N0YXRpYyBjb25zdCBzaXplX3Qg
cmVmQ291bnRlZEV4dHJhRGVidWdTaXplID0gc2l6ZW9mKEZha2VEZWJ1Z1JlZkNvdW50ZWQpIC0g
c2l6ZW9mKGludCk7CiAjZWxzZQogc3RhdGljIGNvbnN0IHNpemVfdCByZWZDb3VudGVkRXh0cmFE
ZWJ1Z1NpemUgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJp
bmcuaAppbmRleCAzNDNhN2E1MjUyMDc0MWUyYWRjZGJkODEwZTNlOTk5NWEzODBkNDY0Li41ZDg1
ZTMwNThlNzdjYjg4ZGVhMGVjOWMwN2JjMzljZTk5NjFhYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1N0cmlu
Z19oCiAjZGVmaW5lIENTdHJpbmdfaAogCisjaW5jbHVkZSAiTm9uVGhyZWFkU2FmZVZlcmlmaWVy
LmgiCiAjaW5jbHVkZSAiUGFzc1JlZlB0ci5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQuaCIKICNp
bmNsdWRlICJWZWN0b3IuaCIKQEAgLTQxLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgQ1N0cmluZzsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGNy
ZWF0ZShzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1N0cmluZ0J1ZmZlcihs
ZW5ndGgpKTsgfQotICAgIENTdHJpbmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3Rvcihs
ZW5ndGgpIHsgfQorICAgIENTdHJpbmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3Rvcihs
ZW5ndGgpIHsgc2V0Tm9uVGhyZWFkU2FmZVZlcmlmaWVyKE5vblRocmVhZFNhZmVWZXJpZmllcjo6
Y3JlYXRlTm9WZXJmaWNhdGlvbkRvTm90VXNlVGhpcygpKTsgfQogICAgIGNoYXIqIG11dGFibGVE
YXRhKCkgeyByZXR1cm4gbV92ZWN0b3IuZGF0YSgpOyB9CiAKICAgICBWZWN0b3I8Y2hhcj4gbV92
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhMjIyNzQ4ZDFjNTIyYTc4ZGYzMzFk
NzQyZTM1ZmE4NjdlMGRiZDMxLi5jODAyODQ2MjAwYTdlNTQ5NjA4ODM0ZjYyN2E0YzU4MWM2ZDJj
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNC0w
NCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0
byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg6IEFkZGVk
LgorCiAyMDExLTAzLTMwICBUaW11ciBJc2tob2R6aGFub3YgIDx0aW11cnJyckBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05vblRocmVhZFNh
ZmVWZXJpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZThhNTUxZGU3YjMwMDRhN2Vm
NzUxZTFiYzRlNWFjZWJiZTdiYTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTm9uVGhyZWFkU2FmZVZlcmlmaWVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNWVkZWRlZjdiY2YzZWU0ZjhiNjlmNGY4ZjE2Y2NkY2ZmOTY4MTYy
YS4uMGE2YjUwOWViOTZmMGUyM2U5ODhlOGVkNDM0Yzg1NjNjMzQwYjQxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDExLTA0LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYXNzZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBv
biB0aGUgcmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzE2MzkKKworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBleHBvc2Vk
IHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25U
aHJlYWRTYWZlVmVyaWZpZXIuaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdEljb24p
OiBTZXQgdGhlIG11dGV4IGd1YXJkIGZvciBkb2luZyB0aGUgdGhyZWFkIHNhZmUgY2hlY2tzLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29u
VVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnNldEljb25VUkxG
b3JQYWdlVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9y
Q3JlYXRlSWNvblJlY29yZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNl
OjpwZXJmb3JtVVJMSW1wb3J0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJh
c2U6OnJlYWRGcm9tRGF0YWJhc2UpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29u
UmVjb3JkLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uU25hcHNob3Q6OnNldE11dGV4R3VhcmQp
OiBTaW1wbGlmeSBzZXR0aW5nIHRoZSBtdXRleCBndWFyZCBmb3IgdGhpcyBzdHJ1Y3R1cmUuCisK
IDIwMTEtMDQtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yODA2YTBkMDA4NzRmNGQ5ZmU2ODQ3N2E5MzQyOWY4YWNhOWI1MWRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05vblRocmVh
ZFNhZmVWZXJpZmllci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9Ob25U
aHJlYWRTYWZlVmVyaWZpZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Ob25UaHJlYWRTYWZlVmVy
aWZpZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL05vblRocmVhZFNhZmVWZXJpZmllci5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApp
bmRleCBjMmNiYjZhMmRmNmQxN2Y4ZTM2MjI0NGJmYzQ1ZjMyMTlmNjNlNmJjLi5kZjYyNmNlN2Yx
MDU1MWY0ODYwNTUzMmQwN2Y1NWY4YTYzMTYxYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTM4Myw2ICszODMsNyBAQCBJbWFnZSogSWNvbkRh
dGFiYXNlOjpkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIAogICAgIGlmICgh
bV9kZWZhdWx0SWNvblJlY29yZCkgewogICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0gSWNv
blJlY29yZDo6Y3JlYXRlKCJ1cmxJY29uIik7CisgICAgICAgIG1fZGVmYXVsdEljb25SZWNvcmQt
PnNldE11dGV4QXNUaHJlYWRTYWZlVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAg
IGxvYWREZWZhdWx0SWNvblJlY29yZChtX2RlZmF1bHRJY29uUmVjb3JkLmdldCgpKTsKICAgICB9
CiAgICAgCkBAIC00OTMsOCArNDk0LDExIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwpCiAgICAgCiAgICAgICAg
IC8vIElmIHRoaXMgcGFnZSBpcyB0aGUgbGFzdCBwYWdlIHRvIHJlZmVyIHRvIGEgcGFydGljdWxh
ciBJY29uUmVjb3JkLCB0aGF0IEljb25SZWNvcmQgbmVlZHMgdG8KICAgICAgICAgLy8gYmUgbWFy
a2VkIGZvciBkZWxldGlvbgotICAgICAgICBpZiAoaWNvblJlY29yZCAmJiBpY29uUmVjb3JkLT5o
YXNPbmVSZWYoKSkKLSAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3luYy5zZXQoaWNvblJlY29y
ZC0+aWNvblVSTCgpLCBpY29uUmVjb3JkLT5zbmFwc2hvdCh0cnVlKSk7CisgICAgICAgIGlmIChp
Y29uUmVjb3JkICYmIGljb25SZWNvcmQtPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBjb25z
dCBJY29uU25hcHNob3QmIHNuYXBzaG90ID0gaWNvblJlY29yZC0+c25hcHNob3QodHJ1ZSk7Cisg
ICAgICAgICAgICBzbmFwc2hvdC5zZXRNdXRleEd1YXJkKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAg
ICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3luYy5zZXQoaWNvblJlY29yZC0+aWNvblVSTCgpLCBz
bmFwc2hvdCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgZGVsZXRlIHBhZ2VSZWNvcmQ7
CkBAIC01MjgsNyArNTMyLDkgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNv
blVSTChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICAgICAg
aWNvbiA9IGdldE9yQ3JlYXRlSWNvblJlY29yZChpY29uVVJMKTsKICAgICAKICAgICAgICAgLy8g
VXBkYXRlIHRoZSBkYXRhIGFuZCBzZXQgdGhlIHRpbWUgc3RhbXAKLSAgICAgICAgaWNvbi0+c2V0
SW1hZ2VEYXRhKGRhdGEpOworICAgICAgICBpZiAoZGF0YSkKKyAgICAgICAgICAgIGRhdGEtPnNl
dE11dGV4QXNUaHJlYWRTYWZlVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgICAgIGlj
b24tPnNldEltYWdlRGF0YShkYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgIGljb24tPnNldFRpbWVz
dGFtcCgoaW50KWN1cnJlbnRUaW1lKCkpOwogICAgICAgICAKICAgICAgICAgLy8gQ29weSB0aGUg
Y3VycmVudCByZXRhaW5pbmcgcGFnZVVSTHMgLSBpZiBhbnkgLSB0byBub3RpZnkgdGhlbSBvZiB0
aGUgY2hhbmdlCkBAIC01MzcsNyArNTQzLDkgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25E
YXRhRm9ySWNvblVSTChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAg
ICAgICAvLyBNYXJrIHRoZSBJY29uUmVjb3JkIGFzIHJlcXVpcmluZyBhbiB1cGRhdGUgdG8gdGhl
IGRhdGFiYXNlIG9ubHkgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBkaXNhYmxlZAogICAgICAgICBp
ZiAoIW1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewogICAgICAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKLSAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3lu
Yy5zZXQoaWNvblVSTCwgaWNvbi0+c25hcHNob3QoKSk7CisgICAgICAgICAgICBjb25zdCBJY29u
U25hcHNob3QmIHNuYXBzaG90ID0gaWNvbi0+c25hcHNob3QoKTsKKyAgICAgICAgICAgIHNuYXBz
aG90LnNldE11dGV4R3VhcmQobV9wZW5kaW5nU3luY0xvY2spOworICAgICAgICAgICAgbV9pY29u
c1BlbmRpbmdTeW5jLnNldChpY29uVVJMLCBzbmFwc2hvdCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoaWNvbi0+aGFzT25lUmVmKCkpIHsKQEAgLTYxOSw4ICs2MjcsMTEgQEAgdm9pZCBJY29u
RGF0YWJhc2U6OnNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTE9yaWdp
bmFsLCBjb25zdCBTdHIKICAgICAgICAgICAgIG1fcGFnZVVSTHNQZW5kaW5nU3luYy5zZXQocGFn
ZVVSTCwgcGFnZVJlY29yZC0+c25hcHNob3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIElmIHRoZSBpY29uIGlzIG9uIGl0cyBsYXN0IHJlZiwgbWFyayBpdCBmb3IgZGVsZXRpb24K
LSAgICAgICAgICAgIGlmIChpY29uUmVjb3JkICYmIGljb25SZWNvcmQtPmhhc09uZVJlZigpKQot
ICAgICAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3luYy5zZXQoaWNvblJlY29yZC0+aWNvblVS
TCgpLCBpY29uUmVjb3JkLT5zbmFwc2hvdCh0cnVlKSk7CisgICAgICAgICAgICBpZiAoaWNvblJl
Y29yZCAmJiBpY29uUmVjb3JkLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IEljb25TbmFwc2hvdCYgc25hcHNob3QgPSBpY29uUmVjb3JkLT5zbmFwc2hvdCh0cnVlKTsKKyAg
ICAgICAgICAgICAgICBzbmFwc2hvdC5zZXRNdXRleEd1YXJkKG1fcGVuZGluZ1N5bmNMb2NrKTsK
KyAgICAgICAgICAgICAgICBtX2ljb25zUGVuZGluZ1N5bmMuc2V0KGljb25SZWNvcmQtPmljb25V
UkwoKSwgc25hcHNob3QpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC04
NzQsNiArODg1LDcgQEAgUGFzc1JlZlB0cjxJY29uUmVjb3JkPiBJY29uRGF0YWJhc2U6OmdldE9y
Q3JlYXRlSWNvblJlY29yZChjb25zdCBTdHJpbmcmIGljb25VUkwKICAgICAgICAgcmV0dXJuIGlj
b247CiAKICAgICBSZWZQdHI8SWNvblJlY29yZD4gbmV3SWNvbiA9IEljb25SZWNvcmQ6OmNyZWF0
ZShpY29uVVJMKTsKKyAgICBuZXdJY29uLT5zZXRNdXRleEFzVGhyZWFkU2FmZVZlcmlmaWVyKG1f
dXJsQW5kSWNvbkxvY2spOwogICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBu
ZXdJY29uLmdldCgpKTsKIAogICAgIHJldHVybiBuZXdJY29uLnJlbGVhc2UoKTsKQEAgLTEzMTEs
NyArMTMyMyw5IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2sp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3luYy5zZXQoaWNv
blJlY29yZC0+aWNvblVSTCgpLCBpY29uUmVjb3JkLT5zbmFwc2hvdCh0cnVlKSk7ICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJY29uU25hcHNo
b3QmIHNuYXBzaG90ID0gaWNvblJlY29yZC0+c25hcHNob3QodHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc25hcHNob3Quc2V0TXV0ZXhHdWFyZChtX3BlbmRpbmdTeW5jTG9jayk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pY29uc1BlbmRpbmdTeW5jLnNldChpY29u
UmVjb3JkLT5pY29uVVJMKCksIHNuYXBzaG90KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTE0ODIsNyAr
MTQ5Niw4IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAobV9pY29uc1BlbmRpbmdSZWFkaW5nLmNvbnRh
aW5zKGljb25zW2ldKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIG5ldyBkYXRh
Ci0gICAgICAgICAgICAgICAgICAgIGljb25zW2ldLT5zZXRJbWFnZURhdGEoaW1hZ2VEYXRhLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VEYXRhLT5zZXRNdXRleEFzVGhyZWFkU2Fm
ZVZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOworICAgICAgICAgICAgICAgICAgICBpY29uc1tp
XS0+c2V0SW1hZ2VEYXRhKGltYWdlRGF0YS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoaXMgaWNvbiBmcm9tIHRoZSBzZXQg
dGhhdCBuZWVkcyB0byBiZSByZWFkCiAgICAgICAgICAgICAgICAgICAgIG1faWNvbnNQZW5kaW5n
UmVhZGluZy5yZW1vdmUoaWNvbnNbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvblJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJl
Y29yZC5oCmluZGV4IGYxZmUxMmY1MWZmMDViNjliOTg3MDg1MzJmYWI0NThiN2QzNzQ5MTEuLmM0
ZjI3MDZjZjYyZWVjODI4ZWFiZjNmNGU2ZDYyNTExMWVkZTE5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uUmVjb3JkLmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtNTgsNyArNTksMTMgQEAgcHVibGljOgog
ICAgICAgICAsIHRpbWVzdGFtcChzdGFtcCkKICAgICAgICAgLCBkYXRhKHRoZURhdGEpCiAgICAg
eyB9Ci0gICAgICAgIAorCisgICAgdm9pZCBzZXRNdXRleEd1YXJkKE11dGV4JiBndWFyZGluZ011
dGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGRhdGEpCisgICAgICAgICAgICBkYXRhLT5z
ZXRNdXRleEFzVGhyZWFkU2FmZVZlcmlmaWVyKGd1YXJkaW5nTXV0ZXgpOworICAgIH0KKwogICAg
IFN0cmluZyBpY29uVVJMOwogICAgIGludCB0aW1lc3RhbXA7CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3MzQ1NWI3ZGQxYTc0NWIwOGU4N2RlNTEy
Mjg1M2FlNjQ0NDExNzQ4Li5mZDIyMDQ5ZWUzNzM5MzExNDU5OTQxOWQyMmExMjQxN2Y5YWJiODc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMDQgIERhdmlkIExl
dmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhc3NlcnRzIHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJl
IHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRoZSByaWdodCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYzOQorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1RocmVhZFZlcmlmaWVyLmg6IEFkZGVkLgorCiAyMDExLTA0LTA0ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9UaHJlYWRWZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNTE4MjQ5ODJjYjE0
YTQ5ZDY0MDQxNWYzZTllYTUwYzBjYWE0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaApAQCAtMCwwICsx
IEBACisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRWZXJpZmllci5oPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdiOGEyYzIyNzQ0NzAz
MTBmYTQ5YjEzNTljYjk1YjgyZTNkMTY4ZmIuLjk1OGVjZDA2YmIyZWNjZjU2MTVmZTBhMjBmZDRh
Y2YyZTE0YzI4Y2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNC0wNCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhh
cHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkVmVyaWZpZXIuaDogQWRkZWQuCisKIDIwMTEtMDQtMDQg
IENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9UaHJlYWRWZXJpZmllci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1RocmVhZFZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJhNmZlMmE2MWI5ZTNi
ZGM1OGU2MmVhMTY4ZDU1MGQzZmVhZjg1YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRWZXJpZmllci5oCkBAIC0wLDAg
KzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRWZXJpZmllci5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88725</attachid>
            <date>2011-04-07 16:21:18 -0700</date>
            <delta_ts>2011-04-07 17:16:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110407162117.patch</filename>
            <type>text/plain</type>
            <size>25485</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVl
OTJmY2VjZGU4NTRjMWJmYmRjNzhiODU5NjFjMTNkZDg4NGI2NGUuLmI4ZTRkNjcyYjIyYjVlY2Zh
MTRhMjkzMzJlODc1NDRhMjQ1Mzg0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMg
dG8gdGhlIGJ1aWxkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6IERpdHRvLgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvajogRGl0dG8uCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisg
ICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0
YWJsZVBvb2w6OkV4ZWN1dGFibGVQb29sKTogVHVybmVkIG9mZiBjaGVja3MgZm9yIHRoaXMKKyAg
ICAgICAgZHVlIHRvIG5vdCBiZWluZyBhYmxlIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgZ3VhcmRp
bmcgaXQgKGJ1ZyA1ODA5MSkuCisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6Cisg
ICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyOjpTb3VyY2VQcm92aWRlcik6IERpdHRvLgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpSZWdFeHAp
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKTogRGl0dG8uCisgICAgICAgICogd3RmL0NNYWtlTGlzdHMu
dHh0OiBBZGRlZCBuZXcgZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAgICAgICAqIHd0Zi9Ob25UaHJl
YWRTYWZlVmVyaWZpZXIuaDogQWRkZWQuCisgICAgICAgIEV2ZXJ5dGhpbmcgaXMgZG9uZSBpbiB0
aGUgaGVhZGVyIHRvIGF2b2lkIHRoZSBpc3N1ZSB3aXRoIGV4cG9ydHMKKyAgICAgICAgdGhhdCBh
cmUgb25seSB1c2VmdWwgaW4gZGVidWcgYnV0IHN0aWxsIG5lZWRpbmcgdG8gZXhwb3J0IHRoZW0u
CisgICAgICAgICogd3RmL1JlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJh
c2U6OnJlZik6IEFkZGVkIGNoZWNrcyB1c2luZyB0aGUgbm9uIHRocmVhZCBzYWZlIHZlcmlmaWVy
LgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6aGFzT25lUmVmKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpyZWZDb3VudCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQmFzZTo6c2V0TXV0ZXhGb3JWZXJpZmllcik6IEV4cG9zZSBhIHdheSB0byBj
aGFuZ2UgdGhlIGNoZWNrcyB0byBiZSBiYXNlZCBvbgorICAgICAgICBhIG11dGV4LiBUaGlzIGlz
IGluIHRoZSBoZWFkZXIgdG8gYXZvaWQgYWRkaW5nIG1vcmUgZXhwb3J0cyBmcm9tIEphdmFTY3Jp
cHRDb3JlLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmV2aWV3Q2FyZWZ1bGx5VHVy
bk9mZlZlcmlmaWVyKTogRXhwb3NlIGEgd2F5IHRvIHR1cm4gb2ZmIHZlcmlmaWNhdGlvbi4KKyAg
ICAgICAgSWRlYWxseSB0aGlzIHdvdWxkbid0IGJlIHVzZWQgYW5kIEkgZmlsZWQgYnVncyA1ODA5
MSwgNTgwOTIsIDU4MDkzIHRvIGNsZWFuIHVwIGxvY2F0aW9ucyB3aGVyZSBpdCBpcy4KKyAgICAg
ICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OmRlcmVmQmFzZSk6CisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOiBBZGp1c3RlZCB0aGUgZGVidWcgc2l6ZSBjaGVjayBmb3IgUmVmQ291bnRlZC4K
KyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZm
ZXI6OkNTdHJpbmdCdWZmZXIpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhpcyB3aGlsZSBhIGZp
eCBpcyBiZWluZworICAgICAgICBkb25lIGluIENocm9taXVtJ3MgdGVzdF9zaGVsbC4KKwogMjAx
MS0wNC0wNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDBhYjlmYTgxY2MzNDA5MzE0YTRlYjkwOWZkMDI3ZGRhYTRmMTBmNTcuLjJjNjUwOWFjYmFl
ZWM2YzhjMWY1MjU3NjE0MTViMGMwM2NmZjkwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KQEAgLTQ5MCw2ICs0OTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL05vbkNvcHlpbmdTb3J0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTm9uY29weWFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJl
YWRTYWZlVmVyaWZpZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob3RGb3VuZC5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkKaW5kZXggNTJhODAzNTBlYzI1MzU4OWJmOWY0ZTc2Mzc3ZjkxZmRjMzBj
NjlmZS4uY2I3NmM3NjZiM2NmODFlN2M4OGViZTU4N2NiMzUwZDc3ZjkyOWRhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTE3NSw2ICsxNzUsNyBAQAog
ICAgICAgICAgICAgJ3d0Zi9Ob25Db3B5aW5nU29ydC5oJywKICAgICAgICAgICAgICd3dGYvTm9u
Y29weWFibGUuaCcsCiAgICAgICAgICAgICAnd3RmL05vdEZvdW5kLmgnLAorICAgICAgICAgICAg
J3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaCcsCiAgICAgICAgICAgICAnd3RmL051bGxQdHIu
aCcsCiAgICAgICAgICAgICAnd3RmL09TQWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3d0Zi9P
d25BcnJheVB0ci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCmluZGV4IGQ5NTE0ZTQ0YTRkYTMzZTA5
OGUwYWM3MDAxMTk1ZWIzOGE5YmQ0YmMuLmNjMTI1YjEwOTlhZmE2NTMyNTMxYTM3YWMzYTUwYjY2
Yjk2MDdlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagpAQCAtNzY1LDYgKzc2NSwxMCBAQAogCQkJ
PgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxOb25UaHJl
YWRTYWZlVmVyaWZpZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlx3dGZcTm90Rm91bmQuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjMmRkYzM5YTg4OThiMmZjYjliN2YzODk5Yjk4NzMwMTViNWRk
MzcyLi4zMmZmNGI1Y2FjNzI5MGM3MjczMDU5OTYyMzI5OWIxMjE4ZDM0ZTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQsNiArNDQsNyBAQAogCQkwOEUyNzlFOTBFRjgzQjEw
MDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51
bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFp
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEIz
MzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwICovOyB9OwogCQkwQjREN0U2
MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVU
cmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3
Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJERkZBRTAwRkM2MTkyOTAwRDY5RUY0
IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFk
UmVmQ291bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBCREZGQUUxMEZDNjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYx
NkVDMDBENjlFRjQgLyogT3duRmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBT
aXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKQEAg
LTY5OSw2ICs3MDAsNyBAQAogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVt
YmVyU2VlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXJT
ZWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2MEYzOEM2MjMwMDY5
MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFR5cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjREN0U2
MjBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBC
QUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBOb25UaHJlYWRTYWZlVmVyaWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25G
YXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RN
YWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2MTcx
MDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc4LDYgKzE1ODAsNyBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJQTdDNDBDMDcxMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2suaCAqLywKIAkJ
CQlBN0M0MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8sCisJ
CQkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIE5vblRocmVhZFNhZmVWZXJpZmllci5oICov
LAogCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0LmggKi8s
CiAJCQkJNTEzNUZBRDUxMkQyNjg1NjAwM0MwODNCIC8qIERlY29kZXIuaCAqLywKIAkJCQk1MTM1
RkFENjEyRDI2ODU2MDAzQzA4M0IgLyogRW5jb2Rlci5oICovLApAQCAtMjU1Myw2ICsyNTU2LDcg
QEAKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQ0EzRkExMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUNBNEYxMTMyRUFBNkQwMDJCMkFENyAvKiBERkdBbGlhc1RyYWNr
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBOb25U
aHJlYWRTYWZlVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAppbmRleCA3N2EyNTY3YTBjNWViNjA4NGVj
MDVmYzJhNDI0MzljMTM5Y2EzMTVkLi5lZWVjZWQxZjRiN2VlZTUxOTc2MjU4ODE0MGVkMTI5OGVk
YWE1YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuaApAQCAtMzUwLDYgKzM1MCw3IEBAIGlubGluZSBFeGVjdXRhYmxlUG9vbDo6RXhlY3V0
YWJsZVBvb2woc2l6ZV90IG4pCiAgICAgaWYgKCFtX2ZyZWVQdHIpCiAgICAgICAgIENSQVNIKCk7
IC8vIEZhaWxlZCB0byBhbGxvY2F0ZQogICAgIG1fZW5kID0gbV9mcmVlUHRyICsgYWxsb2NTaXpl
OworICAgIHJldmlld0NhcmVmdWxseVR1cm5PZmZWZXJpZmllcigpOwogfQogCiBpbmxpbmUgdm9p
ZCogRXhlY3V0YWJsZVBvb2w6OnBvb2xBbGxvY2F0ZShzaXplX3QgbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRleCBlOWI2YjU2MTRlZDk2N2Ux
OWQwZjdmMTRkNzMwNzUwNGVhNDNhMmNkLi44MzBkMTNjNGYxMTZlMDNjZjU2ZDg5NDY3YTU3NWE5
MWRiZGFkYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92
aWRlci5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBt
X2NhY2hlKGNhY2hlID8gY2FjaGUgOiBuZXcgU291cmNlUHJvdmlkZXJDYWNoZSkKICAgICAgICAg
ICAgICwgbV9jYWNoZU93bmVkKCFjYWNoZSkKICAgICAgICAgeworICAgICAgICAgICAgcmV2aWV3
Q2FyZWZ1bGx5VHVybk9mZlZlcmlmaWVyKCk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
U291cmNlUHJvdmlkZXIoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcAppbmRleCAyNWNiMmQ1YmUwMmRhYzA2MGY5NGUyYjE0ZjVjZGQ3NjIwY2JmMDg0
Li5jZWI3YjU4OTcwNzdhMTMxY2JjOGJjMTBlMmRkZjgzYjg2ZGE0MTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgaW5saW5lIFJl
Z0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGVyblN0cmluZywgUmUKICAgICAsIG1fcmVwcmVzZW50YXRpb24oYWRvcHRQdHIobmV3IFJlZ0V4
cFJlcHJlc2VudGF0aW9uKSkKIHsKICAgICBtX3N0YXRlID0gY29tcGlsZShnbG9iYWxEYXRhKTsK
KyAgICByZXZpZXdDYXJlZnVsbHlUdXJuT2ZmVmVyaWZpZXIoKTsKIH0KIAogUmVnRXhwOjp+UmVn
RXhwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4
IDEzMWVhNmJkZTMwYTU2MDk3NTE5OGRlMTE3ZmY0MmVjNjdiNzliN2UuLjM5YTViOGE1NWNmOTE4
YWEyNTYzMjI0M2IxZmI3NGZiMWU5MDFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBAIFN0cnVjdHVyZTo6U3RydWN0
dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIHVuc2lnbmVk
IGFub255CiAgICAgICAgIGlnbm9yZVNldC5hZGQodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBz
dHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVudCgpOworCisgICAgcmV2aWV3Q2FyZWZ1bGx5VHVybk9m
ZlZlcmlmaWVyKCk7CiAjZW5kaWYKIAogI2lmIERVTVBfU1RSVUNUVVJFX0lEX1NUQVRJU1RJQ1MK
QEAgLTI1MCw2ICsyNTIsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShjb25zdCBTdHJ1Y3R1cmUq
IHByZXZpb3VzKQogICAgICAgICBpZ25vcmVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKICAgICAg
ICAgc3RydWN0dXJlQ291bnRlci5pbmNyZW1lbnQoKTsKKworICAgIHJldmlld0NhcmVmdWxseVR1
cm5PZmZWZXJpZmllcigpOwogI2VuZGlmCiAKICNpZiBEVU1QX1NUUlVDVFVSRV9JRF9TVEFUSVNU
SUNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA5MWI2OTQ0
OTU1NjIzNGViZWE1ZWQwMzljNTRkOTU4NjE2N2YyZDA2Li4xZjBkYjE1MTIzYjhhZTkzYTAwYzc1
OGYwNzNmNzMyYjMxMDU0OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0
cy50eHQKQEAgLTQxLDYgKzQxLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgTWF0aEV4dHJhcy5o
CiAgICAgTWVzc2FnZVF1ZXVlLmgKICAgICBOb25Db3B5aW5nU29ydC5oCisgICAgTm9uVGhyZWFk
U2FmZVZlcmlmaWVyLmgKICAgICBOb25jb3B5YWJsZS5oCiAgICAgTm90Rm91bmQuaAogICAgIE51
bGxQdHIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRT
YWZlVmVyaWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTm9uVGhyZWFkU2FmZVZl
cmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ5NTQxNTY1ODE2Y2NmZDk3NTJkMzc1OGI1M2I0YjJiNDAx
NzVlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTm9uVGhy
ZWFkU2FmZVZlcmlmaWVyLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vblRocmVhZFNhZmVW
ZXJpZmllcl9oCisjZGVmaW5lIE5vblRocmVhZFNhZmVWZXJpZmllcl9oCisKKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVmVyaWZp
ZXMgdGhhdCBhIGNsYXNzIGlzIHVzZWQgaW4gYSB3YXkgdGhhdCByZXNwZWN0IGl0cyBsYWNrIG9m
IHRocmVhZHNhZmV0eS4KKy8vIFRoZSBkZWZhdWx0IG1vZGUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhl
IG9iamVjdCB3aWxsIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSB0aHJlYWQuIFRoZQorLy8gdGhy
ZWFkIGdldHMgY2FwdHVyZWQgd2hlbiB0aGUgcmVmIGNvdW50IGdvZXMgdG8gMiBhbmQgdW5zZXQg
d2hlbiB0aGUgcmVmIGNvdW50IGdvZXMgdG8gMS4KKy8vIFRoZSBtb2RlIG1heSBiZSBjaGFuZ2Ug
YnkgY2FsbGluZyB1c2VNdXRleE1vZGUgKG9yIHR1cm5PZmZWZXJpZmljYXRpb24pLgorY2xhc3Mg
Tm9uVGhyZWFkU2FmZVZlcmlmaWVyIHsKK3B1YmxpYzoKKyAgICBOb25UaHJlYWRTYWZlVmVyaWZp
ZXIoKQorICAgICAgICA6IG1fbW9kZShTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlKQorICAg
ICAgICAsIG1fc2hhcmVkKGZhbHNlKQorICAgICAgICAsIG1fb3duaW5nVGhyZWFkKDApCisgICAg
ICAgICwgbV9pc093bmVkQnlNYWluVGhyZWFkKGZhbHNlKQorICAgICAgICAsIG1fbXV0ZXgoMCkK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRleE1vZGUoTXV0ZXgmIG11dGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2Rl
IHx8IChtX21vZGUgPT0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlICYmICZtdXRleCA9PSBtX211dGV4
KSk7CisgICAgICAgIG1fbW9kZSA9IE11dGV4VmVyaWZpY2F0aW9uTW9kZTsKKyAgICAgICAgbV9t
dXRleCA9ICZtdXRleDsKKyAgICB9CisKKyAgICB2b2lkIHR1cm5PZmZWZXJpZmljYXRpb24oKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25N
b2RlKTsKKyAgICAgICAgbV9tb2RlID0gTm9WZXJpZmljYXRpb25Nb2RlOworICAgIH0KKworICAg
IC8vIEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgbWF5IChvciBtYXkgbm90KSBiZSBvd25lZCBi
eSBtb3JlIHRoYW4gb25lIHBsYWNlLgorICAgIHZvaWQgc2V0U2hhcmVkKGJvb2wgc2hhcmVkKQor
ICAgIHsKKyAgICAgICAgYm9vbCBwcmV2aW91c2x5U2hhcmVkID0gbV9zaGFyZWQ7CisgICAgICAg
IG1fc2hhcmVkID0gc2hhcmVkOworCisgICAgICAgIGlmICghbV9zaGFyZWQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBTaW5n
bGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgQVNTRVJUKHNoYXJlZCAhPSBw
cmV2aW91c2x5U2hhcmVkKTsKKyAgICAgICAgICAgIC8vIENhcHR1cmUgdGhlIGN1cnJlbnQgdGhy
ZWFkIHRvIHZlcmlmeSB0aGF0IHN1YnNlcXVlbnQgcmVmL2RlcmVmIGhhcHBlbiBvbiB0aGlzIHRo
cmVhZC4KKyAgICAgICAgICAgIG1faXNPd25lZEJ5TWFpblRocmVhZCA9IGlzTWFpblRocmVhZCgp
OworICAgICAgICAgICAgaWYgKCFtX2lzT3duZWRCeU1haW5UaHJlYWQpCisgICAgICAgICAgICAg
ICAgbV9vd25pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgIGNhc2UgTm9W
ZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIC8vIElzIGl0IG9rIHRvIHVzZSB0
aGUgb2JqZWN0IGF0IHRoaXMgbW9tZW50IG9uIHRoZSBjdXJyZW50IHRocmVhZD8KKyAgICBib29s
IGlzU2FmZVRvVXNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9zaGFyZWQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgeworICAgICAg
ICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICAvLyBpc01h
aW5UaHJlYWQoKSBpcyB3YXkgZmFzdGVyIHRoYW4gY3VycmVudFRocmVhZCgpIG9uIG1hbnkgcGxh
dGZvcm1zLCBzbyB1c2UgaXQgZmlyc3QuCisgICAgICAgICAgICByZXR1cm4gKG1faXNPd25lZEJ5
TWFpblRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkgfHwgKG1fb3duaW5nVGhyZWFkID09IGN1cnJl
bnRUaHJlYWQoKSk7CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlmaWNhdGlvbk1vZGU6CisgICAg
ICAgICAgICBpZiAoIW1fbXV0ZXgtPnRyeUxvY2soKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIG1fbXV0ZXgtPnVubG9jaygpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBlbnVtIFZlcmlmaWNh
dGlvbk1vZGUgeworICAgICAgICBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlLAorICAgICAg
ICBNdXRleFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE5vVmVyaWZpY2F0aW9uTW9kZQorICAg
IH07CisKKyAgICBWZXJpZmljYXRpb25Nb2RlIG1fbW9kZTsKKyAgICBib29sIG1fc2hhcmVkOwor
CisgICAgLy8gVXNlZCBieSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlCisgICAgVGhyZWFk
SWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKKyAgICBib29sIG1faXNPd25lZEJ5TWFpblRocmVh
ZDsKKworICAgIC8vIFVzZWQgYnkgTXV0ZXhWZXJpZmljYXRpb25Nb2RlLgorICAgIE11dGV4KiBt
X211dGV4OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUmVmQ291bnRlZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3Vu
dGVkLmgKaW5kZXggMTJiNjcwZTA3YzFlNWZhY2Q1ZGYzODNjZWQ2N2FjMGU2ZDQ2Y2JmMC4uZDYx
Y2Y3NDFmZDcwYmY5NzhiYWZkNjQ2YjgyMTYzY2U0Mzc3NzNiNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9SZWZDb3VudGVkLmgKQEAgLTIzLDEwICsyMywxNSBAQAogCiAjaW5jbHVkZSAiQXNz
ZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkZhc3RBbGxvY0Jhc2UuaCIKKyNpbmNsdWRlICJOb25UaHJl
YWRTYWZlVmVyaWZpZXIuaCIKICNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgIk93
blB0ci5oIgorI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCitj
bGFzcyBNdXRleDsKKwogLy8gVGhpcyBiYXNlIGNsYXNzIGhvbGRzIHRoZSBub24tdGVtcGxhdGUg
bWV0aG9kcyBhbmQgYXR0cmlidXRlcy4KIC8vIFRoZSBSZWZDb3VudGVkIGNsYXNzIGluaGVyaXRz
IGZyb20gaXQgcmVkdWNpbmcgdGhlIHRlbXBsYXRlIGJsb2F0CiAvLyBnZW5lcmF0ZWQgYnkgdGhl
IGNvbXBpbGVyICh0ZWNobmlxdWUgY2FsbGVkIHRlbXBsYXRlIGhvaXN0aW5nKS4KQEAgLTM0LDYg
KzM5LDE2IEBAIGNsYXNzIFJlZkNvdW50ZWRCYXNlIHsKIHB1YmxpYzoKICAgICB2b2lkIHJlZigp
CiAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RhcnQgdGhyZWFkIHZlcmlmaWNh
dGlvbiBhcyBzb29uIGFzIHRoZSByZWYgY291bnQgZ2V0cyB0byAyLiBUaGlzCisgICAgICAgIC8v
IGlzIGEgaGV1cmlzdGljIGJ1dCBpdCBzZWVtcyB0byB3b3JrIGFuZCBoYXMgaGVscGVkIGZpbmQg
c29tZSBidWdzLgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV92
ZXJpZmllci5zZXRTaGFyZWQodHJ1ZSk7CisjZW5kaWYKKyAgICAgICAgLy8gSWYgdGhpcyBhc3Nl
cnQgZmlyZXMsIGl0IGVpdGhlciBpbmRpY2F0ZXMgYSB0aHJlYWQgc2FmZXR5IGlzc3VlIG9yCisg
ICAgICAgIC8vIHRoYXQgdGhlIHZlcmlmaWNhdGlvbiBuZWVkcyB0byBjaGFuZ2UuIFNlZSBOb25U
aHJlYWRTYWZlVmVyaWZpZXIgZm9yCisgICAgICAgIC8vIHRoZSBkaWZmZXJlbnQgbW9kZXMuCisg
ICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAgICAgICBBU1NFUlQo
IW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWly
ZWQpOwogICAgICAgICArK21fcmVmQ291bnQ7CkBAIC00MSwxNSArNTYsMzQgQEAgcHVibGljOgog
CiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVy
aWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gMTsKICAgICB9CiAKICAgICBpbnQgcmVm
Q291bnQoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9V
c2UoKSk7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIAorICAgIHZvaWQgc2V0
TXV0ZXhGb3JWZXJpZmllcihNdXRleCYgbXV0ZXgpCisgICAgeworICAgICAgICBVTlVTRURfUEFS
QU0oJm11dGV4KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fdmVyaWZpZXIuc2V0TXV0ZXhN
b2RlKG11dGV4KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIFR1cm5zIG9mZiB2ZXJpZmljYXRp
b24uIFVzZSBvZiB0aGlzIG1ldGhvZCBpcyBkaXNjb3VyYWdlZCAoaW5zdGVhZCBleHRlbmQgTm9u
VGhyZWFkU2FmZVZlcmlmaWVyCisgICAgLy8gdG8gdmVyaWZ5IHlvdXIgY2FzZSkuIFRoZSBwcmVm
aXggb2YgInJldmlld0NhcmVmdWxseSIgaXMgbWVhbnQgdG8gZHJhdyBhdHRlbnRpb24gdG8gaXQu
CisgICAgdm9pZCByZXZpZXdDYXJlZnVsbHlUdXJuT2ZmVmVyaWZpZXIoKQorICAgIHsKKyNpZm5k
ZWYgTkRFQlVHCisgICAgICAgIG1fdmVyaWZpZXIudHVybk9mZlZlcmlmaWNhdGlvbigpOworI2Vu
ZGlmCisgICAgfQorCiAgICAgdm9pZCByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKQogICAgIHsK
ICNpZm5kZWYgTkRFQlVHCkBAIC04NCw2ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gUmV0
dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBmcmVlZCBvciBub3QuCiAgICAgYm9v
bCBkZXJlZkJhc2UoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9V
c2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNT
RVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAKQEAgLTk2LDYgKzEzMSwxMiBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIH0KIAogICAgICAgICAtLW1fcmVmQ291bnQ7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICAvLyBTdG9wIHRocmVhZCB2ZXJpZmljYXRpb24gd2hlbiB0aGUgcmVmIGdvZXMgdG8g
MSBiZWNhdXNlIGl0CisgICAgICAgIC8vIGlzIHNhZmUgdG8gYmUgcGFzc2VkIHRvIGFub3RoZXIg
dGhyZWFkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEpCisgICAg
ICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZChmYWxzZSk7CisjZW5kaWYKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE3LDYgKzE1OCw3IEBAIHByaXZhdGU6CiAjaWZuZGVm
IE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwogICAgIGJvb2wgbV9hZG9wdGlv
bklzUmVxdWlyZWQ7CisgICAgTm9uVGhyZWFkU2FmZVZlcmlmaWVyIG1fdmVyaWZpZXI7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2l6ZUxpbWl0
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCmluZGV4IDRl
NDgxYmI5YzEwMzdhZTlhMDhjODAxYTE1ZWRiMDU0ZjI1YjE2ZDcuLjdjOTIzY2RmNjYyODhlNDVm
NDZlYWM5M2Y5NWM2ZTE1YTI3YjQ4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvU2l6ZUxpbWl0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXpl
TGltaXRzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L05vblRocmVhZFNhZmVWZXJpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00
MSw4ICs0MiwxMyBAQAogbmFtZXNwYWNlIFdURiB7CiAKICNpZm5kZWYgTkRFQlVHCi1zdHJ1Y3Qg
U3RydWN0V2l0aEludEFuZFR3b0Jvb2xzIHsgaW50IGE7IGJvb2wgYjsgYm9vbCBjOyB9Owotc3Rh
dGljIGNvbnN0IHNpemVfdCByZWZDb3VudGVkRXh0cmFEZWJ1Z1NpemUgPSBzaXplb2YoU3RydWN0
V2l0aEludEFuZFR3b0Jvb2xzKSAtIHNpemVvZihpbnQpOworc3RydWN0IEZha2VEZWJ1Z1JlZkNv
dW50ZWQgeworICAgIGludCBhOworICAgIGJvb2wgYjsKKyAgICBib29sIGM7CisgICAgTm9uVGhy
ZWFkU2FmZVZlcmlmaWVyIGQ7Cit9Oworc3RhdGljIGNvbnN0IHNpemVfdCByZWZDb3VudGVkRXh0
cmFEZWJ1Z1NpemUgPSBzaXplb2YoRmFrZURlYnVnUmVmQ291bnRlZCkgLSBzaXplb2YoaW50KTsK
ICNlbHNlCiBzdGF0aWMgY29uc3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6ZSA9IDA7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3Ry
aW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCmluZGV4IDM0
M2E3YTUyNTIwNzQxZTJhZGNkYmQ4MTBlM2U5OTk1YTM4MGQ0NjQuLmRlZjM1Y2FmZDkzNDIxYTlj
MzY0ZDIyOWQ5MmYwZjljODNhZDA1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L0NTdHJpbmcuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBD
U3RyaW5nOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gY3JlYXRlKHNp
emVfdCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5nQnVmZmVyKGxlbmd0aCkp
OyB9Ci0gICAgQ1N0cmluZ0J1ZmZlcihzaXplX3QgbGVuZ3RoKSA6IG1fdmVjdG9yKGxlbmd0aCkg
eyB9CisgICAgQ1N0cmluZ0J1ZmZlcihzaXplX3QgbGVuZ3RoKSA6IG1fdmVjdG9yKGxlbmd0aCkg
eyByZXZpZXdDYXJlZnVsbHlUdXJuT2ZmVmVyaWZpZXIoKTsgfQogICAgIGNoYXIqIG11dGFibGVE
YXRhKCkgeyByZXR1cm4gbV92ZWN0b3IuZGF0YSgpOyB9CiAKICAgICBWZWN0b3I8Y2hhcj4gbV92
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBhMjIyNzQ4ZDFjNTIyYTc4ZGYzMzFk
NzQyZTM1ZmE4NjdlMGRiZDMxLi5jODAyODQ2MjAwYTdlNTQ5NjA4ODM0ZjYyN2E0YzU4MWM2ZDJj
M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNC0w
NCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0
byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg6IEFkZGVk
LgorCiAyMDExLTAzLTMwICBUaW11ciBJc2tob2R6aGFub3YgIDx0aW11cnJyckBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05vblRocmVhZFNh
ZmVWZXJpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZThhNTUxZGU3YjMwMDRhN2Vm
NzUxZTFiYzRlNWFjZWJiZTdiYTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTm9uVGhyZWFkU2FmZVZlcmlmaWVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNWVkZWRlZjdiY2YzZWU0ZjhiNjlmNGY4ZjE2Y2NkY2ZmOTY4MTYy
YS4uYzdkYTBkODZjOWM1OGM2OTNmYjIyYjYxMjdlMjZkMTZmN2RkNDk2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAgICAg
IEFkZCBhc3NlcnRzIHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBoYXBwZW5z
IG9uIHRoZSByaWdodCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTYzOQorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFsaXR5IGV4cG9z
ZWQgc28gbm8gbmV3IHRlc3RzLiAoVGhlIGNoYW5nZSBpcyBiYXNpY2FsbHkgYWRkaW5nCisgICAg
ICAgIG1vcmUgdGVzdGluZy4pCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvTm9u
VGhyZWFkU2FmZVZlcmlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHRJY29u
KTogU2V0IHRoZSBtdXRleCB3aGljaCBkb2VzIHRoZSBndWFyZGluZyBvZiB0aGUgdmFyaWFibGUu
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvcklj
b25VUkwpOiBUdXJuZWQgb2ZmIHRoZSB2ZXJpZmllciAoZHVlIHRvIGJ1ZyA1Nzk4NSkuCisgICAg
ICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOiBEaXR0by4KKyAg
ICAgICAgKiBsb2FkZXIvaWNvbi9JY29uUmVjb3JkLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29u
U25hcHNob3Q6Okljb25TbmFwc2hvdCk6IERpdHRvLgorCiAyMDExLTA0LTA0ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJu
c3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
Tm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjgwNmEwZDAwODc0ZjRk
OWZlNjg0NzdhOTM0MjlmOGFjYTliNTFkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApAQCAtMCww
ICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfTm9uVGhyZWFkU2FmZVZlcmlmaWVyX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfTm9uVGhyZWFkU2FmZVZlcmlmaWVyX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYzJjYmI2YTJkZjZkMTdmOGUz
NjIyNDRiZmM0NWYzMjE5ZjYzZTZiYy4uNTI2MTViYzc4YTFjOTI5NjE5YWUyMjQyNDI5MDJkZjVh
ZjM2OTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3Bw
CkBAIC0zODMsNiArMzgzLDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6ZGVmYXVsdEljb24oY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAKICAgICBpZiAoIW1fZGVmYXVsdEljb25SZWNvcmQpIHsK
ICAgICAgICAgbV9kZWZhdWx0SWNvblJlY29yZCA9IEljb25SZWNvcmQ6OmNyZWF0ZSgidXJsSWNv
biIpOworICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkLT5zZXRNdXRleEZvclZlcmlmaWVyKG1f
dXJsQW5kSWNvbkxvY2spOwogICAgICAgICBsb2FkRGVmYXVsdEljb25SZWNvcmQobV9kZWZhdWx0
SWNvblJlY29yZC5nZXQoKSk7CiAgICAgfQogICAgIApAQCAtNTEzLDYgKzUxNCw4IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFPcmlnaW5hbCwKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBkYXRhT3JpZ2luYWwgPyBkYXRhT3JpZ2luYWwtPmNvcHkoKSA6IDA7
CisgICAgaWYgKGRhdGEpCisgICAgICAgIGRhdGEtPnJldmlld0NhcmVmdWxseVR1cm5PZmZWZXJp
ZmllcigpOwogICAgIFN0cmluZyBpY29uVVJMID0gaWNvblVSTE9yaWdpbmFsLmNyb3NzVGhyZWFk
U3RyaW5nKCk7CiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcGFnZVVSTHM7CkBAIC04NzQsNiAr
ODc3LDcgQEAgUGFzc1JlZlB0cjxJY29uUmVjb3JkPiBJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRl
SWNvblJlY29yZChjb25zdCBTdHJpbmcmIGljb25VUkwKICAgICAgICAgcmV0dXJuIGljb247CiAK
ICAgICBSZWZQdHI8SWNvblJlY29yZD4gbmV3SWNvbiA9IEljb25SZWNvcmQ6OmNyZWF0ZShpY29u
VVJMKTsKKyAgICBuZXdJY29uLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2sp
OwogICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsK
IAogICAgIHJldHVybiBuZXdJY29uLnJlbGVhc2UoKTsKQEAgLTE0NzMsNiArMTQ3Nyw3IEBAIGJv
b2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaWNvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZGlkQW55V29yayA9IHRydWU7
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZv
ckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CisgICAgICAgIGlt
YWdlRGF0YS0+cmV2aWV3Q2FyZWZ1bGx5VHVybk9mZlZlcmlmaWVyKCk7CiAKICAgICAgICAgLy8g
VmVyaWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0byBiZSByZWFkIGZyb20gZGlzawogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmgKaW5kZXggZjFmZTEyZjUx
ZmYwNWI2OWI5ODcwODUzMmZhYjQ1OGI3ZDM3NDkxMS4uOGJhNmE1ZDMwMWVkOWU5MDc5YzJhZTQ3
ZTdiOTNiMjBmOThjY2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvblJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQu
aApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkBAIC01Nyw4ICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIDogaWNvblVSTCh1cmwp
CiAgICAgICAgICwgdGltZXN0YW1wKHN0YW1wKQogICAgICAgICAsIGRhdGEodGhlRGF0YSkKLSAg
ICB7IH0KLSAgICAgICAgCisgICAgeworICAgICAgICBpZiAoZGF0YSkKKyAgICAgICAgICAgIGRh
dGEtPnJldmlld0NhcmVmdWxseVR1cm5PZmZWZXJpZmllcigpOworICAgIH0KKwogICAgIFN0cmlu
ZyBpY29uVVJMOwogICAgIGludCB0aW1lc3RhbXA7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88739</attachid>
            <date>2011-04-07 17:16:07 -0700</date>
            <delta_ts>2011-04-08 16:43:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110407171606.patch</filename>
            <type>text/plain</type>
            <size>25511</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVl
OTJmY2VjZGU4NTRjMWJmYmRjNzhiODU5NjFjMTNkZDg4NGI2NGUuLmI4ZTRkNjcyYjIyYjVlY2Zh
MTRhMjkzMzJlODc1NDRhMjQ1Mzg0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMg
dG8gdGhlIGJ1aWxkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6IERpdHRvLgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvajogRGl0dG8uCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisg
ICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0
YWJsZVBvb2w6OkV4ZWN1dGFibGVQb29sKTogVHVybmVkIG9mZiBjaGVja3MgZm9yIHRoaXMKKyAg
ICAgICAgZHVlIHRvIG5vdCBiZWluZyBhYmxlIHRvIGZpZ3VyZSBvdXQgd2hhdCB3YXMgZ3VhcmRp
bmcgaXQgKGJ1ZyA1ODA5MSkuCisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6Cisg
ICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyOjpTb3VyY2VQcm92aWRlcik6IERpdHRvLgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpSZWdFeHAp
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6U3RydWN0dXJlKTogRGl0dG8uCisgICAgICAgICogd3RmL0NNYWtlTGlzdHMu
dHh0OiBBZGRlZCBuZXcgZmlsZXMgdG8gdGhlIGJ1aWxkLgorICAgICAgICAqIHd0Zi9Ob25UaHJl
YWRTYWZlVmVyaWZpZXIuaDogQWRkZWQuCisgICAgICAgIEV2ZXJ5dGhpbmcgaXMgZG9uZSBpbiB0
aGUgaGVhZGVyIHRvIGF2b2lkIHRoZSBpc3N1ZSB3aXRoIGV4cG9ydHMKKyAgICAgICAgdGhhdCBh
cmUgb25seSB1c2VmdWwgaW4gZGVidWcgYnV0IHN0aWxsIG5lZWRpbmcgdG8gZXhwb3J0IHRoZW0u
CisgICAgICAgICogd3RmL1JlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJh
c2U6OnJlZik6IEFkZGVkIGNoZWNrcyB1c2luZyB0aGUgbm9uIHRocmVhZCBzYWZlIHZlcmlmaWVy
LgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6aGFzT25lUmVmKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpyZWZDb3VudCk6IERpdHRvLgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQmFzZTo6c2V0TXV0ZXhGb3JWZXJpZmllcik6IEV4cG9zZSBhIHdheSB0byBj
aGFuZ2UgdGhlIGNoZWNrcyB0byBiZSBiYXNlZCBvbgorICAgICAgICBhIG11dGV4LiBUaGlzIGlz
IGluIHRoZSBoZWFkZXIgdG8gYXZvaWQgYWRkaW5nIG1vcmUgZXhwb3J0cyBmcm9tIEphdmFTY3Jp
cHRDb3JlLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmV2aWV3Q2FyZWZ1bGx5VHVy
bk9mZlZlcmlmaWVyKTogRXhwb3NlIGEgd2F5IHRvIHR1cm4gb2ZmIHZlcmlmaWNhdGlvbi4KKyAg
ICAgICAgSWRlYWxseSB0aGlzIHdvdWxkbid0IGJlIHVzZWQgYW5kIEkgZmlsZWQgYnVncyA1ODA5
MSwgNTgwOTIsIDU4MDkzIHRvIGNsZWFuIHVwIGxvY2F0aW9ucyB3aGVyZSBpdCBpcy4KKyAgICAg
ICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OmRlcmVmQmFzZSk6CisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOiBBZGp1c3RlZCB0aGUgZGVidWcgc2l6ZSBjaGVjayBmb3IgUmVmQ291bnRlZC4K
KyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZm
ZXI6OkNTdHJpbmdCdWZmZXIpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhpcyB3aGlsZSBhIGZp
eCBpcyBiZWluZworICAgICAgICBkb25lIGluIENocm9taXVtJ3MgdGVzdF9zaGVsbC4KKwogMjAx
MS0wNC0wNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDBhYjlmYTgxY2MzNDA5MzE0YTRlYjkwOWZkMDI3ZGRhYTRmMTBmNTcuLjJjNjUwOWFjYmFl
ZWM2YzhjMWY1MjU3NjE0MTViMGMwM2NmZjkwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KQEAgLTQ5MCw2ICs0OTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL05vbkNvcHlpbmdTb3J0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTm9uY29weWFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJl
YWRTYWZlVmVyaWZpZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob3RGb3VuZC5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkKaW5kZXggNTJhODAzNTBlYzI1MzU4OWJmOWY0ZTc2Mzc3ZjkxZmRjMzBj
NjlmZS4uY2I3NmM3NjZiM2NmODFlN2M4OGViZTU4N2NiMzUwZDc3ZjkyOWRhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTE3NSw2ICsxNzUsNyBAQAog
ICAgICAgICAgICAgJ3d0Zi9Ob25Db3B5aW5nU29ydC5oJywKICAgICAgICAgICAgICd3dGYvTm9u
Y29weWFibGUuaCcsCiAgICAgICAgICAgICAnd3RmL05vdEZvdW5kLmgnLAorICAgICAgICAgICAg
J3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaCcsCiAgICAgICAgICAgICAnd3RmL051bGxQdHIu
aCcsCiAgICAgICAgICAgICAnd3RmL09TQWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3d0Zi9P
d25BcnJheVB0ci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCmluZGV4IGQ5NTE0ZTQ0YTRkYTMzZTA5
OGUwYWM3MDAxMTk1ZWIzOGE5YmQ0YmMuLmNjMTI1YjEwOTlhZmE2NTMyNTMxYTM3YWMzYTUwYjY2
Yjk2MDdlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagpAQCAtNzY1LDYgKzc2NSwxMCBAQAogCQkJ
PgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxOb25UaHJl
YWRTYWZlVmVyaWZpZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlx3dGZcTm90Rm91bmQuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjMmRkYzM5YTg4OThiMmZjYjliN2YzODk5Yjk4NzMwMTViNWRk
MzcyLi4zMmZmNGI1Y2FjNzI5MGM3MjczMDU5OTYyMzI5OWIxMjE4ZDM0ZTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQsNiArNDQsNyBAQAogCQkwOEUyNzlFOTBFRjgzQjEw
MDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51
bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFp
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEIz
MzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwICovOyB9OwogCQkwQjREN0U2
MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVU
cmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3
Mjg0MDBDRjEzNUIgLyogTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJERkZBRTAwRkM2MTkyOTAwRDY5RUY0
IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFk
UmVmQ291bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBCREZGQUUxMEZDNjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYx
NkVDMDBENjlFRjQgLyogT3duRmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBT
aXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKQEAg
LTY5OSw2ICs3MDAsNyBAQAogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVt
YmVyU2VlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXJT
ZWVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2MEYzOEM2MjMwMDY5
MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFR5cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjREN0U2
MjBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBC
QUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBOb25UaHJlYWRTYWZlVmVyaWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25G
YXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RN
YWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2MTcx
MDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc4LDYgKzE1ODAsNyBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJQTdDNDBDMDcxMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2suaCAqLywKIAkJ
CQlBN0M0MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8sCisJ
CQkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIE5vblRocmVhZFNhZmVWZXJpZmllci5oICov
LAogCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0LmggKi8s
CiAJCQkJNTEzNUZBRDUxMkQyNjg1NjAwM0MwODNCIC8qIERlY29kZXIuaCAqLywKIAkJCQk1MTM1
RkFENjEyRDI2ODU2MDAzQzA4M0IgLyogRW5jb2Rlci5oICovLApAQCAtMjU1Myw2ICsyNTU2LDcg
QEAKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQ0EzRkExMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUNBNEYxMTMyRUFBNkQwMDJCMkFENyAvKiBERkdBbGlhc1RyYWNr
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBOb25U
aHJlYWRTYWZlVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAppbmRleCA3N2EyNTY3YTBjNWViNjA4NGVj
MDVmYzJhNDI0MzljMTM5Y2EzMTVkLi5lZWVjZWQxZjRiN2VlZTUxOTc2MjU4ODE0MGVkMTI5OGVk
YWE1YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuaApAQCAtMzUwLDYgKzM1MCw3IEBAIGlubGluZSBFeGVjdXRhYmxlUG9vbDo6RXhlY3V0
YWJsZVBvb2woc2l6ZV90IG4pCiAgICAgaWYgKCFtX2ZyZWVQdHIpCiAgICAgICAgIENSQVNIKCk7
IC8vIEZhaWxlZCB0byBhbGxvY2F0ZQogICAgIG1fZW5kID0gbV9mcmVlUHRyICsgYWxsb2NTaXpl
OworICAgIHJldmlld0NhcmVmdWxseVR1cm5PZmZWZXJpZmllcigpOwogfQogCiBpbmxpbmUgdm9p
ZCogRXhlY3V0YWJsZVBvb2w6OnBvb2xBbGxvY2F0ZShzaXplX3QgbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRleCBlOWI2YjU2MTRlZDk2N2Ux
OWQwZjdmMTRkNzMwNzUwNGVhNDNhMmNkLi44MzBkMTNjNGYxMTZlMDNjZjU2ZDg5NDY3YTU3NWE5
MWRiZGFkYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92
aWRlci5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBt
X2NhY2hlKGNhY2hlID8gY2FjaGUgOiBuZXcgU291cmNlUHJvdmlkZXJDYWNoZSkKICAgICAgICAg
ICAgICwgbV9jYWNoZU93bmVkKCFjYWNoZSkKICAgICAgICAgeworICAgICAgICAgICAgcmV2aWV3
Q2FyZWZ1bGx5VHVybk9mZlZlcmlmaWVyKCk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
U291cmNlUHJvdmlkZXIoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcAppbmRleCAyNWNiMmQ1YmUwMmRhYzA2MGY5NGUyYjE0ZjVjZGQ3NjIwY2JmMDg0
Li5jZWI3YjU4OTcwNzdhMTMxY2JjOGJjMTBlMmRkZjgzYjg2ZGE0MTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgaW5saW5lIFJl
Z0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGVyblN0cmluZywgUmUKICAgICAsIG1fcmVwcmVzZW50YXRpb24oYWRvcHRQdHIobmV3IFJlZ0V4
cFJlcHJlc2VudGF0aW9uKSkKIHsKICAgICBtX3N0YXRlID0gY29tcGlsZShnbG9iYWxEYXRhKTsK
KyAgICByZXZpZXdDYXJlZnVsbHlUdXJuT2ZmVmVyaWZpZXIoKTsKIH0KIAogUmVnRXhwOjp+UmVn
RXhwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4
IDEzMWVhNmJkZTMwYTU2MDk3NTE5OGRlMTE3ZmY0MmVjNjdiNzliN2UuLjM5YTViOGE1NWNmOTE4
YWEyNTYzMjI0M2IxZmI3NGZiMWU5MDFhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBAIFN0cnVjdHVyZTo6U3RydWN0
dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIHVuc2lnbmVk
IGFub255CiAgICAgICAgIGlnbm9yZVNldC5hZGQodGhpcyk7CiAgICAgZWxzZQogICAgICAgICBz
dHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVudCgpOworCisgICAgcmV2aWV3Q2FyZWZ1bGx5VHVybk9m
ZlZlcmlmaWVyKCk7CiAjZW5kaWYKIAogI2lmIERVTVBfU1RSVUNUVVJFX0lEX1NUQVRJU1RJQ1MK
QEAgLTI1MCw2ICsyNTIsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShjb25zdCBTdHJ1Y3R1cmUq
IHByZXZpb3VzKQogICAgICAgICBpZ25vcmVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKICAgICAg
ICAgc3RydWN0dXJlQ291bnRlci5pbmNyZW1lbnQoKTsKKworICAgIHJldmlld0NhcmVmdWxseVR1
cm5PZmZWZXJpZmllcigpOwogI2VuZGlmCiAKICNpZiBEVU1QX1NUUlVDVFVSRV9JRF9TVEFUSVNU
SUNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA5MWI2OTQ0
OTU1NjIzNGViZWE1ZWQwMzljNTRkOTU4NjE2N2YyZDA2Li4xZjBkYjE1MTIzYjhhZTkzYTAwYzc1
OGYwNzNmNzMyYjMxMDU0OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0
cy50eHQKQEAgLTQxLDYgKzQxLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgTWF0aEV4dHJhcy5o
CiAgICAgTWVzc2FnZVF1ZXVlLmgKICAgICBOb25Db3B5aW5nU29ydC5oCisgICAgTm9uVGhyZWFk
U2FmZVZlcmlmaWVyLmgKICAgICBOb25jb3B5YWJsZS5oCiAgICAgTm90Rm91bmQuaAogICAgIE51
bGxQdHIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Ob25UaHJlYWRT
YWZlVmVyaWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTm9uVGhyZWFkU2FmZVZl
cmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzNjcwMDU5ZWMzYTJmZGE4YjMwMjM2NDUxZDExYWQ3MDQ0
YzFkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTm9uVGhy
ZWFkU2FmZVZlcmlmaWVyLmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5vblRocmVhZFNhZmVW
ZXJpZmllcl9oCisjZGVmaW5lIE5vblRocmVhZFNhZmVWZXJpZmllcl9oCisKKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCisjaWZuZGVmIE5ERUJVRworCituYW1lc3BhY2Ug
V1RGIHsKKworLy8gVmVyaWZpZXMgdGhhdCBhIGNsYXNzIGlzIHVzZWQgaW4gYSB3YXkgdGhhdCBy
ZXNwZWN0IGl0cyBsYWNrIG9mIHRocmVhZHNhZmV0eS4KKy8vIFRoZSBkZWZhdWx0IG1vZGUgaXMg
dG8gdmVyaWZ5IHRoYXQgdGhlIG9iamVjdCB3aWxsIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSB0
aHJlYWQuIFRoZQorLy8gdGhyZWFkIGdldHMgY2FwdHVyZWQgd2hlbiB0aGUgcmVmIGNvdW50IGdv
ZXMgdG8gMiBhbmQgdW5zZXQgd2hlbiB0aGUgcmVmIGNvdW50IGdvZXMgdG8gMS4KKy8vIFRoZSBt
b2RlIG1heSBiZSBjaGFuZ2UgYnkgY2FsbGluZyB1c2VNdXRleE1vZGUgKG9yIHR1cm5PZmZWZXJp
ZmljYXRpb24pLgorY2xhc3MgTm9uVGhyZWFkU2FmZVZlcmlmaWVyIHsKK3B1YmxpYzoKKyAgICBO
b25UaHJlYWRTYWZlVmVyaWZpZXIoKQorICAgICAgICA6IG1fbW9kZShTaW5nbGVUaHJlYWRWZXJp
ZmljYXRpb25Nb2RlKQorICAgICAgICAsIG1fc2hhcmVkKGZhbHNlKQorICAgICAgICAsIG1fb3du
aW5nVGhyZWFkKDApCisgICAgICAgICwgbV9pc093bmVkQnlNYWluVGhyZWFkKGZhbHNlKQorICAg
ICAgICAsIG1fbXV0ZXgoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRleE1vZGUo
TXV0ZXgmIG11dGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJl
YWRWZXJpZmljYXRpb25Nb2RlIHx8IChtX21vZGUgPT0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlICYm
ICZtdXRleCA9PSBtX211dGV4KSk7CisgICAgICAgIG1fbW9kZSA9IE11dGV4VmVyaWZpY2F0aW9u
TW9kZTsKKyAgICAgICAgbV9tdXRleCA9ICZtdXRleDsKKyAgICB9CisKKyAgICB2b2lkIHR1cm5P
ZmZWZXJpZmljYXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVU
aHJlYWRWZXJpZmljYXRpb25Nb2RlKTsKKyAgICAgICAgbV9tb2RlID0gTm9WZXJpZmljYXRpb25N
b2RlOworICAgIH0KKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgbWF5IChvciBt
YXkgbm90KSBiZSBvd25lZCBieSBtb3JlIHRoYW4gb25lIHBsYWNlLgorICAgIHZvaWQgc2V0U2hh
cmVkKGJvb2wgc2hhcmVkKQorICAgIHsKKyAgICAgICAgYm9vbCBwcmV2aW91c2x5U2hhcmVkID0g
bV9zaGFyZWQ7CisgICAgICAgIG1fc2hhcmVkID0gc2hhcmVkOworCisgICAgICAgIGlmICghbV9z
aGFyZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsK
KyAgICAgICAgY2FzZSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAg
QVNTRVJUKHNoYXJlZCAhPSBwcmV2aW91c2x5U2hhcmVkKTsKKyAgICAgICAgICAgIC8vIENhcHR1
cmUgdGhlIGN1cnJlbnQgdGhyZWFkIHRvIHZlcmlmeSB0aGF0IHN1YnNlcXVlbnQgcmVmL2RlcmVm
IGhhcHBlbiBvbiB0aGlzIHRocmVhZC4KKyAgICAgICAgICAgIG1faXNPd25lZEJ5TWFpblRocmVh
ZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICAgICAgaWYgKCFtX2lzT3duZWRCeU1haW5UaHJl
YWQpCisgICAgICAgICAgICAgICAgbV9vd25pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlmaWNhdGlvbk1vZGU6
CisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIC8v
IElzIGl0IG9rIHRvIHVzZSB0aGUgb2JqZWN0IGF0IHRoaXMgbW9tZW50IG9uIHRoZSBjdXJyZW50
IHRocmVhZD8KKyAgICBib29sIGlzU2FmZVRvVXNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghbV9zaGFyZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgeworICAgICAgICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGU6Cisg
ICAgICAgICAgICAvLyBpc01haW5UaHJlYWQoKSBpcyB3YXkgZmFzdGVyIHRoYW4gY3VycmVudFRo
cmVhZCgpIG9uIG1hbnkgcGxhdGZvcm1zLCBzbyB1c2UgaXQgZmlyc3QuCisgICAgICAgICAgICBy
ZXR1cm4gKG1faXNPd25lZEJ5TWFpblRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkgfHwgKG1fb3du
aW5nVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlm
aWNhdGlvbk1vZGU6CisgICAgICAgICAgICBpZiAoIW1fbXV0ZXgtPnRyeUxvY2soKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIG1fbXV0ZXgtPnVubG9jaygpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25N
b2RlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBlbnVtIFZlcmlmaWNhdGlvbk1vZGUgeworICAgICAgICBTaW5nbGVUaHJlYWRWZXJpZmlj
YXRpb25Nb2RlLAorICAgICAgICBNdXRleFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE5vVmVy
aWZpY2F0aW9uTW9kZQorICAgIH07CisKKyAgICBWZXJpZmljYXRpb25Nb2RlIG1fbW9kZTsKKyAg
ICBib29sIG1fc2hhcmVkOworCisgICAgLy8gVXNlZCBieSBTaW5nbGVUaHJlYWRWZXJpZmljYXRp
b25Nb2RlCisgICAgVGhyZWFkSWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKKyAgICBib29sIG1f
aXNPd25lZEJ5TWFpblRocmVhZDsKKworICAgIC8vIFVzZWQgYnkgTXV0ZXhWZXJpZmljYXRpb25N
b2RlLgorICAgIE11dGV4KiBtX211dGV4OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaAppbmRleCAxMmI2NzBlMDdjMWU1ZmFjZDVk
ZjM4M2NlZDY3YWMwZTZkNDZjYmYwLi5kNjFjZjc0MWZkNzBiZjk3OGJhZmQ2NDZiODIxNjNjZTQz
Nzc3M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaApAQCAtMjMsMTAg
KzIzLDE1IEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRmFzdEFsbG9j
QmFzZS5oIgorI2luY2x1ZGUgIk5vblRocmVhZFNhZmVWZXJpZmllci5oIgogI2luY2x1ZGUgIk5v
bmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiT3duUHRyLmgiCisjaW5jbHVkZSAiVW51c2VkUGFyYW0u
aCIKIAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIE11dGV4OworCiAvLyBUaGlzIGJhc2UgY2xh
c3MgaG9sZHMgdGhlIG5vbi10ZW1wbGF0ZSBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLgogLy8gVGhl
IFJlZkNvdW50ZWQgY2xhc3MgaW5oZXJpdHMgZnJvbSBpdCByZWR1Y2luZyB0aGUgdGVtcGxhdGUg
YmxvYXQKIC8vIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgKHRlY2huaXF1ZSBjYWxsZWQgdGVt
cGxhdGUgaG9pc3RpbmcpLgpAQCAtMzQsNiArMzksMTYgQEAgY2xhc3MgUmVmQ291bnRlZEJhc2Ug
ewogcHVibGljOgogICAgIHZvaWQgcmVmKCkKICAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAg
ICAvLyBTdGFydCB0aHJlYWQgdmVyaWZpY2F0aW9uIGFzIHNvb24gYXMgdGhlIHJlZiBjb3VudCBn
ZXRzIHRvIDIuIFRoaXMKKyAgICAgICAgLy8gaXMgYSBoZXVyaXN0aWMgYnV0IGl0IHNlZW1zIHRv
IHdvcmsgYW5kIGhhcyBoZWxwZWQgZmluZCBzb21lIGJ1Z3MuCisgICAgICAgIGlmIChtX3JlZkNv
dW50ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZCh0cnVlKTsKKyNlbmRp
ZgorICAgICAgICAvLyBJZiB0aGlzIGFzc2VydCBmaXJlcywgaXQgZWl0aGVyIGluZGljYXRlcyBh
IHRocmVhZCBzYWZldHkgaXNzdWUgb3IKKyAgICAgICAgLy8gdGhhdCB0aGUgdmVyaWZpY2F0aW9u
IG5lZWRzIHRvIGNoYW5nZS4gU2VlIE5vblRocmVhZFNhZmVWZXJpZmllciBmb3IKKyAgICAgICAg
Ly8gdGhlIGRpZmZlcmVudCBtb2Rlcy4KKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZl
VG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAg
QVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgICAgICsrbV9yZWZDb3VudDsKQEAg
LTQxLDE1ICs1NiwzNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CiAg
ICAgeworICAgICAgICBBU1NFUlQobV92ZXJpZmllci5pc1NhZmVUb1VzZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICByZXR1cm4gbV9yZWZDb3VudCA9
PSAxOwogICAgIH0KIAogICAgIGludCByZWZDb3VudCgpIGNvbnN0CiAgICAgeworICAgICAgICBB
U1NFUlQobV92ZXJpZmllci5pc1NhZmVUb1VzZSgpKTsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291
bnQ7CiAgICAgfQogCisgICAgdm9pZCBzZXRNdXRleEZvclZlcmlmaWVyKE11dGV4JiBtdXRleCkK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSgmbXV0ZXgpOworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgbV92ZXJpZmllci5zZXRNdXRleE1vZGUobXV0ZXgpOworI2VuZGlmCisgICAgfQorCisg
ICAgLy8gVHVybnMgb2ZmIHZlcmlmaWNhdGlvbi4gVXNlIG9mIHRoaXMgbWV0aG9kIGlzIGRpc2Nv
dXJhZ2VkIChpbnN0ZWFkIGV4dGVuZCBOb25UaHJlYWRTYWZlVmVyaWZpZXIKKyAgICAvLyB0byB2
ZXJpZnkgeW91ciBjYXNlKS4gVGhlIHByZWZpeCBvZiAicmV2aWV3Q2FyZWZ1bGx5IiBpcyBtZWFu
dCB0byBkcmF3IGF0dGVudGlvbiB0byBpdC4KKyAgICB2b2lkIHJldmlld0NhcmVmdWxseVR1cm5P
ZmZWZXJpZmllcigpCisgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV92ZXJpZmllci50
dXJuT2ZmVmVyaWZpY2F0aW9uKCk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHJlbGF4QWRv
cHRpb25SZXF1aXJlbWVudCgpCiAgICAgewogI2lmbmRlZiBOREVCVUcKQEAgLTg0LDYgKzExOCw3
IEBAIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBvaW50ZXIgc2hvdWxk
IGJlIGZyZWVkIG9yIG5vdC4KICAgICBib29sIGRlcmVmQmFzZSgpCiAgICAgeworICAgICAgICBB
U1NFUlQobV92ZXJpZmllci5pc1NhZmVUb1VzZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0
aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIApA
QCAtOTYsNiArMTMxLDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogCiAgICAgICAgIC0tbV9y
ZWZDb3VudDsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN0b3AgdGhyZWFkIHZlcmlmaWNh
dGlvbiB3aGVuIHRoZSByZWYgZ29lcyB0byAxIGJlY2F1c2UgaXQKKyAgICAgICAgLy8gaXMgc2Fm
ZSB0byBiZSBwYXNzZWQgdG8gYW5vdGhlciB0aHJlYWQgYXQgdGhpcyBwb2ludC4KKyAgICAgICAg
aWYgKG1fcmVmQ291bnQgPT0gMSkKKyAgICAgICAgICAgIG1fdmVyaWZpZXIuc2V0U2hhcmVkKGZh
bHNlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTcsNiAr
MTU4LDcgQEAgcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RlbGV0aW9uSGFz
QmVndW47CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZDsKKyAgICBOb25UaHJlYWRTYWZl
VmVyaWZpZXIgbV92ZXJpZmllcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggNGU0ODFiYjljMTAzN2FlOWEwOGM4MDFhMTVlZGIwNTRm
MjViMTZkNy4uN2M5MjNjZGY2NjI4OGU0NWY0NmVhYzkzZjk1YzZlMTVhMjdiNDg4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFJl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQxLDggKzQyLDEzIEBACiBuYW1lc3BhY2UgV1RGIHsK
IAogI2lmbmRlZiBOREVCVUcKLXN0cnVjdCBTdHJ1Y3RXaXRoSW50QW5kVHdvQm9vbHMgeyBpbnQg
YTsgYm9vbCBiOyBib29sIGM7IH07Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRy
YURlYnVnU2l6ZSA9IHNpemVvZihTdHJ1Y3RXaXRoSW50QW5kVHdvQm9vbHMpIC0gc2l6ZW9mKGlu
dCk7CitzdHJ1Y3QgRmFrZURlYnVnUmVmQ291bnRlZCB7CisgICAgaW50IGE7CisgICAgYm9vbCBi
OworICAgIGJvb2wgYzsKKyAgICBOb25UaHJlYWRTYWZlVmVyaWZpZXIgZDsKK307CitzdGF0aWMg
Y29uc3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6ZSA9IHNpemVvZihGYWtlRGVidWdS
ZWZDb3VudGVkKSAtIHNpemVvZihpbnQpOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBzaXplX3QgcmVm
Q291bnRlZEV4dHJhRGVidWdTaXplID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMzQzYTdhNTI1MjA3NDFlMmFkY2RiZDgxMGUzZTk5OTVh
MzgwZDQ2NC4uZGVmMzVjYWZkOTM0MjFhOWMzNjRkMjI5ZDkyZjBmOWM4M2FkMDU5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCkBAIC00MSw3ICs0MSw3IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU3RyaW5nQnVmZmVyPiBjcmVhdGUoc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IENTdHJpbmdCdWZmZXIobGVuZ3RoKSk7IH0KLSAgICBDU3RyaW5nQnVmZmVyKHNpemVfdCBs
ZW5ndGgpIDogbV92ZWN0b3IobGVuZ3RoKSB7IH0KKyAgICBDU3RyaW5nQnVmZmVyKHNpemVfdCBs
ZW5ndGgpIDogbV92ZWN0b3IobGVuZ3RoKSB7IHJldmlld0NhcmVmdWxseVR1cm5PZmZWZXJpZmll
cigpOyB9CiAgICAgY2hhciogbXV0YWJsZURhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7
IH0KIAogICAgIFZlY3RvcjxjaGFyPiBtX3ZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmlu
ZGV4IGEyMjI3NDhkMWM1MjJhNzhkZjMzMWQ3NDJlMzVmYTg2N2UwZGJkMzEuLmM4MDI4NDYyMDBh
N2U1NDk2MDg4MzRmNjI3YTRjNTgxYzZkMmMzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDExLTA0LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYXNzZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBv
biB0aGUgcmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzE2MzkKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25U
aHJlYWRTYWZlVmVyaWZpZXIuaDogQWRkZWQuCisKIDIwMTEtMDMtMzAgIFRpbXVyIElza2hvZHpo
YW5vdiAgPHRpbXVycnJyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5
IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvTm9uVGhyZWFkU2FmZVZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05vblRocmVhZFNhZmVWZXJpZmllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlOGE1NTFkZTdiMzAwNGE3ZWY3NTFlMWJjNGU1YWNlYmJlN2JhMTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05v
blRocmVhZFNhZmVWZXJpZmllci5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZWRlZGVmN2JjZjNl
ZTRmOGI2OWY0ZjhmMTZjY2RjZmY5NjgxNjJhLi5jN2RhMGQ4NmM5YzU4YzY5M2ZiMjJiNjEyN2Uy
NmQxNmY3ZGQ0OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDQtMDcgIERh
dmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0byBt
YWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAgICAg
Tm8gbmV3IGZ1bmN0aW9uYWxpdHkgZXhwb3NlZCBzbyBubyBuZXcgdGVzdHMuIChUaGUgY2hhbmdl
IGlzIGJhc2ljYWxseSBhZGRpbmcKKyAgICAgICAgbW9yZSB0ZXN0aW5nLikKKworICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaDogQWRkZWQuCisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okljb25EYXRhYmFzZTo6ZGVmYXVsdEljb24pOiBTZXQgdGhlIG11dGV4IHdoaWNoIGRvZXMgdGhl
IGd1YXJkaW5nIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29u
RGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTCk6IFR1cm5lZCBvZmYgdGhlIHZlcmlmaWVy
IChkdWUgdG8gYnVnIDU3OTg1KS4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cmVh
ZEZyb21EYXRhYmFzZSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25SZWNvcmQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25TbmFwc2hvdDo6SWNvblNuYXBzaG90KTogRGl0dG8u
CisKIDIwMTEtMDQtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Ob25UaHJlYWRTYWZlVmVyaWZpZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yODA2YTBkMDA4NzRmNGQ5ZmU2ODQ3N2E5MzQyOWY4YWNhOWI1MWRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL05vblRo
cmVhZFNhZmVWZXJpZmllci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9O
b25UaHJlYWRTYWZlVmVyaWZpZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Ob25UaHJlYWRTYWZl
VmVyaWZpZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL05vblRocmVhZFNhZmVWZXJpZmll
ci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNw
cAppbmRleCBjMmNiYjZhMmRmNmQxN2Y4ZTM2MjI0NGJmYzQ1ZjMyMTlmNjNlNmJjLi41MjYxNWJj
NzhhMWM5Mjk2MTlhZTIyNDI0MjkwMmRmNWFmMzY5NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTM4Myw2ICszODMsNyBAQCBJbWFnZSogSWNv
bkRhdGFiYXNlOjpkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIAogICAgIGlm
ICghbV9kZWZhdWx0SWNvblJlY29yZCkgewogICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0g
SWNvblJlY29yZDo6Y3JlYXRlKCJ1cmxJY29uIik7CisgICAgICAgIG1fZGVmYXVsdEljb25SZWNv
cmQtPnNldE11dGV4Rm9yVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGxvYWRE
ZWZhdWx0SWNvblJlY29yZChtX2RlZmF1bHRJY29uUmVjb3JkLmdldCgpKTsKICAgICB9CiAgICAg
CkBAIC01MTMsNiArNTE0LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNv
blVSTChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGRhdGFPcmlnaW5hbCA/
IGRhdGFPcmlnaW5hbC0+Y29weSgpIDogMDsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgZGF0YS0+
cmV2aWV3Q2FyZWZ1bGx5VHVybk9mZlZlcmlmaWVyKCk7CiAgICAgU3RyaW5nIGljb25VUkwgPSBp
Y29uVVJMT3JpZ2luYWwuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKICAgICAKICAgICBWZWN0b3I8U3Ry
aW5nPiBwYWdlVVJMczsKQEAgLTg3NCw2ICs4NzcsNyBAQCBQYXNzUmVmUHRyPEljb25SZWNvcmQ+
IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNvbnN0IFN0cmluZyYgaWNvblVS
TAogICAgICAgICByZXR1cm4gaWNvbjsKIAogICAgIFJlZlB0cjxJY29uUmVjb3JkPiBuZXdJY29u
ID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOworICAgIG5ld0ljb24tPnNldE11dGV4Rm9y
VmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgbV9pY29uVVJMVG9SZWNvcmRNYXAuc2V0
KGljb25VUkwsIG5ld0ljb24uZ2V0KCkpOwogCiAgICAgcmV0dXJuIG5ld0ljb24ucmVsZWFzZSgp
OwpAQCAtMTQ3Myw2ICsxNDc3LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJh
c2UoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpY29ucy5zaXplKCk7ICsraSkgewog
ICAgICAgICBkaWRBbnlXb3JrID0gdHJ1ZTsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VEYXRhID0gZ2V0SW1hZ2VEYXRhRm9ySWNvblVSTEZyb21TUUxEYXRhYmFzZShpY29uc1tp
XS0+aWNvblVSTCgpKTsKKyAgICAgICAgaW1hZ2VEYXRhLT5yZXZpZXdDYXJlZnVsbHlUdXJuT2Zm
VmVyaWZpZXIoKTsKIAogICAgICAgICAvLyBWZXJpZnkgdGhpcyBpY29uIHN0aWxsIHdhbnRzIHRv
IGJlIHJlYWQgZnJvbSBkaXNrCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25SZWNvcmQuaAppbmRleCBmMWZlMTJmNTFmZjA1YjY5Yjk4NzA4NTMyZmFiNDU4YjdkMzc0OTEx
Li44YmE2YTVkMzAxZWQ5ZTkwNzljMmFlNDdlN2I5M2IyMGY5OGNjZTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5oCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL05vblRocmVhZFNhZmVWZXJpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3LDggKzU4LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgOiBpY29uVVJMKHVybCkKICAgICAgICAgLCB0aW1lc3RhbXAoc3RhbXApCiAg
ICAgICAgICwgZGF0YSh0aGVEYXRhKQotICAgIHsgfQotICAgICAgICAKKyAgICB7CisgICAgICAg
IGlmIChkYXRhKQorICAgICAgICAgICAgZGF0YS0+cmV2aWV3Q2FyZWZ1bGx5VHVybk9mZlZlcmlm
aWVyKCk7CisgICAgfQorCiAgICAgU3RyaW5nIGljb25VUkw7CiAgICAgaW50IHRpbWVzdGFtcDsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88896</attachid>
            <date>2011-04-08 16:43:29 -0700</date>
            <delta_ts>2011-04-08 18:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110408164328.patch</filename>
            <type>text/plain</type>
            <size>27661</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzMTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2
YWQxNjZmYTEyNzQ5MzY0MDM5Y2EyMmMwMDQ2MTUwYjJhZDYxZmEuLmQ4YTJiM2NiMjVlNmZlYjM1
ZTdhNGU2OWQwZjE0NTBmYWMwN2UyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OlJl
Z0V4cCk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6IEFkZGVkIG5ldyBmaWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogd3RmL1Ro
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDogQWRkZWQuCisgICAgICAgIEV2ZXJ5dGhpbmcgaXMg
ZG9uZSBpbiB0aGUgaGVhZGVyIHRvIGF2b2lkIHRoZSBpc3N1ZSB3aXRoIGV4cG9ydHMKKyAgICAg
ICAgdGhhdCBhcmUgb25seSB1c2VmdWwgaW4gZGVidWcgYnV0IHN0aWxsIG5lZWRpbmcgdG8gZXhw
b3J0IHRoZW0uCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6UmVm
Q291bnRlZEJhc2U6OnJlZik6IEFkZGVkIGNoZWNrcyB1c2luZyB0aGUgbm9uIHRocmVhZCBzYWZl
IHZlcmlmaWVyLgorICAgICAgICBhbmQgZmlsZWQgYnVnIDU4MTcxIGFib3V0IG1ha2luZyBpdCBz
dHJpY3Rlci4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6Omhhc09uZVJlZik6IERpdHRv
LgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmVmQ291bnQpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnNldE11dGV4Rm9yVmVyaWZpZXIpOiBFeHBvc2UgYSB3
YXkgdG8gY2hhbmdlIHRoZSBjaGVja3MgdG8gYmUgYmFzZWQgb24KKyAgICAgICAgYSBtdXRleC4g
VGhpcyBpcyBpbiB0aGUgaGVhZGVyIHRvIGF2b2lkIGFkZGluZyBtb3JlIGV4cG9ydHMgZnJvbSBK
YXZhU2NyaXB0Q29yZS4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6Om5ldmVyQ2FsbFRo
aXMpOiBUZW1wb3Jhcnkgd2F5IHRvIHR1cm4gb2ZmIHZlcmlmaWNhdGlvbi4KKyAgICAgICAgRmls
ZWQgYnVnIDU4MTc0IHRvIHJlbW92ZSB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlZEJhc2U6OmRlcmVmQmFzZSk6CisgICAgICAgICogd3RmL1NpemVMaW1pdHMuY3BwOiBBZGp1
c3RlZCB0aGUgZGVidWcgc2l6ZSBjaGVjayBmb3IgUmVmQ291bnRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZmZXI6OkNTdHJpbmdCdWZm
ZXIpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhpcyB3aGlsZSBhIGZpeCBpcyBiZWluZworICAg
ICAgICBkb25lIGluIENocm9taXVtJ3MgdGVzdF9zaGVsbCAoYnVnIDU4MDkzKS4KKwogMjAxMS0w
NC0wNyAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYwZmExZDUwNmQ1NjY3MTQ0NTg1YTExYWJlNDIw
Njk5MjJiOGJkZDUuLjFmNGQ3OWYxMDA0Mzg5NmYxM2Q2MTFiOTY5NWY1MjE4MzE3MTliMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01MjgsNiArNTI4
LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA1MmE4MDM1
MGVjMjUzNTg5YmY5ZjRlNzYzNzdmOTFmZGMzMGM2OWZlLi4xNTBlYTNiOWRlMTE4ODY1NDc5OTRi
MGM3YTJjNGVmNGU1YTljYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgICAgICAgICAnd3RmL1N0cmluZ0hhc2hl
ci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCcsCiAgICAgICAg
ICAgICAnd3RmL1RocmVhZFNwZWNpZmljLmgnLAorICAgICAgICAgICAgJ3d0Zi9UaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmcuaCcsCiAgICAg
ICAgICAgICAnd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCcsCiAgICAgICAgICAgICAnd3RmL1R5
cGVUcmFpdHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCBkOTUxNGU0NGE0ZGEzM2UwOThl
MGFjNzAwMTE5NWViMzhhOWJkNGJjLi4zNzkyMDdlYTAzMDkwOWQ2ZDM3MGVmMzQwYTQwOTI0OGNh
NDU4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTk3Nyw2ICs5NzcsMTAgQEAKIAkJCT4K
IAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHd0ZlxUaHJlYWRTYWZlUmVmQ291bnRlZC5oIgogCQkJPgogCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyZGRjMzlhODg5OGIyZmNiOWI3ZjM4
OTliOTg3MzAxNWI1ZGQzNzIuLjc2M2Y0NDNiZDI0OWY4MzA0NjhlZWZhYTQyMGJkNTU4Y2UzYjA4
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NCw2ICs0NCw3IEBACiAJCTA4
RTI3OUU5MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEwMDA3REI1
MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovOyB9OwogCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJE
RTMgLyogVHlwZVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi87
IH07CiAJCTBCNEQ3RTYzMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjREN0U2MjBGMzE5QUM4MDBB
RDdFNTggLyogVHlwZVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
REZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAw
MEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CkBAIC02OTksNiArNzAwLDcgQEAKIAkJMDhFMjc5RTgwRUY4M0Ix
MDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBC
REZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RNYWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJl
ZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RD
MzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTc3LDggKzE1NzksNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlBN0M0MEMwNzEzMEIwNTdEMDBEMDAyQTEgLyogQmxvY2tTdGFjay5oICovLAotCQkJCUE3QzQw
QzA4MTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAqLywKLQkJCQlBN0M0
MEMwOTEzMEIwNTdEMDBEMDAyQTEgLyogU2luZ2x5TGlua2VkTGlzdC5oICovLAogCQkJCTUxMzVG
QUQ1MTJEMjY4NTYwMDNDMDgzQiAvKiBEZWNvZGVyLmggKi8sCiAJCQkJNTEzNUZBRDYxMkQyNjg1
NjAwM0MwODNCIC8qIEVuY29kZXIuaCAqLywKIAkJCQk5M0FBNEY3NzA5NTcyNTFGMDA4NEIzQTcg
LyogQWx3YXlzSW5saW5lLmggKi8sCkBAIC0xNjcxLDYgKzE2NzEsOCBAQAogCQkJCTk2OUEwNzI5
MEVEMUNFNjkwMEYxRjY4MSAvKiBTZWdtZW50ZWRWZWN0b3IuaCAqLywKIAkJCQk3NkZCOUYxMDEy
RTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi8sCiAJCQkJNzZGQjlGMEUxMkU4NTE4NjAwNTFB
MkVCIC8qIFNIQTEuaCAqLywKKwkJCQlBN0M0MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGlu
ZWxMaW5rZWRMaXN0LmggKi8sCisJCQkJQTdDNDBDMDkxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmds
eUxpbmtlZExpc3QuaCAqLywKIAkJCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxp
bWl0cy5jcHAgKi8sCiAJCQkJODZEODdEQTUxMkJDNEIxNDAwOEU3M0ExIC8qIFN0YWNrQm91bmRz
LmNwcCAqLywKIAkJCQk4NkQ4N0RBNjEyQkM0QjE0MDA4RTczQTEgLyogU3RhY2tCb3VuZHMuaCAq
LywKQEAgLTE2OTIsNiArMTY5NCw3IEBACiAJCQkJRTFFRTc5M0MwRDZDOUI5MjAwRkVBM0JBIC8q
IFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLywKIAkJCQlCQzVGN0JCRDExODIzQjU5MDA1MkMwMkMg
LyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlFMUI3QzhCRDBEQTNBMzM2MDA3NEIw
REMgLyogVGhyZWFkU3BlY2lmaWMuaCAqLywKKwkJCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIg
LyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovLAogCQkJCTBCMzMwQzI2MEYzOEM2MjMw
MDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLywKIAkJCQkwQjREN0U2MjBGMzE5QUM4MDBBRDdF
NTggLyogVHlwZVRyYWl0cy5oICovLAogCQkJCUUxOTU2NzhEMDlFN0NGMTIwMEI4OUQxMyAvKiB1
bmljb2RlICovLApAQCAtMjU1Myw2ICsyNTU2LDcgQEAKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAy
QjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRkExMzJERjI1QTAw
MkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBNEYxMTMy
RUFBNkQwMDJCMkFENyAvKiBERkdBbGlhc1RyYWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBC
QUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmgKaW5kZXggNzdhMjU2N2EwYzVlYjYwODRlYzA1ZmMyYTQyNDM5YzEzOWNhMzE1ZC4u
NDRhODVkZjQwOWFjNDY4YWIwNTUzNTJmMTRlZTMzZTA0OWJhYTMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKQEAgLTM1MCw2ICszNTAs
NyBAQCBpbmxpbmUgRXhlY3V0YWJsZVBvb2w6OkV4ZWN1dGFibGVQb29sKHNpemVfdCBuKQogICAg
IGlmICghbV9mcmVlUHRyKQogICAgICAgICBDUkFTSCgpOyAvLyBGYWlsZWQgdG8gYWxsb2NhdGUK
ICAgICBtX2VuZCA9IG1fZnJlZVB0ciArIGFsbG9jU2l6ZTsKKyAgICBuZXZlckNhbGxUaGlzKCk7
CiB9CiAKIGlubGluZSB2b2lkKiBFeGVjdXRhYmxlUG9vbDo6cG9vbEFsbG9jYXRlKHNpemVfdCBu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4
IGU5YjZiNTYxNGVkOTY3ZTE5ZDBmN2YxNGQ3MzA3NTA0ZWE0M2EyY2QuLjQyNzAyNGRmZWVjZjgx
ZjE4MzhjYzdlOTNkYWJjOTgxMzNlMDM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAsIG1fY2FjaGUoY2FjaGUgPyBjYWNoZSA6IG5ldyBTb3VyY2VQcm92aWRl
ckNhY2hlKQogICAgICAgICAgICAgLCBtX2NhY2hlT3duZWQoIWNhY2hlKQogICAgICAgICB7Cisg
ICAgICAgICAgICBuZXZlckNhbGxUaGlzKCk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
U291cmNlUHJvdmlkZXIoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcAppbmRleCAyNWNiMmQ1YmUwMmRhYzA2MGY5NGUyYjE0ZjVjZGQ3NjIwY2JmMDg0
Li40ZjA3ODQzMjAyNDEyMWMxMTI5NTNiYjMwY2Y4OTcyNGQ3M2U4NjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgaW5saW5lIFJl
Z0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGVyblN0cmluZywgUmUKICAgICAsIG1fcmVwcmVzZW50YXRpb24oYWRvcHRQdHIobmV3IFJlZ0V4
cFJlcHJlc2VudGF0aW9uKSkKIHsKICAgICBtX3N0YXRlID0gY29tcGlsZShnbG9iYWxEYXRhKTsK
KyAgICBuZXZlckNhbGxUaGlzKCk7CiB9CiAKIFJlZ0V4cDo6flJlZ0V4cCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAxMzFlYTZiZGUzMGE1NjA5
NzUxOThkZTExN2ZmNDJlYzY3Yjc5YjdlLi41YzI2NDBmYzQxOTdmZTBlMjk5ZjQ0MTk4Mjc2OTM1
MGMxYTQ4YzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3Rv
dHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueQogICAgICAgICBp
Z25vcmVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgc3RydWN0dXJlQ291bnRlci5p
bmNyZW1lbnQoKTsKKworICAgIG5ldmVyQ2FsbFRoaXMoKTsKICNlbmRpZgogCiAjaWYgRFVNUF9T
VFJVQ1RVUkVfSURfU1RBVElTVElDUwpAQCAtMjUwLDYgKzI1Miw4IEBAIFN0cnVjdHVyZTo6U3Ry
dWN0dXJlKGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgICAgIGlnbm9yZVNldC5hZGQo
dGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzdHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVudCgpOwor
CisgICAgbmV2ZXJDYWxsVGhpcygpOwogI2VuZGlmCiAKICNpZiBEVU1QX1NUUlVDVFVSRV9JRF9T
VEFUSVNUSUNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA5
MWI2OTQ0OTU1NjIzNGViZWE1ZWQwMzljNTRkOTU4NjE2N2YyZDA2Li45YTQ4NDBlMWFiNzZhNzdl
ZWRhYTJhMDJkZWMwY2I1M2M3OGQ3MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01h
a2VMaXN0cy50eHQKQEAgLTQxLDYgKzQxLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgTWF0aEV4
dHJhcy5oCiAgICAgTWVzc2FnZVF1ZXVlLmgKICAgICBOb25Db3B5aW5nU29ydC5oCisgICAgVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCiAgICAgTm9uY29weWFibGUuaAogICAgIE5vdEZvdW5k
LmgKICAgICBOdWxsUHRyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UmVmQ291bnRlZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKaW5k
ZXggMTJiNjcwZTA3YzFlNWZhY2Q1ZGYzODNjZWQ2N2FjMGU2ZDQ2Y2JmMC4uZjEyMTJiYzZkMmUw
OWI3NWVkOWQ0NGFiZDExZTJmMzU1N2RlNTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9S
ZWZDb3VudGVkLmgKQEAgLTIzLDEwICsyMywxNSBAQAogCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5o
IgogI2luY2x1ZGUgIkZhc3RBbGxvY0Jhc2UuaCIKKyNpbmNsdWRlICJUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmgiCiAjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJPd25QdHIu
aCIKKyNpbmNsdWRlICJVbnVzZWRQYXJhbS5oIgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3Mg
TXV0ZXg7CisKIC8vIFRoaXMgYmFzZSBjbGFzcyBob2xkcyB0aGUgbm9uLXRlbXBsYXRlIG1ldGhv
ZHMgYW5kIGF0dHJpYnV0ZXMuCiAvLyBUaGUgUmVmQ291bnRlZCBjbGFzcyBpbmhlcml0cyBmcm9t
IGl0IHJlZHVjaW5nIHRoZSB0ZW1wbGF0ZSBibG9hdAogLy8gZ2VuZXJhdGVkIGJ5IHRoZSBjb21w
aWxlciAodGVjaG5pcXVlIGNhbGxlZCB0ZW1wbGF0ZSBob2lzdGluZykuCkBAIC0zNCw2ICszOSwy
MCBAQCBjbGFzcyBSZWZDb3VudGVkQmFzZSB7CiBwdWJsaWM6CiAgICAgdm9pZCByZWYoKQogICAg
IHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN0YXJ0IHRocmVhZCB2ZXJpZmljYXRpb24g
YXMgc29vbiBhcyB0aGUgcmVmIGNvdW50IGdldHMgdG8gMi4gVGhpcworICAgICAgICAvLyBoZXVy
aXN0aWMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCBpdGVtcyBhcmUgb2Z0ZW4gY3JlYXRlZCBvbiBv
bmUgdGhyZWFkCisgICAgICAgIC8vIGFuZCB0aGVuIGdpdmVuIHRvIGFub3RoZXIgdGhyZWFkIHRv
IGJlIHVzZWQuCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgcmVzdHJpY3Rpb24gdGlnaGVy
LiBFc3BlY2lhbGx5IGFzIHdlIG1vdmUgdG8gbW9yZQorICAgICAgICAvLyBjb21tb24gbWV0aG9k
cyBmb3Igc2hhcmluZyBpdGVtcyBhY3Jvc3MgdGhyZWFkcyBsaWtlIENyb3NzVGhyZWFkQ29waWVy
LmgKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgImRldGFjaEZyb21UaHJl
YWQiIG1ldGhvZCB0byBtYWtlIHRoaXMgZXhwbGljaXQuCisgICAgICAgIGlmIChtX3JlZkNvdW50
ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZCh0cnVlKTsKKyNlbmRpZgor
ICAgICAgICAvLyBJZiB0aGlzIGFzc2VydCBmaXJlcywgaXQgZWl0aGVyIGluZGljYXRlcyBhIHRo
cmVhZCBzYWZldHkgaXNzdWUgb3IKKyAgICAgICAgLy8gdGhhdCB0aGUgdmVyaWZpY2F0aW9uIG5l
ZWRzIHRvIGNoYW5nZS4gU2VlIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgZm9yCisgICAgICAg
IC8vIHRoZSBkaWZmZXJlbnQgbW9kZXMuCisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2Fm
ZVRvVXNlKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAg
IEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwogICAgICAgICArK21fcmVmQ291bnQ7CkBA
IC00MSwxNSArNjAsMzUgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAog
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAg
IEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQg
PT0gMTsKICAgICB9CiAKICAgICBpbnQgcmVmQ291bnQoKSBjb25zdAogICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIHJldHVybiBtX3JlZkNv
dW50OwogICAgIH0KIAorICAgIHZvaWQgc2V0TXV0ZXhGb3JWZXJpZmllcihNdXRleCYgbXV0ZXgp
CisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0oJm11dGV4KTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIG1fdmVyaWZpZXIuc2V0TXV0ZXhNb2RlKG11dGV4KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIC8vIFR1cm5zIG9mZiB2ZXJpZmljYXRpb24uIFVzZSBvZiB0aGlzIG1ldGhvZCBpcyBkaXNj
b3VyYWdlZCAoaW5zdGVhZCBleHRlbmQKKyAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
IHRvIHZlcmlmeSB5b3VyIGNhc2UpLgorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBtZXRob2Qu
CisgICAgdm9pZCBuZXZlckNhbGxUaGlzKCkKKyAgICB7CisjaWZuZGVmIE5ERUJVRworICAgICAg
ICBtX3ZlcmlmaWVyLnR1cm5PZmZWZXJpZmljYXRpb24oKTsKKyNlbmRpZgorICAgIH0KKwogICAg
IHZvaWQgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCkKICAgICB7CiAjaWZuZGVmIE5ERUJVRwpA
QCAtODQsNiArMTIzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUg
cG9pbnRlciBzaG91bGQgYmUgZnJlZWQgb3Igbm90LgogICAgIGJvb2wgZGVyZWZCYXNlKCkKICAg
ICB7CisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAgICAgICBB
U1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklz
UmVxdWlyZWQpOwogCkBAIC05Niw2ICsxMzYsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAK
ICAgICAgICAgLS1tX3JlZkNvdW50OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RvcCB0
aHJlYWQgdmVyaWZpY2F0aW9uIHdoZW4gdGhlIHJlZiBnb2VzIHRvIDEgYmVjYXVzZSBpdAorICAg
ICAgICAvLyBpcyBzYWZlIHRvIGJlIHBhc3NlZCB0byBhbm90aGVyIHRocmVhZCBhdCB0aGlzIHBv
aW50LgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV92ZXJpZmll
ci5zZXRTaGFyZWQoZmFsc2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTExNyw2ICsxNjMsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBib29s
IG1fZGVsZXRpb25IYXNCZWd1bjsKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVkOworICAg
IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgbV92ZXJpZmllcjsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggNGU0ODFiYjljMTAzN2Fl
OWEwOGM4MDFhMTVlZGIwNTRmMjViMTZkNy4uZGRhNmExYzE3MDJiZWQ5MGQwYTljMTZjNjI4ZTEw
NmU4NTJkNTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGlt
aXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9Dcm9zc1RocmVhZFJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00MSwxNiArNDIs
MjQgQEAKIG5hbWVzcGFjZSBXVEYgewogCiAjaWZuZGVmIE5ERUJVRwotc3RydWN0IFN0cnVjdFdp
dGhJbnRBbmRUd29Cb29scyB7IGludCBhOyBib29sIGI7IGJvb2wgYzsgfTsKLXN0YXRpYyBjb25z
dCBzaXplX3QgcmVmQ291bnRlZEV4dHJhRGVidWdTaXplID0gc2l6ZW9mKFN0cnVjdFdpdGhJbnRB
bmRUd29Cb29scykgLSBzaXplb2YoaW50KTsKK3N0cnVjdCBTYW1lU2l6ZUFzUmVmQ291bnRlZCB7
CisgICAgaW50IGE7CisgICAgYm9vbCBiOworICAgIGJvb2wgYzsKKyAgICBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyIGQ7CisgICAgLy8gVGhlIGRlYnVnIHZlcnNpb24gbWF5IGdldCBiaWdnZXIu
Cit9OwogI2Vsc2UKLXN0YXRpYyBjb25zdCBzaXplX3QgcmVmQ291bnRlZEV4dHJhRGVidWdTaXpl
ID0gMDsKK3N0cnVjdCBTYW1lU2l6ZUFzUmVmQ291bnRlZCB7CisgICAgaW50IGE7CisgICAgLy8g
RG9uJ3QgYWRkIGFueXRoaW5nIGhlcmUgYmVjYXVzZSB0aGlzIHNob3VsZCBzdGF5IHNtYWxsLgor
fTsKICNlbmRpZgogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoT3duUHRyPGludD4pID09IHNpemVv
ZihpbnQqKSwgT3duUHRyX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihQYXNzUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9PSBzaXplb2YoaW50KiksIFBhc3NSZWZQ
dHJfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8
aW50PikgPT0gc2l6ZW9mKGludCkgKyByZWZDb3VudGVkRXh0cmFEZWJ1Z1NpemUsIFJlZkNvdW50
ZWRfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWRD
dXN0b21BbGxvY2F0ZWQ8aW50PikgPT0gc2l6ZW9mKGludCkgKyByZWZDb3VudGVkRXh0cmFEZWJ1
Z1NpemUsIFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWRfc2hvdWxkX3N0YXlfc21hbGwpOworQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8aW50PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNS
ZWZDb3VudGVkKSwgUmVmQ291bnRlZF9zaG91bGRfc3RheV9zbWFsbCk7CitDT01QSUxFX0FTU0VS
VChzaXplb2YoUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZDxpbnQ+KSA9PSBzaXplb2YoU2FtZVNp
emVBc1JlZkNvdW50ZWQpLCBSZWZDb3VudGVkQ3VzdG9tQWxsb2NhdGVkX3Nob3VsZF9zdGF5X3Nt
YWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZQdHI8UmVmQ291bnRlZDxpbnQ+ID4pID09
IHNpemVvZihpbnQqKSwgUmVmUHRyX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJU
KHNpemVvZihWZWN0b3I8aW50PikgPT0gMyAqIHNpemVvZihpbnQqKSwgVmVjdG9yX3Nob3VsZF9z
dGF5X3NtYWxsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzYzOTc0ZDE5NjAwZjZiZDlmY2U3
Y2QwMDNlNTU5NzM1OWU3ZmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAsMCArMSwxNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJfaAorI2RlZmluZSBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisKKyNp
Zm5kZWYgTkRFQlVHCisKK25hbWVzcGFjZSBXVEYgeworCisvLyBWZXJpZmllcyB0aGF0IGEgY2xh
c3MgaXMgdXNlZCBpbiBhIHdheSB0aGF0IHJlc3BlY3RzIGl0cyBsYWNrIG9mIHRocmVhZC1zYWZl
dHkuCisvLyBUaGUgZGVmYXVsdCBtb2RlIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBvYmplY3Qgd2ls
bCBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgdGhyZWFkLiBUaGUKKy8vIHRocmVhZCBnZXRzIGNh
cHR1cmVkIHdoZW4gc2V0U2hhcmVkKHRydWUpIGlzIGNhbGxlZC4KKy8vIFRoZSBtb2RlIG1heSBi
ZSBjaGFuZ2UgYnkgY2FsbGluZyB1c2VNdXRleE1vZGUgKG9yIHR1cm5PZmZWZXJpZmljYXRpb24p
LgorY2xhc3MgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciB7CitwdWJsaWM6CisgICAgVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllcigpCisgICAgICAgIDogbV9tb2RlKFNpbmdsZVRocmVhZFZlcmlm
aWNhdGlvbk1vZGUpCisgICAgICAgICwgbV9zaGFyZWQoZmFsc2UpCisgICAgICAgICwgbV9vd25p
bmdUaHJlYWQoMCkKKyAgICAgICAgLCBtX2lzT3duZWRCeU1haW5UaHJlYWQoZmFsc2UpCisgICAg
ICAgICwgbV9tdXRleCgwKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldE11dGV4TW9kZShN
dXRleCYgbXV0ZXgpCisgICAgeworICAgICAgICBBU1NFUlQobV9tb2RlID09IFNpbmdsZVRocmVh
ZFZlcmlmaWNhdGlvbk1vZGUgfHwgKG1fbW9kZSA9PSBNdXRleFZlcmlmaWNhdGlvbk1vZGUgJiYg
Jm11dGV4ID09IG1fbXV0ZXgpKTsKKyAgICAgICAgbV9tb2RlID0gTXV0ZXhWZXJpZmljYXRpb25N
b2RlOworICAgICAgICBtX211dGV4ID0gJm11dGV4OworICAgIH0KKworICAgIHZvaWQgdHVybk9m
ZlZlcmlmaWNhdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV9tb2RlID09IFNpbmdsZVRo
cmVhZFZlcmlmaWNhdGlvbk1vZGUpOworICAgICAgICBtX21vZGUgPSBOb1ZlcmlmaWNhdGlvbk1v
ZGU7CisgICAgfQorCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBtYXkgKG9yIG1h
eSBub3QpIGJlIG93bmVkIGJ5IG1vcmUgdGhhbiBvbmUgcGxhY2UuCisgICAgdm9pZCBzZXRTaGFy
ZWQoYm9vbCBzaGFyZWQpCisgICAgeworICAgICAgICBib29sIHByZXZpb3VzbHlTaGFyZWQgPSBt
X3NoYXJlZDsKKyAgICAgICAgbV9zaGFyZWQgPSBzaGFyZWQ7CisKKyAgICAgICAgaWYgKCFtX3No
YXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewor
ICAgICAgICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICBB
U1NFUlQoc2hhcmVkICE9IHByZXZpb3VzbHlTaGFyZWQpOworICAgICAgICAgICAgLy8gQ2FwdHVy
ZSB0aGUgY3VycmVudCB0aHJlYWQgdG8gdmVyaWZ5IHRoYXQgc3Vic2VxdWVudCByZWYvZGVyZWYg
aGFwcGVuIG9uIHRoaXMgdGhyZWFkLgorICAgICAgICAgICAgbV9pc093bmVkQnlNYWluVGhyZWFk
ID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAgICAgICBpZiAoIW1faXNPd25lZEJ5TWFpblRocmVh
ZCkKKyAgICAgICAgICAgICAgICBtX293bmluZ1RocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIE11dGV4VmVyaWZpY2F0aW9uTW9kZToK
KyAgICAgICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgLy8g
SXMgaXQgb2sgdG8gdXNlIHRoZSBvYmplY3QgYXQgdGhpcyBtb21lbnQgb24gdGhlIGN1cnJlbnQg
dGhyZWFkPworICAgIGJvb2wgaXNTYWZlVG9Vc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFtX3NoYXJlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHN3aXRjaCAo
bV9tb2RlKSB7CisgICAgICAgIGNhc2UgU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZToKKyAg
ICAgICAgICAgIC8vIGlzTWFpblRocmVhZCgpIGlzIHdheSBmYXN0ZXIgdGhhbiBjdXJyZW50VGhy
ZWFkKCkgb24gbWFueSBwbGF0Zm9ybXMsIHNvIHVzZSBpdCBmaXJzdC4KKyAgICAgICAgICAgIHJl
dHVybiAobV9pc093bmVkQnlNYWluVGhyZWFkICYmIGlzTWFpblRocmVhZCgpKSB8fCAobV9vd25p
bmdUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKworICAgICAgICBjYXNlIE11dGV4VmVyaWZp
Y2F0aW9uTW9kZToKKyAgICAgICAgICAgIGlmICghbV9tdXRleC0+dHJ5TG9jaygpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgbV9tdXRleC0+dW5sb2NrKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1v
ZGU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGVudW0gVmVyaWZpY2F0aW9uTW9kZSB7CisgICAgICAgIFNpbmdsZVRocmVhZFZlcmlmaWNh
dGlvbk1vZGUsCisgICAgICAgIE11dGV4VmVyaWZpY2F0aW9uTW9kZSwKKyAgICAgICAgTm9WZXJp
ZmljYXRpb25Nb2RlCisgICAgfTsKKworICAgIFZlcmlmaWNhdGlvbk1vZGUgbV9tb2RlOworICAg
IGJvb2wgbV9zaGFyZWQ7CisKKyAgICAvLyBVc2VkIGJ5IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlv
bk1vZGUKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3duaW5nVGhyZWFkOworICAgIGJvb2wgbV9p
c093bmVkQnlNYWluVGhyZWFkOworCisgICAgLy8gVXNlZCBieSBNdXRleFZlcmlmaWNhdGlvbk1v
ZGUuCisgICAgTXV0ZXgqIG1fbXV0ZXg7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAppbmRleCAzNDNhN2E1MjUyMDc0MWUy
YWRjZGJkODEwZTNlOTk5NWEzODBkNDY0Li4zMzFkYjIzZDY0YTQ2ZTQ1MjRhMDNhNTFkMjkxODFk
NmM4NzI3YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ1N0cmluZzsKIAogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGNyZWF0ZShzaXplX3QgbGVuZ3RoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgQ1N0cmluZ0J1ZmZlcihsZW5ndGgpKTsgfQotICAgIENTdHJp
bmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3RvcihsZW5ndGgpIHsgfQorICAgIENTdHJp
bmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3RvcihsZW5ndGgpIHsgbmV2ZXJDYWxsVGhp
cygpOyB9CiAgICAgY2hhciogbXV0YWJsZURhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7
IH0KIAogICAgIFZlY3RvcjxjaGFyPiBtX3ZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmlu
ZGV4IGQ1OTFjMTFhOWZlMDgxNWIxYTgyYzY4NGIyYzM3MzI5N2VlNzE1ZWQuLjc3ZjhkZDY0MGMz
ZDQ1NWNlOWYwMDFiZDYyNDgzMzMzYzk1NWNhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDExLTA0LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYXNzZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBv
biB0aGUgcmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzE2MzkKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmg6IEFkZGVkLgorCiAyMDExLTA0LTA3ICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0
YWNob3dpYWsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZiN2Y5Nzk5MjIyMWEzMzA2NjE4OTQ4YzlhZTQxZTA2ODM3MzAyMmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVh
OTIyMDk2MDY2NTNjNThiYTkwM2Q2YzE4MmQxNGQxZjhmZjkzYjcuLjk5ZjFiYzIyMDg1MWM4ZDYy
MDc4NDQ4NzhiYTliNWIxMzhhN2E5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
MS0wNC0wNyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZD
b3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkK
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBleHBvc2VkIHNvIG5vIG5ldyB0ZXN0cy4g
KFRoZSBjaGFuZ2UgaXMgYmFzaWNhbGx5IGFkZGluZworICAgICAgICBtb3JlIHRlc3RpbmcuKQor
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZp
ZXIuaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdEljb24pOiBTZXQgdGhlIG11dGV4
IHdoaWNoIGRvZXMgdGhlIGd1YXJkaW5nIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNv
cmU6Okljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTCk6IFR1cm5lZCBv
ZmYgdGhlIHZlcmlmaWVyIChmaWxlIGJ1ZyA1ODA5MikuCisgICAgICAgIChXZWJDb3JlOjpJY29u
RGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvaWNv
bi9JY29uUmVjb3JkLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uU25hcHNob3Q6Okljb25TbmFw
c2hvdCk6IERpdHRvLgorCiAyMDExLTA0LTA4ICBNaXNoYSBUeXV0eXVuaWsgIDxtaWNoYWVsLnR5
dXR5dW5pa0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRS
ZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NDJkMWNiYWYzMGE0
YmM2MmZlOWE0ZTg2ZTdkZWQzZDE0MTZlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBA
IC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9UaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcl9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCA5
ODViOTIxNzc4YjViZDUyMTU5OTkwYzUzYzQ3MmYzYjlkZjM0YjZhLi43MmJhYWQzZDBkZmMzNTU4
YTZiMGNmNzU0ODM5Nzk1MzU3YmRlNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTM4Myw2ICszODMsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNl
OjpkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIAogICAgIGlmICghbV9kZWZh
dWx0SWNvblJlY29yZCkgewogICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0gSWNvblJlY29y
ZDo6Y3JlYXRlKCJ1cmxJY29uIik7CisgICAgICAgIG1fZGVmYXVsdEljb25SZWNvcmQtPnNldE11
dGV4Rm9yVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGxvYWREZWZhdWx0SWNv
blJlY29yZChtX2RlZmF1bHRJY29uUmVjb3JkLmdldCgpKTsKICAgICB9CiAgICAgCkBAIC01MTMs
NiArNTE0LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTChQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGRhdGFPcmlnaW5hbCA/IGRhdGFPcmln
aW5hbC0+Y29weSgpIDogMDsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgZGF0YS0+bmV2ZXJDYWxs
VGhpcygpOwogICAgIFN0cmluZyBpY29uVVJMID0gaWNvblVSTE9yaWdpbmFsLmNyb3NzVGhyZWFk
U3RyaW5nKCk7CiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcGFnZVVSTHM7CkBAIC04NzQsNiAr
ODc3LDcgQEAgUGFzc1JlZlB0cjxJY29uUmVjb3JkPiBJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRl
SWNvblJlY29yZChjb25zdCBTdHJpbmcmIGljb25VUkwKICAgICAgICAgcmV0dXJuIGljb247CiAK
ICAgICBSZWZQdHI8SWNvblJlY29yZD4gbmV3SWNvbiA9IEljb25SZWNvcmQ6OmNyZWF0ZShpY29u
VVJMKTsKKyAgICBuZXdJY29uLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2sp
OwogICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsK
IAogICAgIHJldHVybiBuZXdJY29uLnJlbGVhc2UoKTsKQEAgLTE0NzMsNiArMTQ3Nyw3IEBAIGJv
b2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaWNvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZGlkQW55V29yayA9IHRydWU7
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZv
ckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CisgICAgICAgIGlt
YWdlRGF0YS0+bmV2ZXJDYWxsVGhpcygpOwogCiAgICAgICAgIC8vIFZlcmlmeSB0aGlzIGljb24g
c3RpbGwgd2FudHMgdG8gYmUgcmVhZCBmcm9tIGRpc2sKICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvblJlY29yZC5oCmluZGV4IDYyOTlmNTRjZTAzMGM5NTc1YThhZDRiOTRl
YTk3OTA2MTlhZjRiMWUuLjM5YTFjMGQxMjNmZjRiMTg1MTUxMGQyZWI1MGZkMWUxNjc4YjkyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmgKQEAgLTM1LDYgKzM1LDcg
QEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oPgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTU3
LDcgKzU4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2ljb25VUkwoaWNvblVSTCkKICAgICAg
ICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCiAgICAgICAgICwgbV9kYXRhKGRhdGEpCi0gICAg
eyB9CisgICAgeworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAgICAgbV9kYXRhLT5uZXZl
ckNhbGxUaGlzKCk7CisgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9pY29uVVJMOyB9CiAgICAgaW50IHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZXN0YW1wOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88910</attachid>
            <date>2011-04-08 18:32:07 -0700</date>
            <delta_ts>2011-04-25 11:10:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110408183206.patch</filename>
            <type>text/plain</type>
            <size>27197</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzMTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2
YWQxNjZmYTEyNzQ5MzY0MDM5Y2EyMmMwMDQ2MTUwYjJhZDYxZmEuLmQ4YTJiM2NiMjVlNmZlYjM1
ZTdhNGU2OWQwZjE0NTBmYWMwN2UyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OlJl
Z0V4cCk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6IEFkZGVkIG5ldyBmaWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogd3RmL1Ro
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDogQWRkZWQuCisgICAgICAgIEV2ZXJ5dGhpbmcgaXMg
ZG9uZSBpbiB0aGUgaGVhZGVyIHRvIGF2b2lkIHRoZSBpc3N1ZSB3aXRoIGV4cG9ydHMKKyAgICAg
ICAgdGhhdCBhcmUgb25seSB1c2VmdWwgaW4gZGVidWcgYnV0IHN0aWxsIG5lZWRpbmcgdG8gZXhw
b3J0IHRoZW0uCisgICAgICAgICogd3RmL1JlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6UmVm
Q291bnRlZEJhc2U6OnJlZik6IEFkZGVkIGNoZWNrcyB1c2luZyB0aGUgbm9uIHRocmVhZCBzYWZl
IHZlcmlmaWVyLgorICAgICAgICBhbmQgZmlsZWQgYnVnIDU4MTcxIGFib3V0IG1ha2luZyBpdCBz
dHJpY3Rlci4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6Omhhc09uZVJlZik6IERpdHRv
LgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmVmQ291bnQpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnNldE11dGV4Rm9yVmVyaWZpZXIpOiBFeHBvc2UgYSB3
YXkgdG8gY2hhbmdlIHRoZSBjaGVja3MgdG8gYmUgYmFzZWQgb24KKyAgICAgICAgYSBtdXRleC4g
VGhpcyBpcyBpbiB0aGUgaGVhZGVyIHRvIGF2b2lkIGFkZGluZyBtb3JlIGV4cG9ydHMgZnJvbSBK
YXZhU2NyaXB0Q29yZS4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6Om5ldmVyQ2FsbFRo
aXMpOiBUZW1wb3Jhcnkgd2F5IHRvIHR1cm4gb2ZmIHZlcmlmaWNhdGlvbi4KKyAgICAgICAgRmls
ZWQgYnVnIDU4MTc0IHRvIHJlbW92ZSB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFdURjo6UmVmQ291
bnRlZEJhc2U6OmRlcmVmQmFzZSk6CisgICAgICAgICogd3RmL1NpemVMaW1pdHMuY3BwOiBBZGp1
c3RlZCB0aGUgZGVidWcgc2l6ZSBjaGVjayBmb3IgUmVmQ291bnRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkNTdHJpbmdCdWZmZXI6OkNTdHJpbmdCdWZm
ZXIpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhpcyB3aGlsZSBhIGZpeCBpcyBiZWluZworICAg
ICAgICBkb25lIGluIENocm9taXVtJ3MgdGVzdF9zaGVsbCAoYnVnIDU4MDkzKS4KKwogMjAxMS0w
NC0wNyAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYwZmExZDUwNmQ1NjY3MTQ0NTg1YTExYWJlNDIw
Njk5MjJiOGJkZDUuLjFmNGQ3OWYxMDA0Mzg5NmYxM2Q2MTFiOTY5NWY1MjE4MzE3MTliMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01MjgsNiArNTI4
LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA1MmE4MDM1
MGVjMjUzNTg5YmY5ZjRlNzYzNzdmOTFmZGMzMGM2OWZlLi4xNTBlYTNiOWRlMTE4ODY1NDc5OTRi
MGM3YTJjNGVmNGU1YTljYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgICAgICAgICAnd3RmL1N0cmluZ0hhc2hl
ci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCcsCiAgICAgICAg
ICAgICAnd3RmL1RocmVhZFNwZWNpZmljLmgnLAorICAgICAgICAgICAgJ3d0Zi9UaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmcuaCcsCiAgICAg
ICAgICAgICAnd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCcsCiAgICAgICAgICAgICAnd3RmL1R5
cGVUcmFpdHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCBkOTUxNGU0NGE0ZGEzM2UwOThl
MGFjNzAwMTE5NWViMzhhOWJkNGJjLi4zNzkyMDdlYTAzMDkwOWQ2ZDM3MGVmMzQwYTQwOTI0OGNh
NDU4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTk3Nyw2ICs5NzcsMTAgQEAKIAkJCT4K
IAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHd0ZlxUaHJlYWRTYWZlUmVmQ291bnRlZC5oIgogCQkJPgogCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyZGRjMzlhODg5OGIyZmNiOWI3ZjM4
OTliOTg3MzAxNWI1ZGQzNzIuLjc2M2Y0NDNiZDI0OWY4MzA0NjhlZWZhYTQyMGJkNTU4Y2UzYjA4
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NCw2ICs0NCw3IEBACiAJCTA4
RTI3OUU5MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEwMDA3REI1
MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovOyB9OwogCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJE
RTMgLyogVHlwZVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi87
IH07CiAJCTBCNEQ3RTYzMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjREN0U2MjBGMzE5QUM4MDBB
RDdFNTggLyogVHlwZVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
REZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAw
MEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CkBAIC02OTksNiArNzAwLDcgQEAKIAkJMDhFMjc5RTgwRUY4M0Ix
MDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBC
REZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RNYWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVm
Q291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJl
ZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RD
MzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTc3LDggKzE1NzksNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlBN0M0MEMwNzEzMEIwNTdEMDBEMDAyQTEgLyogQmxvY2tTdGFjay5oICovLAotCQkJCUE3QzQw
QzA4MTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAqLywKLQkJCQlBN0M0
MEMwOTEzMEIwNTdEMDBEMDAyQTEgLyogU2luZ2x5TGlua2VkTGlzdC5oICovLAogCQkJCTUxMzVG
QUQ1MTJEMjY4NTYwMDNDMDgzQiAvKiBEZWNvZGVyLmggKi8sCiAJCQkJNTEzNUZBRDYxMkQyNjg1
NjAwM0MwODNCIC8qIEVuY29kZXIuaCAqLywKIAkJCQk5M0FBNEY3NzA5NTcyNTFGMDA4NEIzQTcg
LyogQWx3YXlzSW5saW5lLmggKi8sCkBAIC0xNjcxLDYgKzE2NzEsOCBAQAogCQkJCTk2OUEwNzI5
MEVEMUNFNjkwMEYxRjY4MSAvKiBTZWdtZW50ZWRWZWN0b3IuaCAqLywKIAkJCQk3NkZCOUYxMDEy
RTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi8sCiAJCQkJNzZGQjlGMEUxMkU4NTE4NjAwNTFB
MkVCIC8qIFNIQTEuaCAqLywKKwkJCQlBN0M0MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGlu
ZWxMaW5rZWRMaXN0LmggKi8sCisJCQkJQTdDNDBDMDkxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmds
eUxpbmtlZExpc3QuaCAqLywKIAkJCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxp
bWl0cy5jcHAgKi8sCiAJCQkJODZEODdEQTUxMkJDNEIxNDAwOEU3M0ExIC8qIFN0YWNrQm91bmRz
LmNwcCAqLywKIAkJCQk4NkQ4N0RBNjEyQkM0QjE0MDA4RTczQTEgLyogU3RhY2tCb3VuZHMuaCAq
LywKQEAgLTE2OTIsNiArMTY5NCw3IEBACiAJCQkJRTFFRTc5M0MwRDZDOUI5MjAwRkVBM0JBIC8q
IFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLywKIAkJCQlCQzVGN0JCRDExODIzQjU5MDA1MkMwMkMg
LyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCAqLywKIAkJCQlFMUI3QzhCRDBEQTNBMzM2MDA3NEIw
REMgLyogVGhyZWFkU3BlY2lmaWMuaCAqLywKKwkJCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIg
LyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovLAogCQkJCTBCMzMwQzI2MEYzOEM2MjMw
MDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLywKIAkJCQkwQjREN0U2MjBGMzE5QUM4MDBBRDdF
NTggLyogVHlwZVRyYWl0cy5oICovLAogCQkJCUUxOTU2NzhEMDlFN0NGMTIwMEI4OUQxMyAvKiB1
bmljb2RlICovLApAQCAtMjU1Myw2ICsyNTU2LDcgQEAKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAy
QjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRkExMzJERjI1QTAw
MkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBNEYxMTMy
RUFBNkQwMDJCMkFENyAvKiBERkdBbGlhc1RyYWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBC
QUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmgKaW5kZXggNzdhMjU2N2EwYzVlYjYwODRlYzA1ZmMyYTQyNDM5YzEzOWNhMzE1ZC4u
NDRhODVkZjQwOWFjNDY4YWIwNTUzNTJmMTRlZTMzZTA0OWJhYTMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKQEAgLTM1MCw2ICszNTAs
NyBAQCBpbmxpbmUgRXhlY3V0YWJsZVBvb2w6OkV4ZWN1dGFibGVQb29sKHNpemVfdCBuKQogICAg
IGlmICghbV9mcmVlUHRyKQogICAgICAgICBDUkFTSCgpOyAvLyBGYWlsZWQgdG8gYWxsb2NhdGUK
ICAgICBtX2VuZCA9IG1fZnJlZVB0ciArIGFsbG9jU2l6ZTsKKyAgICBuZXZlckNhbGxUaGlzKCk7
CiB9CiAKIGlubGluZSB2b2lkKiBFeGVjdXRhYmxlUG9vbDo6cG9vbEFsbG9jYXRlKHNpemVfdCBu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4
IGU5YjZiNTYxNGVkOTY3ZTE5ZDBmN2YxNGQ3MzA3NTA0ZWE0M2EyY2QuLjQyNzAyNGRmZWVjZjgx
ZjE4MzhjYzdlOTNkYWJjOTgxMzNlMDM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAsIG1fY2FjaGUoY2FjaGUgPyBjYWNoZSA6IG5ldyBTb3VyY2VQcm92aWRl
ckNhY2hlKQogICAgICAgICAgICAgLCBtX2NhY2hlT3duZWQoIWNhY2hlKQogICAgICAgICB7Cisg
ICAgICAgICAgICBuZXZlckNhbGxUaGlzKCk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
U291cmNlUHJvdmlkZXIoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcAppbmRleCAyNWNiMmQ1YmUwMmRhYzA2MGY5NGUyYjE0ZjVjZGQ3NjIwY2JmMDg0
Li40ZjA3ODQzMjAyNDEyMWMxMTI5NTNiYjMwY2Y4OTcyNGQ3M2U4NjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgaW5saW5lIFJl
Z0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGVyblN0cmluZywgUmUKICAgICAsIG1fcmVwcmVzZW50YXRpb24oYWRvcHRQdHIobmV3IFJlZ0V4
cFJlcHJlc2VudGF0aW9uKSkKIHsKICAgICBtX3N0YXRlID0gY29tcGlsZShnbG9iYWxEYXRhKTsK
KyAgICBuZXZlckNhbGxUaGlzKCk7CiB9CiAKIFJlZ0V4cDo6flJlZ0V4cCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAxMzFlYTZiZGUzMGE1NjA5
NzUxOThkZTExN2ZmNDJlYzY3Yjc5YjdlLi41YzI2NDBmYzQxOTdmZTBlMjk5ZjQ0MTk4Mjc2OTM1
MGMxYTQ4YzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU1ZhbHVlIHByb3Rv
dHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueQogICAgICAgICBp
Z25vcmVTZXQuYWRkKHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgc3RydWN0dXJlQ291bnRlci5p
bmNyZW1lbnQoKTsKKworICAgIG5ldmVyQ2FsbFRoaXMoKTsKICNlbmRpZgogCiAjaWYgRFVNUF9T
VFJVQ1RVUkVfSURfU1RBVElTVElDUwpAQCAtMjUwLDYgKzI1Miw4IEBAIFN0cnVjdHVyZTo6U3Ry
dWN0dXJlKGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgICAgIGlnbm9yZVNldC5hZGQo
dGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzdHJ1Y3R1cmVDb3VudGVyLmluY3JlbWVudCgpOwor
CisgICAgbmV2ZXJDYWxsVGhpcygpOwogI2VuZGlmCiAKICNpZiBEVU1QX1NUUlVDVFVSRV9JRF9T
VEFUSVNUSUNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA5
MWI2OTQ0OTU1NjIzNGViZWE1ZWQwMzljNTRkOTU4NjE2N2YyZDA2Li45YTQ4NDBlMWFiNzZhNzdl
ZWRhYTJhMDJkZWMwY2I1M2M3OGQ3MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01h
a2VMaXN0cy50eHQKQEAgLTQxLDYgKzQxLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgTWF0aEV4
dHJhcy5oCiAgICAgTWVzc2FnZVF1ZXVlLmgKICAgICBOb25Db3B5aW5nU29ydC5oCisgICAgVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCiAgICAgTm9uY29weWFibGUuaAogICAgIE5vdEZvdW5k
LmgKICAgICBOdWxsUHRyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UmVmQ291bnRlZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKaW5k
ZXggMTJiNjcwZTA3YzFlNWZhY2Q1ZGYzODNjZWQ2N2FjMGU2ZDQ2Y2JmMC4uNDA1YmM3M2Q2Yzg3
ODBkYzk2YzYwZjY2MWE1ODc5NTcwNzZlYTAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9S
ZWZDb3VudGVkLmgKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgi
CiAjaW5jbHVkZSAiRmFzdEFsbG9jQmFzZS5oIgorI2luY2x1ZGUgIlRocmVhZFJlc3RyaWN0aW9u
VmVyaWZpZXIuaCIKICNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgIk93blB0ci5o
IgorI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zNCw2
ICszNywyMCBAQCBjbGFzcyBSZWZDb3VudGVkQmFzZSB7CiBwdWJsaWM6CiAgICAgdm9pZCByZWYo
KQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN0YXJ0IHRocmVhZCB2ZXJpZmlj
YXRpb24gYXMgc29vbiBhcyB0aGUgcmVmIGNvdW50IGdldHMgdG8gMi4gVGhpcworICAgICAgICAv
LyBoZXVyaXN0aWMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCBpdGVtcyBhcmUgb2Z0ZW4gY3JlYXRl
ZCBvbiBvbmUgdGhyZWFkCisgICAgICAgIC8vIGFuZCB0aGVuIGdpdmVuIHRvIGFub3RoZXIgdGhy
ZWFkIHRvIGJlIHVzZWQuCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgcmVzdHJpY3Rpb24g
dGlnaGVyLiBFc3BlY2lhbGx5IGFzIHdlIG1vdmUgdG8gbW9yZQorICAgICAgICAvLyBjb21tb24g
bWV0aG9kcyBmb3Igc2hhcmluZyBpdGVtcyBhY3Jvc3MgdGhyZWFkcyBsaWtlIENyb3NzVGhyZWFk
Q29waWVyLmgKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgImRldGFjaEZy
b21UaHJlYWQiIG1ldGhvZCB0byBtYWtlIHRoaXMgZXhwbGljaXQuCisgICAgICAgIGlmIChtX3Jl
ZkNvdW50ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZCh0cnVlKTsKKyNl
bmRpZgorICAgICAgICAvLyBJZiB0aGlzIGFzc2VydCBmaXJlcywgaXQgZWl0aGVyIGluZGljYXRl
cyBhIHRocmVhZCBzYWZldHkgaXNzdWUgb3IKKyAgICAgICAgLy8gdGhhdCB0aGUgdmVyaWZpY2F0
aW9uIG5lZWRzIHRvIGNoYW5nZS4gU2VlIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgZm9yCisg
ICAgICAgIC8vIHRoZSBkaWZmZXJlbnQgbW9kZXMuCisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVy
LmlzU2FmZVRvVXNlKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAg
ICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwogICAgICAgICArK21fcmVmQ291
bnQ7CkBAIC00MSwxNSArNTgsMzUgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBj
b25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAg
ICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgcmV0dXJuIG1fcmVm
Q291bnQgPT0gMTsKICAgICB9CiAKICAgICBpbnQgcmVmQ291bnQoKSBjb25zdAogICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIHJldHVybiBt
X3JlZkNvdW50OwogICAgIH0KIAorICAgIHZvaWQgc2V0TXV0ZXhGb3JWZXJpZmllcihNdXRleCYg
bXV0ZXgpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0oJm11dGV4KTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgICAgIG1fdmVyaWZpZXIuc2V0TXV0ZXhNb2RlKG11dGV4KTsKKyNlbmRpZgorICAg
IH0KKworICAgIC8vIFR1cm5zIG9mZiB2ZXJpZmljYXRpb24uIFVzZSBvZiB0aGlzIG1ldGhvZCBp
cyBkaXNjb3VyYWdlZCAoaW5zdGVhZCBleHRlbmQKKyAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyIHRvIHZlcmlmeSB5b3VyIGNhc2UpLgorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBt
ZXRob2QuCisgICAgdm9pZCBuZXZlckNhbGxUaGlzKCkKKyAgICB7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBtX3ZlcmlmaWVyLnR1cm5PZmZWZXJpZmljYXRpb24oKTsKKyNlbmRpZgorICAgIH0K
KwogICAgIHZvaWQgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCkKICAgICB7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtODQsNiArMTIxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgd2hldGhl
ciB0aGUgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgb3Igbm90LgogICAgIGJvb2wgZGVyZWZCYXNl
KCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAg
ICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9w
dGlvbklzUmVxdWlyZWQpOwogCkBAIC05Niw2ICsxMzQsMTIgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB9CiAKICAgICAgICAgLS1tX3JlZkNvdW50OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8g
U3RvcCB0aHJlYWQgdmVyaWZpY2F0aW9uIHdoZW4gdGhlIHJlZiBnb2VzIHRvIDEgYmVjYXVzZSBp
dAorICAgICAgICAvLyBpcyBzYWZlIHRvIGJlIHBhc3NlZCB0byBhbm90aGVyIHRocmVhZCBhdCB0
aGlzIHBvaW50LgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV92
ZXJpZmllci5zZXRTaGFyZWQoZmFsc2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTExNyw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAg
ICBib29sIG1fZGVsZXRpb25IYXNCZWd1bjsKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVk
OworICAgIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgbV92ZXJpZmllcjsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggNGU0ODFiYjlj
MTAzN2FlOWEwOGM4MDFhMTVlZGIwNTRmMjViMTZkNy4uNjcxZWY0MDE0MDc0MWQyOGM4M2Y0OGMy
ZDY3ODk2OTc2OTQwMmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
aXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMu
Y3BwCkBAIC0zNiwyMSArMzYsMzAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmbmRlZiBOREVCVUcKLXN0cnVjdCBTdHJ1Y3RX
aXRoSW50QW5kVHdvQm9vbHMgeyBpbnQgYTsgYm9vbCBiOyBib29sIGM7IH07Ci1zdGF0aWMgY29u
c3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6ZSA9IHNpemVvZihTdHJ1Y3RXaXRoSW50
QW5kVHdvQm9vbHMpIC0gc2l6ZW9mKGludCk7CitzdHJ1Y3QgU2FtZVNpemVBc1JlZkNvdW50ZWQg
eworICAgIGludCBhOworICAgIGJvb2wgYjsKKyAgICBib29sIGM7CisgICAgVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllciBkOworICAgIC8vIFRoZSBkZWJ1ZyB2ZXJzaW9uIG1heSBnZXQgYmlnZ2Vy
LgorfTsKICNlbHNlCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6
ZSA9IDA7CitzdHJ1Y3QgU2FtZVNpemVBc1JlZkNvdW50ZWQgeworICAgIGludCBhOworICAgIC8v
IERvbid0IGFkZCBhbnl0aGluZyBoZXJlIGJlY2F1c2UgdGhpcyBzaG91bGQgc3RheSBzbWFsbC4K
K307CiAjZW5kaWYKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE93blB0cjxpbnQ+KSA9PSBzaXpl
b2YoaW50KiksIE93blB0cl9zaG91bGRfc3RheV9zbWFsbCk7CiBDT01QSUxFX0FTU0VSVChzaXpl
b2YoUGFzc1JlZlB0cjxSZWZDb3VudGVkPGludD4gPikgPT0gc2l6ZW9mKGludCopLCBQYXNzUmVm
UHRyX3Nob3VsZF9zdGF5X3NtYWxsKTsKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVk
PGludD4pID09IHNpemVvZihpbnQpICsgcmVmQ291bnRlZEV4dHJhRGVidWdTaXplLCBSZWZDb3Vu
dGVkX3Nob3VsZF9zdGF5X3NtYWxsKTsKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVk
Q3VzdG9tQWxsb2NhdGVkPGludD4pID09IHNpemVvZihpbnQpICsgcmVmQ291bnRlZEV4dHJhRGVi
dWdTaXplLCBSZWZDb3VudGVkQ3VzdG9tQWxsb2NhdGVkX3Nob3VsZF9zdGF5X3NtYWxsKTsKK0NP
TVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVkPGludD4pID09IHNpemVvZihTYW1lU2l6ZUFz
UmVmQ291bnRlZCksIFJlZkNvdW50ZWRfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ8aW50PikgPT0gc2l6ZW9mKFNhbWVT
aXplQXNSZWZDb3VudGVkKSwgUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZF9zaG91bGRfc3RheV9z
bWFsbCk7CiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9
PSBzaXplb2YoaW50KiksIFJlZlB0cl9zaG91bGRfc3RheV9zbWFsbCk7CiBDT01QSUxFX0FTU0VS
VChzaXplb2YoVmVjdG9yPGludD4pID09IDMgKiBzaXplb2YoaW50KiksIFZlY3Rvcl9zaG91bGRf
c3RheV9zbWFsbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2Mzk3NGQxOTYwMGY2YmQ5ZmNl
N2NkMDAzZTU1OTczNTllN2ZkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBAIC0wLDAgKzEsMTQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKyNkZWZpbmUgVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllcl9oCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCisj
aWZuZGVmIE5ERUJVRworCituYW1lc3BhY2UgV1RGIHsKKworLy8gVmVyaWZpZXMgdGhhdCBhIGNs
YXNzIGlzIHVzZWQgaW4gYSB3YXkgdGhhdCByZXNwZWN0cyBpdHMgbGFjayBvZiB0aHJlYWQtc2Fm
ZXR5LgorLy8gVGhlIGRlZmF1bHQgbW9kZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgb2JqZWN0IHdp
bGwgb25seSBiZSB1c2VkIG9uIGEgc2luZ2xlIHRocmVhZC4gVGhlCisvLyB0aHJlYWQgZ2V0cyBj
YXB0dXJlZCB3aGVuIHNldFNoYXJlZCh0cnVlKSBpcyBjYWxsZWQuCisvLyBUaGUgbW9kZSBtYXkg
YmUgY2hhbmdlIGJ5IGNhbGxpbmcgdXNlTXV0ZXhNb2RlIChvciB0dXJuT2ZmVmVyaWZpY2F0aW9u
KS4KK2NsYXNzIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgeworcHVibGljOgorICAgIFRocmVh
ZFJlc3RyaWN0aW9uVmVyaWZpZXIoKQorICAgICAgICA6IG1fbW9kZShTaW5nbGVUaHJlYWRWZXJp
ZmljYXRpb25Nb2RlKQorICAgICAgICAsIG1fc2hhcmVkKGZhbHNlKQorICAgICAgICAsIG1fb3du
aW5nVGhyZWFkKDApCisgICAgICAgICwgbV9pc093bmVkQnlNYWluVGhyZWFkKGZhbHNlKQorICAg
ICAgICAsIG1fbXV0ZXgoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRleE1vZGUo
TXV0ZXgmIG11dGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJl
YWRWZXJpZmljYXRpb25Nb2RlIHx8IChtX21vZGUgPT0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlICYm
ICZtdXRleCA9PSBtX211dGV4KSk7CisgICAgICAgIG1fbW9kZSA9IE11dGV4VmVyaWZpY2F0aW9u
TW9kZTsKKyAgICAgICAgbV9tdXRleCA9ICZtdXRleDsKKyAgICB9CisKKyAgICB2b2lkIHR1cm5P
ZmZWZXJpZmljYXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVU
aHJlYWRWZXJpZmljYXRpb25Nb2RlKTsKKyAgICAgICAgbV9tb2RlID0gTm9WZXJpZmljYXRpb25N
b2RlOworICAgIH0KKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgbWF5IChvciBt
YXkgbm90KSBiZSBvd25lZCBieSBtb3JlIHRoYW4gb25lIHBsYWNlLgorICAgIHZvaWQgc2V0U2hh
cmVkKGJvb2wgc2hhcmVkKQorICAgIHsKKyAgICAgICAgYm9vbCBwcmV2aW91c2x5U2hhcmVkID0g
bV9zaGFyZWQ7CisgICAgICAgIG1fc2hhcmVkID0gc2hhcmVkOworCisgICAgICAgIGlmICghbV9z
aGFyZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsK
KyAgICAgICAgY2FzZSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAg
QVNTRVJUKHNoYXJlZCAhPSBwcmV2aW91c2x5U2hhcmVkKTsKKyAgICAgICAgICAgIC8vIENhcHR1
cmUgdGhlIGN1cnJlbnQgdGhyZWFkIHRvIHZlcmlmeSB0aGF0IHN1YnNlcXVlbnQgcmVmL2RlcmVm
IGhhcHBlbiBvbiB0aGlzIHRocmVhZC4KKyAgICAgICAgICAgIG1faXNPd25lZEJ5TWFpblRocmVh
ZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICAgICAgaWYgKCFtX2lzT3duZWRCeU1haW5UaHJl
YWQpCisgICAgICAgICAgICAgICAgbV9vd25pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlmaWNhdGlvbk1vZGU6
CisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIC8v
IElzIGl0IG9rIHRvIHVzZSB0aGUgb2JqZWN0IGF0IHRoaXMgbW9tZW50IG9uIHRoZSBjdXJyZW50
IHRocmVhZD8KKyAgICBib29sIGlzU2FmZVRvVXNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghbV9zaGFyZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgeworICAgICAgICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGU6Cisg
ICAgICAgICAgICAvLyBpc01haW5UaHJlYWQoKSBpcyB3YXkgZmFzdGVyIHRoYW4gY3VycmVudFRo
cmVhZCgpIG9uIG1hbnkgcGxhdGZvcm1zLCBzbyB1c2UgaXQgZmlyc3QuCisgICAgICAgICAgICBy
ZXR1cm4gKG1faXNPd25lZEJ5TWFpblRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkgfHwgKG1fb3du
aW5nVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlm
aWNhdGlvbk1vZGU6CisgICAgICAgICAgICBpZiAoIW1fbXV0ZXgtPnRyeUxvY2soKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIG1fbXV0ZXgtPnVubG9jaygpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25N
b2RlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBlbnVtIFZlcmlmaWNhdGlvbk1vZGUgeworICAgICAgICBTaW5nbGVUaHJlYWRWZXJpZmlj
YXRpb25Nb2RlLAorICAgICAgICBNdXRleFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE5vVmVy
aWZpY2F0aW9uTW9kZQorICAgIH07CisKKyAgICBWZXJpZmljYXRpb25Nb2RlIG1fbW9kZTsKKyAg
ICBib29sIG1fc2hhcmVkOworCisgICAgLy8gVXNlZCBieSBTaW5nbGVUaHJlYWRWZXJpZmljYXRp
b25Nb2RlCisgICAgVGhyZWFkSWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKKyAgICBib29sIG1f
aXNPd25lZEJ5TWFpblRocmVhZDsKKworICAgIC8vIFVzZWQgYnkgTXV0ZXhWZXJpZmljYXRpb25N
b2RlLgorICAgIE11dGV4KiBtX211dGV4OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMzQzYTdhNTI1MjA3NDFl
MmFkY2RiZDgxMGUzZTk5OTVhMzgwZDQ2NC4uMzMxZGIyM2Q2NGE0NmU0NTI0YTAzYTUxZDI5MTgx
ZDZjODcyN2IyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCkBA
IC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CiAKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDU3RyaW5nQnVmZmVyPiBjcmVhdGUoc2l6ZV90IGxlbmd0aCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IENTdHJpbmdCdWZmZXIobGVuZ3RoKSk7IH0KLSAgICBDU3Ry
aW5nQnVmZmVyKHNpemVfdCBsZW5ndGgpIDogbV92ZWN0b3IobGVuZ3RoKSB7IH0KKyAgICBDU3Ry
aW5nQnVmZmVyKHNpemVfdCBsZW5ndGgpIDogbV92ZWN0b3IobGVuZ3RoKSB7IG5ldmVyQ2FsbFRo
aXMoKTsgfQogICAgIGNoYXIqIG11dGFibGVEYXRhKCkgeyByZXR1cm4gbV92ZWN0b3IuZGF0YSgp
OyB9CiAKICAgICBWZWN0b3I8Y2hhcj4gbV92ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpp
bmRleCBkNTkxYzExYTlmZTA4MTViMWE4MmM2ODRiMmMzNzMyOTdlZTcxNWVkLi43N2Y4ZGQ2NDBj
M2Q0NTVjZTlmMDAxYmQ2MjQ4MzMzM2M5NTVjYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNC0wNCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMg
b24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOiBBZGRlZC4KKwogMjAxMS0wNC0wNyAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBT
dGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYjdmOTc5OTIyMjFhMzMwNjYxODk0OGM5YWU0MWUwNjgzNzMwMjJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTkyMjA5NjA2NjUzYzU4YmE5MDNkNmMxODJkMTRkMWY4ZmY5M2I3Li45OWYxYmMyMjA4NTFjOGQ2
MjA3ODQ0ODc4YmE5YjViMTM4YTdhOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MTEtMDQtMDcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVm
Q291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVh
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5
CisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHkgZXhwb3NlZCBzbyBubyBuZXcgdGVzdHMu
IChUaGUgY2hhbmdlIGlzIGJhc2ljYWxseSBhZGRpbmcKKyAgICAgICAgbW9yZSB0ZXN0aW5nLikK
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmg6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHRJY29uKTogU2V0IHRoZSBtdXRl
eCB3aGljaCBkb2VzIHRoZSBndWFyZGluZyBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwpOiBUdXJuZWQg
b2ZmIHRoZSB2ZXJpZmllciAoZmlsZSBidWcgNTgwOTIpLgorICAgICAgICAoV2ViQ29yZTo6SWNv
bkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL2lj
b24vSWNvblJlY29yZC5oOgorICAgICAgICAoV2ViQ29yZTo6SWNvblNuYXBzaG90OjpJY29uU25h
cHNob3QpOiBEaXR0by4KKwogMjAxMS0wNC0wOCAgTWlzaGEgVHl1dHl1bmlrICA8bWljaGFlbC50
eXV0eXVuaWtAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDQyZDFjYmFmMzBh
NGJjNjJmZTlhNGU4NmU3ZGVkM2QxNDE2ZTA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJfaAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaD4KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXgg
OTg1YjkyMTc3OGI1YmQ1MjE1OTk5MGM1M2M0NzJmM2I5ZGYzNGI2YS4uNzJiYWFkM2QwZGZjMzU1
OGE2YjBjZjc1NDgzOTc5NTM1N2JkZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zODMsNiArMzgzLDcgQEAgSW1hZ2UqIEljb25EYXRhYmFz
ZTo6ZGVmYXVsdEljb24oY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAKICAgICBpZiAoIW1fZGVm
YXVsdEljb25SZWNvcmQpIHsKICAgICAgICAgbV9kZWZhdWx0SWNvblJlY29yZCA9IEljb25SZWNv
cmQ6OmNyZWF0ZSgidXJsSWNvbiIpOworICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkLT5zZXRN
dXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgICAgICBsb2FkRGVmYXVsdElj
b25SZWNvcmQobV9kZWZhdWx0SWNvblJlY29yZC5nZXQoKSk7CiAgICAgfQogICAgIApAQCAtNTEz
LDYgKzUxNCw4IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFPcmlnaW5hbCwKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBkYXRhT3JpZ2luYWwgPyBkYXRhT3Jp
Z2luYWwtPmNvcHkoKSA6IDA7CisgICAgaWYgKGRhdGEpCisgICAgICAgIGRhdGEtPm5ldmVyQ2Fs
bFRoaXMoKTsKICAgICBTdHJpbmcgaWNvblVSTCA9IGljb25VUkxPcmlnaW5hbC5jcm9zc1RocmVh
ZFN0cmluZygpOwogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IHBhZ2VVUkxzOwpAQCAtODc0LDYg
Kzg3Nyw3IEBAIFBhc3NSZWZQdHI8SWNvblJlY29yZD4gSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0
ZUljb25SZWNvcmQoY29uc3QgU3RyaW5nJiBpY29uVVJMCiAgICAgICAgIHJldHVybiBpY29uOwog
CiAgICAgUmVmUHRyPEljb25SZWNvcmQ+IG5ld0ljb24gPSBJY29uUmVjb3JkOjpjcmVhdGUoaWNv
blVSTCk7CisgICAgbmV3SWNvbi0+c2V0TXV0ZXhGb3JWZXJpZmllcihtX3VybEFuZEljb25Mb2Nr
KTsKICAgICBtX2ljb25VUkxUb1JlY29yZE1hcC5zZXQoaWNvblVSTCwgbmV3SWNvbi5nZXQoKSk7
CiAKICAgICByZXR1cm4gbmV3SWNvbi5yZWxlYXNlKCk7CkBAIC0xNDczLDYgKzE0NzcsNyBAQCBi
b29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGljb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGRpZEFueVdvcmsgPSB0cnVl
OwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBnZXRJbWFnZURhdGFG
b3JJY29uVVJMRnJvbVNRTERhdGFiYXNlKGljb25zW2ldLT5pY29uVVJMKCkpOworICAgICAgICBp
bWFnZURhdGEtPm5ldmVyQ2FsbFRoaXMoKTsKIAogICAgICAgICAvLyBWZXJpZnkgdGhpcyBpY29u
IHN0aWxsIHdhbnRzIHRvIGJlIHJlYWQgZnJvbSBkaXNrCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25SZWNvcmQuaAppbmRleCA2Mjk5ZjU0Y2UwMzBjOTU3NWE4YWQ0Yjk0
ZWE5NzkwNjE5YWY0YjFlLi42NTNjNWVmNzcyY2VlZjAzYjFiYjVlMzEyOWFkMWFlOTRlZTc2ZTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5oCkBAIC01Nyw3ICs1Nywx
MCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9pY29uVVJMKGljb25VUkwpCiAgICAgICAgICwgbV90
aW1lc3RhbXAodGltZXN0YW1wKQogICAgICAgICAsIG1fZGF0YShkYXRhKQotICAgIHsgfQorICAg
IHsKKyAgICAgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgICAgIG1fZGF0YS0+bmV2ZXJDYWxsVGhp
cygpOworICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1faWNvblVSTDsgfQogICAgIGludCB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVz
dGFtcDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90933</attachid>
            <date>2011-04-25 11:10:42 -0700</date>
            <delta_ts>2011-04-27 16:21:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110425111041.patch</filename>
            <type>text/plain</type>
            <size>25128</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAw
NWZmZDU4YzkyZTExMTBmZmRlNjM3ZDFlMDRkODMxY2I4MmY2YWIuLjEzNTY1N2RmZTA3MGU2ZjFi
MDA3N2I0NDk1Y2E4MGViOGE3ZGEwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OlJl
Z0V4cCk6IERpdHRvLgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZp
bGVzIHRvIHRoZSBidWlsZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgRXZlcnl0aGluZyBpcyBkb25lIGluIHRoZSBoZWFkZXIgdG8g
YXZvaWQgdGhlIGlzc3VlIHdpdGggZXhwb3J0cworICAgICAgICB0aGF0IGFyZSBvbmx5IHVzZWZ1
bCBpbiBkZWJ1ZyBidXQgc3RpbGwgbmVlZGluZyB0byBleHBvcnQgdGhlbS4KKyAgICAgICAgKiB3
dGYvUmVmQ291bnRlZC5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmVmKTogQWRk
ZWQgY2hlY2tzIHVzaW5nIHRoZSBub24gdGhyZWFkIHNhZmUgdmVyaWZpZXIuCisgICAgICAgIGFu
ZCBmaWxlZCBidWcgNTgxNzEgYWJvdXQgbWFraW5nIGl0IHN0cmljdGVyLgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQmFzZTo6aGFzT25lUmVmKTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRCYXNlOjpyZWZDb3VudCk6IERpdHRvLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFz
ZTo6c2V0TXV0ZXhGb3JWZXJpZmllcik6IEV4cG9zZSBhIHdheSB0byBjaGFuZ2UgdGhlIGNoZWNr
cyB0byBiZSBiYXNlZCBvbgorICAgICAgICBhIG11dGV4LiBUaGlzIGlzIGluIHRoZSBoZWFkZXIg
dG8gYXZvaWQgYWRkaW5nIG1vcmUgZXhwb3J0cyBmcm9tIEphdmFTY3JpcHRDb3JlLgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6ZGVwcmVjYXRlZFR1cm5PZmZWZXJpZmllcik6IFRlbXBv
cmFyeSB3YXkgdG8gdHVybiBvZmYgdmVyaWZpY2F0aW9uLgorICAgICAgICBGaWxlZCBidWcgNTgx
NzQgdG8gcmVtb3ZlIHRoaXMgbWV0aG9kLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6
ZGVyZWZCYXNlKToKKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6IEFkanVzdGVkIHRoZSBk
ZWJ1ZyBzaXplIGNoZWNrIGZvciBSZWZDb3VudGVkLgorCiAyMDExLTA0LTIyICBQYXRyaWNrIEdh
bnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxk
IGZpeCBmb3IgRU5BQkxFKElOVEVSUFJFVEVSKSBhZnRlciByODQ1NTYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGFkZTQ2OTFjNWFhNmZkNDhjNTUzZjg1
M2FmM2RhYjEzNTBhODM5OWIuLjdkNzc2NzE2ZTlmOTAxOWNiNTE3ZmFmY2NiYWUzZWZmNDlkMmZl
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01MjUs
NiArNTI1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCAz
NTJlYzk3ZTk1MWJmYmZlZjBjODc1MzQ5YzNkYzJiNDIyNDY5ZTMzLi5hZDA3YmJlZGM0YTExMDVl
MTA1MDc0YTlkM2JkNjg4ZjliYjJkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQpAQCAtMjAzLDYgKzIwMyw3IEBACiAgICAgICAgICAgICAnd3RmL1N0cmlu
Z0hhc2hlci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCcsCiAg
ICAgICAgICAgICAnd3RmL1RocmVhZFNwZWNpZmljLmgnLAorICAgICAgICAgICAgJ3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmcuaCcs
CiAgICAgICAgICAgICAnd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCcsCiAgICAgICAgICAgICAn
d3RmL1R5cGVUcmFpdHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCA3YzgzMzM5MDVlZjU3
ZTRkODc1NzZhY2UzOWUyY2NkZDY0ZjliNTVhLi5mNjdlMDY1MDRmY2E5MGVmMjEyZjhhZjA2NmM4
OGUwNWY5MTJmYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTk4MSw2ICs5ODEsMTAgQEAK
IAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxUaHJlYWRTYWZlUmVmQ291bnRlZC5oIgogCQkJPgogCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzZDA4MzVmMzZlNTY2MDk1
MjQxZjJhODRjMTYwNTQ5MTJlY2ZjMGIuLmI4ZDgzYzFjZWM3M2Q0ZDYwOTQ3MDE5NzAyNDI5YmNh
ZmM2OTY1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NCw2ICs0NCw3IEBA
CiAJCTA4RTI3OUU5MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEw
MDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovOyB9OwogCQkwQjMzMEMyNzBGMzhDNjIz
MDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5j
cHAgKi87IH07CiAJCTBCNEQ3RTYzMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjREN0U2MjBGMzE5
QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRS
ZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCREZGQUUwMEZDNjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZD
NjE3MTAwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlF
RjQgLyogT3duRmFzdE1hbGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQ
dHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
QkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQg
LyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CkBAIC03MDAsNiArNzAxLDcgQEAKIAkJMDhFMjc5RTgw
RUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RNYWxsb2NQdHIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhy
ZWFkUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1Ro
cmVhZFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNjEwLDggKzE2MTIsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTFENzY0NTExMzU0
NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oICovLAogCQkJCUE3QzQwQzA3MTMwQjA1N0QwMEQw
MDJBMSAvKiBCbG9ja1N0YWNrLmggKi8sCi0JCQkJQTdDNDBDMDgxMzBCMDU3RDAwRDAwMkExIC8q
IFNlbnRpbmVsTGlua2VkTGlzdC5oICovLAotCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAv
KiBTaW5nbHlMaW5rZWRMaXN0LmggKi8sCiAJCQkJNTEzNUZBRDUxMkQyNjg1NjAwM0MwODNCIC8q
IERlY29kZXIuaCAqLywKIAkJCQk1MTM1RkFENjEyRDI2ODU2MDAzQzA4M0IgLyogRW5jb2Rlci5o
ICovLAogCQkJCTkzQUE0Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxpbmUuaCAqLywK
QEAgLTE3MDQsNiArMTcwNCw4IEBACiAJCQkJOTY5QTA3MjkwRUQxQ0U2OTAwRjFGNjgxIC8qIFNl
Z21lbnRlZFZlY3Rvci5oICovLAogCQkJCTc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEEx
LmNwcCAqLywKIAkJCQk3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oICovLAorCQkJ
CUE3QzQwQzA4MTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAqLywKKwkJ
CQlBN0M0MEMwOTEzMEIwNTdEMDBEMDAyQTEgLyogU2luZ2x5TGlua2VkTGlzdC5oICovLAogCQkJ
CTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLywKIAkJCQk4NkQ4
N0RBNTEyQkM0QjE0MDA4RTczQTEgLyogU3RhY2tCb3VuZHMuY3BwICovLAogCQkJCTg2RDg3REE2
MTJCQzRCMTQwMDhFNzNBMSAvKiBTdGFja0JvdW5kcy5oICovLApAQCAtMTcyNSw2ICsxNzI3LDcg
QEAKIAkJCQlFMUVFNzkzQzBENkM5QjkyMDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3Bw
ICovLAogCQkJCUJDNUY3QkJEMTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRTYWZlUmVmQ291bnRl
ZC5oICovLAogCQkJCUUxQjdDOEJEMERBM0EzMzYwMDc0QjBEQyAvKiBUaHJlYWRTcGVjaWZpYy5o
ICovLAorCQkJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyLmggKi8sCiAJCQkJMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMu
Y3BwICovLAogCQkJCTBCNEQ3RTYyMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggKi8s
CiAJCQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8sCkBAIC0yNTA4LDYg
KzI1MTEsNyBAQAogCQkJCTE4QkFCNTU0MTBEQUUwNjYwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlm
aWVyRGF0YVB0aHJlYWRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MDBFMTZGNUNEMDBC
MzQ0NjAgLyogVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVGN0JCRjExODIzQjU5
MDA1MkMwMkMgLyogVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEJB
Qzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNUY3QkMwMTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRTYWZlUmVm
Q291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzEwRTE2RjVDRDAwQjM0NDYwIC8q
IFRocmVhZFNwZWNpZmljLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NjExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggNzdhMjU2N2EwYzVl
YjYwODRlYzA1ZmMyYTQyNDM5YzEzOWNhMzE1ZC4uMTI4MTVmOTM0NDY0YzA5NjMwYjRlZmUxMjc3
YWIzZDJiNjk4MmExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKQEAgLTM1MCw2ICszNTAsNyBAQCBpbmxpbmUgRXhlY3V0YWJsZVBvb2w6
OkV4ZWN1dGFibGVQb29sKHNpemVfdCBuKQogICAgIGlmICghbV9mcmVlUHRyKQogICAgICAgICBD
UkFTSCgpOyAvLyBGYWlsZWQgdG8gYWxsb2NhdGUKICAgICBtX2VuZCA9IG1fZnJlZVB0ciArIGFs
bG9jU2l6ZTsKKyAgICBkZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKCk7CiB9CiAKIGlubGluZSB2
b2lkKiBFeGVjdXRhYmxlUG9vbDo6cG9vbEFsbG9jYXRlKHNpemVfdCBuKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IGU5YjZiNTYxNGVkOTY3
ZTE5ZDBmN2YxNGQ3MzA3NTA0ZWE0M2EyY2QuLjk4YmI2YjEzOWQxNjZjNDU0NTcxMTFhNDkwZTQy
Nzc3MjhlMjlkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAs
IG1fY2FjaGUoY2FjaGUgPyBjYWNoZSA6IG5ldyBTb3VyY2VQcm92aWRlckNhY2hlKQogICAgICAg
ICAgICAgLCBtX2NhY2hlT3duZWQoIWNhY2hlKQogICAgICAgICB7CisgICAgICAgICAgICBkZXBy
ZWNhdGVkVHVybk9mZlZlcmlmaWVyKCk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+U291
cmNlUHJvdmlkZXIoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcAppbmRleCAyNWNiMmQ1YmUwMmRhYzA2MGY5NGUyYjE0ZjVjZGQ3NjIwY2JmMDg0Li42
MTYzZDEwOGEyOWM0NDJkYmEyMWUwYjk4Zjc1NjJkMmQ1Y2M3NDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgaW5saW5lIFJlZ0V4
cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVy
blN0cmluZywgUmUKICAgICAsIG1fcmVwcmVzZW50YXRpb24oYWRvcHRQdHIobmV3IFJlZ0V4cFJl
cHJlc2VudGF0aW9uKSkKIHsKICAgICBtX3N0YXRlID0gY29tcGlsZShnbG9iYWxEYXRhKTsKKyAg
ICBkZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKCk7CiB9CiAKIFJlZ0V4cDo6flJlZ0V4cCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA5N2FhZDJkNzMwZjRm
ZDNhYzk1NmJmNTJiNDM1YzIzNTU1ZjMyNjg1Li5kMDBkMmFlYTZiMGZmMGIzZWM2YzVhYmM4MTk1
MGIxOWEwYTlmZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQK
QEAgLTQyLDYgKzQyLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgTWF0aEV4dHJhcy5oCiAgICAg
TWVzc2FnZVF1ZXVlLmgKICAgICBOb25Db3B5aW5nU29ydC5oCisgICAgVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllci5oCiAgICAgTm9uY29weWFibGUuaAogICAgIE5vdEZvdW5kLmgKICAgICBOdWxs
UHRyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKaW5kZXggMTJiNjcwZTA3
YzFlNWZhY2Q1ZGYzODNjZWQ2N2FjMGU2ZDQ2Y2JmMC4uYmJkOWY2YjYwYmUwMWZjYTMzMzY4ZWI2
YzIxMDIwNTYwN2MyMmZkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9S
ZWZDb3VudGVkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgK
QEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAi
RmFzdEFsbG9jQmFzZS5oIgorI2luY2x1ZGUgIlRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCIK
ICNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUg
IlVudXNlZFBhcmFtLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zNCw2ICszNywyMCBAQCBj
bGFzcyBSZWZDb3VudGVkQmFzZSB7CiBwdWJsaWM6CiAgICAgdm9pZCByZWYoKQogICAgIHsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN0YXJ0IHRocmVhZCB2ZXJpZmljYXRpb24gYXMgc29v
biBhcyB0aGUgcmVmIGNvdW50IGdldHMgdG8gMi4gVGhpcworICAgICAgICAvLyBoZXVyaXN0aWMg
cmVmbGVjdHMgdGhlIGZhY3QgdGhhdCBpdGVtcyBhcmUgb2Z0ZW4gY3JlYXRlZCBvbiBvbmUgdGhy
ZWFkCisgICAgICAgIC8vIGFuZCB0aGVuIGdpdmVuIHRvIGFub3RoZXIgdGhyZWFkIHRvIGJlIHVz
ZWQuCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgcmVzdHJpY3Rpb24gdGlnaGVyLiBFc3Bl
Y2lhbGx5IGFzIHdlIG1vdmUgdG8gbW9yZQorICAgICAgICAvLyBjb21tb24gbWV0aG9kcyBmb3Ig
c2hhcmluZyBpdGVtcyBhY3Jvc3MgdGhyZWFkcyBsaWtlIENyb3NzVGhyZWFkQ29waWVyLmgKKyAg
ICAgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgImRldGFjaEZyb21UaHJlYWQiIG1l
dGhvZCB0byBtYWtlIHRoaXMgZXhwbGljaXQuCisgICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEp
CisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZCh0cnVlKTsKKyNlbmRpZgorICAgICAg
ICAvLyBJZiB0aGlzIGFzc2VydCBmaXJlcywgaXQgZWl0aGVyIGluZGljYXRlcyBhIHRocmVhZCBz
YWZldHkgaXNzdWUgb3IKKyAgICAgICAgLy8gdGhhdCB0aGUgdmVyaWZpY2F0aW9uIG5lZWRzIHRv
IGNoYW5nZS4gU2VlIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgZm9yCisgICAgICAgIC8vIHRo
ZSBkaWZmZXJlbnQgbW9kZXMuCisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNl
KCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VS
VCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwogICAgICAgICArK21fcmVmQ291bnQ7CkBAIC00MSwx
NSArNTgsMzUgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VS
VCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gMTsK
ICAgICB9CiAKICAgICBpbnQgcmVmQ291bnQoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50Owog
ICAgIH0KIAorICAgIHZvaWQgc2V0TXV0ZXhGb3JWZXJpZmllcihNdXRleCYgbXV0ZXgpCisgICAg
eworICAgICAgICBVTlVTRURfUEFSQU0oJm11dGV4KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAg
IG1fdmVyaWZpZXIuc2V0TXV0ZXhNb2RlKG11dGV4KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8v
IFR1cm5zIG9mZiB2ZXJpZmljYXRpb24uIFVzZSBvZiB0aGlzIG1ldGhvZCBpcyBkaXNjb3VyYWdl
ZCAoaW5zdGVhZCBleHRlbmQKKyAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIHRvIHZl
cmlmeSB5b3VyIGNhc2UpLgorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBtZXRob2QuCisgICAg
dm9pZCBkZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKCkKKyAgICB7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBtX3ZlcmlmaWVyLnR1cm5PZmZWZXJpZmljYXRpb24oKTsKKyNlbmRpZgorICAgIH0K
KwogICAgIHZvaWQgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCkKICAgICB7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtODQsNiArMTIxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgd2hldGhl
ciB0aGUgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgb3Igbm90LgogICAgIGJvb2wgZGVyZWZCYXNl
KCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAg
ICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9w
dGlvbklzUmVxdWlyZWQpOwogCkBAIC05Niw2ICsxMzQsMTIgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB9CiAKICAgICAgICAgLS1tX3JlZkNvdW50OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8g
U3RvcCB0aHJlYWQgdmVyaWZpY2F0aW9uIHdoZW4gdGhlIHJlZiBnb2VzIHRvIDEgYmVjYXVzZSBp
dAorICAgICAgICAvLyBpcyBzYWZlIHRvIGJlIHBhc3NlZCB0byBhbm90aGVyIHRocmVhZCBhdCB0
aGlzIHBvaW50LgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAgICAgbV92
ZXJpZmllci5zZXRTaGFyZWQoZmFsc2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTExNyw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAg
ICBib29sIG1fZGVsZXRpb25IYXNCZWd1bjsKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVk
OworICAgIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgbV92ZXJpZmllcjsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggNGU0ODFiYjlj
MTAzN2FlOWEwOGM4MDFhMTVlZGIwNTRmMjViMTZkNy4uNjcxZWY0MDE0MDc0MWQyOGM4M2Y0OGMy
ZDY3ODk2OTc2OTQwMmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
aXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMu
Y3BwCkBAIC0zNiwyMSArMzYsMzAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmbmRlZiBOREVCVUcKLXN0cnVjdCBTdHJ1Y3RX
aXRoSW50QW5kVHdvQm9vbHMgeyBpbnQgYTsgYm9vbCBiOyBib29sIGM7IH07Ci1zdGF0aWMgY29u
c3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6ZSA9IHNpemVvZihTdHJ1Y3RXaXRoSW50
QW5kVHdvQm9vbHMpIC0gc2l6ZW9mKGludCk7CitzdHJ1Y3QgU2FtZVNpemVBc1JlZkNvdW50ZWQg
eworICAgIGludCBhOworICAgIGJvb2wgYjsKKyAgICBib29sIGM7CisgICAgVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllciBkOworICAgIC8vIFRoZSBkZWJ1ZyB2ZXJzaW9uIG1heSBnZXQgYmlnZ2Vy
LgorfTsKICNlbHNlCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6
ZSA9IDA7CitzdHJ1Y3QgU2FtZVNpemVBc1JlZkNvdW50ZWQgeworICAgIGludCBhOworICAgIC8v
IERvbid0IGFkZCBhbnl0aGluZyBoZXJlIGJlY2F1c2UgdGhpcyBzaG91bGQgc3RheSBzbWFsbC4K
K307CiAjZW5kaWYKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE93blB0cjxpbnQ+KSA9PSBzaXpl
b2YoaW50KiksIE93blB0cl9zaG91bGRfc3RheV9zbWFsbCk7CiBDT01QSUxFX0FTU0VSVChzaXpl
b2YoUGFzc1JlZlB0cjxSZWZDb3VudGVkPGludD4gPikgPT0gc2l6ZW9mKGludCopLCBQYXNzUmVm
UHRyX3Nob3VsZF9zdGF5X3NtYWxsKTsKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVk
PGludD4pID09IHNpemVvZihpbnQpICsgcmVmQ291bnRlZEV4dHJhRGVidWdTaXplLCBSZWZDb3Vu
dGVkX3Nob3VsZF9zdGF5X3NtYWxsKTsKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVk
Q3VzdG9tQWxsb2NhdGVkPGludD4pID09IHNpemVvZihpbnQpICsgcmVmQ291bnRlZEV4dHJhRGVi
dWdTaXplLCBSZWZDb3VudGVkQ3VzdG9tQWxsb2NhdGVkX3Nob3VsZF9zdGF5X3NtYWxsKTsKK0NP
TVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVkPGludD4pID09IHNpemVvZihTYW1lU2l6ZUFz
UmVmQ291bnRlZCksIFJlZkNvdW50ZWRfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ8aW50PikgPT0gc2l6ZW9mKFNhbWVT
aXplQXNSZWZDb3VudGVkKSwgUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZF9zaG91bGRfc3RheV9z
bWFsbCk7CiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9
PSBzaXplb2YoaW50KiksIFJlZlB0cl9zaG91bGRfc3RheV9zbWFsbCk7CiBDT01QSUxFX0FTU0VS
VChzaXplb2YoVmVjdG9yPGludD4pID09IDMgKiBzaXplb2YoaW50KiksIFZlY3Rvcl9zaG91bGRf
c3RheV9zbWFsbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2Mzk3NGQxOTYwMGY2YmQ5ZmNl
N2NkMDAzZTU1OTczNTllN2ZkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBAIC0wLDAgKzEsMTQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKyNkZWZpbmUgVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllcl9oCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorCisj
aWZuZGVmIE5ERUJVRworCituYW1lc3BhY2UgV1RGIHsKKworLy8gVmVyaWZpZXMgdGhhdCBhIGNs
YXNzIGlzIHVzZWQgaW4gYSB3YXkgdGhhdCByZXNwZWN0cyBpdHMgbGFjayBvZiB0aHJlYWQtc2Fm
ZXR5LgorLy8gVGhlIGRlZmF1bHQgbW9kZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgb2JqZWN0IHdp
bGwgb25seSBiZSB1c2VkIG9uIGEgc2luZ2xlIHRocmVhZC4gVGhlCisvLyB0aHJlYWQgZ2V0cyBj
YXB0dXJlZCB3aGVuIHNldFNoYXJlZCh0cnVlKSBpcyBjYWxsZWQuCisvLyBUaGUgbW9kZSBtYXkg
YmUgY2hhbmdlIGJ5IGNhbGxpbmcgdXNlTXV0ZXhNb2RlIChvciB0dXJuT2ZmVmVyaWZpY2F0aW9u
KS4KK2NsYXNzIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgeworcHVibGljOgorICAgIFRocmVh
ZFJlc3RyaWN0aW9uVmVyaWZpZXIoKQorICAgICAgICA6IG1fbW9kZShTaW5nbGVUaHJlYWRWZXJp
ZmljYXRpb25Nb2RlKQorICAgICAgICAsIG1fc2hhcmVkKGZhbHNlKQorICAgICAgICAsIG1fb3du
aW5nVGhyZWFkKDApCisgICAgICAgICwgbV9pc093bmVkQnlNYWluVGhyZWFkKGZhbHNlKQorICAg
ICAgICAsIG1fbXV0ZXgoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRleE1vZGUo
TXV0ZXgmIG11dGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJl
YWRWZXJpZmljYXRpb25Nb2RlIHx8IChtX21vZGUgPT0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlICYm
ICZtdXRleCA9PSBtX211dGV4KSk7CisgICAgICAgIG1fbW9kZSA9IE11dGV4VmVyaWZpY2F0aW9u
TW9kZTsKKyAgICAgICAgbV9tdXRleCA9ICZtdXRleDsKKyAgICB9CisKKyAgICB2b2lkIHR1cm5P
ZmZWZXJpZmljYXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVU
aHJlYWRWZXJpZmljYXRpb25Nb2RlKTsKKyAgICAgICAgbV9tb2RlID0gTm9WZXJpZmljYXRpb25N
b2RlOworICAgIH0KKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgbWF5IChvciBt
YXkgbm90KSBiZSBvd25lZCBieSBtb3JlIHRoYW4gb25lIHBsYWNlLgorICAgIHZvaWQgc2V0U2hh
cmVkKGJvb2wgc2hhcmVkKQorICAgIHsKKyAgICAgICAgYm9vbCBwcmV2aW91c2x5U2hhcmVkID0g
bV9zaGFyZWQ7CisgICAgICAgIG1fc2hhcmVkID0gc2hhcmVkOworCisgICAgICAgIGlmICghbV9z
aGFyZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsK
KyAgICAgICAgY2FzZSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAg
QVNTRVJUKHNoYXJlZCAhPSBwcmV2aW91c2x5U2hhcmVkKTsKKyAgICAgICAgICAgIC8vIENhcHR1
cmUgdGhlIGN1cnJlbnQgdGhyZWFkIHRvIHZlcmlmeSB0aGF0IHN1YnNlcXVlbnQgcmVmL2RlcmVm
IGhhcHBlbiBvbiB0aGlzIHRocmVhZC4KKyAgICAgICAgICAgIG1faXNPd25lZEJ5TWFpblRocmVh
ZCA9IGlzTWFpblRocmVhZCgpOworICAgICAgICAgICAgaWYgKCFtX2lzT3duZWRCeU1haW5UaHJl
YWQpCisgICAgICAgICAgICAgICAgbV9vd25pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlmaWNhdGlvbk1vZGU6
CisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIC8v
IElzIGl0IG9rIHRvIHVzZSB0aGUgb2JqZWN0IGF0IHRoaXMgbW9tZW50IG9uIHRoZSBjdXJyZW50
IHRocmVhZD8KKyAgICBib29sIGlzU2FmZVRvVXNlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghbV9zaGFyZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgeworICAgICAgICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGU6Cisg
ICAgICAgICAgICAvLyBpc01haW5UaHJlYWQoKSBpcyB3YXkgZmFzdGVyIHRoYW4gY3VycmVudFRo
cmVhZCgpIG9uIG1hbnkgcGxhdGZvcm1zLCBzbyB1c2UgaXQgZmlyc3QuCisgICAgICAgICAgICBy
ZXR1cm4gKG1faXNPd25lZEJ5TWFpblRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkgfHwgKG1fb3du
aW5nVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisKKyAgICAgICAgY2FzZSBNdXRleFZlcmlm
aWNhdGlvbk1vZGU6CisgICAgICAgICAgICBpZiAoIW1fbXV0ZXgtPnRyeUxvY2soKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIG1fbXV0ZXgtPnVubG9jaygpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNhc2UgTm9WZXJpZmljYXRpb25N
b2RlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBlbnVtIFZlcmlmaWNhdGlvbk1vZGUgeworICAgICAgICBTaW5nbGVUaHJlYWRWZXJpZmlj
YXRpb25Nb2RlLAorICAgICAgICBNdXRleFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE5vVmVy
aWZpY2F0aW9uTW9kZQorICAgIH07CisKKyAgICBWZXJpZmljYXRpb25Nb2RlIG1fbW9kZTsKKyAg
ICBib29sIG1fc2hhcmVkOworCisgICAgLy8gVXNlZCBieSBTaW5nbGVUaHJlYWRWZXJpZmljYXRp
b25Nb2RlCisgICAgVGhyZWFkSWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKKyAgICBib29sIG1f
aXNPd25lZEJ5TWFpblRocmVhZDsKKworICAgIC8vIFVzZWQgYnkgTXV0ZXhWZXJpZmljYXRpb25N
b2RlLgorICAgIE11dGV4KiBtX211dGV4OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKaW5kZXggNmRkNWYwMDVlNzFmNmE2OWMzYjM2YTZmODBiMTNmNTM3
YTI1MGM3MC4uNWNmNzI5MDg3OWQ1MmU0NjAwZjhmMTU4ZWE0MWVkNWY1YTRkYmZjOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdEdsdWUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDQtMDQgIERhdmlkIExl
dmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhc3NlcnRzIHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJl
IHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRoZSByaWdodCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYzOQorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDogQWRkZWQuCisKIDIw
MTEtMDQtMjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGIvU291
cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI3Zjk3OTkyMjIxYTMzMDY2MTg5NDhjOWFlNDFlMDY4
MzczMDIyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBAIC0wLDAgKzEgQEAK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYmM2MzRiMGQ5OTFkZWZjMmQ1OTNmYWUyNjBkZTRiZGMwMTM2ZGVkNS4uYjE2
ZTU3MDA5MDc4N2UzNTc3N2ZkYzBmZGIxY2E5ZTQ3YjgzYjdmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgIEFkZCBh
c3NlcnRzIHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRo
ZSByaWdodCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTYzOQorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFsaXR5IGV4cG9zZWQgc28g
bm8gbmV3IHRlc3RzLiAoVGhlIGNoYW5nZSBpcyBiYXNpY2FsbHkgYWRkaW5nCisgICAgICAgIG1v
cmUgdGVzdGluZy4pCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0SWNvbik6
IFNldCB0aGUgbXV0ZXggd2hpY2ggZG9lcyB0aGUgZ3VhcmRpbmcgb2YgdGhlIHZhcmlhYmxlLgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZUljb25SZWNvcmQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29u
VVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0
YWJhc2UpOiBEaXR0by4KKwogMjAxMS0wNC0yMiAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5hb2tp
QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NDJkMWNiYWYzMGE0YmM2MmZlOWE0
ZTg2ZTdkZWQzZDE0MTZlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBAIC0wLDAgKzEs
NCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcl9oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oPgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCA2YTEyMjk4ZDc2
NmIzY2E3MDdmMTVlZDAyNmFmOTQ3OTI2ZGNmNDM5Li5iMDY1NjI5MGNiOTNkZDExNzNiYjYzZDky
ZDk1NTAwN2RjYWRmZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKQEAgLTM4Miw2ICszODIsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpkZWZhdWx0
SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIAogICAgIGlmICghbV9kZWZhdWx0SWNvblJl
Y29yZCkgewogICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0gSWNvblJlY29yZDo6Y3JlYXRl
KCJ1cmxJY29uIik7CisgICAgICAgIG1fZGVmYXVsdEljb25SZWNvcmQtPnNldE11dGV4Rm9yVmVy
aWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGxvYWREZWZhdWx0SWNvblJlY29yZCht
X2RlZmF1bHRJY29uUmVjb3JkLmdldCgpKTsKICAgICB9CiAgICAgCkBAIC01MTIsNiArNTEzLDgg
QEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTChQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGRhdGFPcmlnaW5hbCA/IGRhdGFPcmlnaW5hbC0+Y29w
eSgpIDogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KDApOworICAgIGlmIChkYXRhKQorICAgICAg
ICBkYXRhLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIFN0cmlu
ZyBpY29uVVJMID0gaWNvblVSTE9yaWdpbmFsLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiAgICAgCiAg
ICAgVmVjdG9yPFN0cmluZz4gcGFnZVVSTHM7CkBAIC04NzMsNiArODc2LDcgQEAgUGFzc1JlZlB0
cjxJY29uUmVjb3JkPiBJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZChjb25zdCBT
dHJpbmcmIGljb25VUkwKICAgICAgICAgcmV0dXJuIGljb247CiAKICAgICBSZWZQdHI8SWNvblJl
Y29yZD4gbmV3SWNvbiA9IEljb25SZWNvcmQ6OmNyZWF0ZShpY29uVVJMKTsKKyAgICBuZXdJY29u
LT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIG1faWNvblVSTFRv
UmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKIAogICAgIHJldHVybiBuZXdJ
Y29uLnJlbGVhc2UoKTsKQEAgLTE0NzIsNiArMTQ3Niw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpy
ZWFkRnJvbURhdGFiYXNlKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaWNvbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgZGlkQW55V29yayA9IHRydWU7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0
YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CisgICAgICAgIGltYWdlRGF0YS0+c2V0TXV0ZXhG
b3JWZXJpZmllcihtX3VybEFuZEljb25Mb2NrKTsKIAogICAgICAgICAvLyBWZXJpZnkgdGhpcyBp
Y29uIHN0aWxsIHdhbnRzIHRvIGJlIHJlYWQgZnJvbSBkaXNrCiAgICAgICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91371</attachid>
            <date>2011-04-27 16:22:02 -0700</date>
            <delta_ts>2011-04-27 16:33:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110427162200.patch</filename>
            <type>text/plain</type>
            <size>25931</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRh
NGUxODVlMmQ4ZTQ3YThmMzE2YzYxNjA2YzYzZDQzMjljODNkZmEuLjk3YjA0YzcxNjQ4OThlNzlh
MjQyMDNlZTcxYWE0OWE5OGMzODFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OlJl
Z0V4cCk6IERpdHRvLgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZp
bGVzIHRvIHRoZSBidWlsZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgRXZlcnl0aGluZyBpcyBkb25lIGluIHRoZSBoZWFkZXIgdG8g
YXZvaWQgdGhlIGlzc3VlIHdpdGggZXhwb3J0cworICAgICAgICB0aGF0IGFyZSBvbmx5IHVzZWZ1
bCBpbiBkZWJ1ZyBidXQgc3RpbGwgbmVlZGluZyB0byBleHBvcnQgdGhlbS4KKyAgICAgICAgKiB3
dGYvUmVmQ291bnRlZC5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmVmKTogQWRk
ZWQgY2hlY2tzIHVzaW5nIHRoZSBub24gdGhyZWFkIHNhZmUgdmVyaWZpZXIuCisgICAgICAgIGFu
ZCBmaWxlZCBidWcgNTgxNzEgYWJvdXQgbWFraW5nIGl0IHN0cmljdGVyLgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQmFzZTo6aGFzT25lUmVmKTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRCYXNlOjpyZWZDb3VudCk6IERpdHRvLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFz
ZTo6c2V0TXV0ZXhGb3JWZXJpZmllcik6IEV4cG9zZSBhIHdheSB0byBjaGFuZ2UgdGhlIGNoZWNr
cyB0byBiZSBiYXNlZCBvbgorICAgICAgICBhIG11dGV4LiBUaGlzIGlzIGluIHRoZSBoZWFkZXIg
dG8gYXZvaWQgYWRkaW5nIG1vcmUgZXhwb3J0cyBmcm9tIEphdmFTY3JpcHRDb3JlLgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6ZGVwcmVjYXRlZFR1cm5PZmZWZXJpZmllcik6IFRlbXBv
cmFyeSB3YXkgdG8gdHVybiBvZmYgdmVyaWZpY2F0aW9uLgorICAgICAgICBGaWxlZCBidWcgNTgx
NzQgdG8gcmVtb3ZlIHRoaXMgbWV0aG9kLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6
ZGVyZWZCYXNlKToKKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6IEFkanVzdGVkIHRoZSBk
ZWJ1ZyBzaXplIGNoZWNrIGZvciBSZWZDb3VudGVkLgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJp
bmcuaDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6Q1N0cmluZ0J1ZmZlcik6IFR1cm5l
ZCBvZmYgY2hlY2tzIGZvciB0aGlzIHdoaWxlIGEgZml4IGlzIGJlaW5nCisgICAgICAgIGRvbmUg
aW4gQ2hyb21pdW0ncyB0ZXN0X3NoZWxsIChidWcgNTgwOTMpLgorCiAyMDExLTA0LTI3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
TGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDJh
MzhiYjgwOWYwNjVhNTI2ZTdiNDhkMzlkZTE0YWRmYWRkZDE2MGIuLjkyMzRlYjA0NWY0MzNmMTM0
NzEyNzUwODExMDQxZDM1NDFiMzBhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC01MzAsNiArNTMwLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQppbmRleCAzNTJlYzk3ZTk1MWJmYmZlZjBjODc1MzQ5YzNkYzJiNDIyNDY5
ZTMzLi5hZDA3YmJlZGM0YTExMDVlMTA1MDc0YTlkM2JkNjg4ZjliYjJkZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjAzLDYgKzIwMyw3IEBACiAg
ICAgICAgICAgICAnd3RmL1N0cmluZ0hhc2hlci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaCcsCiAgICAgICAgICAgICAnd3RmL1RocmVhZFNwZWNpZmljLmgnLAor
ICAgICAgICAgICAgJ3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAg
ICAgJ3d0Zi9UaHJlYWRpbmcuaCcsCiAgICAgICAgICAgICAnd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaCcsCiAgICAgICAgICAgICAnd3RmL1R5cGVUcmFpdHMuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJv
agppbmRleCA1YTk2Mjk5NjM0NjFjZTc3ZmQyYTgwZDk2NDM5ZmE1ZTEzYzI4ZWZhLi4yZjYwNjQ0
YWU0OTQ1Yzc1ZGJjMTBlNzY2NjQ0YmY1ODRkYTVlNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oK
QEAgLTEwMDEsNiArMTAwMSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHd0ZlxUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFRocmVhZFNhZmVS
ZWZDb3VudGVkLmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZjgyMjQyZjc2YjRmZjg3YzdmNGZhNmQ2MWJhNGI3NGI1YjBiOGU3MC4uYjliMzI1ZDAw
MzhhNzU4MWVkMmRiZmU3ZDcwYjFkZTU0ZTc4YzEwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ0LDYgKzQ0LDcgQEAKIAkJMDhFMjc5RTkwRUY4M0IxMDAwN0RCNTIzIC8qIFJh
bmRvbU51bWJlclNlZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RTI3OUU4MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi87
IH07CiAJCTBCMzMwQzI3MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCMzMwQzI2MEYzOEM2MjMw
MDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLzsgfTsKIAkJMEI0RDdFNjMwRjMxOUFDODAwQUQ3
RTU4IC8qIFR5cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCNEQ3RTYyMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEJBQzk0QTAxMzM4
NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1
QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJERkZBRTAwRkM2MTkyOTAwRDY5RUY0IC8qIENy
b3NzVGhyZWFkUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291
bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBCREZGQUUxMEZDNjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBE
NjlFRjQgLyogT3duRmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGlt
aXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
RjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKQEAgLTcwNSw2
ICs3MDYsNyBAQAogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2Vl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXJTZWVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2MEYzOEM2MjMwMDY5MkRFMyAv
KiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5
cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjREN0U2MjBGMzE5
QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCQUM5NDlF
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93
bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFz
dE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYx
NzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkUmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjAsOCArMTYyMiw2IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQlBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggKi8sCiAJ
CQkJQTdDNDBDMDcxMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2suaCAqLywKLQkJCQlBN0M0
MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8sCi0JCQkJQTdD
NDBDMDkxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLywKIAkJCQk1MTM1
RkFENTEyRDI2ODU2MDAzQzA4M0IgLyogRGVjb2Rlci5oICovLAogCQkJCTUxMzVGQUQ2MTJEMjY4
NTYwMDNDMDgzQiAvKiBFbmNvZGVyLmggKi8sCiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3
IC8qIEFsd2F5c0lubGluZS5oICovLApAQCAtMTcxOSw2ICsxNzE5LDggQEAKIAkJCQk5NjlBMDcy
OTBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCiAJCQkJNzZGQjlGMTAx
MkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovLAogCQkJCTc2RkI5RjBFMTJFODUxODYwMDUx
QTJFQiAvKiBTSEExLmggKi8sCisJCQkJQTdDNDBDMDgxMzBCMDU3RDAwRDAwMkExIC8qIFNlbnRp
bmVsTGlua2VkTGlzdC5oICovLAorCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5n
bHlMaW5rZWRMaXN0LmggKi8sCiAJCQkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovLAogCQkJCTg2RDg3REE1MTJCQzRCMTQwMDhFNzNBMSAvKiBTdGFja0JvdW5k
cy5jcHAgKi8sCiAJCQkJODZEODdEQTYxMkJDNEIxNDAwOEU3M0ExIC8qIFN0YWNrQm91bmRzLmgg
Ki8sCkBAIC0xNzQwLDYgKzE3NDIsNyBAQAogCQkJCUUxRUU3OTNDMEQ2QzlCOTIwMEZFQTNCQSAv
KiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi8sCiAJCQkJQkM1RjdCQkQxMTgyM0I1OTAwNTJDMDJD
IC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi8sCiAJCQkJRTFCN0M4QkQwREEzQTMzNjAwNzRC
MERDIC8qIFRocmVhZFNwZWNpZmljLmggKi8sCisJCQkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVC
IC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLywKIAkJCQkwQjMzMEMyNjBGMzhDNjIz
MDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8sCiAJCQkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3
RTU4IC8qIFR5cGVUcmFpdHMuaCAqLywKIAkJCQlFMTk1Njc4RDA5RTdDRjEyMDBCODlEMTMgLyog
dW5pY29kZSAqLywKQEAgLTI1MjMsNiArMjUyNiw3IEBACiAJCQkJMThCQUI1NTQxMERBRTA2NjAw
MEQ5NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDcwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNUY3QkJGMTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRpbmdQcmltaXRpdmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RjdCQzAxMTgyM0I1OTAw
NTJDMDJDIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ3MTBFMTZGNUNEMDBCMzQ0NjAgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaAppbmRleCA3N2EyNTY3YTBjNWViNjA4NGVjMDVmYzJhNDI0MzljMTM5Y2EzMTVkLi4xMjgx
NWY5MzQ0NjRjMDk2MzBiNGVmZTEyNzdhYjNkMmI2OTgyYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApAQCAtMzUwLDYgKzM1MCw3IEBA
IGlubGluZSBFeGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2woc2l6ZV90IG4pCiAgICAgaWYg
KCFtX2ZyZWVQdHIpCiAgICAgICAgIENSQVNIKCk7IC8vIEZhaWxlZCB0byBhbGxvY2F0ZQogICAg
IG1fZW5kID0gbV9mcmVlUHRyICsgYWxsb2NTaXplOworICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVy
aWZpZXIoKTsKIH0KIAogaW5saW5lIHZvaWQqIEV4ZWN1dGFibGVQb29sOjpwb29sQWxsb2NhdGUo
c2l6ZV90IG4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKaW5kZXggZTliNmI1NjE0ZWQ5NjdlMTlkMGY3ZjE0ZDczMDc1MDRlYTQzYTJjZC4uOThiYjZi
MTM5ZDE2NmM0NTQ1NzExMWE0OTBlNDI3NzcyOGUyOWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICwgbV9jYWNoZShjYWNoZSA/IGNhY2hlIDogbmV3IFNvdXJj
ZVByb3ZpZGVyQ2FjaGUpCiAgICAgICAgICAgICAsIG1fY2FjaGVPd25lZCghY2FjaGUpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKTsKICAgICAgICAg
fQogICAgICAgICB2aXJ0dWFsIH5Tb3VyY2VQcm92aWRlcigpCiAgICAgICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDI1Y2IyZDViZTAyZGFjMDYwZjk0
ZTJiMTRmNWNkZDc2MjBjYmYwODQuLjYxNjNkMTA4YTI5YzQ0MmRiYTIxZTBiOThmNzU2MmQyZDVj
Yzc0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtODUs
NiArODUsNyBAQCBpbmxpbmUgUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZQogICAgICwgbV9yZXByZXNlbnRhdGlv
bihhZG9wdFB0cihuZXcgUmVnRXhwUmVwcmVzZW50YXRpb24pKQogewogICAgIG1fc3RhdGUgPSBj
b21waWxlKGdsb2JhbERhdGEpOworICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKTsKIH0K
IAogUmVnRXhwOjp+UmVnRXhwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGQwZDUzNjM4ZTljMDkyZTQwNmUxODRhMDZlM2Q3MGViMDI3MjM5N2MuLjcwYjgx
MGI1ZDQzMTBlODE2YTQ5NTc4ZTY4ZTZmMWY2MGQxNjFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDIsNiArNDIsNyBAQCBTRVQoV1RGX0hFQURFUlMK
ICAgICBNYXRoRXh0cmFzLmgKICAgICBNZXNzYWdlUXVldWUuaAogICAgIE5vbkNvcHlpbmdTb3J0
LmgKKyAgICBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKICAgICBOb25jb3B5YWJsZS5oCiAg
ICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SZWZDb3VudGVkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNv
dW50ZWQuaAppbmRleCAxMmI2NzBlMDdjMWU1ZmFjZDVkZjM4M2NlZDY3YWMwZTZkNDZjYmYwLi5i
YmQ5ZjZiNjBiZTAxZmNhMzMzNjhlYjZjMjEwMjA1NjA3YzIyZmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1JlZkNvdW50ZWQuaApAQCAtMjMsNyArMjMsMTAgQEAKIAogI2luY2x1ZGUgIkFz
c2VydGlvbnMuaCIKICNpbmNsdWRlICJGYXN0QWxsb2NCYXNlLmgiCisjaW5jbHVkZSAiVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllci5oIgogI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVk
ZSAiT3duUHRyLmgiCisjaW5jbHVkZSAiVW51c2VkUGFyYW0uaCIKIAogbmFtZXNwYWNlIFdURiB7
CiAKQEAgLTM0LDYgKzM3LDIwIEBAIGNsYXNzIFJlZkNvdW50ZWRCYXNlIHsKIHB1YmxpYzoKICAg
ICB2b2lkIHJlZigpCiAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RhcnQgdGhy
ZWFkIHZlcmlmaWNhdGlvbiBhcyBzb29uIGFzIHRoZSByZWYgY291bnQgZ2V0cyB0byAyLiBUaGlz
CisgICAgICAgIC8vIGhldXJpc3RpYyByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IGl0ZW1zIGFyZSBv
ZnRlbiBjcmVhdGVkIG9uIG9uZSB0aHJlYWQKKyAgICAgICAgLy8gYW5kIHRoZW4gZ2l2ZW4gdG8g
YW5vdGhlciB0aHJlYWQgdG8gYmUgdXNlZC4KKyAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBy
ZXN0cmljdGlvbiB0aWdoZXIuIEVzcGVjaWFsbHkgYXMgd2UgbW92ZSB0byBtb3JlCisgICAgICAg
IC8vIGNvbW1vbiBtZXRob2RzIGZvciBzaGFyaW5nIGl0ZW1zIGFjcm9zcyB0aHJlYWRzIGxpa2Ug
Q3Jvc3NUaHJlYWRDb3BpZXIuaAorICAgICAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byBhZGQg
YSAiZGV0YWNoRnJvbVRocmVhZCIgbWV0aG9kIHRvIG1ha2UgdGhpcyBleHBsaWNpdC4KKyAgICAg
ICAgaWYgKG1fcmVmQ291bnQgPT0gMSkKKyAgICAgICAgICAgIG1fdmVyaWZpZXIuc2V0U2hhcmVk
KHRydWUpOworI2VuZGlmCisgICAgICAgIC8vIElmIHRoaXMgYXNzZXJ0IGZpcmVzLCBpdCBlaXRo
ZXIgaW5kaWNhdGVzIGEgdGhyZWFkIHNhZmV0eSBpc3N1ZSBvcgorICAgICAgICAvLyB0aGF0IHRo
ZSB2ZXJpZmljYXRpb24gbmVlZHMgdG8gY2hhbmdlLiBTZWUgVGhyZWFkUmVzdHJpY3Rpb25WZXJp
ZmllciBmb3IKKyAgICAgICAgLy8gdGhlIGRpZmZlcmVudCBtb2Rlcy4KKyAgICAgICAgQVNTRVJU
KG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhh
c0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgICAg
ICsrbV9yZWZDb3VudDsKQEAgLTQxLDE1ICs1OCwzNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c09uZVJlZigpIGNvbnN0CiAgICAgeworICAgICAgICBBU1NFUlQobV92ZXJpZmllci5pc1NhZmVU
b1VzZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBy
ZXR1cm4gbV9yZWZDb3VudCA9PSAxOwogICAgIH0KIAogICAgIGludCByZWZDb3VudCgpIGNvbnN0
CiAgICAgeworICAgICAgICBBU1NFUlQobV92ZXJpZmllci5pc1NhZmVUb1VzZSgpKTsKICAgICAg
ICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQogCisgICAgdm9pZCBzZXRNdXRleEZvclZlcmlm
aWVyKE11dGV4JiBtdXRleCkKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSgmbXV0ZXgpOwor
I2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV92ZXJpZmllci5zZXRNdXRleE1vZGUobXV0ZXgpOwor
I2VuZGlmCisgICAgfQorCisgICAgLy8gVHVybnMgb2ZmIHZlcmlmaWNhdGlvbi4gVXNlIG9mIHRo
aXMgbWV0aG9kIGlzIGRpc2NvdXJhZ2VkIChpbnN0ZWFkIGV4dGVuZAorICAgIC8vIFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIgdG8gdmVyaWZ5IHlvdXIgY2FzZSkuCisgICAgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIG1ldGhvZC4KKyAgICB2b2lkIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKQor
ICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fdmVyaWZpZXIudHVybk9mZlZlcmlmaWNh
dGlvbigpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCByZWxheEFkb3B0aW9uUmVxdWlyZW1l
bnQoKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC04NCw2ICsxMjEsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBmcmVlZCBvciBu
b3QuCiAgICAgYm9vbCBkZXJlZkJhc2UoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZp
ZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsK
ICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAKQEAgLTk2LDYgKzEzNCwx
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KIAogICAgICAgICAtLW1fcmVmQ291bnQ7CisjaWZu
ZGVmIE5ERUJVRworICAgICAgICAvLyBTdG9wIHRocmVhZCB2ZXJpZmljYXRpb24gd2hlbiB0aGUg
cmVmIGdvZXMgdG8gMSBiZWNhdXNlIGl0CisgICAgICAgIC8vIGlzIHNhZmUgdG8gYmUgcGFzc2Vk
IHRvIGFub3RoZXIgdGhyZWFkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgIGlmIChtX3JlZkNvdW50
ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZChmYWxzZSk7CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE3LDYgKzE2MSw3IEBAIHByaXZh
dGU6CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwogICAgIGJv
b2wgbV9hZG9wdGlvbklzUmVxdWlyZWQ7CisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBt
X3ZlcmlmaWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NpemVMaW1pdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGlt
aXRzLmNwcAppbmRleCA0ZTQ4MWJiOWMxMDM3YWU5YTA4YzgwMWExNWVkYjA1NGYyNWIxNmQ3Li42
NzFlZjQwMTQwNzQxZDI4YzgzZjQ4YzJkNjc4OTY5NzY5NDAyZWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAKQEAgLTM2LDIxICszNiwzMCBAQAogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiAjaWZuZGVm
IE5ERUJVRwotc3RydWN0IFN0cnVjdFdpdGhJbnRBbmRUd29Cb29scyB7IGludCBhOyBib29sIGI7
IGJvb2wgYzsgfTsKLXN0YXRpYyBjb25zdCBzaXplX3QgcmVmQ291bnRlZEV4dHJhRGVidWdTaXpl
ID0gc2l6ZW9mKFN0cnVjdFdpdGhJbnRBbmRUd29Cb29scykgLSBzaXplb2YoaW50KTsKK3N0cnVj
dCBTYW1lU2l6ZUFzUmVmQ291bnRlZCB7CisgICAgaW50IGE7CisgICAgYm9vbCBiOworICAgIGJv
b2wgYzsKKyAgICBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGQ7CisgICAgLy8gVGhlIGRlYnVn
IHZlcnNpb24gbWF5IGdldCBiaWdnZXIuCit9OwogI2Vsc2UKLXN0YXRpYyBjb25zdCBzaXplX3Qg
cmVmQ291bnRlZEV4dHJhRGVidWdTaXplID0gMDsKK3N0cnVjdCBTYW1lU2l6ZUFzUmVmQ291bnRl
ZCB7CisgICAgaW50IGE7CisgICAgLy8gRG9uJ3QgYWRkIGFueXRoaW5nIGhlcmUgYmVjYXVzZSB0
aGlzIHNob3VsZCBzdGF5IHNtYWxsLgorfTsKICNlbmRpZgogCiBDT01QSUxFX0FTU0VSVChzaXpl
b2YoT3duUHRyPGludD4pID09IHNpemVvZihpbnQqKSwgT3duUHRyX3Nob3VsZF9zdGF5X3NtYWxs
KTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihQYXNzUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9
PSBzaXplb2YoaW50KiksIFBhc3NSZWZQdHJfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8aW50PikgPT0gc2l6ZW9mKGludCkgKyByZWZDb3VudGVk
RXh0cmFEZWJ1Z1NpemUsIFJlZkNvdW50ZWRfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ8aW50PikgPT0gc2l6ZW9mKGlu
dCkgKyByZWZDb3VudGVkRXh0cmFEZWJ1Z1NpemUsIFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWRf
c2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8aW50
PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZWZDb3VudGVkKSwgUmVmQ291bnRlZF9zaG91bGRfc3Rh
eV9zbWFsbCk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRl
ZDxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlZkNvdW50ZWQpLCBSZWZDb3VudGVkQ3VzdG9t
QWxsb2NhdGVkX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZQ
dHI8UmVmQ291bnRlZDxpbnQ+ID4pID09IHNpemVvZihpbnQqKSwgUmVmUHRyX3Nob3VsZF9zdGF5
X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihWZWN0b3I8aW50PikgPT0gMyAqIHNpemVv
ZihpbnQqKSwgVmVjdG9yX3Nob3VsZF9zdGF5X3NtYWxsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNzYzOTc0ZDE5NjAwZjZiZDlmY2U3Y2QwMDNlNTU5NzM1OWU3ZmQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
LmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJfaAor
I2RlZmluZSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmdQcmltaXRpdmVzLmg+CisKKyNpZm5kZWYgTkRFQlVHCisKK25hbWVzcGFjZSBXVEYgewor
CisvLyBWZXJpZmllcyB0aGF0IGEgY2xhc3MgaXMgdXNlZCBpbiBhIHdheSB0aGF0IHJlc3BlY3Rz
IGl0cyBsYWNrIG9mIHRocmVhZC1zYWZldHkuCisvLyBUaGUgZGVmYXVsdCBtb2RlIGlzIHRvIHZl
cmlmeSB0aGF0IHRoZSBvYmplY3Qgd2lsbCBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgdGhyZWFk
LiBUaGUKKy8vIHRocmVhZCBnZXRzIGNhcHR1cmVkIHdoZW4gc2V0U2hhcmVkKHRydWUpIGlzIGNh
bGxlZC4KKy8vIFRoZSBtb2RlIG1heSBiZSBjaGFuZ2UgYnkgY2FsbGluZyB1c2VNdXRleE1vZGUg
KG9yIHR1cm5PZmZWZXJpZmljYXRpb24pLgorY2xhc3MgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ciB7CitwdWJsaWM6CisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcigpCisgICAgICAgIDog
bV9tb2RlKFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpCisgICAgICAgICwgbV9zaGFyZWQo
ZmFsc2UpCisgICAgICAgICwgbV9vd25pbmdUaHJlYWQoMCkKKyAgICAgICAgLCBtX2lzT3duZWRC
eU1haW5UaHJlYWQoZmFsc2UpCisgICAgICAgICwgbV9tdXRleCgwKQorICAgIHsKKyAgICB9CisK
KyAgICB2b2lkIHNldE11dGV4TW9kZShNdXRleCYgbXV0ZXgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUgfHwgKG1fbW9kZSA9PSBN
dXRleFZlcmlmaWNhdGlvbk1vZGUgJiYgJm11dGV4ID09IG1fbXV0ZXgpKTsKKyAgICAgICAgbV9t
b2RlID0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlOworICAgICAgICBtX211dGV4ID0gJm11dGV4Owor
ICAgIH0KKworICAgIHZvaWQgdHVybk9mZlZlcmlmaWNhdGlvbigpCisgICAgeworICAgICAgICBB
U1NFUlQobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpOworICAgICAgICBt
X21vZGUgPSBOb1ZlcmlmaWNhdGlvbk1vZGU7CisgICAgfQorCisgICAgLy8gSW5kaWNhdGVzIHRo
YXQgdGhlIG9iamVjdCBtYXkgKG9yIG1heSBub3QpIGJlIG93bmVkIGJ5IG1vcmUgdGhhbiBvbmUg
cGxhY2UuCisgICAgdm9pZCBzZXRTaGFyZWQoYm9vbCBzaGFyZWQpCisgICAgeworICAgICAgICBi
b29sIHByZXZpb3VzbHlTaGFyZWQgPSBtX3NoYXJlZDsKKyAgICAgICAgbV9zaGFyZWQgPSBzaGFy
ZWQ7CisKKyAgICAgICAgaWYgKCFtX3NoYXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBzd2l0Y2ggKG1fbW9kZSkgeworICAgICAgICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNh
dGlvbk1vZGU6CisgICAgICAgICAgICBBU1NFUlQoc2hhcmVkICE9IHByZXZpb3VzbHlTaGFyZWQp
OworICAgICAgICAgICAgLy8gQ2FwdHVyZSB0aGUgY3VycmVudCB0aHJlYWQgdG8gdmVyaWZ5IHRo
YXQgc3Vic2VxdWVudCByZWYvZGVyZWYgaGFwcGVuIG9uIHRoaXMgdGhyZWFkLgorICAgICAgICAg
ICAgbV9pc093bmVkQnlNYWluVGhyZWFkID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAgICAgICBp
ZiAoIW1faXNPd25lZEJ5TWFpblRocmVhZCkKKyAgICAgICAgICAgICAgICBtX293bmluZ1RocmVh
ZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNl
IE11dGV4VmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1vZGU6
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorCisgICAgLy8gSXMgaXQgb2sgdG8gdXNlIHRoZSBvYmplY3QgYXQgdGhp
cyBtb21lbnQgb24gdGhlIGN1cnJlbnQgdGhyZWFkPworICAgIGJvb2wgaXNTYWZlVG9Vc2UoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3NoYXJlZCkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgU2luZ2xlVGhy
ZWFkVmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAgIC8vIGlzTWFpblRocmVhZCgpIGlzIHdh
eSBmYXN0ZXIgdGhhbiBjdXJyZW50VGhyZWFkKCkgb24gbWFueSBwbGF0Zm9ybXMsIHNvIHVzZSBp
dCBmaXJzdC4KKyAgICAgICAgICAgIHJldHVybiAobV9pc093bmVkQnlNYWluVGhyZWFkICYmIGlz
TWFpblRocmVhZCgpKSB8fCAobV9vd25pbmdUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKwor
ICAgICAgICBjYXNlIE11dGV4VmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAgIGlmICghbV9t
dXRleC0+dHJ5TG9jaygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgbV9tdXRleC0+dW5sb2NrKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gVmVyaWZpY2F0aW9uTW9kZSB7CisgICAg
ICAgIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE11dGV4VmVyaWZpY2F0
aW9uTW9kZSwKKyAgICAgICAgTm9WZXJpZmljYXRpb25Nb2RlCisgICAgfTsKKworICAgIFZlcmlm
aWNhdGlvbk1vZGUgbV9tb2RlOworICAgIGJvb2wgbV9zaGFyZWQ7CisKKyAgICAvLyBVc2VkIGJ5
IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3du
aW5nVGhyZWFkOworICAgIGJvb2wgbV9pc093bmVkQnlNYWluVGhyZWFkOworCisgICAgLy8gVXNl
ZCBieSBNdXRleFZlcmlmaWNhdGlvbk1vZGUuCisgICAgTXV0ZXgqIG1fbXV0ZXg7Cit9OworCit9
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQ1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcu
aAppbmRleCAzNDNhN2E1MjUyMDc0MWUyYWRjZGJkODEwZTNlOTk5NWEzODBkNDY0Li5jZDU0NzQ1
YTNjNTYxN2JlNzBhNWEwMDJiNzYzYmNjMjQxYjM3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQ1N0cmluZzsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+
IGNyZWF0ZShzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1N0cmluZ0J1ZmZl
cihsZW5ndGgpKTsgfQotICAgIENTdHJpbmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3Rv
cihsZW5ndGgpIHsgfQorICAgIENTdHJpbmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3Rv
cihsZW5ndGgpIHsgZGVwcmVjYXRlZFR1cm5PZmZWZXJpZmllcigpOyB9CiAgICAgY2hhciogbXV0
YWJsZURhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7IH0KIAogICAgIFZlY3RvcjxjaGFy
PiBtX3ZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IDUyN2RlNmE2MmJhOWY0NzRj
YTc1ZDdjYjdjMTc2MTM4ZDE0MmQ2ZmUuLjNkNzlhMGM1ZWE3YzFmOWRiMTI4MDc0NjVkZDcwNDc0
OWFlOWUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEx
LTA0LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZDb3Vu
dGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkKKwor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
Lmg6IEFkZGVkLgorCiAyMDExLTA0LTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9u
VmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjdmOTc5OTIyMjFhMzMwNjYxODk0OGM5YWU0MWUwNjgz
NzMwMjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAsMCArMSBAQAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA1MTM4NDAyZTY1NTZlMzJjODFmYTUwYTcyNmRiYjlmNTZjZDg0ODJjLi5kNTI2
MjA0NTk3NjA4MmNiZTM5MTJjOTQ4ODJmZTNkZmY1ZDgxYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTEtMDQtMDcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKyAgICAgICAgQWRkIGFz
c2VydHMgdG8gUmVmQ291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhl
IHJpZ2h0IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMxNjM5CisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHkgZXhwb3NlZCBzbyBu
byBuZXcgdGVzdHMuIChUaGUgY2hhbmdlIGlzIGJhc2ljYWxseSBhZGRpbmcKKyAgICAgICAgbW9y
ZSB0ZXN0aW5nLikKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHRJY29uKTog
U2V0IHRoZSBtdXRleCB3aGljaCBkb2VzIHRoZSBndWFyZGluZyBvZiB0aGUgdmFyaWFibGUuCisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25V
UkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRh
YmFzZSk6IERpdHRvLgorCiAyMDExLTA0LTI3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg1MTEyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9U
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ0MmQxY2JhZjMwYTRiYzYy
ZmU5YTRlODZlN2RlZDNkMTQxNmUwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAs
MCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg+CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDM5ZGIw
Njc4Mjg5NmFiZDhkZGVjNGNlMDg5Nzc0NTdkZDUwZDkxODIuLjY0ZGUzMzllOTBmNzE3YTQyMTZj
NzExODFkODA5MWY5NmEwZjlkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcApAQCAtMzg3LDYgKzM4Nyw3IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OmRl
ZmF1bHRJY29uKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgCiAgICAgaWYgKCFtX2RlZmF1bHRJ
Y29uUmVjb3JkKSB7CiAgICAgICAgIG1fZGVmYXVsdEljb25SZWNvcmQgPSBJY29uUmVjb3JkOjpj
cmVhdGUoInVybEljb24iKTsKKyAgICAgICAgbV9kZWZhdWx0SWNvblJlY29yZC0+c2V0TXV0ZXhG
b3JWZXJpZmllcihtX3VybEFuZEljb25Mb2NrKTsKICAgICAgICAgbG9hZERlZmF1bHRJY29uUmVj
b3JkKG1fZGVmYXVsdEljb25SZWNvcmQuZ2V0KCkpOwogICAgIH0KICAgICAKQEAgLTUxNyw2ICs1
MTgsOCBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhT3JpZ2luYWwsCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gZGF0YU9yaWdpbmFsID8gZGF0YU9yaWdpbmFs
LT5jb3B5KCkgOiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4oMCk7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIGRhdGEtPnNldE11dGV4Rm9yVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAg
U3RyaW5nIGljb25VUkwgPSBpY29uVVJMT3JpZ2luYWwuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKICAg
ICAKICAgICBWZWN0b3I8U3RyaW5nPiBwYWdlVVJMczsKQEAgLTg3OCw2ICs4ODEsNyBAQCBQYXNz
UmVmUHRyPEljb25SZWNvcmQ+IEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKGNv
bnN0IFN0cmluZyYgaWNvblVSTAogICAgICAgICByZXR1cm4gaWNvbjsKIAogICAgIFJlZlB0cjxJ
Y29uUmVjb3JkPiBuZXdJY29uID0gSWNvblJlY29yZDo6Y3JlYXRlKGljb25VUkwpOworICAgIG5l
d0ljb24tPnNldE11dGV4Rm9yVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgbV9pY29u
VVJMVG9SZWNvcmRNYXAuc2V0KGljb25VUkwsIG5ld0ljb24uZ2V0KCkpOwogCiAgICAgcmV0dXJu
IG5ld0ljb24ucmVsZWFzZSgpOwpAQCAtMTQ3OSw2ICsxNDgzLDcgQEAgYm9vbCBJY29uRGF0YWJh
c2U6OnJlYWRGcm9tRGF0YWJhc2UoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpY29u
cy5zaXplKCk7ICsraSkgewogICAgICAgICBkaWRBbnlXb3JrID0gdHJ1ZTsKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhID0gZ2V0SW1hZ2VEYXRhRm9ySWNvblVSTEZyb21T
UUxEYXRhYmFzZShpY29uc1tpXS0+aWNvblVSTCgpKTsKKyAgICAgICAgaW1hZ2VEYXRhLT5zZXRN
dXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogCiAgICAgICAgIC8vIFZlcmlmeSB0
aGlzIGljb24gc3RpbGwgd2FudHMgdG8gYmUgcmVhZCBmcm9tIGRpc2sKICAgICAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91374</attachid>
            <date>2011-04-27 16:33:24 -0700</date>
            <delta_ts>2011-07-20 18:01:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110427163323.patch</filename>
            <type>text/plain</type>
            <size>25929</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRh
NGUxODVlMmQ4ZTQ3YThmMzE2YzYxNjA2YzYzZDQzMjljODNkZmEuLjk3YjA0YzcxNjQ4OThlNzlh
MjQyMDNlZTcxYWE0OWE5OGMzODFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDExLTA0LTA3ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNz
ZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUg
cmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE2MzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OlJl
Z0V4cCk6IERpdHRvLgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDogQWRkZWQgbmV3IGZp
bGVzIHRvIHRoZSBidWlsZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgRXZlcnl0aGluZyBpcyBkb25lIGluIHRoZSBoZWFkZXIgdG8g
YXZvaWQgdGhlIGlzc3VlIHdpdGggZXhwb3J0cworICAgICAgICB0aGF0IGFyZSBvbmx5IHVzZWZ1
bCBpbiBkZWJ1ZyBidXQgc3RpbGwgbmVlZGluZyB0byBleHBvcnQgdGhlbS4KKyAgICAgICAgKiB3
dGYvUmVmQ291bnRlZC5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6cmVmKTogQWRk
ZWQgY2hlY2tzIHVzaW5nIHRoZSBub24gdGhyZWFkIHNhZmUgdmVyaWZpZXIuCisgICAgICAgIGFu
ZCBmaWxlZCBidWcgNTgxNzEgYWJvdXQgbWFraW5nIGl0IHN0cmljdGVyLgorICAgICAgICAoV1RG
OjpSZWZDb3VudGVkQmFzZTo6aGFzT25lUmVmKTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRCYXNlOjpyZWZDb3VudCk6IERpdHRvLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFz
ZTo6c2V0TXV0ZXhGb3JWZXJpZmllcik6IEV4cG9zZSBhIHdheSB0byBjaGFuZ2UgdGhlIGNoZWNr
cyB0byBiZSBiYXNlZCBvbgorICAgICAgICBhIG11dGV4LiBUaGlzIGlzIGluIHRoZSBoZWFkZXIg
dG8gYXZvaWQgYWRkaW5nIG1vcmUgZXhwb3J0cyBmcm9tIEphdmFTY3JpcHRDb3JlLgorICAgICAg
ICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6ZGVwcmVjYXRlZFR1cm5PZmZWZXJpZmllcik6IFRlbXBv
cmFyeSB3YXkgdG8gdHVybiBvZmYgdmVyaWZpY2F0aW9uLgorICAgICAgICBGaWxlZCBidWcgNTgx
NzQgdG8gcmVtb3ZlIHRoaXMgbWV0aG9kLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6
ZGVyZWZCYXNlKToKKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6IEFkanVzdGVkIHRoZSBk
ZWJ1ZyBzaXplIGNoZWNrIGZvciBSZWZDb3VudGVkLgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJp
bmcuaDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6Q1N0cmluZ0J1ZmZlcik6IFR1cm5l
ZCBvZmYgY2hlY2tzIGZvciB0aGlzIHdoaWxlIGEgZml4IGlzIGJlaW5nCisgICAgICAgIGRvbmUg
aW4gQ2hyb21pdW0ncyB0ZXN0X3NoZWxsIChidWcgNTgwOTMpLgorCiAyMDExLTA0LTI3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
TGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDJh
MzhiYjgwOWYwNjVhNTI2ZTdiNDhkMzlkZTE0YWRmYWRkZDE2MGIuLjkyMzRlYjA0NWY0MzNmMTM0
NzEyNzUwODExMDQxZDM1NDFiMzBhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC01MzAsNiArNTMwLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQppbmRleCAzNTJlYzk3ZTk1MWJmYmZlZjBjODc1MzQ5YzNkYzJiNDIyNDY5
ZTMzLi5hZDA3YmJlZGM0YTExMDVlMTA1MDc0YTlkM2JkNjg4ZjliYjJkZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjAzLDYgKzIwMyw3IEBACiAg
ICAgICAgICAgICAnd3RmL1N0cmluZ0hhc2hlci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaCcsCiAgICAgICAgICAgICAnd3RmL1RocmVhZFNwZWNpZmljLmgnLAor
ICAgICAgICAgICAgJ3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAg
ICAgJ3d0Zi9UaHJlYWRpbmcuaCcsCiAgICAgICAgICAgICAnd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaCcsCiAgICAgICAgICAgICAnd3RmL1R5cGVUcmFpdHMuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJv
agppbmRleCA1YTk2Mjk5NjM0NjFjZTc3ZmQyYTgwZDk2NDM5ZmE1ZTEzYzI4ZWZhLi4yZjYwNjQ0
YWU0OTQ1Yzc1ZGJjMTBlNzY2NjQ0YmY1ODRkYTVlNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oK
QEAgLTEwMDEsNiArMTAwMSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHd0ZlxUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFRocmVhZFNhZmVS
ZWZDb3VudGVkLmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZjgyMjQyZjc2YjRmZjg3YzdmNGZhNmQ2MWJhNGI3NGI1YjBiOGU3MC4uYjliMzI1ZDAw
MzhhNzU4MWVkMmRiZmU3ZDcwYjFkZTU0ZTc4YzEwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ0LDYgKzQ0LDcgQEAKIAkJMDhFMjc5RTkwRUY4M0IxMDAwN0RCNTIzIC8qIFJh
bmRvbU51bWJlclNlZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RTI3OUU4MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi87
IH07CiAJCTBCMzMwQzI3MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCMzMwQzI2MEYzOEM2MjMw
MDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLzsgfTsKIAkJMEI0RDdFNjMwRjMxOUFDODAwQUQ3
RTU4IC8qIFR5cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCNEQ3RTYyMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEJBQzk0QTAxMzM4
NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1
QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJERkZBRTAwRkM2MTkyOTAwRDY5RUY0IC8qIENy
b3NzVGhyZWFkUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291
bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBCREZGQUUxMEZDNjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBE
NjlFRjQgLyogT3duRmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGlt
aXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
RjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKQEAgLTcwNSw2
ICs3MDYsNyBAQAogCQkwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2Vl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXJTZWVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2MEYzOEM2MjMwMDY5MkRFMyAv
KiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5
cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjREN0U2MjBGMzE5
QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCQUM5NDlF
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93
bkZhc3RNYWxsb2NQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFz
dE1hbGxvY1B0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYx
NzEwMDBENjlFRjQgLyogQ3Jvc3NUaHJlYWRSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkUmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjAsOCArMTYyMiw2IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQlBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggKi8sCiAJ
CQkJQTdDNDBDMDcxMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2suaCAqLywKLQkJCQlBN0M0
MEMwODEzMEIwNTdEMDBEMDAyQTEgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8sCi0JCQkJQTdD
NDBDMDkxMzBCMDU3RDAwRDAwMkExIC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLywKIAkJCQk1MTM1
RkFENTEyRDI2ODU2MDAzQzA4M0IgLyogRGVjb2Rlci5oICovLAogCQkJCTUxMzVGQUQ2MTJEMjY4
NTYwMDNDMDgzQiAvKiBFbmNvZGVyLmggKi8sCiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3
IC8qIEFsd2F5c0lubGluZS5oICovLApAQCAtMTcxOSw2ICsxNzE5LDggQEAKIAkJCQk5NjlBMDcy
OTBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCiAJCQkJNzZGQjlGMTAx
MkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovLAogCQkJCTc2RkI5RjBFMTJFODUxODYwMDUx
QTJFQiAvKiBTSEExLmggKi8sCisJCQkJQTdDNDBDMDgxMzBCMDU3RDAwRDAwMkExIC8qIFNlbnRp
bmVsTGlua2VkTGlzdC5oICovLAorCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5n
bHlMaW5rZWRMaXN0LmggKi8sCiAJCQkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovLAogCQkJCTg2RDg3REE1MTJCQzRCMTQwMDhFNzNBMSAvKiBTdGFja0JvdW5k
cy5jcHAgKi8sCiAJCQkJODZEODdEQTYxMkJDNEIxNDAwOEU3M0ExIC8qIFN0YWNrQm91bmRzLmgg
Ki8sCkBAIC0xNzQwLDYgKzE3NDIsNyBAQAogCQkJCUUxRUU3OTNDMEQ2QzlCOTIwMEZFQTNCQSAv
KiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi8sCiAJCQkJQkM1RjdCQkQxMTgyM0I1OTAwNTJDMDJD
IC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi8sCiAJCQkJRTFCN0M4QkQwREEzQTMzNjAwNzRC
MERDIC8qIFRocmVhZFNwZWNpZmljLmggKi8sCisJCQkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVC
IC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLywKIAkJCQkwQjMzMEMyNjBGMzhDNjIz
MDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8sCiAJCQkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3
RTU4IC8qIFR5cGVUcmFpdHMuaCAqLywKIAkJCQlFMTk1Njc4RDA5RTdDRjEyMDBCODlEMTMgLyog
dW5pY29kZSAqLywKQEAgLTI1MjMsNiArMjUyNiw3IEBACiAJCQkJMThCQUI1NTQxMERBRTA2NjAw
MEQ5NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDcwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNUY3QkJGMTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRpbmdQcmltaXRpdmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RjdCQzAxMTgyM0I1OTAw
NTJDMDJDIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ3MTBFMTZGNUNEMDBCMzQ0NjAgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaAppbmRleCA3N2EyNTY3YTBjNWViNjA4NGVjMDVmYzJhNDI0MzljMTM5Y2EzMTVkLi4xMjgx
NWY5MzQ0NjRjMDk2MzBiNGVmZTEyNzdhYjNkMmI2OTgyYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApAQCAtMzUwLDYgKzM1MCw3IEBA
IGlubGluZSBFeGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2woc2l6ZV90IG4pCiAgICAgaWYg
KCFtX2ZyZWVQdHIpCiAgICAgICAgIENSQVNIKCk7IC8vIEZhaWxlZCB0byBhbGxvY2F0ZQogICAg
IG1fZW5kID0gbV9mcmVlUHRyICsgYWxsb2NTaXplOworICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVy
aWZpZXIoKTsKIH0KIAogaW5saW5lIHZvaWQqIEV4ZWN1dGFibGVQb29sOjpwb29sQWxsb2NhdGUo
c2l6ZV90IG4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKaW5kZXggZTliNmI1NjE0ZWQ5NjdlMTlkMGY3ZjE0ZDczMDc1MDRlYTQzYTJjZC4uOThiYjZi
MTM5ZDE2NmM0NTQ1NzExMWE0OTBlNDI3NzcyOGUyOWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICwgbV9jYWNoZShjYWNoZSA/IGNhY2hlIDogbmV3IFNvdXJj
ZVByb3ZpZGVyQ2FjaGUpCiAgICAgICAgICAgICAsIG1fY2FjaGVPd25lZCghY2FjaGUpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKTsKICAgICAgICAg
fQogICAgICAgICB2aXJ0dWFsIH5Tb3VyY2VQcm92aWRlcigpCiAgICAgICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDI1Y2IyZDViZTAyZGFjMDYwZjk0
ZTJiMTRmNWNkZDc2MjBjYmYwODQuLjYxNjNkMTA4YTI5YzQ0MmRiYTIxZTBiOThmNzU2MmQyZDVj
Yzc0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtODUs
NiArODUsNyBAQCBpbmxpbmUgUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZQogICAgICwgbV9yZXByZXNlbnRhdGlv
bihhZG9wdFB0cihuZXcgUmVnRXhwUmVwcmVzZW50YXRpb24pKQogewogICAgIG1fc3RhdGUgPSBj
b21waWxlKGdsb2JhbERhdGEpOworICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKTsKIH0K
IAogUmVnRXhwOjp+UmVnRXhwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGQwZDUzNjM4ZTljMDkyZTQwNmUxODRhMDZlM2Q3MGViMDI3MjM5N2MuLjcwYjgx
MGI1ZDQzMTBlODE2YTQ5NTc4ZTY4ZTZmMWY2MGQxNjFmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDIsNiArNDIsNyBAQCBTRVQoV1RGX0hFQURFUlMK
ICAgICBNYXRoRXh0cmFzLmgKICAgICBNZXNzYWdlUXVldWUuaAogICAgIE5vbkNvcHlpbmdTb3J0
LmgKKyAgICBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKICAgICBOb25jb3B5YWJsZS5oCiAg
ICAgTm90Rm91bmQuaAogICAgIE51bGxQdHIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SZWZDb3VudGVkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNv
dW50ZWQuaAppbmRleCAxMmI2NzBlMDdjMWU1ZmFjZDVkZjM4M2NlZDY3YWMwZTZkNDZjYmYwLi5i
YmQ5ZjZiNjBiZTAxZmNhMzMzNjhlYjZjMjEwMjA1NjA3YzIyZmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1JlZkNvdW50ZWQuaApAQCAtMjMsNyArMjMsMTAgQEAKIAogI2luY2x1ZGUgIkFz
c2VydGlvbnMuaCIKICNpbmNsdWRlICJGYXN0QWxsb2NCYXNlLmgiCisjaW5jbHVkZSAiVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllci5oIgogI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVk
ZSAiT3duUHRyLmgiCisjaW5jbHVkZSAiVW51c2VkUGFyYW0uaCIKIAogbmFtZXNwYWNlIFdURiB7
CiAKQEAgLTM0LDYgKzM3LDIwIEBAIGNsYXNzIFJlZkNvdW50ZWRCYXNlIHsKIHB1YmxpYzoKICAg
ICB2b2lkIHJlZigpCiAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gU3RhcnQgdGhy
ZWFkIHZlcmlmaWNhdGlvbiBhcyBzb29uIGFzIHRoZSByZWYgY291bnQgZ2V0cyB0byAyLiBUaGlz
CisgICAgICAgIC8vIGhldXJpc3RpYyByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IGl0ZW1zIGFyZSBv
ZnRlbiBjcmVhdGVkIG9uIG9uZSB0aHJlYWQKKyAgICAgICAgLy8gYW5kIHRoZW4gZ2l2ZW4gdG8g
YW5vdGhlciB0aHJlYWQgdG8gYmUgdXNlZC4KKyAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBy
ZXN0cmljdGlvbiB0aWdoZXIuIEVzcGVjaWFsbHkgYXMgd2UgbW92ZSB0byBtb3JlCisgICAgICAg
IC8vIGNvbW1vbiBtZXRob2RzIGZvciBzaGFyaW5nIGl0ZW1zIGFjcm9zcyB0aHJlYWRzIGxpa2Ug
Q3Jvc3NUaHJlYWRDb3BpZXIuaAorICAgICAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byBhZGQg
YSAiZGV0YWNoRnJvbVRocmVhZCIgbWV0aG9kIHRvIG1ha2UgdGhpcyBleHBsaWNpdC4KKyAgICAg
ICAgaWYgKG1fcmVmQ291bnQgPT0gMSkKKyAgICAgICAgICAgIG1fdmVyaWZpZXIuc2V0U2hhcmVk
KHRydWUpOworI2VuZGlmCisgICAgICAgIC8vIElmIHRoaXMgYXNzZXJ0IGZpcmVzLCBpdCBlaXRo
ZXIgaW5kaWNhdGVzIGEgdGhyZWFkIHNhZmV0eSBpc3N1ZSBvcgorICAgICAgICAvLyB0aGF0IHRo
ZSB2ZXJpZmljYXRpb24gbmVlZHMgdG8gY2hhbmdlLiBTZWUgVGhyZWFkUmVzdHJpY3Rpb25WZXJp
ZmllciBmb3IKKyAgICAgICAgLy8gdGhlIGRpZmZlcmVudCBtb2Rlcy4KKyAgICAgICAgQVNTRVJU
KG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhh
c0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgICAg
ICsrbV9yZWZDb3VudDsKQEAgLTQxLDE1ICs1OCwzNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c09uZVJlZigpIGNvbnN0CiAgICAgeworICAgICAgICBBU1NFUlQobV92ZXJpZmllci5pc1NhZmVU
b1VzZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBy
ZXR1cm4gbV9yZWZDb3VudCA9PSAxOwogICAgIH0KIAogICAgIGludCByZWZDb3VudCgpIGNvbnN0
CiAgICAgeworICAgICAgICBBU1NFUlQobV92ZXJpZmllci5pc1NhZmVUb1VzZSgpKTsKICAgICAg
ICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQogCisgICAgdm9pZCBzZXRNdXRleEZvclZlcmlm
aWVyKE11dGV4JiBtdXRleCkKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSgmbXV0ZXgpOwor
I2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV92ZXJpZmllci5zZXRNdXRleE1vZGUobXV0ZXgpOwor
I2VuZGlmCisgICAgfQorCisgICAgLy8gVHVybnMgb2ZmIHZlcmlmaWNhdGlvbi4gVXNlIG9mIHRo
aXMgbWV0aG9kIGlzIGRpc2NvdXJhZ2VkIChpbnN0ZWFkIGV4dGVuZAorICAgIC8vIFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIgdG8gdmVyaWZ5IHlvdXIgY2FzZSkuCisgICAgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIG1ldGhvZC4KKyAgICB2b2lkIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKQor
ICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fdmVyaWZpZXIudHVybk9mZlZlcmlmaWNh
dGlvbigpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCByZWxheEFkb3B0aW9uUmVxdWlyZW1l
bnQoKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC04NCw2ICsxMjEsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBmcmVlZCBvciBu
b3QuCiAgICAgYm9vbCBkZXJlZkJhc2UoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZp
ZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsK
ICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAKQEAgLTk2LDYgKzEzNCwx
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KIAogICAgICAgICAtLW1fcmVmQ291bnQ7CisjaWZu
ZGVmIE5ERUJVRworICAgICAgICAvLyBTdG9wIHRocmVhZCB2ZXJpZmljYXRpb24gd2hlbiB0aGUg
cmVmIGdvZXMgdG8gMSBiZWNhdXNlIGl0CisgICAgICAgIC8vIGlzIHNhZmUgdG8gYmUgcGFzc2Vk
IHRvIGFub3RoZXIgdGhyZWFkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgIGlmIChtX3JlZkNvdW50
ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZChmYWxzZSk7CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE3LDYgKzE2MSw3IEBAIHByaXZh
dGU6CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwogICAgIGJv
b2wgbV9hZG9wdGlvbklzUmVxdWlyZWQ7CisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBt
X3ZlcmlmaWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NpemVMaW1pdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGlt
aXRzLmNwcAppbmRleCA0ZTQ4MWJiOWMxMDM3YWU5YTA4YzgwMWExNWVkYjA1NGYyNWIxNmQ3Li42
NzFlZjQwMTQwNzQxZDI4YzgzZjQ4YzJkNjc4OTY5NzY5NDAyZWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAKQEAgLTM2LDIxICszNiwzMCBAQAogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiAjaWZuZGVm
IE5ERUJVRwotc3RydWN0IFN0cnVjdFdpdGhJbnRBbmRUd29Cb29scyB7IGludCBhOyBib29sIGI7
IGJvb2wgYzsgfTsKLXN0YXRpYyBjb25zdCBzaXplX3QgcmVmQ291bnRlZEV4dHJhRGVidWdTaXpl
ID0gc2l6ZW9mKFN0cnVjdFdpdGhJbnRBbmRUd29Cb29scykgLSBzaXplb2YoaW50KTsKK3N0cnVj
dCBTYW1lU2l6ZUFzUmVmQ291bnRlZCB7CisgICAgaW50IGE7CisgICAgYm9vbCBiOworICAgIGJv
b2wgYzsKKyAgICBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGQ7CisgICAgLy8gVGhlIGRlYnVn
IHZlcnNpb24gbWF5IGdldCBiaWdnZXIuCit9OwogI2Vsc2UKLXN0YXRpYyBjb25zdCBzaXplX3Qg
cmVmQ291bnRlZEV4dHJhRGVidWdTaXplID0gMDsKK3N0cnVjdCBTYW1lU2l6ZUFzUmVmQ291bnRl
ZCB7CisgICAgaW50IGE7CisgICAgLy8gRG9uJ3QgYWRkIGFueXRoaW5nIGhlcmUgYmVjYXVzZSB0
aGlzIHNob3VsZCBzdGF5IHNtYWxsLgorfTsKICNlbmRpZgogCiBDT01QSUxFX0FTU0VSVChzaXpl
b2YoT3duUHRyPGludD4pID09IHNpemVvZihpbnQqKSwgT3duUHRyX3Nob3VsZF9zdGF5X3NtYWxs
KTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihQYXNzUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9
PSBzaXplb2YoaW50KiksIFBhc3NSZWZQdHJfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8aW50PikgPT0gc2l6ZW9mKGludCkgKyByZWZDb3VudGVk
RXh0cmFEZWJ1Z1NpemUsIFJlZkNvdW50ZWRfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ8aW50PikgPT0gc2l6ZW9mKGlu
dCkgKyByZWZDb3VudGVkRXh0cmFEZWJ1Z1NpemUsIFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWRf
c2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8aW50
PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZWZDb3VudGVkKSwgUmVmQ291bnRlZF9zaG91bGRfc3Rh
eV9zbWFsbCk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRl
ZDxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlZkNvdW50ZWQpLCBSZWZDb3VudGVkQ3VzdG9t
QWxsb2NhdGVkX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZQ
dHI8UmVmQ291bnRlZDxpbnQ+ID4pID09IHNpemVvZihpbnQqKSwgUmVmUHRyX3Nob3VsZF9zdGF5
X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihWZWN0b3I8aW50PikgPT0gMyAqIHNpemVv
ZihpbnQqKSwgVmVjdG9yX3Nob3VsZF9zdGF5X3NtYWxsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNzYzOTc0ZDE5NjAwZjZiZDlmY2U3Y2QwMDNlNTU5NzM1OWU3ZmQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
LmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJfaAor
I2RlZmluZSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmdQcmltaXRpdmVzLmg+CisKKyNpZm5kZWYgTkRFQlVHCisKK25hbWVzcGFjZSBXVEYgewor
CisvLyBWZXJpZmllcyB0aGF0IGEgY2xhc3MgaXMgdXNlZCBpbiBhIHdheSB0aGF0IHJlc3BlY3Rz
IGl0cyBsYWNrIG9mIHRocmVhZC1zYWZldHkuCisvLyBUaGUgZGVmYXVsdCBtb2RlIGlzIHRvIHZl
cmlmeSB0aGF0IHRoZSBvYmplY3Qgd2lsbCBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgdGhyZWFk
LiBUaGUKKy8vIHRocmVhZCBnZXRzIGNhcHR1cmVkIHdoZW4gc2V0U2hhcmVkKHRydWUpIGlzIGNh
bGxlZC4KKy8vIFRoZSBtb2RlIG1heSBiZSBjaGFuZ2UgYnkgY2FsbGluZyB1c2VNdXRleE1vZGUg
KG9yIHR1cm5PZmZWZXJpZmljYXRpb24pLgorY2xhc3MgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ciB7CitwdWJsaWM6CisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcigpCisgICAgICAgIDog
bV9tb2RlKFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpCisgICAgICAgICwgbV9zaGFyZWQo
ZmFsc2UpCisgICAgICAgICwgbV9vd25pbmdUaHJlYWQoMCkKKyAgICAgICAgLCBtX2lzT3duZWRC
eU1haW5UaHJlYWQoZmFsc2UpCisgICAgICAgICwgbV9tdXRleCgwKQorICAgIHsKKyAgICB9CisK
KyAgICB2b2lkIHNldE11dGV4TW9kZShNdXRleCYgbXV0ZXgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUgfHwgKG1fbW9kZSA9PSBN
dXRleFZlcmlmaWNhdGlvbk1vZGUgJiYgJm11dGV4ID09IG1fbXV0ZXgpKTsKKyAgICAgICAgbV9t
b2RlID0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlOworICAgICAgICBtX211dGV4ID0gJm11dGV4Owor
ICAgIH0KKworICAgIHZvaWQgdHVybk9mZlZlcmlmaWNhdGlvbigpCisgICAgeworICAgICAgICBB
U1NFUlQobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpOworICAgICAgICBt
X21vZGUgPSBOb1ZlcmlmaWNhdGlvbk1vZGU7CisgICAgfQorCisgICAgLy8gSW5kaWNhdGVzIHRo
YXQgdGhlIG9iamVjdCBtYXkgKG9yIG1heSBub3QpIGJlIG93bmVkIGJ5IG1vcmUgdGhhbiBvbmUg
cGxhY2UuCisgICAgdm9pZCBzZXRTaGFyZWQoYm9vbCBzaGFyZWQpCisgICAgeworICAgICAgICBi
b29sIHByZXZpb3VzbHlTaGFyZWQgPSBtX3NoYXJlZDsKKyAgICAgICAgbV9zaGFyZWQgPSBzaGFy
ZWQ7CisKKyAgICAgICAgaWYgKCFtX3NoYXJlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBzd2l0Y2ggKG1fbW9kZSkgeworICAgICAgICBjYXNlIFNpbmdsZVRocmVhZFZlcmlmaWNh
dGlvbk1vZGU6CisgICAgICAgICAgICBBU1NFUlQoc2hhcmVkICE9IHByZXZpb3VzbHlTaGFyZWQp
OworICAgICAgICAgICAgLy8gQ2FwdHVyZSB0aGUgY3VycmVudCB0aHJlYWQgdG8gdmVyaWZ5IHRo
YXQgc3Vic2VxdWVudCByZWYvZGVyZWYgaGFwcGVuIG9uIHRoaXMgdGhyZWFkLgorICAgICAgICAg
ICAgbV9pc093bmVkQnlNYWluVGhyZWFkID0gaXNNYWluVGhyZWFkKCk7CisgICAgICAgICAgICBp
ZiAoIW1faXNPd25lZEJ5TWFpblRocmVhZCkKKyAgICAgICAgICAgICAgICBtX293bmluZ1RocmVh
ZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNl
IE11dGV4VmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1vZGU6
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorCisgICAgLy8gSXMgaXQgb2sgdG8gdXNlIHRoZSBvYmplY3QgYXQgdGhp
cyBtb21lbnQgb24gdGhlIGN1cnJlbnQgdGhyZWFkPworICAgIGJvb2wgaXNTYWZlVG9Vc2UoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3NoYXJlZCkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgU2luZ2xlVGhy
ZWFkVmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAgIC8vIGlzTWFpblRocmVhZCgpIGlzIHdh
eSBmYXN0ZXIgdGhhbiBjdXJyZW50VGhyZWFkKCkgb24gbWFueSBwbGF0Zm9ybXMsIHNvIHVzZSBp
dCBmaXJzdC4KKyAgICAgICAgICAgIHJldHVybiAobV9pc093bmVkQnlNYWluVGhyZWFkICYmIGlz
TWFpblRocmVhZCgpKSB8fCAobV9vd25pbmdUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKwor
ICAgICAgICBjYXNlIE11dGV4VmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAgIGlmICghbV9t
dXRleC0+dHJ5TG9jaygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgbV9tdXRleC0+dW5sb2NrKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gVmVyaWZpY2F0aW9uTW9kZSB7CisgICAg
ICAgIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE11dGV4VmVyaWZpY2F0
aW9uTW9kZSwKKyAgICAgICAgTm9WZXJpZmljYXRpb25Nb2RlCisgICAgfTsKKworICAgIFZlcmlm
aWNhdGlvbk1vZGUgbV9tb2RlOworICAgIGJvb2wgbV9zaGFyZWQ7CisKKyAgICAvLyBVc2VkIGJ5
IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3du
aW5nVGhyZWFkOworICAgIGJvb2wgbV9pc093bmVkQnlNYWluVGhyZWFkOworCisgICAgLy8gVXNl
ZCBieSBNdXRleFZlcmlmaWNhdGlvbk1vZGUuCisgICAgTXV0ZXgqIG1fbXV0ZXg7Cit9OworCit9
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQ1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcu
aAppbmRleCAzNDNhN2E1MjUyMDc0MWUyYWRjZGJkODEwZTNlOTk5NWEzODBkNDY0Li5jZDU0NzQ1
YTNjNTYxN2JlNzBhNWEwMDJiNzYzYmNjMjQxYjM3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgQ1N0cmluZzsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+
IGNyZWF0ZShzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1N0cmluZ0J1ZmZl
cihsZW5ndGgpKTsgfQotICAgIENTdHJpbmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3Rv
cihsZW5ndGgpIHsgfQorICAgIENTdHJpbmdCdWZmZXIoc2l6ZV90IGxlbmd0aCkgOiBtX3ZlY3Rv
cihsZW5ndGgpIHsgZGVwcmVjYXRlZFR1cm5PZmZWZXJpZmllcigpOyB9CiAgICAgY2hhciogbXV0
YWJsZURhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7IH0KIAogICAgIFZlY3RvcjxjaGFy
PiBtX3ZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IDUyN2RlNmE2MmJhOWY0NzRj
YTc1ZDdjYjdjMTc2MTM4ZDE0MmQ2ZmUuLjNkNzlhMGM1ZWE3YzFmOWRiMTI4MDc0NjVkZDcwNDc0
OWFlOWUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEx
LTA0LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZDb3Vu
dGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkKKwor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
Lmg6IEFkZGVkLgorCiAyMDExLTA0LTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9u
VmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjdmOTc5OTIyMjFhMzMwNjYxODk0OGM5YWU0MWUwNjgz
NzMwMjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAsMCArMSBAQAor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA1MTM4NDAyZTY1NTZlMzJjODFmYTUwYTcyNmRiYjlmNTZjZDg0ODJjLi5mYTM5
MDdhYzFiYjc0M2FhNzRlYzQ5MWMzMzc0NmNmMTk4MWJiMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTEtMDQtMDcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhc3Nl
cnRzIHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRoZSBy
aWdodCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTYzOQorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFsaXR5IGV4cG9zZWQgc28gbm8g
bmV3IHRlc3RzLiAoVGhlIGNoYW5nZSBpcyBiYXNpY2FsbHkgYWRkaW5nCisgICAgICAgIG1vcmUg
dGVzdGluZy4pCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0SWNvbik6IFNl
dCB0aGUgbXV0ZXggd2hpY2ggZG9lcyB0aGUgZ3VhcmRpbmcgb2YgdGhlIHZhcmlhYmxlLgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZUljb25SZWNvcmQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJM
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJh
c2UpOiBEaXR0by4KKwogMjAxMS0wNC0yNyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NTExMi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NDJkMWNiYWYzMGE0YmM2MmZl
OWE0ZTg2ZTdkZWQzZDE0MTZlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gK
KyNkZWZpbmUgV2ViQ29yZV9GV0RfVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcl9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oPgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCAzOWRiMDY3
ODI4OTZhYmQ4ZGRlYzRjZTA4OTc3NDU3ZGQ1MGQ5MTgyLi42NGRlMzM5ZTkwZjcxN2E0MjE2Yzcx
MTgxZDgwOTFmOTZhMGY5ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKQEAgLTM4Nyw2ICszODcsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpkZWZh
dWx0SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIAogICAgIGlmICghbV9kZWZhdWx0SWNv
blJlY29yZCkgewogICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0gSWNvblJlY29yZDo6Y3Jl
YXRlKCJ1cmxJY29uIik7CisgICAgICAgIG1fZGVmYXVsdEljb25SZWNvcmQtPnNldE11dGV4Rm9y
VmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGxvYWREZWZhdWx0SWNvblJlY29y
ZChtX2RlZmF1bHRJY29uUmVjb3JkLmdldCgpKTsKICAgICB9CiAgICAgCkBAIC01MTcsNiArNTE4
LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTChQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGRhdGFPcmlnaW5hbCA/IGRhdGFPcmlnaW5hbC0+
Y29weSgpIDogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KDApOworICAgIGlmIChkYXRhKQorICAg
ICAgICBkYXRhLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIFN0
cmluZyBpY29uVVJMID0gaWNvblVSTE9yaWdpbmFsLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiAgICAg
CiAgICAgVmVjdG9yPFN0cmluZz4gcGFnZVVSTHM7CkBAIC04NzgsNiArODgxLDcgQEAgUGFzc1Jl
ZlB0cjxJY29uUmVjb3JkPiBJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZChjb25z
dCBTdHJpbmcmIGljb25VUkwKICAgICAgICAgcmV0dXJuIGljb247CiAKICAgICBSZWZQdHI8SWNv
blJlY29yZD4gbmV3SWNvbiA9IEljb25SZWNvcmQ6OmNyZWF0ZShpY29uVVJMKTsKKyAgICBuZXdJ
Y29uLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIG1faWNvblVS
TFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKIAogICAgIHJldHVybiBu
ZXdJY29uLnJlbGVhc2UoKTsKQEAgLTE0NzksNiArMTQ4Myw3IEBAIGJvb2wgSWNvbkRhdGFiYXNl
OjpyZWFkRnJvbURhdGFiYXNlKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaWNvbnMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgZGlkQW55V29yayA9IHRydWU7CiAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FM
RGF0YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CisgICAgICAgIGltYWdlRGF0YS0+c2V0TXV0
ZXhGb3JWZXJpZmllcihtX3VybEFuZEljb25Mb2NrKTsKIAogICAgICAgICAvLyBWZXJpZnkgdGhp
cyBpY29uIHN0aWxsIHdhbnRzIHRvIGJlIHJlYWQgZnJvbSBkaXNrCiAgICAgICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101538</attachid>
            <date>2011-07-20 18:01:21 -0700</date>
            <delta_ts>2011-08-01 17:52:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110720180120.patch</filename>
            <type>text/plain</type>
            <size>25314</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUyMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGIy
M2U1YmU2YTZmY2MzOWVkYTZhY2ZiYTcwMjgzNzJlNjYxZjBmMDMuLmI5MjA1ODEwNzY2OGZiM2Vm
OTljZTQ0OTI2N2ZkOWViZmZhZjNiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4IEBACisyMDExLTA3LTIwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVy
ZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgZmlsZXMgdG8gdGhlIGJ1
aWxkLgorICAgICAgICAqIHd0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg6IEFkZGVkLgor
ICAgICAgICBFdmVyeXRoaW5nIGlzIGRvbmUgaW4gdGhlIGhlYWRlciB0byBhdm9pZCB0aGUgaXNz
dWUgd2l0aCBleHBvcnRzCisgICAgICAgIHRoYXQgYXJlIG9ubHkgdXNlZnVsIGluIGRlYnVnIGJ1
dCBzdGlsbCBuZWVkaW5nIHRvIGV4cG9ydCB0aGVtLgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVk
Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpyZWYpOiBBZGRlZCBjaGVja3MgdXNp
bmcgdGhlIG5vbiB0aHJlYWQgc2FmZSB2ZXJpZmllci4KKyAgICAgICAgYW5kIGZpbGVkIGJ1ZyA1
ODE3MSBhYm91dCBtYWtpbmcgaXQgc3RyaWN0ZXIuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRC
YXNlOjpoYXNPbmVSZWYpOiBEaXR0by4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnJl
ZkNvdW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpzZXRNdXRleEZv
clZlcmlmaWVyKTogRXhwb3NlIGEgd2F5IHRvIGNoYW5nZSB0aGUgY2hlY2tzIHRvIGJlIGJhc2Vk
CisgICAgICAgIG9uIGEgbXV0ZXguIFRoaXMgaXMgaW4gdGhlIGhlYWRlciB0byBhdm9pZCBhZGRp
bmcgbW9yZSBleHBvcnRzIGZyb20gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRCYXNlOjpkZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKTogVGVtcG9yYXJ5IHdheSB0byB0
dXJuIG9mZiB2ZXJpZmljYXRpb24uCisgICAgICAgIEZpbGVkIGJ1ZyA1ODE3NCB0byByZW1vdmUg
dGhpcyBtZXRob2QuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpkZXJlZkJhc2UpOgor
ICAgICAgICAqIHd0Zi9TaXplTGltaXRzLmNwcDogQWRqdXN0ZWQgdGhlIGRlYnVnIHNpemUgY2hl
Y2sgZm9yIFJlZkNvdW50ZWQuCisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5oOgorICAgICAg
ICAoV1RGOjpDU3RyaW5nQnVmZmVyOjpDU3RyaW5nQnVmZmVyKTogVHVybmVkIG9mZiBjaGVja3Mg
Zm9yIHRoaXMgd2hpbGUgYSBmaXggaXMgYmVpbmcKKyAgICAgICAgZG9uZSBpbiBDaHJvbWl1bSdz
IHRlc3Rfc2hlbGwgKGJ1ZyA1ODA5MykuCisKIDIwMTEtMDctMjAgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NDkwOQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA5NjY5Y2Y1N2RkZjE4ZTBiZmM3NzNkZTNkMDRhMjQyZWIyYWM0N2I0
Li5mMDdiZGUwYzYzZTA5NmM2ZjRjZTMzYmM3ZjAxNzY2ZWExNGRkODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTc4LDYgKzU3OCw3IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9X
VEZTdHJpbmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVy
RGF0YVB0aHJlYWRzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKaW5kZXggYThlYzg4OTA5ZTdmMjJlM2Nh
ZmY3Yzg4NmU5MmZlYTBjMzdkMzk2Yy4uZjYzMzkyYjBjMDYyNTY5MTIxMDkzMWQxNDA3M2EyNTFj
YzgzYWUzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAg
LTIwNiw2ICsyMDYsNyBAQAogICAgICAgICAgICAgJ3d0Zi9TdHJpbmdIYXNoZXIuaCcsCiAgICAg
ICAgICAgICAnd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgnLAogICAgICAgICAgICAgJ3d0Zi9U
aHJlYWRTcGVjaWZpYy5oJywKKyAgICAgICAgICAgICd3dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkaW5nLmgnLAogICAgICAgICAgICAgJ3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgnLAogICAgICAgICAgICAgJ3d0Zi9UeXBlVHJhaXRzLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovV1RGL1dURi52Y3Byb2oKaW5kZXggZTU3MmIxNjQ1OTQ4YWYyYTQwNjliYjUxNGQ4NjVm
Zjc5ODgzNjg4ZS4uOTc4M2M5ZjBjMDg5ODY0ODY1OTYzMDAwNThjZjVlODE0NmQ4NDkzNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYv
V1RGLnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL1dURi9XVEYudmNwcm9qCkBAIC0xMDA5LDYgKzEwMDksMTAgQEAKIAkJCT4KIAkJPC9GaWxl
PgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHd0ZlxUaHJlYWRTYWZlUmVmQ291bnRlZC5oIgogCQkJPgogCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1ZjdkYWQ3OTU2YjJmYTZjYTUzMjQ0MGJkZGM0NjQ2
OTY1YTRkMWYuLjQ1YjNjOTMyZDg4MTAzYjg3NDc3YWNhZjlhYTYxYTg3ZDRlYTkyOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NCw2ICs0NCw3IEBACiAJCTA4RTI3OUU5MEVG
ODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFu
ZG9tTnVtYmVyU2VlZC5oICovOyB9OwogCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJERTMgLyogVHlw
ZVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi87IH07CiAJCTBC
NEQ3RTYzMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjREN0U2MjBGMzE5QUM4MDBBRDdFNTggLyog
VHlwZVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCREZGQUUwMEZD
NjE5MjkwMEQ2OUVGNCAvKiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQ0MEZDNjE3MTAwMEQ2OUVGNCAv
KiBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwQkRGRkFFMTBGQzYxOTMxMDBENjlFRjQgLyogT3duRmFzdE1h
bGxvY1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5j
cHAgKi87IH07CkBAIC03MjQsNiArNzI1LDcgQEAKIAkJMDhFMjc5RTgwRUY4M0IxMDAwN0RCNTIz
IC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjMzMEMy
NjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCREZGQUQxMEZD
NjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE93bkZhc3RNYWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJERkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0
IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU0LDggKzE2
NTYsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTFENzY0NTExMzU0NDQ4QjAwQzVDN0MwIC8q
IEFsaWdubWVudC5oICovLAogCQkJCUE3QzQwQzA3MTMwQjA1N0QwMEQwMDJBMSAvKiBCbG9ja1N0
YWNrLmggKi8sCi0JCQkJQTdDNDBDMDgxMzBCMDU3RDAwRDAwMkExIC8qIFNlbnRpbmVsTGlua2Vk
TGlzdC5oICovLAotCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5rZWRM
aXN0LmggKi8sCiAJCQkJNTEzNUZBRDUxMkQyNjg1NjAwM0MwODNCIC8qIERlY29kZXIuaCAqLywK
IAkJCQk1MTM1RkFENjEyRDI2ODU2MDAzQzA4M0IgLyogRW5jb2Rlci5oICovLAogCQkJCTkzQUE0
Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxpbmUuaCAqLywKQEAgLTE3NTQsNiArMTc1
NCw4IEBACiAJCQkJOTY5QTA3MjkwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5o
ICovLAogCQkJCTc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAqLywKIAkJCQk3
NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oICovLAorCQkJCUE3QzQwQzA4MTMwQjA1
N0QwMEQwMDJBMSAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAqLywKKwkJCQlBN0M0MEMwOTEzMEIw
NTdEMDBEMDAyQTEgLyogU2luZ2x5TGlua2VkTGlzdC5oICovLAogCQkJCTBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLywKIAkJCQk4NkQ4N0RBNTEyQkM0QjE0MDA4
RTczQTEgLyogU3RhY2tCb3VuZHMuY3BwICovLAogCQkJCTg2RDg3REE2MTJCQzRCMTQwMDhFNzNB
MSAvKiBTdGFja0JvdW5kcy5oICovLApAQCAtMTc3NSw2ICsxNzc3LDcgQEAKIAkJCQlFMUVFNzkz
QzBENkM5QjkyMDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwICovLAogCQkJCUJDNUY3
QkJEMTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oICovLAogCQkJCUUx
QjdDOEJEMERBM0EzMzYwMDc0QjBEQyAvKiBUaHJlYWRTcGVjaWZpYy5oICovLAorCQkJCTBCQUM5
NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8sCiAJ
CQkJMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwICovLAogCQkJCTBC
NEQ3RTYyMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggKi8sCiAJCQkJRTE5NTY3OEQw
OUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8sCkBAIC0yNTI2LDYgKzI1MjksNyBAQAogCQkJ
CTE4QkFCNTU0MTBEQUUwNjYwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MDBFMTZGNUNEMDBCMzQ0NjAgLyogVGhyZWFk
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVGN0JCRjExODIzQjU5MDA1MkMwMkMgLyogVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEJBQzk0QTAxMzM4NzI4NDAw
Q0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNUY3QkMwMTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM0NzEwRTE2RjVDRDAwQjM0NDYwIC8qIFRocmVhZFNwZWNpZmlj
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtH
ZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggZjkzY2U4YWQ4OWRmMWQwNDMyMzg2Mjc0ODkz
MDlhYmIwOWQwZGQwZS4uMjc4NWZlNGU5MmJmYjhmMjNkZGRjNjk3MzFiYzQyZjg1NmQzYjQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgK
QEAgLTM1Miw2ICszNTIsNyBAQCBpbmxpbmUgRXhlY3V0YWJsZVBvb2w6OkV4ZWN1dGFibGVQb29s
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IG4pCiAgICAgaWYgKCFtX2ZyZWVQdHIp
CiAgICAgICAgIENSQVNIKCk7IC8vIEZhaWxlZCB0byBhbGxvY2F0ZQogICAgIG1fZW5kID0gbV9m
cmVlUHRyICsgYWxsb2NTaXplOworICAgIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKTsKIH0K
IAogaW5saW5lIHZvaWQqIEV4ZWN1dGFibGVQb29sOjpwb29sQWxsb2NhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBzaXplX3QgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlUHJvdmlkZXIuaAppbmRleCBlOWI2YjU2MTRlZDk2N2UxOWQwZjdmMTRkNzMwNzUwNGVh
NDNhMmNkLi45OGJiNmIxMzlkMTY2YzQ1NDU3MTExYTQ5MGU0Mjc3NzI4ZTI5ZGFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCkBAIC00Niw2ICs0
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2NhY2hlKGNhY2hlID8gY2Fj
aGUgOiBuZXcgU291cmNlUHJvdmlkZXJDYWNoZSkKICAgICAgICAgICAgICwgbV9jYWNoZU93bmVk
KCFjYWNoZSkKICAgICAgICAgeworICAgICAgICAgICAgZGVwcmVjYXRlZFR1cm5PZmZWZXJpZmll
cigpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgflNvdXJjZVByb3ZpZGVyKCkKICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggN2RmODE1
NGY4N2QwYzRiNTFjMTZmMGVjZjQ5OWNkOGY3YjA0YmRhNi4uMTMwZWZiYjZhMDUxNzMxZmE5MzQz
ZmY4N2JkNGU4YjI5N2M5NGJjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlz
dHMudHh0CkBAIC00Miw2ICs0Miw3IEBAIFNFVChXVEZfSEVBREVSUwogICAgIE1hdGhFeHRyYXMu
aAogICAgIE1lc3NhZ2VRdWV1ZS5oCiAgICAgTm9uQ29weWluZ1NvcnQuaAorICAgIFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIuaAogICAgIE5vbmNvcHlhYmxlLmgKICAgICBOb3RGb3VuZC5oCiAg
ICAgTnVsbFB0ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNv
dW50ZWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oCmluZGV4IDEy
YjY3MGUwN2MxZTVmYWNkNWRmMzgzY2VkNjdhYzBlNmQ0NmNiZjAuLmFjMTQyOWE4MTUxOGFlZmNm
MGRmNjgxZmQ0MmIwYjhlM2JiNDQxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUmVmQ291bnRlZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291
bnRlZC5oCkBAIC0yMyw3ICsyMywxMCBAQAogCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2lu
Y2x1ZGUgIkZhc3RBbGxvY0Jhc2UuaCIKKyNpbmNsdWRlICJUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmgiCiAjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJPd25QdHIuaCIKKyNp
bmNsdWRlICJVbnVzZWRQYXJhbS5oIgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMzQsNiArMzcs
MjAgQEAgY2xhc3MgUmVmQ291bnRlZEJhc2UgewogcHVibGljOgogICAgIHZvaWQgcmVmKCkKICAg
ICB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAvLyBTdGFydCB0aHJlYWQgdmVyaWZpY2F0aW9u
IGFzIHNvb24gYXMgdGhlIHJlZiBjb3VudCBnZXRzIHRvIDIuIFRoaXMKKyAgICAgICAgLy8gaGV1
cmlzdGljIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgaXRlbXMgYXJlIG9mdGVuIGNyZWF0ZWQgb24g
b25lIHRocmVhZAorICAgICAgICAvLyBhbmQgdGhlbiBnaXZlbiB0byBhbm90aGVyIHRocmVhZCB0
byBiZSB1c2VkLgorICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHJlc3RyaWN0aW9uIHRpZ2hl
ci4gRXNwZWNpYWxseSBhcyB3ZSBtb3ZlIHRvIG1vcmUKKyAgICAgICAgLy8gY29tbW9uIG1ldGhv
ZHMgZm9yIHNoYXJpbmcgaXRlbXMgYWNyb3NzIHRocmVhZHMgbGlrZSBDcm9zc1RocmVhZENvcGll
ci5oCisgICAgICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBhICJkZXRhY2hGcm9tVGhy
ZWFkIiBtZXRob2QgdG8gbWFrZSB0aGlzIGV4cGxpY2l0LgorICAgICAgICBpZiAobV9yZWZDb3Vu
dCA9PSAxKQorICAgICAgICAgICAgbV92ZXJpZmllci5zZXRTaGFyZWQodHJ1ZSk7CisjZW5kaWYK
KyAgICAgICAgLy8gSWYgdGhpcyBhc3NlcnQgZmlyZXMsIGl0IGVpdGhlciBpbmRpY2F0ZXMgYSB0
aHJlYWQgc2FmZXR5IGlzc3VlIG9yCisgICAgICAgIC8vIHRoYXQgdGhlIHZlcmlmaWNhdGlvbiBu
ZWVkcyB0byBjaGFuZ2UuIFNlZSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGZvcgorICAgICAg
ICAvLyB0aGUgZGlmZmVyZW50IG1vZGVzLgorICAgICAgICBBU1NFUlQobV92ZXJpZmllci5pc1Nh
ZmVUb1VzZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAg
ICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKICAgICAgICAgKyttX3JlZkNvdW50OwpA
QCAtNDEsMTUgKzU4LDI5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QK
ICAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAgICAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50
ID09IDE7CiAgICAgfQogCiAgICAgaW50IHJlZkNvdW50KCkgY29uc3QKICAgICB7CisgICAgICAg
IEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAgICAgICByZXR1cm4gbV9yZWZD
b3VudDsKICAgICB9CiAKKyAgICB2b2lkIHNldE11dGV4Rm9yVmVyaWZpZXIoTXV0ZXgmKTsKKwor
ICAgIC8vIFR1cm5zIG9mZiB2ZXJpZmljYXRpb24uIFVzZSBvZiB0aGlzIG1ldGhvZCBpcyBkaXNj
b3VyYWdlZCAoaW5zdGVhZCBleHRlbmQKKyAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
IHRvIHZlcmlmeSB5b3VyIGNhc2UpLgorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBtZXRob2Qu
CisgICAgdm9pZCBkZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKCkKKyAgICB7CisjaWZuZGVmIE5E
RUJVRworICAgICAgICBtX3ZlcmlmaWVyLnR1cm5PZmZWZXJpZmljYXRpb24oKTsKKyNlbmRpZgor
ICAgIH0KKwogICAgIHZvaWQgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCkKICAgICB7CiAjaWZu
ZGVmIE5ERUJVRwpAQCAtODQsNiArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMg
d2hldGhlciB0aGUgcG9pbnRlciBzaG91bGQgYmUgZnJlZWQgb3Igbm90LgogICAgIGJvb2wgZGVy
ZWZCYXNlKCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkp
OwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCgh
bV9hZG9wdGlvbklzUmVxdWlyZWQpOwogCkBAIC05Niw2ICsxMjgsMTIgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB9CiAKICAgICAgICAgLS1tX3JlZkNvdW50OworI2lmbmRlZiBOREVCVUcKKyAgICAg
ICAgLy8gU3RvcCB0aHJlYWQgdmVyaWZpY2F0aW9uIHdoZW4gdGhlIHJlZiBnb2VzIHRvIDEgYmVj
YXVzZSBpdAorICAgICAgICAvLyBpcyBzYWZlIHRvIGJlIHBhc3NlZCB0byBhbm90aGVyIHRocmVh
ZCBhdCB0aGlzIHBvaW50LgorICAgICAgICBpZiAobV9yZWZDb3VudCA9PSAxKQorICAgICAgICAg
ICAgbV92ZXJpZmllci5zZXRTaGFyZWQoZmFsc2UpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTExNyw2ICsxNTUsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVC
VUcKICAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1bjsKICAgICBib29sIG1fYWRvcHRpb25Jc1Jl
cXVpcmVkOworICAgIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgbV92ZXJpZmllcjsKICNlbmRp
ZgogfTsKIApAQCAtMTY0LDYgKzIwMywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogfTsKIAorI2lm
ZGVmIE5ERUJVRworaW5saW5lIHZvaWQgUmVmQ291bnRlZEJhc2U6OnNldE11dGV4Rm9yVmVyaWZp
ZXIoTXV0ZXgmKSB7IH0KKyNlbHNlCitpbmxpbmUgdm9pZCBSZWZDb3VudGVkQmFzZTo6c2V0TXV0
ZXhGb3JWZXJpZmllcihNdXRleCYgbXV0ZXgpCit7CisgICAgbV92ZXJpZmllci5zZXRNdXRleE1v
ZGUobXV0ZXgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OlJlZkNvdW50ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NpemVM
aW1pdHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcAppbmRl
eCA0ZTQ4MWJiOWMxMDM3YWU5YTA4YzgwMWExNWVkYjA1NGYyNWIxNmQ3Li42NzFlZjQwMTQwNzQx
ZDI4YzgzZjQ4YzJkNjc4OTY5NzY5NDAyZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1NpemVMaW1pdHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
U2l6ZUxpbWl0cy5jcHAKQEAgLTM2LDIxICszNiwzMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiAjaWZuZGVmIE5ERUJVRwotc3Ry
dWN0IFN0cnVjdFdpdGhJbnRBbmRUd29Cb29scyB7IGludCBhOyBib29sIGI7IGJvb2wgYzsgfTsK
LXN0YXRpYyBjb25zdCBzaXplX3QgcmVmQ291bnRlZEV4dHJhRGVidWdTaXplID0gc2l6ZW9mKFN0
cnVjdFdpdGhJbnRBbmRUd29Cb29scykgLSBzaXplb2YoaW50KTsKK3N0cnVjdCBTYW1lU2l6ZUFz
UmVmQ291bnRlZCB7CisgICAgaW50IGE7CisgICAgYm9vbCBiOworICAgIGJvb2wgYzsKKyAgICBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGQ7CisgICAgLy8gVGhlIGRlYnVnIHZlcnNpb24gbWF5
IGdldCBiaWdnZXIuCit9OwogI2Vsc2UKLXN0YXRpYyBjb25zdCBzaXplX3QgcmVmQ291bnRlZEV4
dHJhRGVidWdTaXplID0gMDsKK3N0cnVjdCBTYW1lU2l6ZUFzUmVmQ291bnRlZCB7CisgICAgaW50
IGE7CisgICAgLy8gRG9uJ3QgYWRkIGFueXRoaW5nIGhlcmUgYmVjYXVzZSB0aGlzIHNob3VsZCBz
dGF5IHNtYWxsLgorfTsKICNlbmRpZgogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoT3duUHRyPGlu
dD4pID09IHNpemVvZihpbnQqKSwgT3duUHRyX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVf
QVNTRVJUKHNpemVvZihQYXNzUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9PSBzaXplb2YoaW50
KiksIFBhc3NSZWZQdHJfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KFJlZkNvdW50ZWQ8aW50PikgPT0gc2l6ZW9mKGludCkgKyByZWZDb3VudGVkRXh0cmFEZWJ1Z1Np
emUsIFJlZkNvdW50ZWRfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ8aW50PikgPT0gc2l6ZW9mKGludCkgKyByZWZDb3Vu
dGVkRXh0cmFEZWJ1Z1NpemUsIFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWRfc2hvdWxkX3N0YXlf
c21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlZkNvdW50ZWQ8aW50PikgPT0gc2l6ZW9m
KFNhbWVTaXplQXNSZWZDb3VudGVkKSwgUmVmQ291bnRlZF9zaG91bGRfc3RheV9zbWFsbCk7CitD
T01QSUxFX0FTU0VSVChzaXplb2YoUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZDxpbnQ+KSA9PSBz
aXplb2YoU2FtZVNpemVBc1JlZkNvdW50ZWQpLCBSZWZDb3VudGVkQ3VzdG9tQWxsb2NhdGVkX3No
b3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZQdHI8UmVmQ291bnRl
ZDxpbnQ+ID4pID09IHNpemVvZihpbnQqKSwgUmVmUHRyX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENP
TVBJTEVfQVNTRVJUKHNpemVvZihWZWN0b3I8aW50PikgPT0gMyAqIHNpemVvZihpbnQqKSwgVmVj
dG9yX3Nob3VsZF9zdGF5X3NtYWxsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODRiMTY5YjEz
ZTA3ZTkxMzk4NDg3NDc3Yzk4ZmVlZjM2ZWZkODI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAsMCAr
MSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJfaAorI2RlZmluZSBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg+CisKKyNpZm5kZWYgTkRFQlVHCisKK25hbWVzcGFjZSBXVEYgeworCisvLyBWZXJpZmll
cyB0aGF0IGEgY2xhc3MgaXMgdXNlZCBpbiBhIHdheSB0aGF0IHJlc3BlY3RzIGl0cyBsYWNrIG9m
IHRocmVhZC1zYWZldHkuCisvLyBUaGUgZGVmYXVsdCBtb2RlIGlzIHRvIHZlcmlmeSB0aGF0IHRo
ZSBvYmplY3Qgd2lsbCBvbmx5IGJlIHVzZWQgb24gYSBzaW5nbGUgdGhyZWFkLiBUaGUKKy8vIHRo
cmVhZCBnZXRzIGNhcHR1cmVkIHdoZW4gc2V0U2hhcmVkKHRydWUpIGlzIGNhbGxlZC4KKy8vIFRo
ZSBtb2RlIG1heSBiZSBjaGFuZ2UgYnkgY2FsbGluZyB1c2VNdXRleE1vZGUgKG9yIHR1cm5PZmZW
ZXJpZmljYXRpb24pLgorY2xhc3MgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciB7CitwdWJsaWM6
CisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcigpCisgICAgICAgIDogbV9tb2RlKFNpbmds
ZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpCisgICAgICAgICwgbV9zaGFyZWQoZmFsc2UpCisgICAg
ICAgICwgbV9vd25pbmdUaHJlYWQoMCkKKyAgICAgICAgLCBtX211dGV4KDApCisgICAgeworICAg
IH0KKworICAgIHZvaWQgc2V0TXV0ZXhNb2RlKE11dGV4JiBtdXRleCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX21vZGUgPT0gU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZSB8fCAobV9tb2Rl
ID09IE11dGV4VmVyaWZpY2F0aW9uTW9kZSAmJiAmbXV0ZXggPT0gbV9tdXRleCkpOworICAgICAg
ICBtX21vZGUgPSBNdXRleFZlcmlmaWNhdGlvbk1vZGU7CisgICAgICAgIG1fbXV0ZXggPSAmbXV0
ZXg7CisgICAgfQorCisgICAgdm9pZCB0dXJuT2ZmVmVyaWZpY2F0aW9uKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX21vZGUgPT0gU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZSk7CisgICAg
ICAgIG1fbW9kZSA9IE5vVmVyaWZpY2F0aW9uTW9kZTsKKyAgICB9CisKKyAgICAvLyBJbmRpY2F0
ZXMgdGhhdCB0aGUgb2JqZWN0IG1heSAob3IgbWF5IG5vdCkgYmUgb3duZWQgYnkgbW9yZSB0aGFu
IG9uZSBwbGFjZS4KKyAgICB2b2lkIHNldFNoYXJlZChib29sIHNoYXJlZCkKKyAgICB7CisgICAg
ICAgIGJvb2wgcHJldmlvdXNseVNoYXJlZCA9IG1fc2hhcmVkOworICAgICAgICBtX3NoYXJlZCA9
IHNoYXJlZDsKKworICAgICAgICBpZiAoIW1fc2hhcmVkKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgU2luZ2xlVGhyZWFkVmVy
aWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAgIEFTU0VSVChzaGFyZWQgIT0gcHJldmlvdXNseVNo
YXJlZCk7CisgICAgICAgICAgICAvLyBDYXB0dXJlIHRoZSBjdXJyZW50IHRocmVhZCB0byB2ZXJp
ZnkgdGhhdCBzdWJzZXF1ZW50IHJlZi9kZXJlZiBoYXBwZW4gb24gdGhpcyB0aHJlYWQuCisgICAg
ICAgICAgICBtX293bmluZ1RocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBjYXNlIE11dGV4VmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgY2Fz
ZSBOb1ZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgLy8gSXMgaXQgT0sgdG8g
dXNlIHRoZSBvYmplY3QgYXQgdGhpcyBtb21lbnQgb24gdGhlIGN1cnJlbnQgdGhyZWFkPworICAg
IGJvb2wgaXNTYWZlVG9Vc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3NoYXJlZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7Cisg
ICAgICAgIGNhc2UgU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAgIHJl
dHVybiBtX293bmluZ1RocmVhZCA9PSBjdXJyZW50VGhyZWFkKCk7CisKKyAgICAgICAgY2FzZSBN
dXRleFZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICBpZiAoIW1fbXV0ZXgtPnRyeUxvY2so
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIG1fbXV0ZXgtPnVu
bG9jaygpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNhc2UgTm9WZXJp
ZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBlbnVtIFZlcmlmaWNhdGlvbk1vZGUgeworICAgICAgICBTaW5nbGVUaHJl
YWRWZXJpZmljYXRpb25Nb2RlLAorICAgICAgICBNdXRleFZlcmlmaWNhdGlvbk1vZGUsCisgICAg
ICAgIE5vVmVyaWZpY2F0aW9uTW9kZQorICAgIH07CisKKyAgICBWZXJpZmljYXRpb25Nb2RlIG1f
bW9kZTsKKyAgICBib29sIG1fc2hhcmVkOworCisgICAgLy8gVXNlZCBieSBTaW5nbGVUaHJlYWRW
ZXJpZmljYXRpb25Nb2RlCisgICAgVGhyZWFkSWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKKwor
ICAgIC8vIFVzZWQgYnkgTXV0ZXhWZXJpZmljYXRpb25Nb2RlLgorICAgIE11dGV4KiBtX211dGV4
OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9DU3RyaW5nLmgKaW5kZXggMzQzYTdhNTI1MjA3NDFlMmFkY2RiZDgxMGUzZTk5OTVhMzgwZDQ2
NC4uY2Q1NDc0NWEzYzU2MTdiZTcwYTVhMDAyYjc2M2JjYzI0MWIzNzQwZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU3Ry
aW5nQnVmZmVyPiBjcmVhdGUoc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENT
dHJpbmdCdWZmZXIobGVuZ3RoKSk7IH0KLSAgICBDU3RyaW5nQnVmZmVyKHNpemVfdCBsZW5ndGgp
IDogbV92ZWN0b3IobGVuZ3RoKSB7IH0KKyAgICBDU3RyaW5nQnVmZmVyKHNpemVfdCBsZW5ndGgp
IDogbV92ZWN0b3IobGVuZ3RoKSB7IGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZpZXIoKTsgfQogICAg
IGNoYXIqIG11dGFibGVEYXRhKCkgeyByZXR1cm4gbV92ZWN0b3IuZGF0YSgpOyB9CiAKICAgICBW
ZWN0b3I8Y2hhcj4gbV92ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBmOGI3MGYw
ODMzNTRhNDJjZjZhZTEyMDJiZDBjOWI5MmFkODhlNjVjLi4xZjEwNzRhZTY3NzE0NDQxYzJkOTM3
YTAwMDBjYWE1Njk1NzJkMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMS0wNy0yMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhh
cHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllci5oOiBBZGRlZC4KKwogMjAxMS0wNy0wMSAgSnVuZ3NoaWsgU2hpbiAgPGpzaGlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYjdmOTc5OTIyMjFhMzMwNjYxODk0OGM5YWU0MWUwNjgzNzMwMjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRS
ZXN0cmljdGlvblZlcmlmaWVyLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYjUxYzhiNDVk
M2FmZWU0YzkwZjViYjQxNWQyMjM4YTc5MzQ1NDA5Li45YjM2Yzk0NjRlNDAzMmU0OTQzYTMyNjFk
NWVlMDdkNzc1NzNjNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDctMjAg
IERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBhc3NlcnRz
IHRvIFJlZkNvdW50ZWQgdG8gbWFrZSBzdXJlIHJlZi9kZXJlZiBoYXBwZW5zIG9uIHRoZSByaWdo
dCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyBmdW5jdGlvbmFsaXR5IGV4cG9zZWQgc28gbm8gbmV3IHRlc3RzLiAoVGhlIGNoYW5n
ZSBpcyBiYXNpY2FsbHkgYWRkaW5nCisgICAgICAgIG1vcmUgdGVzdGluZy4pCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0SWNvbik6IFNldCB0aGUgbXV0ZXggd2hpY2ggZG9l
cyB0aGUgZ3VhcmRpbmcgb2YgdGhlIHZhcmlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Okljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVJY29uUmVjb3JkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOiBEaXR0by4KKwogMjAxMS0w
Ny0yMCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBz
dHJheSByZWZlcmVuY2UgdG8gU3R5bGVGbGV4aWJsZUJveERhdGEuaCB0aGF0IHdhcyBhY2NpZGVu
dGFsbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9U
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NDJkMWNi
YWYzMGE0YmM2MmZlOWE0ZTg2ZTdkZWQzZDE0MTZlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9UaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
cl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApp
bmRleCBjZDJjMzA0OWE3ODRmNmRmMjAyNTAyZGIxZjJkZTcxNjFlNDMwMWUxLi43YzRkNWI4Mjdk
YmY1ZjA4ZDg4YTJhODFkZTU5NTJkY2UxZGRkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTM4Nyw2ICszODcsNyBAQCBJbWFnZSogSWNvbkRh
dGFiYXNlOjpkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIAogICAgIGlmICgh
bV9kZWZhdWx0SWNvblJlY29yZCkgewogICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0gSWNv
blJlY29yZDo6Y3JlYXRlKCJ1cmxJY29uIik7CisgICAgICAgIG1fZGVmYXVsdEljb25SZWNvcmQt
PnNldE11dGV4Rm9yVmVyaWZpZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGxvYWREZWZh
dWx0SWNvblJlY29yZChtX2RlZmF1bHRJY29uUmVjb3JkLmdldCgpKTsKICAgICB9CiAgICAgCkBA
IC01MTcsNiArNTE4LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVS
TChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdpbmFsLAogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGRhdGFPcmlnaW5hbCA/IGRh
dGFPcmlnaW5hbC0+Y29weSgpIDogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KDApOworICAgIGlm
IChkYXRhKQorICAgICAgICBkYXRhLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxv
Y2spOwogICAgIFN0cmluZyBpY29uVVJMID0gaWNvblVSTE9yaWdpbmFsLmNyb3NzVGhyZWFkU3Ry
aW5nKCk7CiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcGFnZVVSTHM7CkBAIC04NzgsNiArODgx
LDcgQEAgUGFzc1JlZlB0cjxJY29uUmVjb3JkPiBJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlSWNv
blJlY29yZChjb25zdCBTdHJpbmcmIGljb25VUkwKICAgICAgICAgcmV0dXJuIGljb247CiAKICAg
ICBSZWZQdHI8SWNvblJlY29yZD4gbmV3SWNvbiA9IEljb25SZWNvcmQ6OmNyZWF0ZShpY29uVVJM
KTsKKyAgICBuZXdJY29uLT5zZXRNdXRleEZvclZlcmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwog
ICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJMLCBuZXdJY29uLmdldCgpKTsKIAog
ICAgIHJldHVybiBuZXdJY29uLnJlbGVhc2UoKTsKQEAgLTE0NzksNiArMTQ4Myw3IEBAIGJvb2wg
SWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgaWNvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZGlkQW55V29yayA9IHRydWU7CiAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IGdldEltYWdlRGF0YUZvcklj
b25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmljb25VUkwoKSk7CisgICAgICAgIGltYWdl
RGF0YS0+c2V0TXV0ZXhGb3JWZXJpZmllcihtX3VybEFuZEljb25Mb2NrKTsKIAogICAgICAgICAv
LyBWZXJpZnkgdGhpcyBpY29uIHN0aWxsIHdhbnRzIHRvIGJlIHJlYWQgZnJvbSBkaXNrCiAgICAg
ICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102601</attachid>
            <date>2011-08-01 17:52:54 -0700</date>
            <delta_ts>2011-08-01 23:56:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31639-20110801175253.patch</filename>
            <type>text/plain</type>
            <size>24423</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxNTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDU5
Y2MyNjg4NGQzNjZjMjFjM2U4YTRjOTNiNDVmODE4MWI4NDkzZGUuLmM3ZTM0NTgxMzI4ZGEwOWM2
OTQ5NjE1ODc4NWM1NjUxMjViN2Q2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM1IEBACisyMDExLTA4LTAxICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ugc3VyZSByZWYvZGVy
ZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIG5ldyBm
aWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8u
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2wpOiBUdXJuZWQgb2ZmIGNoZWNrcyBmb3IgdGhp
cworICAgICAgICBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBn
dWFyZGluZyBpdCAoYnVnIDU4MDkxKS4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIu
aDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OlNvdXJjZVByb3ZpZGVyKTogRGl0dG8u
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgZmlsZXMgdG8gdGhlIGJ1
aWxkLgorICAgICAgICAqIHd0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg6IEFkZGVkLgor
ICAgICAgICBFdmVyeXRoaW5nIGlzIGRvbmUgaW4gdGhlIGhlYWRlciB0byBhdm9pZCB0aGUgaXNz
dWUgd2l0aCBleHBvcnRzCisgICAgICAgIHRoYXQgYXJlIG9ubHkgdXNlZnVsIGluIGRlYnVnIGJ1
dCBzdGlsbCBuZWVkaW5nIHRvIGV4cG9ydCB0aGVtLgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVk
Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpyZWYpOiBBZGRlZCBjaGVja3MgdXNp
bmcgdGhlIG5vbiB0aHJlYWQgc2FmZSB2ZXJpZmllci4KKyAgICAgICAgYW5kIGZpbGVkIGJ1ZyA1
ODE3MSBhYm91dCBtYWtpbmcgaXQgc3RyaWN0ZXIuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRC
YXNlOjpoYXNPbmVSZWYpOiBEaXR0by4KKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OnJl
ZkNvdW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpzZXRNdXRleEZv
clZlcmlmaWVyKTogRXhwb3NlIGEgd2F5IHRvIGNoYW5nZSB0aGUgY2hlY2tzIHRvIGJlIGJhc2Vk
CisgICAgICAgIG9uIGEgbXV0ZXguIFRoaXMgaXMgaW4gdGhlIGhlYWRlciB0byBhdm9pZCBhZGRp
bmcgbW9yZSBleHBvcnRzIGZyb20gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIChXVEY6OlJlZkNv
dW50ZWRCYXNlOjpkZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKTogVGVtcG9yYXJ5IHdheSB0byB0
dXJuIG9mZiB2ZXJpZmljYXRpb24uCisgICAgICAgIEZpbGVkIGJ1ZyA1ODE3NCB0byByZW1vdmUg
dGhpcyBtZXRob2QuCisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpkZXJlZkJhc2UpOgor
ICAgICAgICAqIHd0Zi9TaXplTGltaXRzLmNwcDogQWRqdXN0ZWQgdGhlIGRlYnVnIHNpemUgY2hl
Y2sgZm9yIFJlZkNvdW50ZWQuCisKIDIwMTEtMDctMTQgIERhdmlkIExldmluICA8bGV2aW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIGN1cnJlbnRUaHJlYWQgaXMgdG9vIHNsb3chCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDk2NjljZjU3ZGRmMThlMGJm
Yzc3M2RlM2QwNGEyNDJlYjJhYzQ3YjQuLmYwN2JkZTBjNjNlMDk2YzZmNGNlMzNiYzdmMDE3NjZl
YTE0ZGQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC01NzgsNiArNTc4LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpp
bmRleCBhOGVjODg5MDllN2YyMmUzY2FmZjdjODg2ZTkyZmVhMGMzN2QzOTZjLi5mNjMzOTJiMGMw
NjI1NjkxMjEwOTMxZDE0MDczYTI1MWNjODNhZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjA2LDYgKzIwNiw3IEBACiAgICAgICAgICAgICAnd3Rm
L1N0cmluZ0hhc2hlci5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aCcsCiAgICAgICAgICAgICAnd3RmL1RocmVhZFNwZWNpZmljLmgnLAorICAgICAgICAgICAgJ3d0
Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRp
bmcuaCcsCiAgICAgICAgICAgICAnd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCcsCiAgICAgICAg
ICAgICAnd3RmL1R5cGVUcmFpdHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCBlNTcyYjE2
NDU5NDhhZjJhNDA2OWJiNTE0ZDg2NWZmNzk4ODM2ODhlLi45NzgzYzlmMGMwODk4NjQ4NjU5NjMw
MDA1OGNmNWU4MTQ2ZDg0OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTEwMDksNiArMTAw
OSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XHd0ZlxUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZp
bGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFRocmVhZFNhZmVSZWZDb3VudGVkLmgiCiAJ
CQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGQ2M2VhMjQy
NjU0YjkzY2QwYzU5NmFlZWQ3YTljZmViMWExOGNmZC4uODliNmE4MGE5MjRkNzg1YTNkZjg3ZTEz
Y2FhZmIyNjM4Mjc4YjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0LDYg
KzQ0LDcgQEAKIAkJMDhFMjc5RTkwRUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTI3OUU4
MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi87IH07CiAJCTBCMzMwQzI3
MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCMzMwQzI2MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBl
VHJhaXRzLmNwcCAqLzsgfTsKIAkJMEI0RDdFNjMwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCNEQ3
RTYyMEYzMTlBQzgwMEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8q
IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEJERkZBRTAwRkM2MTkyOTAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291
bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJE
RkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCREZGQUUxMEZDNjE5
MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBENjlFRjQgLyogT3duRmFz
dE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMw
MDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKQEAgLTcyMiw2ICs3MjMsNyBAQAogCQkw
OEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXJTZWVkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBCMzMwQzI2MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVUcmFpdHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjREN0U2MjBGMzE5QUM4MDBBRDdFNTggLyog
VHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlVHJhaXRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1
QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duRmFzdE1hbGxvY1B0ci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkRGRkFENDBGQzYxNzEwMDBENjlFRjQgLyog
Q3Jvc3NUaHJlYWRSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyb3NzVGhyZWFkUmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
QkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2NTAsOCArMTY1Miw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMUQ3
NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggKi8sCiAJCQkJQTdDNDBDMDcxMzBC
MDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2suaCAqLywKLQkJCQlBN0M0MEMwODEzMEIwNTdEMDBE
MDAyQTEgLyogU2VudGluZWxMaW5rZWRMaXN0LmggKi8sCi0JCQkJQTdDNDBDMDkxMzBCMDU3RDAw
RDAwMkExIC8qIFNpbmdseUxpbmtlZExpc3QuaCAqLywKIAkJCQk1MTM1RkFENTEyRDI2ODU2MDAz
QzA4M0IgLyogRGVjb2Rlci5oICovLAogCQkJCTUxMzVGQUQ2MTJEMjY4NTYwMDNDMDgzQiAvKiBF
bmNvZGVyLmggKi8sCiAJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5c0lubGlu
ZS5oICovLApAQCAtMTc1MCw2ICsxNzUwLDggQEAKIAkJCQk5NjlBMDcyOTBFRDFDRTY5MDBGMUY2
ODEgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCiAJCQkJNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVC
IC8qIFNIQTEuY3BwICovLAogCQkJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmgg
Ki8sCisJCQkJQTdDNDBDMDgxMzBCMDU3RDAwRDAwMkExIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5o
ICovLAorCQkJCUE3QzQwQzA5MTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0Lmgg
Ki8sCiAJCQkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovLAog
CQkJCTg2RDg3REE1MTJCQzRCMTQwMDhFNzNBMSAvKiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJ
ODZEODdEQTYxMkJDNEIxNDAwOEU3M0ExIC8qIFN0YWNrQm91bmRzLmggKi8sCkBAIC0xNzcxLDYg
KzE3NzMsNyBAQAogCQkJCUUxRUU3OTNDMEQ2QzlCOTIwMEZFQTNCQSAvKiBUaHJlYWRpbmdQdGhy
ZWFkcy5jcHAgKi8sCiAJCQkJQkM1RjdCQkQxMTgyM0I1OTAwNTJDMDJDIC8qIFRocmVhZFNhZmVS
ZWZDb3VudGVkLmggKi8sCiAJCQkJRTFCN0M4QkQwREEzQTMzNjAwNzRCMERDIC8qIFRocmVhZFNw
ZWNpZmljLmggKi8sCisJCQkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaCAqLywKIAkJCQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlw
ZVRyYWl0cy5jcHAgKi8sCiAJCQkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCAqLywKIAkJCQlFMTk1Njc4RDA5RTdDRjEyMDBCODlEMTMgLyogdW5pY29kZSAqLywKQEAg
LTI1MTksNiArMjUyMiw3IEBACiAJCQkJMThCQUI1NTQxMERBRTA2NjAwMEQ5NDVCIC8qIFRocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDcwMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUY3QkJG
MTE4MjNCNTkwMDUyQzAyQyAvKiBUaHJlYWRpbmdQcmltaXRpdmVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RjdCQzAxMTgyM0I1OTAwNTJDMDJDIC8qIFRocmVh
ZFNhZmVSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MTBFMTZGNUNEMDBC
MzQ0NjAgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU2MTE4
Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAppbmRleCBmOTNj
ZThhZDg5ZGYxZDA0MzIzODYyNzQ4OTMwOWFiYjA5ZDBkZDBlLi4yNzg1ZmU0ZTkyYmZiOGYyM2Rk
ZGM2OTczMWJjNDJmODU2ZDNiNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApAQCAtMzUyLDYgKzM1Miw3IEBAIGlubGluZSBFeGVjdXRh
YmxlUG9vbDo6RXhlY3V0YWJsZVBvb2woSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qg
bikKICAgICBpZiAoIW1fZnJlZVB0cikKICAgICAgICAgQ1JBU0goKTsgLy8gRmFpbGVkIHRvIGFs
bG9jYXRlCiAgICAgbV9lbmQgPSBtX2ZyZWVQdHIgKyBhbGxvY1NpemU7CisgICAgZGVwcmVjYXRl
ZFR1cm5PZmZWZXJpZmllcigpOwogfQogCiBpbmxpbmUgdm9pZCogRXhlY3V0YWJsZVBvb2w6OnBv
b2xBbGxvY2F0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IGU5YjZiNTYxNGVk
OTY3ZTE5ZDBmN2YxNGQ3MzA3NTA0ZWE0M2EyY2QuLjk4YmI2YjEzOWQxNjZjNDU0NTcxMTFhNDkw
ZTQyNzc3MjhlMjlkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAsIG1fY2FjaGUoY2FjaGUgPyBjYWNoZSA6IG5ldyBTb3VyY2VQcm92aWRlckNhY2hlKQogICAg
ICAgICAgICAgLCBtX2NhY2hlT3duZWQoIWNhY2hlKQogICAgICAgICB7CisgICAgICAgICAgICBk
ZXByZWNhdGVkVHVybk9mZlZlcmlmaWVyKCk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
U291cmNlUHJvdmlkZXIoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFr
ZUxpc3RzLnR4dAppbmRleCA3ZGY4MTU0Zjg3ZDBjNGI1MWMxNmYwZWNmNDk5Y2Q4ZjdiMDRiZGE2
Li4xMzBlZmJiNmEwNTE3MzFmYTkzNDNmZjg3YmQ0ZThiMjk3Yzk0YmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTQyLDYgKzQyLDcgQEAgU0VUKFdURl9I
RUFERVJTCiAgICAgTWF0aEV4dHJhcy5oCiAgICAgTWVzc2FnZVF1ZXVlLmgKICAgICBOb25Db3B5
aW5nU29ydC5oCisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCiAgICAgTm9uY29weWFi
bGUuaAogICAgIE5vdEZvdW5kLmgKICAgICBOdWxsUHRyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9SZWZDb3VudGVkLmgKaW5kZXggMTJiNjcwZTA3YzFlNWZhY2Q1ZGYzODNjZWQ2N2FjMGU2ZDQ2
Y2JmMC4uYWMxNDI5YTgxNTE4YWVmY2YwZGY2ODFmZDQyYjBiOGUzYmI0NDE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmgKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNs
dWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiRmFzdEFsbG9jQmFzZS5oIgorI2luY2x1ZGUg
IlRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCIKICNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgor
I2luY2x1ZGUgIk93blB0ci5oIgorI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgiCiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC0zNCw2ICszNywyMCBAQCBjbGFzcyBSZWZDb3VudGVkQmFzZSB7CiBwdWJs
aWM6CiAgICAgdm9pZCByZWYoKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFN0
YXJ0IHRocmVhZCB2ZXJpZmljYXRpb24gYXMgc29vbiBhcyB0aGUgcmVmIGNvdW50IGdldHMgdG8g
Mi4gVGhpcworICAgICAgICAvLyBoZXVyaXN0aWMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCBpdGVt
cyBhcmUgb2Z0ZW4gY3JlYXRlZCBvbiBvbmUgdGhyZWFkCisgICAgICAgIC8vIGFuZCB0aGVuIGdp
dmVuIHRvIGFub3RoZXIgdGhyZWFkIHRvIGJlIHVzZWQuCisgICAgICAgIC8vIEZJWE1FOiBNYWtl
IHRoaXMgcmVzdHJpY3Rpb24gdGlnaGVyLiBFc3BlY2lhbGx5IGFzIHdlIG1vdmUgdG8gbW9yZQor
ICAgICAgICAvLyBjb21tb24gbWV0aG9kcyBmb3Igc2hhcmluZyBpdGVtcyBhY3Jvc3MgdGhyZWFk
cyBsaWtlIENyb3NzVGhyZWFkQ29waWVyLmgKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUg
dG8gYWRkIGEgImRldGFjaEZyb21UaHJlYWQiIG1ldGhvZCB0byBtYWtlIHRoaXMgZXhwbGljaXQu
CisgICAgICAgIGlmIChtX3JlZkNvdW50ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNl
dFNoYXJlZCh0cnVlKTsKKyNlbmRpZgorICAgICAgICAvLyBJZiB0aGlzIGFzc2VydCBmaXJlcywg
aXQgZWl0aGVyIGluZGljYXRlcyBhIHRocmVhZCBzYWZldHkgaXNzdWUgb3IKKyAgICAgICAgLy8g
dGhhdCB0aGUgdmVyaWZpY2F0aW9uIG5lZWRzIHRvIGNoYW5nZS4gU2VlIFRocmVhZFJlc3RyaWN0
aW9uVmVyaWZpZXIgZm9yCisgICAgICAgIC8vIHRoZSBkaWZmZXJlbnQgbW9kZXMuCisgICAgICAg
IEFTU0VSVChtX3ZlcmlmaWVyLmlzU2FmZVRvVXNlKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwog
ICAgICAgICArK21fcmVmQ291bnQ7CkBAIC00MSwxNSArNTgsMjkgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIu
aXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAg
ICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0gMTsKICAgICB9CiAKICAgICBpbnQgcmVmQ291bnQo
KSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7
CiAgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIAorICAgIHZvaWQgc2V0TXV0ZXhG
b3JWZXJpZmllcihNdXRleCYpOworCisgICAgLy8gVHVybnMgb2ZmIHZlcmlmaWNhdGlvbi4gVXNl
IG9mIHRoaXMgbWV0aG9kIGlzIGRpc2NvdXJhZ2VkIChpbnN0ZWFkIGV4dGVuZAorICAgIC8vIFRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgdG8gdmVyaWZ5IHlvdXIgY2FzZSkuCisgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGlzIG1ldGhvZC4KKyAgICB2b2lkIGRlcHJlY2F0ZWRUdXJuT2ZmVmVyaWZp
ZXIoKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fdmVyaWZpZXIudHVybk9mZlZl
cmlmaWNhdGlvbigpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCByZWxheEFkb3B0aW9uUmVx
dWlyZW1lbnQoKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC04NCw2ICsxMTUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwb2ludGVyIHNob3VsZCBiZSBmcmVl
ZCBvciBub3QuCiAgICAgYm9vbCBkZXJlZkJhc2UoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dmVyaWZpZXIuaXNTYWZlVG9Vc2UoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0Jl
Z3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAKQEAgLTk2LDYg
KzEyOCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KIAogICAgICAgICAtLW1fcmVmQ291bnQ7
CisjaWZuZGVmIE5ERUJVRworICAgICAgICAvLyBTdG9wIHRocmVhZCB2ZXJpZmljYXRpb24gd2hl
biB0aGUgcmVmIGdvZXMgdG8gMSBiZWNhdXNlIGl0CisgICAgICAgIC8vIGlzIHNhZmUgdG8gYmUg
cGFzc2VkIHRvIGFub3RoZXIgdGhyZWFkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgIGlmIChtX3Jl
ZkNvdW50ID09IDEpCisgICAgICAgICAgICBtX3ZlcmlmaWVyLnNldFNoYXJlZChmYWxzZSk7Cisj
ZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTE3LDYgKzE1NSw3IEBA
IHByaXZhdGU6CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwog
ICAgIGJvb2wgbV9hZG9wdGlvbklzUmVxdWlyZWQ7CisgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJp
ZmllciBtX3ZlcmlmaWVyOwogI2VuZGlmCiB9OwogCkBAIC0xNjQsNiArMjAzLDE1IEBAIHByb3Rl
Y3RlZDoKICAgICB9CiB9OwogCisjaWZkZWYgTkRFQlVHCitpbmxpbmUgdm9pZCBSZWZDb3VudGVk
QmFzZTo6c2V0TXV0ZXhGb3JWZXJpZmllcihNdXRleCYpIHsgfQorI2Vsc2UKK2lubGluZSB2b2lk
IFJlZkNvdW50ZWRCYXNlOjpzZXRNdXRleEZvclZlcmlmaWVyKE11dGV4JiBtdXRleCkKK3sKKyAg
ICBtX3ZlcmlmaWVyLnNldE11dGV4TW9kZShtdXRleCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6UmVmQ291bnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1NpemVMaW1pdHMuY3BwCmluZGV4IDRlNDgxYmI5YzEwMzdhZTlhMDhjODAxYTE1ZWRiMDU0
ZjI1YjE2ZDcuLjY3MWVmNDAxNDA3NDFkMjhjODNmNDhjMmQ2Nzg5Njk3Njk0MDJlZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2l6ZUxpbWl0cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaXplTGltaXRzLmNwcApAQCAtMzYsMjEgKzM2LDMwIEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKICNpZm5kZWYgTkRFQlVHCi1zdHJ1Y3QgU3RydWN0V2l0aEludEFuZFR3b0Jvb2xzIHsgaW50
IGE7IGJvb2wgYjsgYm9vbCBjOyB9Owotc3RhdGljIGNvbnN0IHNpemVfdCByZWZDb3VudGVkRXh0
cmFEZWJ1Z1NpemUgPSBzaXplb2YoU3RydWN0V2l0aEludEFuZFR3b0Jvb2xzKSAtIHNpemVvZihp
bnQpOworc3RydWN0IFNhbWVTaXplQXNSZWZDb3VudGVkIHsKKyAgICBpbnQgYTsKKyAgICBib29s
IGI7CisgICAgYm9vbCBjOworICAgIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgZDsKKyAgICAv
LyBUaGUgZGVidWcgdmVyc2lvbiBtYXkgZ2V0IGJpZ2dlci4KK307CiAjZWxzZQotc3RhdGljIGNv
bnN0IHNpemVfdCByZWZDb3VudGVkRXh0cmFEZWJ1Z1NpemUgPSAwOworc3RydWN0IFNhbWVTaXpl
QXNSZWZDb3VudGVkIHsKKyAgICBpbnQgYTsKKyAgICAvLyBEb24ndCBhZGQgYW55dGhpbmcgaGVy
ZSBiZWNhdXNlIHRoaXMgc2hvdWxkIHN0YXkgc21hbGwuCit9OwogI2VuZGlmCiAKIENPTVBJTEVf
QVNTRVJUKHNpemVvZihPd25QdHI8aW50PikgPT0gc2l6ZW9mKGludCopLCBPd25QdHJfc2hvdWxk
X3N0YXlfc21hbGwpOwogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhc3NSZWZQdHI8UmVmQ291bnRl
ZDxpbnQ+ID4pID09IHNpemVvZihpbnQqKSwgUGFzc1JlZlB0cl9zaG91bGRfc3RheV9zbWFsbCk7
Ci1DT01QSUxFX0FTU0VSVChzaXplb2YoUmVmQ291bnRlZDxpbnQ+KSA9PSBzaXplb2YoaW50KSAr
IHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6ZSwgUmVmQ291bnRlZF9zaG91bGRfc3RheV9zbWFsbCk7
Ci1DT01QSUxFX0FTU0VSVChzaXplb2YoUmVmQ291bnRlZEN1c3RvbUFsbG9jYXRlZDxpbnQ+KSA9
PSBzaXplb2YoaW50KSArIHJlZkNvdW50ZWRFeHRyYURlYnVnU2l6ZSwgUmVmQ291bnRlZEN1c3Rv
bUFsbG9jYXRlZF9zaG91bGRfc3RheV9zbWFsbCk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoUmVm
Q291bnRlZDxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlZkNvdW50ZWQpLCBSZWZDb3VudGVk
X3Nob3VsZF9zdGF5X3NtYWxsKTsKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihSZWZDb3VudGVkQ3Vz
dG9tQWxsb2NhdGVkPGludD4pID09IHNpemVvZihTYW1lU2l6ZUFzUmVmQ291bnRlZCksIFJlZkNv
dW50ZWRDdXN0b21BbGxvY2F0ZWRfc2hvdWxkX3N0YXlfc21hbGwpOwogQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFJlZlB0cjxSZWZDb3VudGVkPGludD4gPikgPT0gc2l6ZW9mKGludCopLCBSZWZQdHJf
c2hvdWxkX3N0YXlfc21hbGwpOwogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFZlY3RvcjxpbnQ+KSA9
PSAzICogc2l6ZW9mKGludCopLCBWZWN0b3Jfc2hvdWxkX3N0YXlfc21hbGwpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM4NGIxNjliMTNlMDdlOTEzOTg0ODc0NzdjOThmZWVmMzZlZmQ4MjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFJlc3RyaWN0
aW9uVmVyaWZpZXIuaApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllcl9oCisjZGVmaW5lIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXJfaAorCisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KKworI2lmbmRlZiBOREVCVUcKKworbmFtZXNw
YWNlIFdURiB7CisKKy8vIFZlcmlmaWVzIHRoYXQgYSBjbGFzcyBpcyB1c2VkIGluIGEgd2F5IHRo
YXQgcmVzcGVjdHMgaXRzIGxhY2sgb2YgdGhyZWFkLXNhZmV0eS4KKy8vIFRoZSBkZWZhdWx0IG1v
ZGUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIG9iamVjdCB3aWxsIG9ubHkgYmUgdXNlZCBvbiBhIHNp
bmdsZSB0aHJlYWQuIFRoZQorLy8gdGhyZWFkIGdldHMgY2FwdHVyZWQgd2hlbiBzZXRTaGFyZWQo
dHJ1ZSkgaXMgY2FsbGVkLgorLy8gVGhlIG1vZGUgbWF5IGJlIGNoYW5nZSBieSBjYWxsaW5nIHVz
ZU11dGV4TW9kZSAob3IgdHVybk9mZlZlcmlmaWNhdGlvbikuCitjbGFzcyBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyIHsKK3B1YmxpYzoKKyAgICBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyKCkK
KyAgICAgICAgOiBtX21vZGUoU2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZSkKKyAgICAgICAg
LCBtX3NoYXJlZChmYWxzZSkKKyAgICAgICAgLCBtX293bmluZ1RocmVhZCgwKQorICAgICAgICAs
IG1fbXV0ZXgoMCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRNdXRleE1vZGUoTXV0ZXgm
IG11dGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJlYWRWZXJp
ZmljYXRpb25Nb2RlIHx8IChtX21vZGUgPT0gTXV0ZXhWZXJpZmljYXRpb25Nb2RlICYmICZtdXRl
eCA9PSBtX211dGV4KSk7CisgICAgICAgIG1fbW9kZSA9IE11dGV4VmVyaWZpY2F0aW9uTW9kZTsK
KyAgICAgICAgbV9tdXRleCA9ICZtdXRleDsKKyAgICB9CisKKyAgICB2b2lkIHR1cm5PZmZWZXJp
ZmljYXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBTaW5nbGVUaHJlYWRW
ZXJpZmljYXRpb25Nb2RlKTsKKyAgICAgICAgbV9tb2RlID0gTm9WZXJpZmljYXRpb25Nb2RlOwor
ICAgIH0KKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgbWF5IChvciBtYXkgbm90
KSBiZSBvd25lZCBieSBtb3JlIHRoYW4gb25lIHBsYWNlLgorICAgIHZvaWQgc2V0U2hhcmVkKGJv
b2wgc2hhcmVkKQorICAgIHsKKyAgICAgICAgYm9vbCBwcmV2aW91c2x5U2hhcmVkID0gbV9zaGFy
ZWQ7CisgICAgICAgIG1fc2hhcmVkID0gc2hhcmVkOworCisgICAgICAgIGlmICghbV9zaGFyZWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAg
ICAgY2FzZSBTaW5nbGVUaHJlYWRWZXJpZmljYXRpb25Nb2RlOgorICAgICAgICAgICAgQVNTRVJU
KHNoYXJlZCAhPSBwcmV2aW91c2x5U2hhcmVkKTsKKyAgICAgICAgICAgIC8vIENhcHR1cmUgdGhl
IGN1cnJlbnQgdGhyZWFkIHRvIHZlcmlmeSB0aGF0IHN1YnNlcXVlbnQgcmVmL2RlcmVmIGhhcHBl
biBvbiB0aGlzIHRocmVhZC4KKyAgICAgICAgICAgIG1fb3duaW5nVGhyZWFkID0gY3VycmVudFRo
cmVhZCgpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgTXV0ZXhWZXJpZmlj
YXRpb25Nb2RlOgorICAgICAgICBjYXNlIE5vVmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICAvLyBJcyBpdCBPSyB0byB1c2UgdGhlIG9iamVjdCBhdCB0aGlzIG1vbWVudCBvbiB0
aGUgY3VycmVudCB0aHJlYWQ/CisgICAgYm9vbCBpc1NhZmVUb1VzZSgpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIW1fc2hhcmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg
ICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBTaW5nbGVUaHJlYWRWZXJpZmljYXRp
b25Nb2RlOgorICAgICAgICAgICAgcmV0dXJuIG1fb3duaW5nVGhyZWFkID09IGN1cnJlbnRUaHJl
YWQoKTsKKworICAgICAgICBjYXNlIE11dGV4VmVyaWZpY2F0aW9uTW9kZToKKyAgICAgICAgICAg
IGlmICghbV9tdXRleC0+dHJ5TG9jaygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgbV9tdXRleC0+dW5sb2NrKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgY2FzZSBOb1ZlcmlmaWNhdGlvbk1vZGU6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gVmVyaWZpY2F0aW9uTW9k
ZSB7CisgICAgICAgIFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUsCisgICAgICAgIE11dGV4
VmVyaWZpY2F0aW9uTW9kZSwKKyAgICAgICAgTm9WZXJpZmljYXRpb25Nb2RlCisgICAgfTsKKwor
ICAgIFZlcmlmaWNhdGlvbk1vZGUgbV9tb2RlOworICAgIGJvb2wgbV9zaGFyZWQ7CisKKyAgICAv
LyBVc2VkIGJ5IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUKKyAgICBUaHJlYWRJZGVudGlm
aWVyIG1fb3duaW5nVGhyZWFkOworCisgICAgLy8gVXNlZCBieSBNdXRleFZlcmlmaWNhdGlvbk1v
ZGUuCisgICAgTXV0ZXgqIG1fbXV0ZXg7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRHbHVlL0NoYW5nZUxvZwppbmRleCA0NWU2NDk1OTM1MDdjOWE2ZmZhMmJiYWIyY2MzODg4Mjhl
ODQ3MDViLi43NmE5ZTM0OTc3YjExY2U4NGRlODQ1MTVhOGFmYzYwZWYxZTY1OWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wOC0wMSAgRGF2aWQgTGV2
aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gUmVmQ291
bnRlZCB0byBtYWtlIHN1cmUgcmVmL2RlcmVmIGhhcHBlbnMgb24gdGhlIHJpZ2h0IHRocmVhZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOiBBZGRlZC4KKwogMjAx
MS0wNy0yNyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBvcGVyYXRvciBuZXcgZnJvbSBKU0NlbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI3Zjk3OTkyMjIxYTMzMDY2MTg5
NDhjOWFlNDFlMDY4MzczMDIyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBA
IC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzViMDE2Y2E4ZGE5NjVlZTE4M2I4ODI0NjAxZjYwODQ4
MzUxMzY1ZC4uM2JiNTA3NDJjZDBlYTBmNTVjOTcxNzZmMTZiMzFkODk1NjMwMTI1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA4LTAxICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBSZWZDb3VudGVkIHRvIG1ha2Ug
c3VyZSByZWYvZGVyZWYgaGFwcGVucyBvbiB0aGUgcmlnaHQgdGhyZWFkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBl
eHBvc2VkIHNvIG5vIG5ldyB0ZXN0cy4gKFRoZSBjaGFuZ2UgaXMgYmFzaWNhbGx5IGFkZGluZwor
ICAgICAgICBtb3JlIHRlc3RpbmcuKQorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1RocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVm
YXVsdEljb24pOiBTZXQgdGhlIG11dGV4IHdoaWNoIGRvZXMgdGhlIGd1YXJkaW5nIG9mIHRoZSB2
YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJ
Y29uVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3Jl
YXRlSWNvblJlY29yZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpy
ZWFkRnJvbURhdGFiYXNlKTogRGl0dG8uCisKIDIwMTEtMDgtMDEgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2V2ZXJlIHNoYWRvdyByZXBhaW50IGlz
c3VlcyB3aXRoIFNWR1RleHQgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0NDJkMWNiYWYzMGE0YmM2MmZlOWE0ZTg2ZTdkZWQzZDE0MTZlMDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyZWFk
UmVzdHJpY3Rpb25WZXJpZmllci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBlZDcxNDE1YjM5ZDg0YjdhY2UyNzZhNmI4OTJiNWIx
ZDdiZmY3MTZlLi5iMGE0MzUzNDk2ODBlYTFjMDBkYWExZjE1NWI3ZjlmNDVlNjZjZTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTM4Nyw2ICsz
ODcsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJiBz
aXplKQogICAgIAogICAgIGlmICghbV9kZWZhdWx0SWNvblJlY29yZCkgewogICAgICAgICBtX2Rl
ZmF1bHRJY29uUmVjb3JkID0gSWNvblJlY29yZDo6Y3JlYXRlKCJ1cmxJY29uIik7CisgICAgICAg
IG1fZGVmYXVsdEljb25SZWNvcmQtPnNldE11dGV4Rm9yVmVyaWZpZXIobV91cmxBbmRJY29uTG9j
ayk7CiAgICAgICAgIGxvYWREZWZhdWx0SWNvblJlY29yZChtX2RlZmF1bHRJY29uUmVjb3JkLmdl
dCgpKTsKICAgICB9CiAgICAgCkBAIC01MTcsNiArNTE4LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnNldEljb25EYXRhRm9ySWNvblVSTChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YU9yaWdp
bmFsLAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSA9IGRhdGFPcmlnaW5hbCA/IGRhdGFPcmlnaW5hbC0+Y29weSgpIDogUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+KDApOworICAgIGlmIChkYXRhKQorICAgICAgICBkYXRhLT5zZXRNdXRleEZvclZl
cmlmaWVyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIFN0cmluZyBpY29uVVJMID0gaWNvblVSTE9y
aWdpbmFsLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcGFn
ZVVSTHM7CkBAIC04NzgsNiArODgxLDcgQEAgUGFzc1JlZlB0cjxJY29uUmVjb3JkPiBJY29uRGF0
YWJhc2U6OmdldE9yQ3JlYXRlSWNvblJlY29yZChjb25zdCBTdHJpbmcmIGljb25VUkwKICAgICAg
ICAgcmV0dXJuIGljb247CiAKICAgICBSZWZQdHI8SWNvblJlY29yZD4gbmV3SWNvbiA9IEljb25S
ZWNvcmQ6OmNyZWF0ZShpY29uVVJMKTsKKyAgICBuZXdJY29uLT5zZXRNdXRleEZvclZlcmlmaWVy
KG1fdXJsQW5kSWNvbkxvY2spOwogICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnNldChpY29uVVJM
LCBuZXdJY29uLmdldCgpKTsKIAogICAgIHJldHVybiBuZXdJY29uLnJlbGVhc2UoKTsKQEAgLTE0
NzksNiArMTQ4Myw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaWNvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ZGlkQW55V29yayA9IHRydWU7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0
YSA9IGdldEltYWdlRGF0YUZvckljb25VUkxGcm9tU1FMRGF0YWJhc2UoaWNvbnNbaV0tPmljb25V
UkwoKSk7CisgICAgICAgIGltYWdlRGF0YS0+c2V0TXV0ZXhGb3JWZXJpZmllcihtX3VybEFuZElj
b25Mb2NrKTsKIAogICAgICAgICAvLyBWZXJpZnkgdGhpcyBpY29uIHN0aWxsIHdhbnRzIHRvIGJl
IHJlYWQgZnJvbSBkaXNrCiAgICAgICAgIHsK
</data>
<flag name="review"
          id="97898"
          type_id="1"
          status="+"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="97918"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>