<?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>67494</bug_id>
          
          <creation_ts>2011-09-02 09:51:31 -0700</creation_ts>
          <short_desc>Use bump allocator for initial property storage</short_desc>
          <delta_ts>2011-09-08 15:51:41 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67595</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>461272</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-02 09:51:31 -0700</bug_when>
    <thetext>Use bump allocator for initial property storage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461287</commentid>
    <comment_count>1</comment_count>
      <attachid>106148</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-02 10:08:33 -0700</bug_when>
    <thetext>Created attachment 106148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461376</commentid>
    <comment_count>2</comment_count>
      <attachid>106148</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-02 11:37:02 -0700</bug_when>
    <thetext>Comment on attachment 106148
Patch

Attachment 106148 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9581774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461430</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-02 12:33:00 -0700</bug_when>
    <thetext>Does not pass EWS?
r+, assuming it works!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461443</commentid>
    <comment_count>4</comment_count>
      <attachid>106177</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-02 12:49:54 -0700</bug_when>
    <thetext>Created attachment 106177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461444</commentid>
    <comment_count>5</comment_count>
      <attachid>106177</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-02 12:53:35 -0700</bug_when>
    <thetext>Comment on attachment 106177
Patch

Should fix a spelling error: The word “nursery” has an e in it, not an a.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461490</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-02 13:43:02 -0700</bug_when>
    <thetext>Committed r94445: &lt;http://trac.webkit.org/changeset/94445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461726</commentid>
    <comment_count>7</comment_count>
      <attachid>106177</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-09-02 21:26:01 -0700</bug_when>
    <thetext>Comment on attachment 106177
Patch

Gavin Barraclough reviewed this.  (Oliver doesn&apos;t seem to know how to close bugs fully...Oliver).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461924</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-03 22:59:53 -0700</bug_when>
    <thetext>This broke MobileMe Gallery and Yahoo! Mail (bug 67565, bug 67560).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461926</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-03 23:08:57 -0700</bug_when>
    <thetext>And likely GMail, too (bug 67572).

&gt; Committed r94445: &lt;http://trac.webkit.org/changeset/94445&gt;

There was also a build fix in r94448, if someone decides to go ahead and roll this change out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462018</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-04 21:26:23 -0700</bug_when>
    <thetext>Likely Twitter, too (bug 67578).

Is anyone available to fix or rollout this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462105</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-05 03:55:05 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Likely Twitter, too (bug 67578).
&gt; 
&gt; Is anyone available to fix or rollout this?

As you wish, Master. Rollout landed in http://trac.webkit.org/changeset/94522
(Additionally this patch broke hundreds of tests on Qt ARM platform.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462106</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-05 03:55:29 -0700</bug_when>
    <thetext>Reopen, because it was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464113</commentid>
    <comment_count>13</comment_count>
      <attachid>106753</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 10:00:40 -0700</bug_when>
    <thetext>Created attachment 106753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464121</commentid>
    <comment_count>14</comment_count>
      <attachid>106754</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 10:11:34 -0700</bug_when>
    <thetext>Created attachment 106754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464132</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-08 10:25:12 -0700</bug_when>
    <thetext>&quot;NewSpace&quot; is a defunct concept, given the path you&apos;re taking. So, I think making this new bump allocator a part of NewSpace is not so good. Would be better to create a new BumpSpace class that&apos;s owned by heap, and put this code in there instead.

Let&apos;s talk this over.

&gt; Source/JavaScriptCore/heap/Heap.cpp:693
&gt; +    m_newSpace.resetPropertyStorageNursery();

This should be a part of NewSpace::resetAllocator(). Or, even better, BumpSpace::resetAllocator().

&gt; Source/JavaScriptCore/heap/Heap.h:74
&gt; +        void addToVisitSet(const JSCell*) { }

What&apos;s this for? No explanation :(.

&gt; Source/JavaScriptCore/heap/Heap.h:97
&gt; +        inline void* allocatePropertyStorage(size_t);
&gt; +        inline bool inPropertyStorageNursery(void*);

I think these should be more abstract about what can be stored in them -- allocateInBumpSpace(size_t), inBumpSpace(void*), maybe.

&gt; Source/JavaScriptCore/heap/NewSpace.h:49
&gt; +        static const size_t PropertyStorageNurserySize = 1024 * 1024 * 4;

Please use &quot;KB&quot; instead of 1024.

&gt; Source/JavaScriptCore/heap/NewSpace.h:185
&gt; +        memset(result, 0, size);

Is this needed for correctness? If so, I think it&apos;s incorrect on JSValue32_64. If not, please compile it out of release builds.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:612
&gt; +    if (usingNursery)
&gt; +        newPropertyStorage = static_cast&lt;PropertyStorage&gt;(globalData.heap.allocatePropertyStorage(newSize * sizeof(WriteBarrierBase&lt;Unknown&gt;)));
&gt; +    if (!newPropertyStorage) {
&gt; +        newPropertyStorage = new WriteBarrierBase&lt;Unknown&gt;[newSize];
&gt; +        newAllocationInNursery = false;
&gt; +    }

I think this fact -- that allocation must succeed, and should fall back to some other allocator if necessary -- should move into Heap. Array, etc., will need the same behavior. It&apos;s better for Heap to abstract away the details of how the rules of allocation are implemented.

&gt; Source/JavaScriptCore/runtime/JSObject.h:904
&gt; +    if (Heap::heap(this)-&gt;inPropertyStorageNursery(storage)) {
&gt; +        m_propertyStorage = new WriteBarrierBase&lt;Unknown&gt;[structure()-&gt;propertyStorageCapacity()];
&gt; +        if (structure()-&gt;propertyStorageCapacity() &gt; m_structure-&gt;propertyStorageSize())
&gt; +            ASSERT(!storage[m_structure-&gt;propertyStorageSize()]);
&gt; +        memcpy(m_propertyStorage, storage, m_structure-&gt;propertyStorageSize() * sizeof(WriteBarrierBase&lt;Unknown&gt;));
&gt; +    }

The SlotVisitor should do the copying, not the object&apos;s visit function. Certain kinds of visitors won&apos;t want to do this copy. For example, an a Cheney visitor, a verifying visitor, a heap profiling visitor, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464145</commentid>
    <comment_count>16</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 10:35:20 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &quot;NewSpace&quot; is a defunct concept, given the path you&apos;re taking. So, I think making this new bump allocator a part of NewSpace is not so good. Would be better to create a new BumpSpace class that&apos;s owned by heap, and put this code in there instead.
&gt; 
&gt; Let&apos;s talk this over.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:693
&gt; &gt; +    m_newSpace.resetPropertyStorageNursery();
&gt; 
&gt; This should be a part of NewSpace::resetAllocator(). Or, even better, BumpSpace::resetAllocator().
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.h:74
&gt; &gt; +        void addToVisitSet(const JSCell*) { }
&gt; 
&gt; What&apos;s this for? No explanation :(.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.h:97
&gt; &gt; +        inline void* allocatePropertyStorage(size_t);
&gt; &gt; +        inline bool inPropertyStorageNursery(void*);
&gt; 
&gt; I think these should be more abstract about what can be stored in them -- allocateInBumpSpace(size_t), inBumpSpace(void*), maybe.
That can change once we move out of NewSpace

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/NewSpace.h:49
&gt; &gt; +        static const size_t PropertyStorageNurserySize = 1024 * 1024 * 4;
&gt; 
&gt; Please use &quot;KB&quot; instead of 1024.

k

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/NewSpace.h:185
&gt; &gt; +        memset(result, 0, size);
&gt; 
&gt; Is this needed for correctness? If so, I think it&apos;s incorrect on JSValue32_64. If not, please compile it out of release builds.

This is needed in order to justify the massively overpowered processor in the users computer :D

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSObject.cpp:612
&gt; &gt; +    if (usingNursery)
&gt; &gt; +        newPropertyStorage = static_cast&lt;PropertyStorage&gt;(globalData.heap.allocatePropertyStorage(newSize * sizeof(WriteBarrierBase&lt;Unknown&gt;)));
&gt; &gt; +    if (!newPropertyStorage) {
&gt; &gt; +        newPropertyStorage = new WriteBarrierBase&lt;Unknown&gt;[newSize];
&gt; &gt; +        newAllocationInNursery = false;
&gt; &gt; +    }
&gt; 
&gt; I think this fact -- that allocation must succeed, and should fall back to some other allocator if necessary -- should move into Heap. Array, etc., will need the same behavior. It&apos;s better for Heap to abstract away the details of how the rules of allocation are implemented.

I agree, when this becomes a more common scenario.  Currently it simplifies the patch to do this here.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSObject.h:904
&gt; &gt; +    if (Heap::heap(this)-&gt;inPropertyStorageNursery(storage)) {
&gt; &gt; +        m_propertyStorage = new WriteBarrierBase&lt;Unknown&gt;[structure()-&gt;propertyStorageCapacity()];
&gt; &gt; +        if (structure()-&gt;propertyStorageCapacity() &gt; m_structure-&gt;propertyStorageSize())
&gt; &gt; +            ASSERT(!storage[m_structure-&gt;propertyStorageSize()]);
&gt; &gt; +        memcpy(m_propertyStorage, storage, m_structure-&gt;propertyStorageSize() * sizeof(WriteBarrierBase&lt;Unknown&gt;));
&gt; &gt; +    }
&gt; 
&gt; The SlotVisitor should do the copying, not the object&apos;s visit function. Certain kinds of visitors won&apos;t want to do this copy. For example, an a Cheney visitor, a verifying visitor, a heap profiling visitor, etc.

However, doing this currently would complicate the visitor, etc in ways that aren&apos;t necessary, and also without other users of the bump allocator i&apos;m not sure what the slot visitor should really be doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464153</commentid>
    <comment_count>17</comment_count>
      <attachid>106754</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-08 10:40:02 -0700</bug_when>
    <thetext>Comment on attachment 106754
Patch

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

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:-604
&gt; -

This function can be in a number of states based on the values of usingNursery, newPropertyStorage, and newAllocationInNursery.
I think it would be clear if you deleted the two booleans and added a state enum with named states that better explain what&apos;s going on.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:608
&gt; +        // Allocation property storage might trigger a GC that will move

(typo in comment, nursary).

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:614
&gt; +    }

I think, at this point, either:
(1) usingNursery &amp;&amp; newPropertyStorage &amp;&amp; newAllocationInNursery
or:
(2) !usingNursery &amp;&amp; !newPropertyStorage &amp;&amp; newAllocationInNursery

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:618
&gt; +    }

I think, at this point, either:
(1) usingNursery &amp;&amp; newPropertyStorage &amp;&amp; newAllocationInNursery
or:
(2) !usingNursery &amp;&amp; newPropertyStorage &amp;&amp; !newAllocationInNursery

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:629
&gt; +

Based on the observations above, this check is a contradiction?  Do we ever need to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464154</commentid>
    <comment_count>18</comment_count>
      <attachid>106754</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-08 10:41:07 -0700</bug_when>
    <thetext>Comment on attachment 106754
Patch

Hang on.  I didn &apos;t mean to r+ this.  Back to r? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464164</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 10:55:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 106754 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106754&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSObject.cpp:-604
&gt; &gt; -
&gt; 
&gt; This function can be in a number of states based on the values of usingNursery, newPropertyStorage, and newAllocationInNursery.
&gt; I think it would be clear if you deleted the two booleans and added a state enum with named states that better explain what&apos;s going on.

do you mena 
enum { NurseryAlloc, OtherAlloc }
 (or similar) ?

&gt; Based on the observations above, this check is a contradiction?  Do we ever need to do this?
Yes.

If you have an object that starts off using a nursery allocation, then the new allocation (through whatever path) does not come from the nursery you will hit this path.

The whole point of this path is to catch the conversion from nursery to non-nursery property storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464176</commentid>
    <comment_count>20</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-08 11:09:00 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; If you have an object that starts off using a nursery allocation, then the new allocation (through whatever path) does not come from the nursery you will hit this path.

Check the code.  This does not appear to be true. :-)
In the situation you describe, both values will be false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464192</commentid>
    <comment_count>21</comment_count>
      <attachid>106754</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-08 11:21:47 -0700</bug_when>
    <thetext>Comment on attachment 106754
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSObject.cpp:614
&gt;&gt; +    }
&gt; 
&gt; I think, at this point, either:
&gt; (1) usingNursery &amp;&amp; newPropertyStorage &amp;&amp; newAllocationInNursery
&gt; or:
&gt; (2) !usingNursery &amp;&amp; !newPropertyStorage &amp;&amp; newAllocationInNursery

Okay, so there is also:
(3) usingNursery &amp;&amp; !newPropertyStorage &amp;&amp; newAllocationInNursery

&gt;&gt; Source/JavaScriptCore/runtime/JSObject.cpp:618
&gt;&gt; +    }
&gt; 
&gt; I think, at this point, either:
&gt; (1) usingNursery &amp;&amp; newPropertyStorage &amp;&amp; newAllocationInNursery
&gt; or:
&gt; (2) !usingNursery &amp;&amp; newPropertyStorage &amp;&amp; !newAllocationInNursery

Okay, so there is also:
(3) usingNursery &amp;&amp; newPropertyStorage &amp;&amp; !newAllocationInNursery</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464193</commentid>
    <comment_count>22</comment_count>
      <attachid>106754</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-08 11:23:27 -0700</bug_when>
    <thetext>Comment on attachment 106754
Patch

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

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:630
&gt; +    if (newAllocationInNursery != usingNursery)

Okay, so I think this can only be true of globalData.heap.allocatePropertyStorage returns false, above.
You can probably remove newAllocationInNursery, and instead have a simpler needsToAddToVisitSet flag, initialized to false, set of allocatePropertyStorage returns 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464258</commentid>
    <comment_count>23</comment_count>
      <attachid>106773</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 12:43:03 -0700</bug_when>
    <thetext>Created attachment 106773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464325</commentid>
    <comment_count>24</comment_count>
      <attachid>106773</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-08 13:50:58 -0700</bug_when>
    <thetext>Comment on attachment 106773
Patch

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

Looking a lot better, but still some work to do here.

&gt; Source/JavaScriptCore/heap/Heap.cpp:693
&gt; +    m_newSpace.resetPropertyStorageNursery();

Please move the bump pointer allocator into a new class in a follow-up patch.

&gt; Source/JavaScriptCore/heap/Heap.h:74
&gt; +        void addToVisitSet(const JSCell*) { }

Oliver said he&apos;s going to remove this.

&gt; Source/JavaScriptCore/heap/NewSpace.h:49
&gt; +        static const size_t PropertyStorageNurserySize = 1024 * 1024 * 4;

Please use MB.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:609
&gt; +            // If the allocation is too large we don&apos;t fit in the nursery, or
&gt; +            // if allocatePropertyStorage to triggers a GC that promotes us
&gt; +            // we&apos;ll need to allocate storage directly

Not so grammatical here. How about: &quot;If allocation failed because it&apos;s too big, or it triggered a GC that promoted us to old space, we need to allocate our property storage in old space.&quot;

Eventually, I think we can remove some of this complexity by moving more responsibility for backing store allocation into the heap, which knows more about these details.

&gt; Source/JavaScriptCore/runtime/JSObject.h:75
&gt; +    class StorageBarrier {

This class should be in its own file. Also, the set function and the constructor need to call Heap::writeBarrier() on the object taking ownership of the storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464415</commentid>
    <comment_count>25</comment_count>
      <attachid>106798</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 15:08:29 -0700</bug_when>
    <thetext>Created attachment 106798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464434</commentid>
    <comment_count>26</comment_count>
      <attachid>106798</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-08 15:21:35 -0700</bug_when>
    <thetext>Comment on attachment 106798
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464451</commentid>
    <comment_count>27</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-08 15:51:41 -0700</bug_when>
    <thetext>Committed r94814: &lt;http://trac.webkit.org/changeset/94814&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106148</attachid>
            <date>2011-09-02 10:08:33 -0700</date>
            <delta_ts>2011-09-02 12:49:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67494-20110902100832.patch</filename>
            <type>text/plain</type>
            <size>15700</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQzMzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRk
NWE4ODMwZDgyM2I4NzQzMGU3ZDU2ODFiNzkwOTcwMGNhNjEyZjIuLmEyY2IwYmIxZjhkNTBhMjNk
ZGFhNDJjNzc1MmQ1MmNkNzQ3ZWE1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA5LTAyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5IHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRv
IGEgYnVtcCBhbGxvY2F0b3IgZm9yIHRoZSBpbml0aWFsIG91dCBvZiBsaW5lCisgICAgICAgIHBy
b3BlcnR5IHN0b3JhZ2UuICBUaGlzIGdpdmVzIHVzIHNsaWdodGx5IGZhc3RlciBhbGxvY2F0aW9u
CisgICAgICAgIGZvciBzaG9ydCBsaXZlZCBvYmplY3RzIHRoYXQgbmVlZCBvdXQgb2YgbGluZSBz
dG9yYWdlIGF0CisgICAgICAgIHRoZSBjb3N0IG9mIGFuIGFkZGl0aW9uYWwgbWVtY3B5IHdoZW4g
dGhlIG9iamVjdCBzdXJ2aXZlcworICAgICAgICBhIEdDIHBhc3MuCisKKyAgICAgICAgTm8gcGVy
Zm9ybWFuY2UgaW1wYWN0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmluUHJvcGVydHlTdG9yYWdlTnVyc2FyeSk6Cisg
ICAgICAgICogaGVhcC9OZXdTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjpOZXdT
cGFjZSk6CisgICAgICAgICogaGVhcC9OZXdTcGFjZS5oOgorICAgICAgICAoSlNDOjpOZXdTcGFj
ZTo6cmVzZXRQcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KToKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6
OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6OmluUHJv
cGVydHlTdG9yYWdlTnVyc2FyeSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
On5KU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyYW5zaXRpb25Ubyk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KToKKwogMjAxMS0wOS0wMSAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc2ltcGxlIHVzYWdl
IG9mIFVTdHJpbmc6OmNoYXJhY3RlcnMoKSBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA5ZjRhM2JkY2EyMTNiM2I1YjUyZjU4
ZmY0NmIxYjM3MGIwZDg1ZGU3Li4wNTg3Y2NjZDk5NmNiZGFmNzEzY2FhNzFjNTRkM2JlNGJlMTAx
MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTIxNiw2
ICsyMTYsNyBAQCBfX1pOM0pTQzIwV3JpdGVCYXJyaWVyQ291bnRlcnMyNXVzZXNXaXRob3V0QmFy
cmllckZyb21DcHBFCiBfX1pOM0pTQzIyZ2xvYmFsTWVtb3J5U3RhdGlzdGljc0V2CiBfX1pOM0pT
QzIyb2JqZWN0Q29uc3RydWN0b3JUYWJsZUUKIF9fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5nQ291
bnRlcjRkdW1wRXYKK19fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjMwc19hYnN0cmFj
dFNhbXBsaW5nQ291bnRlckNoYWluRQogX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3RyaW5n
RVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBOU185
RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlmaWVy
RVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjREeW5hbWljR2xvYmFsT2JqZWN0U2NvcGVD
MUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFCkBAIC0zMjAsNyArMzIx
LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNTdGF0
ZUVSZFJOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5hbWVz
RVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25N
b2RlRQogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pT
QzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RFUE5T
XzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5rbm93bkVFRQotX19aTjNKU0M4SlNPYmplY3QyM2Fs
bG9jYXRlUHJvcGVydHlTdG9yYWdlRW1tCitfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2VFUk5TXzEySlNHbG9iYWxEYXRhRW1tCiBfX1pOM0pTQzhKU09iamVjdDI0Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJO
U18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RF
CiBfX1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA2YTFmYjA3YTcyYWRiMmViZWE5NzVmMGVi
MTY2Mjc5ZThlY2VjYzUwLi5mNTBiNzUyZjkyNTA1Y2IzN2FkMWNmNGE4NGVhMjBiOWU2ODk1ZGVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNjgzLDcgKzY4Myw3IEBAIHZv
aWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkKICAgICAvLyBuZXcgYnl0
ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29yayB3ZWxsIGluIGJlbmNo
bWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5dGVzID0gMiAqIHNpemUoKTsKICAgICBt
X25ld1NwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5
dGVzUGVyQ3ljbGUpKTsKLQorICAgIG1fbmV3U3BhY2UucmVzZXRQcm9wZXJ0eVN0b3JhZ2VOdXJz
YXJ5KCk7CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiAKICAgICAoKm1fYWN0aXZpdHlD
YWxsYmFjaykoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCAyNzdkYzUxNWJmOTM0
N2QyZGM1MWJkYjE5YjYxMTQ5MzE5MDcxNGVmLi43NTEwNDM2NzEzYTg5YjVjNGFhYzkxNDg4MjU2
NzNiYTAxZTIyZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC05MSw2ICs5MSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG5vdGlmeUlzU2FmZVRvQ29sbGVjdCgp
IHsgbV9pc1NhZmVUb0NvbGxlY3QgPSB0cnVlOyB9CiAgICAgICAgIHZvaWQgY29sbGVjdEFsbEdh
cmJhZ2UoKTsKIAorICAgICAgICBpbmxpbmUgdm9pZCogYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
c2l6ZV90KTsKKyAgICAgICAgaW5saW5lIGJvb2wgaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KHZv
aWQqKTsKKwogICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7
CiAKICAgICAgICAgdm9pZCBwcm90ZWN0KEpTVmFsdWUpOwpAQCAtMzU4LDYgKzM2MSwyMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7CiAgICAg
fQogCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVf
dCBieXRlcykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJ5dGVzICUgc2l6ZW9mKEpTVmFsdWUp
KSk7CisgICAgICAgIGlmIChieXRlcyA+PSBOZXdTcGFjZTo6UHJvcGVydHlTdG9yYWdlTnVyc2Vy
eVNpemUpCisgICAgICAgICAgICByZXR1cm4gZmFzdE1hbGxvYyhieXRlcyk7CisgICAgICAgIGlm
ICh2b2lkKiByZXN1bHQgPSBtX25ld1NwYWNlLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGJ5dGVz
KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGNvbGxlY3QoRG9Ob3RTd2Vl
cCk7CisgICAgICAgIHJldHVybiBtX25ld1NwYWNlLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGJ5
dGVzKTsKKyAgICB9CisgICAgCisgICAgaW5saW5lIGJvb2wgSGVhcDo6aW5Qcm9wZXJ0eVN0b3Jh
Z2VOdXJzYXJ5KHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBtX25ld1NwYWNlLmlu
UHJvcGVydHlTdG9yYWdlTnVyc2FyeShwdHIpOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL05ld1NwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNw
cAppbmRleCAyZjE2Zjk5NmMyYmZmYjA2NWY0ZjY4ZDdmN2JhNmIzM2YyMTc0MTllLi44NjYwODJk
N2ZkZWNjZDgxOWI0YmEyNTZmYTVkNzRhNDBmNWNiMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTmV3U3BhY2UuY3BwCkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgU3RydWN0dXJlOwogCiBOZXdTcGFjZTo6TmV3U3BhY2UoSGVhcCogaGVhcCkKLSAgICA6IG1f
d2F0ZXJNYXJrKDApCisgICAgOiBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkoc3RhdGljX2Nhc3Q8
Y2hhcio+KGZhc3RNYWxsb2MoUHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpKSkKKyAgICAsIG1f
cHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50KG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeSkK
KyAgICAsIG1fd2F0ZXJNYXJrKDApCiAgICAgLCBtX2hpZ2hXYXRlck1hcmsoMCkKICAgICAsIG1f
aGVhcChoZWFwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3
U3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmgKaW5kZXggYjBl
OTQzMTQ2MTNkNjJiMWExZTkwOThjMTE2N2VhODZkMGFlODQyMy4uMDQ1NTBmMDIzNmNiZDdlNzg0
NGRjYzQ2NmIyZjg5MTEwZjNhZTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTmV3U3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFj
ZS5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShOZXdTcGFjZSk7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IG1heENlbGxTaXplID0gMTAyNDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHB0cmRpZmZf
dCBQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSA9IDEwMjQgKiAxMDI0ICogNDsKIAogICAgICAg
ICBzdHJ1Y3QgU2l6ZUNsYXNzIHsKICAgICAgICAgICAgIFNpemVDbGFzcygpOwpAQCAtNjMsNiAr
NjQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3NG
b3Ioc2l6ZV90KTsKICAgICAgICAgdm9pZCogYWxsb2NhdGUoU2l6ZUNsYXNzJik7CisgICAgICAg
IGlubGluZSB2b2lkKiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3QpOworICAgICAgICBp
bmxpbmUgYm9vbCBpblByb3BlcnR5U3RvcmFnZU51cnNhcnkodm9pZCogcHRyKTsKKyAgICAgICAg
aW5saW5lIHZvaWQgcmVzZXRQcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KCk7CisgICAgICAgIAogICAg
ICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKICAgICAgICAgdm9pZCBhZGRCbG9jayhTaXpl
Q2xhc3MmLCBNYXJrZWRCbG9jayopOwpAQCAtOTEsNiArOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBTaXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNsYXNzZXNbcHJlY2lzZUNvdW50XTsK
ICAgICAgICAgU2l6ZUNsYXNzIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaW1wcmVjaXNlQ291bnRd
OworICAgICAgICBjaGFyKiBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnk7CisgICAgICAgIGNoYXIq
IG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50OwogICAgICAgICBzaXplX3QgbV93YXRl
ck1hcms7CiAgICAgICAgIHNpemVfdCBtX2hpZ2hXYXRlck1hcms7CiAgICAgICAgIEhlYXAqIG1f
aGVhcDsKQEAgLTE2MCw2ICsxNjcsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVy
biBmaXJzdEZyZWVDZWxsOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIE5ld1NwYWNlOjpyZXNl
dFByb3BlcnR5U3RvcmFnZU51cnNhcnkoKQorICAgIHsKKyAgICAgICAgbV9wcm9wZXJ0eVN0b3Jh
Z2VBbGxvY2F0aW9uUG9pbnQgPSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnk7CisgICAgfQorICAg
IAorICAgIGlubGluZSB2b2lkKiBOZXdTcGFjZTo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6
ZV90IHNpemUpCisgICAgeworICAgICAgICBjaGFyKiByZXN1bHQgPSBtX3Byb3BlcnR5U3RvcmFn
ZUFsbG9jYXRpb25Qb2ludDsKKyAgICAgICAgaWYgKHNpemUgPiBQcm9wZXJ0eVN0b3JhZ2VOdXJz
ZXJ5U2l6ZSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIG1fcHJvcGVydHlTdG9yYWdl
QWxsb2NhdGlvblBvaW50ICs9IHNpemU7CisgICAgICAgIGlmICgobV9wcm9wZXJ0eVN0b3JhZ2VB
bGxvY2F0aW9uUG9pbnQgLSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkpID4gUHJvcGVydHlTdG9y
YWdlTnVyc2VyeVNpemUpIHsKKyAgICAgICAgICAgIG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlv
blBvaW50ID0gcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBOZXdTcGFjZTo6aW5Q
cm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIGNoYXIqIGFk
ZHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oYWRkciAtIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeSkgPCBQcm9wZXJ0eVN0
b3JhZ2VOdXJzZXJ5U2l6ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE5ld1NwYWNlOjpmb3JF
YWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKaW5kZXggMTZlNjk4NzUwM2EyNDY5NjA2NmMxMmI1N2I3ZTUzZjNjYzMyYzc0Ni4u
OWI1NWVjZDJjYTExZWU5YjkzNGEwZjJiNmIxZmFmOGIxZDdkZmYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fcmVhbGxvYykKIAog
ICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBh
c09iamVjdChiYXNlVmFsdWUpOwotICAgIGJhc2UtPmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKG9s
ZFNpemUsIG5ld1NpemUpOworICAgIGJhc2UtPmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCpzdGFj
a0ZyYW1lLmdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOwogCiAgICAgcmV0dXJuIGJhc2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYTA5
MTNhNDE5NTdmNThjYzE0MzY5YTAwYWVjNDcxMTkyNzEwNjQ1OC4uMDg2M2YwMTkwMTZhODgzZWZm
MTcyMjY1OTU2OWM4ZTNjZTMyNDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtNTk0LDIxICs1OTQsMjAgQEAgU3RydWN0dXJlKiBKU09iamVjdDo6
Y3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHJldHVybiBt
X2luaGVyaXRvcklELmdldCgpOwogfQogCi12b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCit2b2lkIEpTT2JqZWN0Ojph
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUp
OwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9u
IG1fc3RydWN0dXJlLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2Yg
YSB0cmFuc2l0aW9uLgotICAgIGJvb2wgd2FzSW5saW5lID0gKG9sZFNpemUgPCBKU09iamVjdDo6
YmFzZUV4dGVybmFsU3RvcmFnZUNhcGFjaXR5KTsKLQogICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQ
cm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5U3RvcmFnZTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ug
bmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bbmV3U2l6
ZV07CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IHN0YXRpY19jYXN0
PFByb3BlcnR5U3RvcmFnZT4oZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KG5ld1NpemUgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpKTsKKyAgICBBU1NF
UlQobmV3UHJvcGVydHlTdG9yYWdlKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
bGRTaXplOyArK2kpCiAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlT
dG9yYWdlW2ldOwogCi0gICAgaWYgKCF3YXNJbmxpbmUpCisgICAgaWYgKCFpc1VzaW5nSW5saW5l
U3RvcmFnZSgpICYmICFnbG9iYWxEYXRhLmhlYXAuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KG9s
ZFByb3BlcnR5U3RvcmFnZSkpCiAgICAgICAgIGRlbGV0ZSBbXSBvbGRQcm9wZXJ0eVN0b3JhZ2U7
CiAKICAgICBtX3Byb3BlcnR5U3RvcmFnZSA9IG5ld1Byb3BlcnR5U3RvcmFnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDE0ZDEyMDMxZGUwZGU3YzBmOTQ1
ODZiNzc1YjVlMTVhN2Q3NmE3MGEuLjQyZTAwMWNjY2FmN2JiYjgxMzRiMDFiM2ZlYTU5MzVlZmI5
ZTY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjIx
LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgQ29tcGxUeXBl
IGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBUaHJvdzsgfQogCi0gICAgICAgIHZvaWQg
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsK
KyAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVy
dHlTdG9yYWdlKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOyB9CiAKICAg
ICAgICAgdm9pZCogYWRkcmVzc09mUHJvcGVydHlBdE9mZnNldChzaXplX3Qgb2Zmc2V0KQpAQCAt
NDYzLDcgKzQ2Myw3IEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVyCiAKIGlubGluZSBKU09iamVj
dDo6fkpTT2JqZWN0KCkKIHsKLSAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCisgICAg
aWYgKCFpc1VzaW5nSW5saW5lU3RvcmFnZSgpICYmICFIZWFwOjpoZWFwKHRoaXMpLT5pblByb3Bl
cnR5U3RvcmFnZU51cnNhcnkobV9wcm9wZXJ0eVN0b3JhZ2UpKQogICAgICAgICBkZWxldGUgW10g
bV9wcm9wZXJ0eVN0b3JhZ2U7CiB9CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaQogICAgICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIG9mZnNldCA9IG1fc3RydWN0dXJl
LT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIGlmIChjdXJyZW50Q2FwYWNp
dHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAg
ICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBtX3N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChn
bG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaQogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUobV9z
dHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0KSkgeyAgICAKICAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CisgICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAgICAgICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpA
QCAtNzIxLDcgKzcyMSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBtX3N0cnVjdHVyZS5nZXQoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uLCBvZmZzZXQpOwogCiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KTsKKyAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENh
cGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgQVNT
RVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAg
c2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CkBAIC03ODIsNyArNzgyLDcgQEAg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9z
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9
IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBt
X3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0K
IApAQCAtNzkxLDE0ICs3OTEsMTQgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXQKICAgICBzaXpl
X3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgdmFsdWUpOwog
ICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpCi0gICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0
eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp0cmFu
c2l0aW9uVG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSkKIHsKICAgICBpZiAobV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0g
bmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwg
bmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAg
ICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiB9CiAKQEAgLTg4OSw2
ICs4ODksMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGly
ZWN0KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKIAogICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7
CisgICAgaWYgKEhlYXA6OmhlYXAodGhpcyktPmluUHJvcGVydHlTdG9yYWdlTnVyc2FyeShzdG9y
YWdlKSkgeworICAgICAgICBtX3Byb3BlcnR5U3RvcmFnZSA9IG5ldyBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+W3N0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpXTsKKyAgICAg
ICAgbWVtY3B5KG1fcHJvcGVydHlTdG9yYWdlLCBzdG9yYWdlLCBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlU2l6ZSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKTsKKyAg
ICB9CiAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7
CiAgICAgaWYgKG1faW5oZXJpdG9ySUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106177</attachid>
            <date>2011-09-02 12:49:54 -0700</date>
            <delta_ts>2011-09-02 21:26:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67494-20110902124953.patch</filename>
            <type>text/plain</type>
            <size>16555</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVj
ZDNhYmUyMGMzYmM2YTkzODMyYmNiZjI1YjdiZjA3OGQ0MDc2Y2YuLjA5MmNmZjI5ZjgzMWQ0YjBi
ZmM1YjZhYTYwMmYwNmNlMTQ4YzY0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA5LTAyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5IHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRv
IGEgYnVtcCBhbGxvY2F0b3IgZm9yIHRoZSBpbml0aWFsIG91dCBvZiBsaW5lCisgICAgICAgIHBy
b3BlcnR5IHN0b3JhZ2UuICBUaGlzIGdpdmVzIHVzIHNsaWdodGx5IGZhc3RlciBhbGxvY2F0aW9u
CisgICAgICAgIGZvciBzaG9ydCBsaXZlZCBvYmplY3RzIHRoYXQgbmVlZCBvdXQgb2YgbGluZSBz
dG9yYWdlIGF0CisgICAgICAgIHRoZSBjb3N0IG9mIGFuIGFkZGl0aW9uYWwgbWVtY3B5IHdoZW4g
dGhlIG9iamVjdCBzdXJ2aXZlcworICAgICAgICBhIEdDIHBhc3MuCisKKyAgICAgICAgTm8gcGVy
Zm9ybWFuY2UgaW1wYWN0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmluUHJvcGVydHlTdG9yYWdlTnVyc2FyeSk6Cisg
ICAgICAgICogaGVhcC9OZXdTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjpOZXdT
cGFjZSk6CisgICAgICAgICogaGVhcC9OZXdTcGFjZS5oOgorICAgICAgICAoSlNDOjpOZXdTcGFj
ZTo6cmVzZXRQcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KToKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6
OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6OmluUHJv
cGVydHlTdG9yYWdlTnVyc2FyeSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
On5KU09iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRyYW5zaXRpb25Ubyk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KToKKwogMjAxMS0wOS0wMSAgTWFyayBSb3dl
ICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA2MTQ1MjVlZTk0NGUzOGRjMGNmOWEy
NmRjMDVkZTRmZjg5MWNiNDM3Li42NjcwOTc1NmU0NDFlZjU4MjRkYjk4ZmZhMTI1ZTdhNDc4MjE0
ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTIxNiw2
ICsyMTYsNyBAQCBfX1pOM0pTQzIwY3JlYXRlUmVmZXJlbmNlRXJyb3JFUE5TXzlFeGVjU3RhdGVF
UktOU183VVN0cmluZ0UKIF9fWk4zSlNDMjJnbG9iYWxNZW1vcnlTdGF0aXN0aWNzRXYKIF9fWk4z
SlNDMjJvYmplY3RDb25zdHJ1Y3RvclRhYmxlRQogX19aTjNKU0MyM0Fic3RyYWN0U2FtcGxpbmdD
b3VudGVyNGR1bXBFdgorX19aTjNKU0MyM0Fic3RyYWN0U2FtcGxpbmdDb3VudGVyMzBzX2Fic3Ry
YWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5FCiBfX1pOM0pTQzIzb2JqZWN0UHJvdG9GdW5jVG9TdHJp
bmdFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzIzc2V0VXBTdGF0aWNGdW5jdGlvblNsb3RFUE5T
XzlFeGVjU3RhdGVFUEtOU185SGFzaEVudHJ5RVBOU184SlNPYmplY3RFUktOU18xMElkZW50aWZp
ZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MyNER5bmFtaWNHbG9iYWxPYmplY3RTY29w
ZUMxRVJOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKQEAgLTMyMiw3ICsz
MjMsNyBAQCBfX1pOM0pTQzhKU09iamVjdDE4Z2V0UHJpbWl0aXZlTnVtYmVyRVBOU185RXhlY1N0
YXRlRVJkUk5TXzdKU1ZhbHVlRQogX19aTjNKU0M4SlNPYmplY3QxOWdldE93blByb3BlcnR5TmFt
ZXNFUE5TXzlFeGVjU3RhdGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlv
bk1vZGVFCiBfX1pOM0pTQzhKU09iamVjdDIxZ2V0UHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4z
SlNDOEpTT2JqZWN0MjJmaWxsR2V0dGVyUHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQ
TlNfMTZXcml0ZUJhcnJpZXJCYXNlSU5TXzdVbmtub3duRUVFCi1fX1pOM0pTQzhKU09iamVjdDIz
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VFbW0KK19fWk4zSlNDOEpTT2JqZWN0MjNhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZUVSTlNfMTJKU0dsb2JhbERhdGFFbW0KIF9fWk4zSlNDOEpTT2JqZWN0MjRn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
Uk5TXzE4UHJvcGVydHlEZXNjcmlwdG9yRQogX19aTjNKU0M4SlNPYmplY3QzcHV0RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xv
dEUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFsdWVFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmlu
ZGV4IDJiZTNlY2U1NjhlZDZlNDVlNjQxODM0MGY1YjIwYTNmNjc2ZWU1ZDkuLmU2ODEzMzE0Y2Ew
YjRlNDAxN2U3NDQ3YjVhZTBiZGYxNjA3MTBkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC01NCw3ICs1NCw2IEBAIEVYUE9S
VFMKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNzUmVmUHRyQFZT
dHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1wbEA0QEBaCiAg
ICAgP2FkZFN0YXRpY0dsb2JhbHNASlNHbG9iYWxPYmplY3RASlNDQEBJQUVYUEFVR2xvYmFsUHJv
cGVydHlJbmZvQDEyQEhAWgogICAgID9hbGxvY2F0ZUBIZWFwQEpTQ0BAUUFFUEFYQUFVU2l6ZUNs
YXNzQE5ld1NwYWNlQDJAQFoKLSAgICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RA
SlNDQEBRQUVYSUlAWgogICAgID9hbGxvY2F0ZVNsb3dDYXNlQEhlYXBASlNDQEBBQUVQQVhBQVVT
aXplQ2xhc3NATmV3U3BhY2VAMkBAWgogICAgID9hcHBlbmRAU3RyaW5nQnVpbGRlckBXVEZAQFFB
RVhQQkRJQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYUEJfV0lAWgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA2YTFmYjA3YTcyYWRiMmViZWE5NzVmMGVi
MTY2Mjc5ZThlY2VjYzUwLi5mNTBiNzUyZjkyNTA1Y2IzN2FkMWNmNGE4NGVhMjBiOWU2ODk1ZGVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNjgzLDcgKzY4Myw3IEBAIHZv
aWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkKICAgICAvLyBuZXcgYnl0
ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29yayB3ZWxsIGluIGJlbmNo
bWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5dGVzID0gMiAqIHNpemUoKTsKICAgICBt
X25ld1NwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5
dGVzUGVyQ3ljbGUpKTsKLQorICAgIG1fbmV3U3BhY2UucmVzZXRQcm9wZXJ0eVN0b3JhZ2VOdXJz
YXJ5KCk7CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiAKICAgICAoKm1fYWN0aXZpdHlD
YWxsYmFjaykoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCAyNzdkYzUxNWJmOTM0
N2QyZGM1MWJkYjE5YjYxMTQ5MzE5MDcxNGVmLi43NTEwNDM2NzEzYTg5YjVjNGFhYzkxNDg4MjU2
NzNiYTAxZTIyZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC05MSw2ICs5MSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG5vdGlmeUlzU2FmZVRvQ29sbGVjdCgp
IHsgbV9pc1NhZmVUb0NvbGxlY3QgPSB0cnVlOyB9CiAgICAgICAgIHZvaWQgY29sbGVjdEFsbEdh
cmJhZ2UoKTsKIAorICAgICAgICBpbmxpbmUgdm9pZCogYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
c2l6ZV90KTsKKyAgICAgICAgaW5saW5lIGJvb2wgaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KHZv
aWQqKTsKKwogICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7
CiAKICAgICAgICAgdm9pZCBwcm90ZWN0KEpTVmFsdWUpOwpAQCAtMzU4LDYgKzM2MSwyMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7CiAgICAg
fQogCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVf
dCBieXRlcykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJ5dGVzICUgc2l6ZW9mKEpTVmFsdWUp
KSk7CisgICAgICAgIGlmIChieXRlcyA+PSBOZXdTcGFjZTo6UHJvcGVydHlTdG9yYWdlTnVyc2Vy
eVNpemUpCisgICAgICAgICAgICByZXR1cm4gZmFzdE1hbGxvYyhieXRlcyk7CisgICAgICAgIGlm
ICh2b2lkKiByZXN1bHQgPSBtX25ld1NwYWNlLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGJ5dGVz
KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGNvbGxlY3QoRG9Ob3RTd2Vl
cCk7CisgICAgICAgIHJldHVybiBtX25ld1NwYWNlLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGJ5
dGVzKTsKKyAgICB9CisgICAgCisgICAgaW5saW5lIGJvb2wgSGVhcDo6aW5Qcm9wZXJ0eVN0b3Jh
Z2VOdXJzYXJ5KHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBtX25ld1NwYWNlLmlu
UHJvcGVydHlTdG9yYWdlTnVyc2FyeShwdHIpOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBIZWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL05ld1NwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNw
cAppbmRleCAyZjE2Zjk5NmMyYmZmYjA2NWY0ZjY4ZDdmN2JhNmIzM2YyMTc0MTllLi44NjYwODJk
N2ZkZWNjZDgxOWI0YmEyNTZmYTVkNzRhNDBmNWNiMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTmV3U3BhY2UuY3BwCkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgU3RydWN0dXJlOwogCiBOZXdTcGFjZTo6TmV3U3BhY2UoSGVhcCogaGVhcCkKLSAgICA6IG1f
d2F0ZXJNYXJrKDApCisgICAgOiBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkoc3RhdGljX2Nhc3Q8
Y2hhcio+KGZhc3RNYWxsb2MoUHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpKSkKKyAgICAsIG1f
cHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50KG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeSkK
KyAgICAsIG1fd2F0ZXJNYXJrKDApCiAgICAgLCBtX2hpZ2hXYXRlck1hcmsoMCkKICAgICAsIG1f
aGVhcChoZWFwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3
U3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmgKaW5kZXggYjBl
OTQzMTQ2MTNkNjJiMWExZTkwOThjMTE2N2VhODZkMGFlODQyMy4uMDQ1NTBmMDIzNmNiZDdlNzg0
NGRjYzQ2NmIyZjg5MTEwZjNhZTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTmV3U3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFj
ZS5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShOZXdTcGFjZSk7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IG1heENlbGxTaXplID0gMTAyNDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHB0cmRpZmZf
dCBQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSA9IDEwMjQgKiAxMDI0ICogNDsKIAogICAgICAg
ICBzdHJ1Y3QgU2l6ZUNsYXNzIHsKICAgICAgICAgICAgIFNpemVDbGFzcygpOwpAQCAtNjMsNiAr
NjQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3NG
b3Ioc2l6ZV90KTsKICAgICAgICAgdm9pZCogYWxsb2NhdGUoU2l6ZUNsYXNzJik7CisgICAgICAg
IGlubGluZSB2b2lkKiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3QpOworICAgICAgICBp
bmxpbmUgYm9vbCBpblByb3BlcnR5U3RvcmFnZU51cnNhcnkodm9pZCogcHRyKTsKKyAgICAgICAg
aW5saW5lIHZvaWQgcmVzZXRQcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KCk7CisgICAgICAgIAogICAg
ICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKICAgICAgICAgdm9pZCBhZGRCbG9jayhTaXpl
Q2xhc3MmLCBNYXJrZWRCbG9jayopOwpAQCAtOTEsNiArOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBTaXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNsYXNzZXNbcHJlY2lzZUNvdW50XTsK
ICAgICAgICAgU2l6ZUNsYXNzIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaW1wcmVjaXNlQ291bnRd
OworICAgICAgICBjaGFyKiBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnk7CisgICAgICAgIGNoYXIq
IG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50OwogICAgICAgICBzaXplX3QgbV93YXRl
ck1hcms7CiAgICAgICAgIHNpemVfdCBtX2hpZ2hXYXRlck1hcms7CiAgICAgICAgIEhlYXAqIG1f
aGVhcDsKQEAgLTE2MCw2ICsxNjcsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVy
biBmaXJzdEZyZWVDZWxsOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIE5ld1NwYWNlOjpyZXNl
dFByb3BlcnR5U3RvcmFnZU51cnNhcnkoKQorICAgIHsKKyAgICAgICAgbV9wcm9wZXJ0eVN0b3Jh
Z2VBbGxvY2F0aW9uUG9pbnQgPSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnk7CisgICAgfQorICAg
IAorICAgIGlubGluZSB2b2lkKiBOZXdTcGFjZTo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6
ZV90IHNpemUpCisgICAgeworICAgICAgICBjaGFyKiByZXN1bHQgPSBtX3Byb3BlcnR5U3RvcmFn
ZUFsbG9jYXRpb25Qb2ludDsKKyAgICAgICAgaWYgKHNpemUgPiBQcm9wZXJ0eVN0b3JhZ2VOdXJz
ZXJ5U2l6ZSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIG1fcHJvcGVydHlTdG9yYWdl
QWxsb2NhdGlvblBvaW50ICs9IHNpemU7CisgICAgICAgIGlmICgobV9wcm9wZXJ0eVN0b3JhZ2VB
bGxvY2F0aW9uUG9pbnQgLSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkpID4gUHJvcGVydHlTdG9y
YWdlTnVyc2VyeVNpemUpIHsKKyAgICAgICAgICAgIG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlv
blBvaW50ID0gcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBOZXdTcGFjZTo6aW5Q
cm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIGNoYXIqIGFk
ZHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oYWRkciAtIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeSkgPCBQcm9wZXJ0eVN0
b3JhZ2VOdXJzZXJ5U2l6ZTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE5ld1NwYWNlOjpmb3JF
YWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKaW5kZXggMTZlNjk4NzUwM2EyNDY5NjA2NmMxMmI1N2I3ZTUzZjNjYzMyYzc0Ni4u
OWI1NWVjZDJjYTExZWU5YjkzNGEwZjJiNmIxZmFmOGIxZDdkZmYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fcmVhbGxvYykKIAog
ICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2UgPSBh
c09iamVjdChiYXNlVmFsdWUpOwotICAgIGJhc2UtPmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKG9s
ZFNpemUsIG5ld1NpemUpOworICAgIGJhc2UtPmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCpzdGFj
a0ZyYW1lLmdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUpOwogCiAgICAgcmV0dXJuIGJhc2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYTA5
MTNhNDE5NTdmNThjYzE0MzY5YTAwYWVjNDcxMTkyNzEwNjQ1OC4uMDg2M2YwMTkwMTZhODgzZWZm
MTcyMjY1OTU2OWM4ZTNjZTMyNDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtNTk0LDIxICs1OTQsMjAgQEAgU3RydWN0dXJlKiBKU09iamVjdDo6
Y3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHJldHVybiBt
X2luaGVyaXRvcklELmdldCgpOwogfQogCi12b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCit2b2lkIEpTT2JqZWN0Ojph
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NFUlQobmV3U2l6ZSA+IG9sZFNpemUp
OwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9u
IG1fc3RydWN0dXJlLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0IGJlIGluIHRoZSBtaWRkbGUgb2Yg
YSB0cmFuc2l0aW9uLgotICAgIGJvb2wgd2FzSW5saW5lID0gKG9sZFNpemUgPCBKU09iamVjdDo6
YmFzZUV4dGVybmFsU3RvcmFnZUNhcGFjaXR5KTsKLQogICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQ
cm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5U3RvcmFnZTsKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ug
bmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bbmV3U2l6
ZV07CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IHN0YXRpY19jYXN0
PFByb3BlcnR5U3RvcmFnZT4oZ2xvYmFsRGF0YS5oZWFwLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KG5ld1NpemUgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpKTsKKyAgICBBU1NF
UlQobmV3UHJvcGVydHlTdG9yYWdlKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
bGRTaXplOyArK2kpCiAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlT
dG9yYWdlW2ldOwogCi0gICAgaWYgKCF3YXNJbmxpbmUpCisgICAgaWYgKCFpc1VzaW5nSW5saW5l
U3RvcmFnZSgpICYmICFnbG9iYWxEYXRhLmhlYXAuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzYXJ5KG9s
ZFByb3BlcnR5U3RvcmFnZSkpCiAgICAgICAgIGRlbGV0ZSBbXSBvbGRQcm9wZXJ0eVN0b3JhZ2U7
CiAKICAgICBtX3Byb3BlcnR5U3RvcmFnZSA9IG5ld1Byb3BlcnR5U3RvcmFnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDE0ZDEyMDMxZGUwZGU3YzBmOTQ1
ODZiNzc1YjVlMTVhN2Q3NmE3MGEuLjQyZTAwMWNjY2FmN2JiYjgxMzRiMDFiM2ZlYTU5MzVlZmI5
ZTY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjIx
LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgQ29tcGxUeXBl
IGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBUaHJvdzsgfQogCi0gICAgICAgIHZvaWQg
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsK
KyAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmLCBzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVT
dG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fcHJvcGVy
dHlTdG9yYWdlKSA9PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odGhpcyArIDEpOyB9CiAKICAg
ICAgICAgdm9pZCogYWRkcmVzc09mUHJvcGVydHlBdE9mZnNldChzaXplX3Qgb2Zmc2V0KQpAQCAt
NDYzLDcgKzQ2Myw3IEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVyCiAKIGlubGluZSBKU09iamVj
dDo6fkpTT2JqZWN0KCkKIHsKLSAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCisgICAg
aWYgKCFpc1VzaW5nSW5saW5lU3RvcmFnZSgpICYmICFIZWFwOjpoZWFwKHRoaXMpLT5pblByb3Bl
cnR5U3RvcmFnZU51cnNhcnkobV9wcm9wZXJ0eVN0b3JhZ2UpKQogICAgICAgICBkZWxldGUgW10g
bV9wcm9wZXJ0eVN0b3JhZ2U7CiB9CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaQogICAgICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIG9mZnNldCA9IG1fc3RydWN0dXJl
LT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIGlmIChjdXJyZW50Q2FwYWNp
dHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAg
ICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBtX3N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIHB1dERpcmVjdE9mZnNldChn
bG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCBpbmxpbmUgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaQogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUobV9z
dHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0KSkgeyAgICAKICAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CisgICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRh
LCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7
CiAKICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAgICAgICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpA
QCAtNzIxLDcgKzcyMSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRh
LCBtX3N0cnVjdHVyZS5nZXQoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uLCBvZmZzZXQpOwogCiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KTsKKyAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENh
cGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgQVNT
RVJUKG9mZnNldCA8IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAg
c2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CkBAIC03ODIsNyArNzgyLDcgQEAg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9z
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9
IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBt
X3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERh
dGEsIGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0K
IApAQCAtNzkxLDE0ICs3OTEsMTQgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXQKICAgICBzaXpl
X3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgdmFsdWUpOwog
ICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpCi0gICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0
eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xv
YmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp0cmFu
c2l0aW9uVG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSkKIHsKICAgICBpZiAobV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgIT0g
bmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwg
bmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAg
ICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiB9CiAKQEAgLTg4OSw2
ICs4ODksMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGly
ZWN0KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKIAogICAgIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7
CisgICAgaWYgKEhlYXA6OmhlYXAodGhpcyktPmluUHJvcGVydHlTdG9yYWdlTnVyc2FyeShzdG9y
YWdlKSkgeworICAgICAgICBtX3Byb3BlcnR5U3RvcmFnZSA9IG5ldyBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+W3N0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpXTsKKyAgICAg
ICAgbWVtY3B5KG1fcHJvcGVydHlTdG9yYWdlLCBzdG9yYWdlLCBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlU2l6ZSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKTsKKyAg
ICB9CiAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7
CiAgICAgaWYgKG1faW5oZXJpdG9ySUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106753</attachid>
            <date>2011-09-08 10:00:40 -0700</date>
            <delta_ts>2011-09-08 10:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67494-20110908100039.patch</filename>
            <type>text/plain</type>
            <size>17961</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3NjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdj
NDZjYzcyNzNhYzhhNGQzYTJjY2EzZTM0NjM1ODJjOGQzOWRlYTEuLmEzNTY1ZGU5MzE2YjU4YzRh
NWNlYjA2NTExOTEzNDM5N2FhNDFlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA5LTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5IHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgYnVt
cCBhbGxvY2F0b3IgZm9yIGluaXRpYWwgYWxsb2NhdGlvbiBvZiBwcm9wZXJ0eSBzdG9yYWdlLAor
ICAgICAgICBhbmQgcHJvbW90ZSB0byBmYXN0TWFsbG9jIG1lbW9yeSBvbmx5IGlmIGl0IHN1cnZp
dmVzIGEgR0MgcGFzcy4KKworICAgICAgICBDb21lcyBvdXQgYXMgYSAxJSB3aW4gb24gdjgsIGFu
ZCBpcyBhIHVzZWZ1bCBzdGVwIG9uIHRoZSB3YXkgdG8KKyAgICAgICAgR0MgYWxsb2NhdGlvbiBv
ZiBhbGwgcHJvcGVydHkgc3RvcmFnZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRUb1Zpc2l0U2V0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpIZWFwOjppblByb3BlcnR5U3RvcmFnZU51cnNlcnkpOgorICAg
ICAgICAqIGhlYXAvTmV3U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpOZXdTcGFjZTo6TmV3U3Bh
Y2UpOgorICAgICAgICAqIGhlYXAvTmV3U3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6
OnJlc2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSk6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjph
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjppblByb3Bl
cnR5U3RvcmFnZU51cnNlcnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp+
SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cmFuc2l0aW9uVG8pOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisKIDIwMTEtMDktMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBQUEMgYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjA5NWI4YWE5MWQyY2UwZWRjYzIx
YTAzOTExZWNhM2JlODM0ZGJlYS4uMjZmOTZhYTQzZTRkNjkwNDIwYzlmYTQwM2NkYmUzNjA5NmYw
Yjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yMTQs
NiArMjE0LDcgQEAgX19aTjNKU0MyMGNyZWF0ZVJlZmVyZW5jZUVycm9yRVBOU185RXhlY1N0YXRl
RVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzIyZ2xvYmFsTWVtb3J5U3RhdGlzdGljc0V2CiBfX1pO
M0pTQzIyb2JqZWN0Q29uc3RydWN0b3JUYWJsZUUKIF9fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5n
Q291bnRlcjRkdW1wRXYKK19fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjMwc19hYnN0
cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRQogX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3Ry
aW5nRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBO
U185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjREeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGVDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFCkBAIC0zMTgsNyAr
MzE5LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNT
dGF0ZUVSZFJOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pO
M0pTQzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RF
UE5TXzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5rbm93bkVFRQotX19aTjNKU0M4SlNPYmplY3Qy
M2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlRW1tCitfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2VFUk5TXzEySlNHbG9iYWxEYXRhRW1tCiBfX1pOM0pTQzhKU09iamVjdDI0
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNs
b3RFCiBfX1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpp
bmRleCBjM2I1ZDkyYTQzMjcyNDE4NGRhMjg2ZmM0NWNkZTYxOWI2MDY1ODdlLi5mNzk5NmQ1NjYy
MGNjNmFlYzQxMjA1MzAwMmY2ZjMzNzk5ZDhhNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNTcsNyArNTcsNyBAQCBFWFBP
UlRTCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgog
ICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2JhbFBy
b3BlcnR5SW5mb0AxMkBIQFoKICAgICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWEFBVVNpemVD
bGFzc0BOZXdTcGFjZUAyQEBaCi0gICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0
QEpTQ0BAUUFFWElJQFoKKyAgICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlND
QEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJASUlAWgogICAgID9hbGxvY2F0ZVNsb3dDYXNlQEhlYXBA
SlNDQEBBQUVQQVhBQVVTaXplQ2xhc3NATmV3U3BhY2VAMkBAWgogICAgID9hcHBlbmRAU3RyaW5n
QnVpbGRlckBXVEZAQFFBRVhQQkRJQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBR
QUVYUEJfV0lAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxOTkwYmY1MDQx
NDRkNDI4NDU2ODhjYmViYWIzMjNjODljMzE2OTQ3Li5mNTZjYzBhNzczZGZlZTlhZTRhMTUwOGRi
ZTUzMGQ3YjgzYTc4YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNjkw
LDcgKzY5MCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkK
ICAgICAvLyBuZXcgYnl0ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29y
ayB3ZWxsIGluIGJlbmNobWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5dGVzID0gMiAq
IHNpemUoKTsKICAgICBtX25ld1NwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25h
bEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKLQorICAgIG1fbmV3U3BhY2UucmVzZXRQcm9w
ZXJ0eVN0b3JhZ2VOdXJzZXJ5KCk7CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiAKICAg
ICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCBjODdiMmYzMDEyNWIwNDZlNGQ1YzliYmIxYWU1YTIwNmM0ZDg5NDU4Li5mYjExNzFkYjcxNzYz
ZTFjOGVhNGNjODRkOTI3YWViYTM4NGViM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC03MCw2ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lk
IHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIHZv
aWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOworICAgICAgICAKKyAgICAg
ICAgdm9pZCBhZGRUb1Zpc2l0U2V0KGNvbnN0IEpTQ2VsbCopIHsgfQogCiAgICAgICAgIEhlYXAo
SlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOwogICAgICAgICB+SGVhcCgpOwpAQCAtOTEsNiArOTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3Qo
KSB7IG1faXNTYWZlVG9Db2xsZWN0ID0gdHJ1ZTsgfQogICAgICAgICB2b2lkIGNvbGxlY3RBbGxH
YXJiYWdlKCk7CiAKKyAgICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KHNpemVfdCk7CisgICAgICAgIGlubGluZSBib29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2
b2lkKik7CisKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3Qp
OwogCiAgICAgICAgIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKQEAgLTE2Myw3ICsxNjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXJTbG93Q2FzZShjb25zdCBKU0NlbGwqLCBK
U0NlbGwqKTsKLSAgICAgICAgCisKICNpZiBFTkFCTEUoTEFaWV9CTE9DS19GUkVFSU5HKQogICAg
ICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxh
dGl2ZSk7CiAgICAgICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGltZShkb3VibGUgcmVsYXRpdmUp
OwpAQCAtMzU5LDYgKzM2NCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKHNpemVDbGFzcyk7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBieXRlcykKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KGJ5dGVzICUgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIGlmIChieXRlcyA+PSBOZXdTcGFj
ZTo6UHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IG1fbmV3U3BhY2UuYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoYnl0ZXMpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY29sbGVjdChE
b05vdFN3ZWVwKTsKKyAgICAgICAgcmV0dXJuIG1fbmV3U3BhY2UuYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoYnl0ZXMpOworICAgIH0KKyAgICAKKyAgICBpbmxpbmUgYm9vbCBIZWFwOjppblByb3Bl
cnR5U3RvcmFnZU51cnNlcnkodm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmV3
U3BhY2UuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHB0cik7CisgICAgfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEhlYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3
U3BhY2UuY3BwCmluZGV4IDJmMTZmOTk2YzJiZmZiMDY1ZjRmNjhkN2Y3YmE2YjMzZjIxNzQxOWUu
Ljg2NjA4MmQ3ZmRlY2NkODE5YjRiYTI1NmZhNWQ3NGE0MGY1Y2IzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKIE5ld1NwYWNlOjpOZXdTcGFjZShIZWFwKiBoZWFwKQot
ICAgIDogbV93YXRlck1hcmsoMCkKKyAgICA6IG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeShzdGF0
aWNfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkpKQor
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQobV9wcm9wZXJ0eVN0b3JhZ2VO
dXJzZXJ5KQorICAgICwgbV93YXRlck1hcmsoMCkKICAgICAsIG1faGlnaFdhdGVyTWFyaygwKQog
ICAgICwgbV9oZWFwKGhlYXApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9OZXdTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuaApp
bmRleCBiMGU5NDMxNDYxM2Q2MmIxYTFlOTA5OGMxMTY3ZWE4NmQwYWU4NDIzLi44ZjU0YTk0YjA0
OWY5NWEyZGE2ZjA4NDA4MWE3OTc4Y2M4M2FhYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L05ld1NwYWNlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ld1NwYWNlKTsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSAxMDI0OworICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IFByb3BlcnR5U3RvcmFnZU51cnNlcnlTaXplID0gMTAyNCAqIDEwMjQgKiA0OwogCiAg
ICAgICAgIHN0cnVjdCBTaXplQ2xhc3MgewogICAgICAgICAgICAgU2l6ZUNsYXNzKCk7CkBAIC02
Myw2ICs2NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTaXplQ2xhc3MmIHNpemVD
bGFzc0ZvcihzaXplX3QpOwogICAgICAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKKyAg
ICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCk7CisgICAg
ICAgIGlubGluZSBib29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpOworICAg
ICAgICBpbmxpbmUgdm9pZCByZXNldFByb3BlcnR5U3RvcmFnZU51cnNlcnkoKTsKKyAgICAgICAg
CiAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKIAogICAgICAgICB2b2lkIGFkZEJsb2Nr
KFNpemVDbGFzcyYsIE1hcmtlZEJsb2NrKik7CkBAIC05MSw2ICs5Niw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFNpemVDbGFzcyBtX3ByZWNpc2VTaXplQ2xhc3Nlc1twcmVjaXNlQ291
bnRdOwogICAgICAgICBTaXplQ2xhc3MgbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1tpbXByZWNpc2VD
b3VudF07CisgICAgICAgIGNoYXIqIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeTsKKyAgICAgICAg
Y2hhciogbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQ7CiAgICAgICAgIHNpemVfdCBt
X3dhdGVyTWFyazsKICAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFyazsKICAgICAgICAgSGVh
cCogbV9oZWFwOwpAQCAtMTYwLDYgKzE2NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIGZpcnN0RnJlZUNlbGw7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQgTmV3U3BhY2U6
OnJlc2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSgpCisgICAgeworICAgICAgICBtX3Byb3BlcnR5
U3RvcmFnZUFsbG9jYXRpb25Qb2ludCA9IG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeTsKKyAgICB9
CisgICAgCisgICAgaW5saW5lIHZvaWQqIE5ld1NwYWNlOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGNoYXIqIHJlc3VsdCA9IG1fcHJvcGVydHlT
dG9yYWdlQWxsb2NhdGlvblBvaW50OworICAgICAgICBpZiAoc2l6ZSA+IFByb3BlcnR5U3RvcmFn
ZU51cnNlcnlTaXplKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgbV9wcm9wZXJ0eVN0
b3JhZ2VBbGxvY2F0aW9uUG9pbnQgKz0gc2l6ZTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4obV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQgLSBtX3Byb3BlcnR5U3RvcmFn
ZU51cnNlcnkpID4gUHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpIHsKKyAgICAgICAgICAgIG1f
cHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50ID0gcmVzdWx0OworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wgTmV3U3BhY2U6Omlu
UHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpCisgICAgeworICAgICAgICBjaGFyKiBh
ZGRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGFkZHIgLSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkpIDwgUHJvcGVydHlTdG9y
YWdlTnVyc2VyeVNpemU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBOZXdTcGFjZTo6Zm9yRWFj
aEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByZWNpc2VDb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCmluZGV4IGVjMjg1MjIyYzk4NjhmMjNmNzk0MzZhYmI1MzVhYWRlMDgxNjQ5Y2UuLmMx
MmQwNmMyNGRkNjJhMjBiNTZhOTViNmFkMWYzMWMwMzU4YjIwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xNDgxLDcgKzE0ODEsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihKU09iamVjdCosIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX3JlYWxsb2MpCiAKICAg
ICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICBiYXNlLT5hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShvbGRT
aXplLCBuZXdTaXplKTsKKyAgICBiYXNlLT5hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgqc3RhY2tG
cmFtZS5nbG9iYWxEYXRhLCBvbGRTaXplLCBuZXdTaXplKTsKIAogICAgIHJldHVybiBiYXNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDlhMmZl
ZjUwMTJkMDM0MTUzYzc5ZDI5MDdiMTBkMjQ0NTViMDgyMTcuLjJhYjEwYTQ3YjkyNjM3MmY4YWE2
ZTI2MDY2YWJiYjcxYzdmOTllOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTU5NCwyNCArNTk0LDM0IEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNy
ZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICByZXR1cm4gbV9p
bmhlcml0b3JJRC5nZXQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQordm9pZCBKU09iamVjdDo6YWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xk
U2l6ZSwgc2l6ZV90IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsK
IAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBmdW5jdGlvbiBub3QgcmVseSBvbiBt
X3N0cnVjdHVyZSwgc2luY2UKICAgICAvLyB3ZSBtaWdodCBiZSBpbiB0aGUgbWlkZGxlIG9mIGEg
dHJhbnNpdGlvbi4KLSAgICBib29sIHdhc0lubGluZSA9IChvbGRTaXplIDwgSlNPYmplY3Q6OmJh
c2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7Ci0KICAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJv
cGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5l
d1Byb3BlcnR5U3RvcmFnZSA9IG5ldyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+W25ld1NpemVd
OworICAgIGJvb2wgdXNpbmdOdXJzZXJ5ID0gZ2xvYmFsRGF0YS5oZWFwLmluUHJvcGVydHlTdG9y
YWdlTnVyc2VyeShvbGRQcm9wZXJ0eVN0b3JhZ2UpOworICAgIGJvb2wgbmV3QWxsb2NhdGlvbklu
TnVyc2VyeSA9IHRydWU7CisgICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9
IDA7CisgICAgaWYgKHVzaW5nTnVyc2VyeSkKKyAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0g
c3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9yYWdlPihnbG9iYWxEYXRhLmhlYXAuYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UobmV3U2l6ZSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSkp
OworICAgIGlmICghbmV3UHJvcGVydHlTdG9yYWdlKSB7CisgICAgICAgIG5ld1Byb3BlcnR5U3Rv
cmFnZSA9IG5ldyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+W25ld1NpemVdOworICAgICAgICBu
ZXdBbGxvY2F0aW9uSW5OdXJzZXJ5ID0gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVChuZXdQcm9w
ZXJ0eVN0b3JhZ2UpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9sZFNpemU7ICsr
aSkKICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2VbaV0gPSBvbGRQcm9wZXJ0eVN0b3JhZ2VbaV07
CiAKLSAgICBpZiAoIXdhc0lubGluZSkKKyAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkg
JiYgIXVzaW5nTnVyc2VyeSkKICAgICAgICAgZGVsZXRlIFtdIG9sZFByb3BlcnR5U3RvcmFnZTsK
IAogICAgIG1fcHJvcGVydHlTdG9yYWdlID0gbmV3UHJvcGVydHlTdG9yYWdlOworCisgICAgaWYg
KG5ld0FsbG9jYXRpb25Jbk51cnNlcnkgIT0gdXNpbmdOdXJzZXJ5KQorICAgICAgICBnbG9iYWxE
YXRhLmhlYXAuYWRkVG9WaXNpdFNldCh0aGlzKTsKIH0KIAogYm9vbCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBkNzZiZWZjY2Y1ZjY3ZjNjOTc2YzQyODRl
ZTI1MDk2NWVmYjQzMzBhLi40NGY3NjJlODFjODYyNDVlMTM2YTRmY2Y5YzU2ZWNmODMzMjJhOTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTIyMSw3ICsy
MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNl
cHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7IH0KIAotICAgICAgICB2b2lkIGFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAg
ICAgIHZvaWQgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9s
ZFNpemUsIHNpemVfdCBuZXdTaXplKTsKICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFn
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5U3Rv
cmFnZSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsgfQogCiAgICAgICAg
IHZvaWQqIGFkZHJlc3NPZlByb3BlcnR5QXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKQEAgLTQ3MCw3
ICs0NzAsNyBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcgogCiBpbmxpbmUgSlNPYmplY3Q6On5K
U09iamVjdCgpCiB7Ci0gICAgaWYgKCFpc1VzaW5nSW5saW5lU3RvcmFnZSgpKQorICAgIGlmICgh
aXNVc2luZ0lubGluZVN0b3JhZ2UoKSAmJiAhSGVhcDo6aGVhcCh0aGlzKS0+aW5Qcm9wZXJ0eVN0
b3JhZ2VOdXJzZXJ5KG1fcHJvcGVydHlTdG9yYWdlKSkKICAgICAgICAgZGVsZXRlIFtdIG1fcHJv
cGVydHlTdG9yYWdlOwogfQogCkBAIC02NjQsNyArNjY0LDcgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmkKICAgICAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRk
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwogICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKIAogICAgICAgICBBU1NFUlQob2Zmc2V0IDwgbV9zdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFs
RGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC02NzgsNyArNjc4LDcgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmkKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0
dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9m
ZnNldCkpIHsgICAgCiAgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpOworICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3Vy
cmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAg
ICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpOwogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKQEAgLTcy
OCw3ICs3MjgsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9z
dHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShj
dXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7Cisg
ICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0
eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgIEFTU0VSVChv
ZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHNldFN0
cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNzg5LDcgKzc4OSw3IEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0
cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIDApOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIGFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOworICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBj
dXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsK
ICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKQEAg
LTc5OCwxNCArNzk4LDE0IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0CiAgICAgc2l6ZV90IGN1
cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwog
ICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHZhbHVlKTsKICAgICBp
ZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKQotICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1f
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERh
dGEsIG9mZnNldCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dHJhbnNpdGlv
blRvKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7
CiAgICAgaWYgKG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UobV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIGFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHNl
dFN0cnVjdHVyZShnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogfQogCkBAIC04OTYsNiArODk2
LDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdChT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7
CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOworICAg
IGlmIChIZWFwOjpoZWFwKHRoaXMpLT5pblByb3BlcnR5U3RvcmFnZU51cnNlcnkoc3RvcmFnZSkp
IHsKKyAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2UgPSBuZXcgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPltzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKV07CisgICAgICAgIGlm
IChzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+IG1fc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCkpCisgICAgICAgICAgICBBU1NFUlQoIXN0b3JhZ2VbbV9zdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZVNpemUoKV0pOworICAgICAgICBtZW1jcHkobV9wcm9wZXJ0
eVN0b3JhZ2UsIHN0b3JhZ2UsIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgKiBz
aXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpOworICAgIH0KICAgICBzaXplX3Qgc3Rv
cmFnZVNpemUgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKICAgICBpZiAobV9pbmhlcml0
b3JJRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106754</attachid>
            <date>2011-09-08 10:11:34 -0700</date>
            <delta_ts>2011-09-08 12:43:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67494-20110908101133.patch</filename>
            <type>text/plain</type>
            <size>18271</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3NjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdj
NDZjYzcyNzNhYzhhNGQzYTJjY2EzZTM0NjM1ODJjOGQzOWRlYTEuLmEzNTY1ZGU5MzE2YjU4YzRh
NWNlYjA2NTExOTEzNDM5N2FhNDFlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA5LTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5IHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgYnVt
cCBhbGxvY2F0b3IgZm9yIGluaXRpYWwgYWxsb2NhdGlvbiBvZiBwcm9wZXJ0eSBzdG9yYWdlLAor
ICAgICAgICBhbmQgcHJvbW90ZSB0byBmYXN0TWFsbG9jIG1lbW9yeSBvbmx5IGlmIGl0IHN1cnZp
dmVzIGEgR0MgcGFzcy4KKworICAgICAgICBDb21lcyBvdXQgYXMgYSAxJSB3aW4gb24gdjgsIGFu
ZCBpcyBhIHVzZWZ1bCBzdGVwIG9uIHRoZSB3YXkgdG8KKyAgICAgICAgR0MgYWxsb2NhdGlvbiBv
ZiBhbGwgcHJvcGVydHkgc3RvcmFnZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRUb1Zpc2l0U2V0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpIZWFwOjppblByb3BlcnR5U3RvcmFnZU51cnNlcnkpOgorICAg
ICAgICAqIGhlYXAvTmV3U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpOZXdTcGFjZTo6TmV3U3Bh
Y2UpOgorICAgICAgICAqIGhlYXAvTmV3U3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6
OnJlc2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSk6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjph
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjppblByb3Bl
cnR5U3RvcmFnZU51cnNlcnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp+
SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cmFuc2l0aW9uVG8pOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisKIDIwMTEtMDktMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBQUEMgYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjA5NWI4YWE5MWQyY2UwZWRjYzIx
YTAzOTExZWNhM2JlODM0ZGJlYS4uMjZmOTZhYTQzZTRkNjkwNDIwYzlmYTQwM2NkYmUzNjA5NmYw
Yjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yMTQs
NiArMjE0LDcgQEAgX19aTjNKU0MyMGNyZWF0ZVJlZmVyZW5jZUVycm9yRVBOU185RXhlY1N0YXRl
RVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzIyZ2xvYmFsTWVtb3J5U3RhdGlzdGljc0V2CiBfX1pO
M0pTQzIyb2JqZWN0Q29uc3RydWN0b3JUYWJsZUUKIF9fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5n
Q291bnRlcjRkdW1wRXYKK19fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjMwc19hYnN0
cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRQogX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3Ry
aW5nRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBO
U185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjREeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGVDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFCkBAIC0zMTgsNyAr
MzE5LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNT
dGF0ZUVSZFJOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pO
M0pTQzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RF
UE5TXzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5rbm93bkVFRQotX19aTjNKU0M4SlNPYmplY3Qy
M2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlRW1tCitfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2VFUk5TXzEySlNHbG9iYWxEYXRhRW1tCiBfX1pOM0pTQzhKU09iamVjdDI0
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNs
b3RFCiBfX1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpp
bmRleCBjM2I1ZDkyYTQzMjcyNDE4NGRhMjg2ZmM0NWNkZTYxOWI2MDY1ODdlLi5mNzk5NmQ1NjYy
MGNjNmFlYzQxMjA1MzAwMmY2ZjMzNzk5ZDhhNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNTcsNyArNTcsNyBAQCBFWFBP
UlRTCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgog
ICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2JhbFBy
b3BlcnR5SW5mb0AxMkBIQFoKICAgICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWEFBVVNpemVD
bGFzc0BOZXdTcGFjZUAyQEBaCi0gICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0
QEpTQ0BAUUFFWElJQFoKKyAgICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlND
QEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJASUlAWgogICAgID9hbGxvY2F0ZVNsb3dDYXNlQEhlYXBA
SlNDQEBBQUVQQVhBQVVTaXplQ2xhc3NATmV3U3BhY2VAMkBAWgogICAgID9hcHBlbmRAU3RyaW5n
QnVpbGRlckBXVEZAQFFBRVhQQkRJQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBR
QUVYUEJfV0lAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxOTkwYmY1MDQx
NDRkNDI4NDU2ODhjYmViYWIzMjNjODljMzE2OTQ3Li5mNTZjYzBhNzczZGZlZTlhZTRhMTUwOGRi
ZTUzMGQ3YjgzYTc4YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNjkw
LDcgKzY5MCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkK
ICAgICAvLyBuZXcgYnl0ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29y
ayB3ZWxsIGluIGJlbmNobWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5dGVzID0gMiAq
IHNpemUoKTsKICAgICBtX25ld1NwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25h
bEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKLQorICAgIG1fbmV3U3BhY2UucmVzZXRQcm9w
ZXJ0eVN0b3JhZ2VOdXJzZXJ5KCk7CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiAKICAg
ICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCBjODdiMmYzMDEyNWIwNDZlNGQ1YzliYmIxYWU1YTIwNmM0ZDg5NDU4Li5mYjExNzFkYjcxNzYz
ZTFjOGVhNGNjODRkOTI3YWViYTM4NGViM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC03MCw2ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lk
IHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIHZv
aWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOworICAgICAgICAKKyAgICAg
ICAgdm9pZCBhZGRUb1Zpc2l0U2V0KGNvbnN0IEpTQ2VsbCopIHsgfQogCiAgICAgICAgIEhlYXAo
SlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOwogICAgICAgICB+SGVhcCgpOwpAQCAtOTEsNiArOTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3Qo
KSB7IG1faXNTYWZlVG9Db2xsZWN0ID0gdHJ1ZTsgfQogICAgICAgICB2b2lkIGNvbGxlY3RBbGxH
YXJiYWdlKCk7CiAKKyAgICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KHNpemVfdCk7CisgICAgICAgIGlubGluZSBib29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2
b2lkKik7CisKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3Qp
OwogCiAgICAgICAgIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKQEAgLTE2Myw3ICsxNjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXJTbG93Q2FzZShjb25zdCBKU0NlbGwqLCBK
U0NlbGwqKTsKLSAgICAgICAgCisKICNpZiBFTkFCTEUoTEFaWV9CTE9DS19GUkVFSU5HKQogICAg
ICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxh
dGl2ZSk7CiAgICAgICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGltZShkb3VibGUgcmVsYXRpdmUp
OwpAQCAtMzU5LDYgKzM2NCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKHNpemVDbGFzcyk7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBieXRlcykKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KGJ5dGVzICUgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIGlmIChieXRlcyA+PSBOZXdTcGFj
ZTo6UHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IG1fbmV3U3BhY2UuYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoYnl0ZXMpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY29sbGVjdChE
b05vdFN3ZWVwKTsKKyAgICAgICAgcmV0dXJuIG1fbmV3U3BhY2UuYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoYnl0ZXMpOworICAgIH0KKyAgICAKKyAgICBpbmxpbmUgYm9vbCBIZWFwOjppblByb3Bl
cnR5U3RvcmFnZU51cnNlcnkodm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmV3
U3BhY2UuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHB0cik7CisgICAgfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEhlYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3
U3BhY2UuY3BwCmluZGV4IDJmMTZmOTk2YzJiZmZiMDY1ZjRmNjhkN2Y3YmE2YjMzZjIxNzQxOWUu
Ljg2NjA4MmQ3ZmRlY2NkODE5YjRiYTI1NmZhNWQ3NGE0MGY1Y2IzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKIE5ld1NwYWNlOjpOZXdTcGFjZShIZWFwKiBoZWFwKQot
ICAgIDogbV93YXRlck1hcmsoMCkKKyAgICA6IG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeShzdGF0
aWNfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkpKQor
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQobV9wcm9wZXJ0eVN0b3JhZ2VO
dXJzZXJ5KQorICAgICwgbV93YXRlck1hcmsoMCkKICAgICAsIG1faGlnaFdhdGVyTWFyaygwKQog
ICAgICwgbV9oZWFwKGhlYXApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9OZXdTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuaApp
bmRleCBiMGU5NDMxNDYxM2Q2MmIxYTFlOTA5OGMxMTY3ZWE4NmQwYWU4NDIzLi44ZjU0YTk0YjA0
OWY5NWEyZGE2ZjA4NDA4MWE3OTc4Y2M4M2FhYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L05ld1NwYWNlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ld1NwYWNlKTsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSAxMDI0OworICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IFByb3BlcnR5U3RvcmFnZU51cnNlcnlTaXplID0gMTAyNCAqIDEwMjQgKiA0OwogCiAg
ICAgICAgIHN0cnVjdCBTaXplQ2xhc3MgewogICAgICAgICAgICAgU2l6ZUNsYXNzKCk7CkBAIC02
Myw2ICs2NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTaXplQ2xhc3MmIHNpemVD
bGFzc0ZvcihzaXplX3QpOwogICAgICAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKKyAg
ICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCk7CisgICAg
ICAgIGlubGluZSBib29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpOworICAg
ICAgICBpbmxpbmUgdm9pZCByZXNldFByb3BlcnR5U3RvcmFnZU51cnNlcnkoKTsKKyAgICAgICAg
CiAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKIAogICAgICAgICB2b2lkIGFkZEJsb2Nr
KFNpemVDbGFzcyYsIE1hcmtlZEJsb2NrKik7CkBAIC05MSw2ICs5Niw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFNpemVDbGFzcyBtX3ByZWNpc2VTaXplQ2xhc3Nlc1twcmVjaXNlQ291
bnRdOwogICAgICAgICBTaXplQ2xhc3MgbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1tpbXByZWNpc2VD
b3VudF07CisgICAgICAgIGNoYXIqIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeTsKKyAgICAgICAg
Y2hhciogbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQ7CiAgICAgICAgIHNpemVfdCBt
X3dhdGVyTWFyazsKICAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFyazsKICAgICAgICAgSGVh
cCogbV9oZWFwOwpAQCAtMTYwLDYgKzE2NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIGZpcnN0RnJlZUNlbGw7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQgTmV3U3BhY2U6
OnJlc2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSgpCisgICAgeworICAgICAgICBtX3Byb3BlcnR5
U3RvcmFnZUFsbG9jYXRpb25Qb2ludCA9IG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeTsKKyAgICB9
CisgICAgCisgICAgaW5saW5lIHZvaWQqIE5ld1NwYWNlOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGNoYXIqIHJlc3VsdCA9IG1fcHJvcGVydHlT
dG9yYWdlQWxsb2NhdGlvblBvaW50OworICAgICAgICBpZiAoc2l6ZSA+IFByb3BlcnR5U3RvcmFn
ZU51cnNlcnlTaXplKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgbV9wcm9wZXJ0eVN0
b3JhZ2VBbGxvY2F0aW9uUG9pbnQgKz0gc2l6ZTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4obV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQgLSBtX3Byb3BlcnR5U3RvcmFn
ZU51cnNlcnkpID4gUHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpIHsKKyAgICAgICAgICAgIG1f
cHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50ID0gcmVzdWx0OworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wgTmV3U3BhY2U6Omlu
UHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpCisgICAgeworICAgICAgICBjaGFyKiBh
ZGRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHB0cik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGFkZHIgLSBtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkpIDwgUHJvcGVydHlTdG9y
YWdlTnVyc2VyeVNpemU7CisgICAgfQorICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBOZXdTcGFjZTo6Zm9yRWFj
aEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByZWNpc2VDb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCmluZGV4IGVjMjg1MjIyYzk4NjhmMjNmNzk0MzZhYmI1MzVhYWRlMDgxNjQ5Y2UuLmMx
MmQwNmMyNGRkNjJhMjBiNTZhOTViNmFkMWYzMWMwMzU4YjIwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xNDgxLDcgKzE0ODEsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihKU09iamVjdCosIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX3JlYWxsb2MpCiAKICAg
ICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKLSAgICBiYXNlLT5hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShvbGRT
aXplLCBuZXdTaXplKTsKKyAgICBiYXNlLT5hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgqc3RhY2tG
cmFtZS5nbG9iYWxEYXRhLCBvbGRTaXplLCBuZXdTaXplKTsKIAogICAgIHJldHVybiBiYXNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDlhMmZl
ZjUwMTJkMDM0MTUzYzc5ZDI5MDdiMTBkMjQ0NTViMDgyMTcuLjY3ZGYxYzQwNGZhMjg3M2M0Njhk
YjgyMTA3YjFiNzJlZmQ0Njg1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTU5NCwyNCArNTk0LDQxIEBAIFN0cnVjdHVyZSogSlNPYmplY3Q6OmNy
ZWF0ZUluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICByZXR1cm4gbV9p
bmhlcml0b3JJRC5nZXQoKTsKIH0KIAotdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQordm9pZCBKU09iamVjdDo6YWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2xk
U2l6ZSwgc2l6ZV90IG5ld1NpemUpCiB7CiAgICAgQVNTRVJUKG5ld1NpemUgPiBvbGRTaXplKTsK
IAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBmdW5jdGlvbiBub3QgcmVseSBvbiBt
X3N0cnVjdHVyZSwgc2luY2UKICAgICAvLyB3ZSBtaWdodCBiZSBpbiB0aGUgbWlkZGxlIG9mIGEg
dHJhbnNpdGlvbi4KLSAgICBib29sIHdhc0lubGluZSA9IChvbGRTaXplIDwgSlNPYmplY3Q6OmJh
c2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7Ci0KKyAgICBib29sIHVzaW5nTnVyc2VyeSA9IGds
b2JhbERhdGEuaGVhcC5pblByb3BlcnR5U3RvcmFnZU51cnNlcnkobV9wcm9wZXJ0eVN0b3JhZ2Up
OworICAgIGJvb2wgbmV3QWxsb2NhdGlvbkluTnVyc2VyeSA9IHRydWU7CisgICAgUHJvcGVydHlT
dG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CisgICAgaWYgKHVzaW5nTnVyc2VyeSkgewor
ICAgICAgICBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+
KGdsb2JhbERhdGEuaGVhcC5hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShuZXdTaXplICogc2l6ZW9m
KFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKSk7CisgICAgICAgIC8vIEFsbG9jYXRpb24gcHJv
cGVydHkgc3RvcmFnZSBtaWdodCB0cmlnZ2VyIGEgR0MgdGhhdCB3aWxsIG1vdmUKKyAgICAgICAg
Ly8gc3RvcmFnZSBvdXQgb2YgdGhlIG51cnNhcnkgc28gd2UgY2FuJ3QgdXNlIHRoaXMgbWVtb3J5
LgorICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC5pblByb3BlcnR5U3RvcmFnZU51cnNlcnko
bV9wcm9wZXJ0eVN0b3JhZ2UpKSB7CisgICAgICAgICAgICB1c2luZ051cnNlcnkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG5ld1Byb3BlcnR5U3RvcmFnZSA9IDA7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFuZXdQcm9wZXJ0eVN0b3JhZ2UpIHsKKyAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdl
ID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bbmV3U2l6ZV07CisgICAgICAgIG5ld0Fs
bG9jYXRpb25Jbk51cnNlcnkgPSBmYWxzZTsKKyAgICB9CiAgICAgUHJvcGVydHlTdG9yYWdlIG9s
ZFByb3BlcnR5U3RvcmFnZSA9IG1fcHJvcGVydHlTdG9yYWdlOwotICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdQcm9wZXJ0eVN0b3JhZ2UgPSBuZXcgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPltuZXdT
aXplXTsKKyAgICBBU1NFUlQobmV3UHJvcGVydHlTdG9yYWdlKTsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpCiAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ld
ID0gb2xkUHJvcGVydHlTdG9yYWdlW2ldOwogCi0gICAgaWYgKCF3YXNJbmxpbmUpCisgICAgaWYg
KCFpc1VzaW5nSW5saW5lU3RvcmFnZSgpICYmICF1c2luZ051cnNlcnkpCiAgICAgICAgIGRlbGV0
ZSBbXSBvbGRQcm9wZXJ0eVN0b3JhZ2U7CiAKICAgICBtX3Byb3BlcnR5U3RvcmFnZSA9IG5ld1By
b3BlcnR5U3RvcmFnZTsKKworICAgIGlmIChuZXdBbGxvY2F0aW9uSW5OdXJzZXJ5ICE9IHVzaW5n
TnVyc2VyeSkKKyAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFkZFRvVmlzaXRTZXQodGhpcyk7CiB9
CiAKIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXgg
ZDc2YmVmY2NmNWY2N2YzYzk3NmM0Mjg0ZWUyNTA5NjVlZmI0MzMwYS4uNDRmNzYyZTgxYzg2MjQ1
ZTEzNmE0ZmNmOWM1NmVjZjgzMzIyYTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCkBAIC0yMjEsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFRocm93
OyB9CiAKLSAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6
ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAg
IGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
Pih0aGlzICsgMSk7IH0KIAogICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eUF0T2Zmc2V0
KHNpemVfdCBvZmZzZXQpCkBAIC00NzAsNyArNDcwLDcgQEAgaW5saW5lIEpTT2JqZWN0OjpKU09i
amVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXIKIAogaW5saW5lIEpTT2JqZWN0Ojp+SlNPYmplY3QoKQogewotICAgIGlmICghaXNVc2luZ0lu
bGluZVN0b3JhZ2UoKSkKKyAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgJiYgIUhlYXA6
OmhlYXAodGhpcyktPmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeShtX3Byb3BlcnR5U3RvcmFnZSkp
CiAgICAgICAgIGRlbGV0ZSBbXSBtX3Byb3BlcnR5U3RvcmFnZTsKIH0KIApAQCAtNjY0LDcgKzY2
NCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgICAgIHNpemVfdCBjdXJyZW50Q2Fw
YWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAg
b2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAg
ICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSkKLSAgICAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBh
Y2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICAg
ICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBt
X3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAKICAgICAgICAgQVNTRVJU
KG9mZnNldCA8IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAg
ICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwpAQCAtNjc4LDcg
KzY3OCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgc2l6ZV90IGN1cnJlbnRDYXBh
Y2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIGlmIChT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9F
eGlzdGluZ1N0cnVjdHVyZShtX3N0cnVjdHVyZS5nZXQoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpKSB7ICAgIAogICAgICAgICBpZiAoY3VycmVu
dENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAg
ICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgIGFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICAgICAgc2V0U3RydWN0dXJlKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSk7CkBAIC03MjgsNyArNzI4LDcgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmkKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7CiAKICAgICBpZiAoY3VycmVudENh
cGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAg
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShn
bG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAKICAgICBBU1NFUlQob2Zmc2V0IDwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
QEAgLTc4OSw3ICs3ODksNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdAogICAgIHNpemVfdCBj
dXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsK
ICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCAwKTsKICAgICBpZiAo
Y3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KQotICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEs
IG9mZnNldCwgdmFsdWUpOwogfQogCkBAIC03OTgsMTQgKzc5OCwxNCBAQCBpbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdAogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUt
PmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCB2YWx1ZSk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBtX3N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CisgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJl
bnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAg
IHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KIAogaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnRyYW5zaXRpb25UbyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIGlmIChtX3N0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSAhPSBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpCi0gICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKG1fc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpOworICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgbmV3U3RydWN0
dXJlKTsKIH0KIApAQCAtODk2LDYgKzg5NiwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW5EaXJlY3QoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2Ug
PSBwcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICBpZiAoSGVhcDo6aGVhcCh0aGlzKS0+aW5Qcm9wZXJ0
eVN0b3JhZ2VOdXJzZXJ5KHN0b3JhZ2UpKSB7CisgICAgICAgIG1fcHJvcGVydHlTdG9yYWdlID0g
bmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCldOworICAgICAgICBpZiAoc3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkgPiBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKQorICAgICAgICAg
ICAgQVNTRVJUKCFzdG9yYWdlW21fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCldKTsK
KyAgICAgICAgbWVtY3B5KG1fcHJvcGVydHlTdG9yYWdlLCBzdG9yYWdlLCBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
KTsKKyAgICB9CiAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZVNpemUoKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdl
U2l6ZSk7CiAgICAgaWYgKG1faW5oZXJpdG9ySUQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106773</attachid>
            <date>2011-09-08 12:43:03 -0700</date>
            <delta_ts>2011-09-08 15:08:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67494-20110908124302.patch</filename>
            <type>text/plain</type>
            <size>21498</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3NjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdj
NDZjYzcyNzNhYzhhNGQzYTJjY2EzZTM0NjM1ODJjOGQzOWRlYTEuLmEzNTY1ZGU5MzE2YjU4YzRh
NWNlYjA2NTExOTEzNDM5N2FhNDFlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDExLTA5LTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5IHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgYnVt
cCBhbGxvY2F0b3IgZm9yIGluaXRpYWwgYWxsb2NhdGlvbiBvZiBwcm9wZXJ0eSBzdG9yYWdlLAor
ICAgICAgICBhbmQgcHJvbW90ZSB0byBmYXN0TWFsbG9jIG1lbW9yeSBvbmx5IGlmIGl0IHN1cnZp
dmVzIGEgR0MgcGFzcy4KKworICAgICAgICBDb21lcyBvdXQgYXMgYSAxJSB3aW4gb24gdjgsIGFu
ZCBpcyBhIHVzZWZ1bCBzdGVwIG9uIHRoZSB3YXkgdG8KKyAgICAgICAgR0MgYWxsb2NhdGlvbiBv
ZiBhbGwgcHJvcGVydHkgc3RvcmFnZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRUb1Zpc2l0U2V0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpIZWFwOjppblByb3BlcnR5U3RvcmFnZU51cnNlcnkpOgorICAg
ICAgICAqIGhlYXAvTmV3U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpOZXdTcGFjZTo6TmV3U3Bh
Y2UpOgorICAgICAgICAqIGhlYXAvTmV3U3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6
OnJlc2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSk6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjph
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjppblByb3Bl
cnR5U3RvcmFnZU51cnNlcnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp+
SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cmFuc2l0aW9uVG8pOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisKIDIwMTEtMDktMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBQUEMgYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjA5NWI4YWE5MWQyY2UwZWRjYzIx
YTAzOTExZWNhM2JlODM0ZGJlYS4uMjZmOTZhYTQzZTRkNjkwNDIwYzlmYTQwM2NkYmUzNjA5NmYw
Yjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yMTQs
NiArMjE0LDcgQEAgX19aTjNKU0MyMGNyZWF0ZVJlZmVyZW5jZUVycm9yRVBOU185RXhlY1N0YXRl
RVJLTlNfN1VTdHJpbmdFCiBfX1pOM0pTQzIyZ2xvYmFsTWVtb3J5U3RhdGlzdGljc0V2CiBfX1pO
M0pTQzIyb2JqZWN0Q29uc3RydWN0b3JUYWJsZUUKIF9fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5n
Q291bnRlcjRkdW1wRXYKK19fWk4zSlNDMjNBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjMwc19hYnN0
cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRQogX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3Ry
aW5nRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBO
U185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjREeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGVDMUVSTlNfMTJKU0dsb2JhbERhdGFFUE5TXzE0SlNHbG9iYWxPYmplY3RFCkBAIC0zMTgsNyAr
MzE5LDcgQEAgX19aTjNKU0M4SlNPYmplY3QxOGdldFByaW1pdGl2ZU51bWJlckVQTlNfOUV4ZWNT
dGF0ZUVSZFJOU183SlNWYWx1ZUUKIF9fWk4zSlNDOEpTT2JqZWN0MTlnZXRPd25Qcm9wZXJ0eU5h
bWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRp
b25Nb2RlRQogX19aTjNKU0M4SlNPYmplY3QyMWdldFByb3BlcnR5RGVzY3JpcHRvckVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pO
M0pTQzhKU09iamVjdDIyZmlsbEdldHRlclByb3BlcnR5U2xvdEVSTlNfMTJQcm9wZXJ0eVNsb3RF
UE5TXzE2V3JpdGVCYXJyaWVyQmFzZUlOU183VW5rbm93bkVFRQotX19aTjNKU0M4SlNPYmplY3Qy
M2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlRW1tCitfX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2VFUk5TXzEySlNHbG9iYWxEYXRhRW1tCiBfX1pOM0pTQzhKU09iamVjdDI0
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVy
RVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0M3B1dEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVSTlNfMTVQdXRQcm9wZXJ0eVNs
b3RFCiBfX1pOM0pTQzhKU09iamVjdDNwdXRFUE5TXzlFeGVjU3RhdGVFak5TXzdKU1ZhbHVlRQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpp
bmRleCBjM2I1ZDkyYTQzMjcyNDE4NGRhMjg2ZmM0NWNkZTYxOWI2MDY1ODdlLi5mNzk5NmQ1NjYy
MGNjNmFlYzQxMjA1MzAwMmY2ZjMzNzk5ZDhhNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNTcsNyArNTcsNyBAQCBFWFBP
UlRTCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBW
U3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgog
ICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2JhbFBy
b3BlcnR5SW5mb0AxMkBIQFoKICAgICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWEFBVVNpemVD
bGFzc0BOZXdTcGFjZUAyQEBaCi0gICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0
QEpTQ0BAUUFFWElJQFoKKyAgICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlND
QEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJASUlAWgogICAgID9hbGxvY2F0ZVNsb3dDYXNlQEhlYXBA
SlNDQEBBQUVQQVhBQVVTaXplQ2xhc3NATmV3U3BhY2VAMkBAWgogICAgID9hcHBlbmRAU3RyaW5n
QnVpbGRlckBXVEZAQFFBRVhQQkRJQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBR
QUVYUEJfV0lAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxOTkwYmY1MDQx
NDRkNDI4NDU2ODhjYmViYWIzMjNjODljMzE2OTQ3Li5mNTZjYzBhNzczZGZlZTlhZTRhMTUwOGRi
ZTUzMGQ3YjgzYTc4YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtNjkw
LDcgKzY5MCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkK
ICAgICAvLyBuZXcgYnl0ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29y
ayB3ZWxsIGluIGJlbmNobWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5dGVzID0gMiAq
IHNpemUoKTsKICAgICBtX25ld1NwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25h
bEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKLQorICAgIG1fbmV3U3BhY2UucmVzZXRQcm9w
ZXJ0eVN0b3JhZ2VOdXJzZXJ5KCk7CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiAKICAg
ICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCBjODdiMmYzMDEyNWIwNDZlNGQ1YzliYmIxYWU1YTIwNmM0ZDg5NDU4Li5mYjExNzFkYjcxNzYz
ZTFjOGVhNGNjODRkOTI3YWViYTM4NGViM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC03MCw2ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lk
IHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIHZv
aWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOworICAgICAgICAKKyAgICAg
ICAgdm9pZCBhZGRUb1Zpc2l0U2V0KGNvbnN0IEpTQ2VsbCopIHsgfQogCiAgICAgICAgIEhlYXAo
SlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOwogICAgICAgICB+SGVhcCgpOwpAQCAtOTEsNiArOTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3Qo
KSB7IG1faXNTYWZlVG9Db2xsZWN0ID0gdHJ1ZTsgfQogICAgICAgICB2b2lkIGNvbGxlY3RBbGxH
YXJiYWdlKCk7CiAKKyAgICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KHNpemVfdCk7CisgICAgICAgIGlubGluZSBib29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2
b2lkKik7CisKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3Qp
OwogCiAgICAgICAgIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKQEAgLTE2Myw3ICsxNjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXJTbG93Q2FzZShjb25zdCBKU0NlbGwqLCBK
U0NlbGwqKTsKLSAgICAgICAgCisKICNpZiBFTkFCTEUoTEFaWV9CTE9DS19GUkVFSU5HKQogICAg
ICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxh
dGl2ZSk7CiAgICAgICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGltZShkb3VibGUgcmVsYXRpdmUp
OwpAQCAtMzU5LDYgKzM2NCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGFs
bG9jYXRlKHNpemVDbGFzcyk7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBieXRlcykKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KGJ5dGVzICUgc2l6ZW9mKEpTVmFsdWUpKSk7CisgICAgICAgIGlmIChieXRlcyA+PSBOZXdTcGFj
ZTo6UHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IG1fbmV3U3BhY2UuYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoYnl0ZXMpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgY29sbGVjdChE
b05vdFN3ZWVwKTsKKyAgICAgICAgcmV0dXJuIG1fbmV3U3BhY2UuYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoYnl0ZXMpOworICAgIH0KKyAgICAKKyAgICBpbmxpbmUgYm9vbCBIZWFwOjppblByb3Bl
cnR5U3RvcmFnZU51cnNlcnkodm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbmV3
U3BhY2UuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHB0cik7CisgICAgfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEhlYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3
U3BhY2UuY3BwCmluZGV4IDJmMTZmOTk2YzJiZmZiMDY1ZjRmNjhkN2Y3YmE2YjMzZjIxNzQxOWUu
Ljg2NjA4MmQ3ZmRlY2NkODE5YjRiYTI1NmZhNWQ3NGE0MGY1Y2IzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKIE5ld1NwYWNlOjpOZXdTcGFjZShIZWFwKiBoZWFwKQot
ICAgIDogbV93YXRlck1hcmsoMCkKKyAgICA6IG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeShzdGF0
aWNfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkpKQor
ICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQobV9wcm9wZXJ0eVN0b3JhZ2VO
dXJzZXJ5KQorICAgICwgbV93YXRlck1hcmsoMCkKICAgICAsIG1faGlnaFdhdGVyTWFyaygwKQog
ICAgICwgbV9oZWFwKGhlYXApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9OZXdTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuaApp
bmRleCBiMGU5NDMxNDYxM2Q2MmIxYTFlOTA5OGMxMTY3ZWE4NmQwYWU4NDIzLi5jZjdmZjMxYzM3
NjQxMmQ3YmVjNGQxZDg2MDMxNWVlYTMzZjljYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L05ld1NwYWNlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5ld1NwYWNlKTsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSAxMDI0OworICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IFByb3BlcnR5U3RvcmFnZU51cnNlcnlTaXplID0gMTAyNCAqIDEwMjQgKiA0OwogCiAg
ICAgICAgIHN0cnVjdCBTaXplQ2xhc3MgewogICAgICAgICAgICAgU2l6ZUNsYXNzKCk7CkBAIC02
Myw2ICs2NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTaXplQ2xhc3MmIHNpemVD
bGFzc0ZvcihzaXplX3QpOwogICAgICAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKKyAg
ICAgICAgaW5saW5lIHZvaWQqIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCk7CisgICAg
ICAgIGlubGluZSBib29sIGluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSh2b2lkKiBwdHIpOworICAg
ICAgICBpbmxpbmUgdm9pZCByZXNldFByb3BlcnR5U3RvcmFnZU51cnNlcnkoKTsKKyAgICAgICAg
CiAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKIAogICAgICAgICB2b2lkIGFkZEJsb2Nr
KFNpemVDbGFzcyYsIE1hcmtlZEJsb2NrKik7CkBAIC05MSw2ICs5Niw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFNpemVDbGFzcyBtX3ByZWNpc2VTaXplQ2xhc3Nlc1twcmVjaXNlQ291
bnRdOwogICAgICAgICBTaXplQ2xhc3MgbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1tpbXByZWNpc2VD
b3VudF07CisgICAgICAgIGNoYXIqIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeTsKKyAgICAgICAg
Y2hhciogbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQ7CiAgICAgICAgIHNpemVfdCBt
X3dhdGVyTWFyazsKICAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFyazsKICAgICAgICAgSGVh
cCogbV9oZWFwOwpAQCAtMTYwLDYgKzE2NywzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIGZpcnN0RnJlZUNlbGw7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQgTmV3U3BhY2U6
OnJlc2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSgpCisgICAgeworICAgICAgICBtX3Byb3BlcnR5
U3RvcmFnZUFsbG9jYXRpb25Qb2ludCA9IG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeTsKKyAgICB9
CisgICAgCisgICAgaW5saW5lIHZvaWQqIE5ld1NwYWNlOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGNoYXIqIHJlc3VsdCA9IG1fcHJvcGVydHlT
dG9yYWdlQWxsb2NhdGlvblBvaW50OworICAgICAgICBpZiAoc2l6ZSA+IFByb3BlcnR5U3RvcmFn
ZU51cnNlcnlTaXplKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgbV9wcm9wZXJ0eVN0
b3JhZ2VBbGxvY2F0aW9uUG9pbnQgKz0gc2l6ZTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4obV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9pbnQgLSBtX3Byb3BlcnR5U3RvcmFn
ZU51cnNlcnkpID4gUHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpIHsKKyAgICAgICAgICAgIG1f
cHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBvaW50ID0gcmVzdWx0OworICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBp
bmxpbmUgYm9vbCBOZXdTcGFjZTo6aW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHZvaWQqIHB0cikK
KyAgICB7CisgICAgICAgIGNoYXIqIGFkZHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocHRyKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oYWRkciAtIG1fcHJvcGVydHlTdG9yYWdl
TnVyc2VyeSkgPCBQcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5U2l6ZTsKKyAgICB9CisgICAgCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIE5ld1NwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggZWMyODUyMjJjOTg2OGYyM2Y3OTQz
NmFiYjUzNWFhZGUwODE2NDljZS4uYzEyZDA2YzI0ZGQ2MmEyMGI1NmE5NWI2YWQxZjMxYzAzNThi
MjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTE0ODEsNyAr
MTQ4MSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fcmVhbGxvYykKIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAg
ICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJhc2UtPmFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKG9sZFNpemUsIG5ld1NpemUpOworICAgIGJhc2UtPmFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKCpzdGFja0ZyYW1lLmdsb2JhbERhdGEsIG9sZFNpemUsIG5ld1NpemUp
OwogCiAgICAgcmV0dXJuIGJhc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKaW5kZXggOWEyZmVmNTAxMmQwMzQxNTNjNzlkMjkwN2IxMGQyNDQ1NWIwODIx
Ny4uZjE1ZTQ2OTc5NzIwNjAxZGM2ZmQ3YjRjZmUyNmU0MzdiOTlkZGM2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtNTk0LDI0ICs1OTQsMzQgQEAg
U3RydWN0dXJlKiBKU09iamVjdDo6Y3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQogICAgIHJldHVybiBtX2luaGVyaXRvcklELmdldCgpOwogfQogCi12b2lkIEpTT2Jq
ZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpCit2b2lkIEpTT2JqZWN0OjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKIHsKICAgICBBU1NF
UlQobmV3U2l6ZSA+IG9sZFNpemUpOwogCiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlz
IGZ1bmN0aW9uIG5vdCByZWx5IG9uIG1fc3RydWN0dXJlLCBzaW5jZQogICAgIC8vIHdlIG1pZ2h0
IGJlIGluIHRoZSBtaWRkbGUgb2YgYSB0cmFuc2l0aW9uLgotICAgIGJvb2wgd2FzSW5saW5lID0g
KG9sZFNpemUgPCBKU09iamVjdDo6YmFzZUV4dGVybmFsU3RvcmFnZUNhcGFjaXR5KTsKKyAgICBQ
cm9wZXJ0eVN0b3JhZ2UgbmV3UHJvcGVydHlTdG9yYWdlID0gMDsKKyAgICBpZiAoZ2xvYmFsRGF0
YS5oZWFwLmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeShtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkp
IHsKKyAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlTdG9y
YWdlPihnbG9iYWxEYXRhLmhlYXAuYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UobmV3U2l6ZSAqIHNp
emVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSkpOworICAgICAgICBpZiAoIW5ld1Byb3Bl
cnR5U3RvcmFnZSB8fCAhZ2xvYmFsRGF0YS5oZWFwLmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeSht
X3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBhbGxvY2F0
aW9uIGlzIHRvbyBsYXJnZSB3ZSBkb24ndCBmaXQgaW4gdGhlIG51cnNlcnksIG9yCisgICAgICAg
ICAgICAvLyBpZiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSB0byB0cmlnZ2VycyBhIEdDIHRoYXQg
cHJvbW90ZXMgdXMKKyAgICAgICAgICAgIC8vIHdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgc3RvcmFn
ZSBkaXJlY3RseQorICAgICAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj5bbmV3U2l6ZV07CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAg
ICAgbmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bbmV3
U2l6ZV07CiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xkUHJvcGVydHlTdG9yYWdlID0gbV9wcm9w
ZXJ0eVN0b3JhZ2U7Ci0gICAgUHJvcGVydHlTdG9yYWdlIG5ld1Byb3BlcnR5U3RvcmFnZSA9IG5l
dyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+W25ld1NpemVdOworICAgIFByb3BlcnR5U3RvcmFn
ZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsKKyAgICBBU1NF
UlQobmV3UHJvcGVydHlTdG9yYWdlKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
bGRTaXplOyArK2kpCiAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlW2ldID0gb2xkUHJvcGVydHlT
dG9yYWdlW2ldOwogCi0gICAgaWYgKCF3YXNJbmxpbmUpCisgICAgaWYgKCFpc1VzaW5nSW5saW5l
U3RvcmFnZSgpICYmICFnbG9iYWxEYXRhLmhlYXAuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KG1f
cHJvcGVydHlTdG9yYWdlLmdldCgpKSkKICAgICAgICAgZGVsZXRlIFtdIG9sZFByb3BlcnR5U3Rv
cmFnZTsKIAotICAgIG1fcHJvcGVydHlTdG9yYWdlID0gbmV3UHJvcGVydHlTdG9yYWdlOworICAg
IG1fcHJvcGVydHlTdG9yYWdlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBuZXdQcm9wZXJ0eVN0b3Jh
Z2UpOwogfQogCiBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IGQ3NmJlZmNjZjVmNjdmM2M5NzZjNDI4NGVlMjUwOTY1ZWZiNDMzMGEuLjc5MmE4OGU1
YjY0NzgyOThmYzY3YzI2OGQyNzljMDk3Nzc4MDk4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzIsNiArNzIsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgdHlwZWRlZiBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBQcm9wZXJ0eVN0b3JhZ2U7CiAg
ICAgdHlwZWRlZiBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBDb25zdFByb3BlcnR5
U3RvcmFnZTsKIAorICAgIGNsYXNzIFN0b3JhZ2VCYXJyaWVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGVudW0gVW5jaGVja2VkVGFnIHsgVW5jaGVja2VkIH07CisgICAgICAgIFN0b3JhZ2VCYXJy
aWVyKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5U3RvcmFnZSBzdG9yYWdlKQorICAgICAgICAgICAg
OiBtX3N0b3JhZ2Uoc3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgU3Rv
cmFnZUJhcnJpZXIoUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UsIFVuY2hlY2tlZFRhZykKKyAgICAg
ICAgICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIFByb3BlcnR5U3RvcmFnZSBuZXdT
dG9yYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0b3JhZ2UgPSBuZXdTdG9yYWdlOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXQoUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2Us
IFVuY2hlY2tlZFRhZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9zdG9yYWdlID0gbmV3U3Rv
cmFnZTsKKyAgICAgICAgfQorCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2U7IH0KKyAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fc3RvcmFnZTsgfQorICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
ICptX3N0b3JhZ2U7IH0KKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBvcGVyYXRv
ciooKSB7IHJldHVybiAqbV9zdG9yYWdlOyB9CisgICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4mIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZVtpXTsgfQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBvcGVyYXRvcltdKHNp
emVfdCBpKSB7IHJldHVybiBtX3N0b3JhZ2VbaV07IH0KKworICAgICAgICBDb25zdFByb3BlcnR5
U3RvcmFnZSBnZXQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2U7IH0KKyAgICAgICAgUHJvcGVy
dHlTdG9yYWdlIGdldCgpIHsgcmV0dXJuIG1fc3RvcmFnZTsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgUHJvcGVydHlTdG9yYWdlIG1fc3RvcmFnZTsKKyAgICB9OworCiAgICAgY2xhc3MgSlNP
YmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMjIxLDggKzI1
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2Vw
dGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBUaHJvdzsgfQogCi0gICAgICAgIHZvaWQgYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKLSAgICAg
ICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5U3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9p
ZCo+KHRoaXMgKyAxKTsgfQorICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKEpT
R2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIGJv
b2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPih0aGlzICsgMSk7IH0KIAogICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eUF0T2Zm
c2V0KHNpemVfdCBvZmZzZXQpCiAgICAgICAgIHsKQEAgLTI5NCw3ICszMzEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJv
cGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogICAgICAgICBKU09iamVjdChWUHRyU3RlYWxp
bmdIYWNrVHlwZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCiAgICAgICAgICAgICA6
IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrKQotICAgICAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFn
ZShpbmxpbmVTdG9yYWdlKQorICAgICAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZShpbmxpbmVT
dG9yYWdlLCBTdG9yYWdlQmFycmllcjo6VW5jaGVja2VkKQogICAgICAgICB7CiAgICAgICAgIH0K
IApAQCAtMzA4LDggKzM0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGlzT2Jq
ZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0
UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dHlTdG9yYWdlOyB9Ci0gICAgICAgIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7
IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFn
ZSBwcm9wZXJ0eVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQo
KTsgfQorICAgICAgICBQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgeyByZXR1cm4g
bV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KIAogICAgICAgICBjb25zdCBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAogICAg
ICAgICB7CkBAIC0zMzAsNyArMzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0
IEhhc2hFbnRyeSogZmluZFByb3BlcnR5SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIFN0cnVjdHVyZSogY3JlYXRlSW5o
ZXJpdG9ySUQoSlNHbG9iYWxEYXRhJik7CiAKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG1fcHJv
cGVydHlTdG9yYWdlOworICAgICAgICBTdG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbmhlcml0b3JJRDsKICAgICB9Owog
CkBAIC00NjQsMTQgKzUwMSwxNCBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUg
dmFsdWUpCiAKIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2Up
CiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQotICAgICwgbV9wcm9wZXJ0eVN0
b3JhZ2UoaW5saW5lU3RvcmFnZSkKKyAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEs
IGlubGluZVN0b3JhZ2UpCiB7CiB9CiAKIGlubGluZSBKU09iamVjdDo6fkpTT2JqZWN0KCkKIHsK
LSAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIGRlbGV0ZSBbXSBtX3By
b3BlcnR5U3RvcmFnZTsKKyAgICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgJiYgIUhlYXA6
OmhlYXAodGhpcyktPmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeShtX3Byb3BlcnR5U3RvcmFnZS5n
ZXQoKSkpCisgICAgICAgIGRlbGV0ZSBbXSBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsKIH0KIAog
aW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CkBAIC02NjQsNyArNzAx
LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICAgICAgc2l6ZV90IGN1cnJlbnRDYXBh
Y2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICBv
ZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwogICAgICAg
ICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKQotICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFj
aXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAg
ICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1f
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgICAgICBBU1NFUlQo
b2Zmc2V0IDwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAg
ICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC02NzgsNyAr
NzE1LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICBzaXplX3QgY3VycmVudENhcGFj
aXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0
cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKG1fc3RydWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsgICAgCiAgICAgICAgIGlmIChjdXJyZW50
Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAg
ICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlKTsKQEAgLTcyOCw3ICs3NjUsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2Fw
YWNpdHkgIT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGds
b2JhbERhdGEsIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpKTsKIAogICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpOwogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpA
QCAtNzg5LDcgKzgyNiw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0CiAgICAgc2l6ZV90IGN1
cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwog
ICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIDApOwogICAgIGlmIChj
dXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
Ci0gICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwg
b2Zmc2V0LCB2YWx1ZSk7CiB9CiAKQEAgLTc5OCwxNCArODM1LDE0IEBAIGlubGluZSB2b2lkIEpT
T2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHZhbHVlKTsKICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKKyAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVu
dENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAg
cHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6dHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgaWYgKG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkKLSAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UobV9zdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSk7CisgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG1fc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpOwogICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1
cmUpOwogfQogCkBAIC04OTYsNiArOTMzLDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVj
dDo6dmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9
IHByb3BlcnR5U3RvcmFnZSgpOworICAgIGlmIChIZWFwOjpoZWFwKHRoaXMpLT5pblByb3BlcnR5
U3RvcmFnZU51cnNlcnkoc3RvcmFnZSkpIHsKKyAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0
KG5ldyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+W3N0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpXSwgU3RvcmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA+IG1fc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VTaXplKCkpCisgICAgICAgICAgICBBU1NFUlQoIXN0b3JhZ2VbbV9zdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZVNpemUoKV0pOworICAgICAgICBtZW1jcHkobV9wcm9wZXJ0eVN0
b3JhZ2UuZ2V0KCksIHN0b3JhZ2UsIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkg
KiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPikpOworICAgIH0KICAgICBzaXplX3Qg
c3RvcmFnZVNpemUgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKICAgICBpZiAobV9pbmhl
cml0b3JJRCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106798</attachid>
            <date>2011-09-08 15:08:29 -0700</date>
            <delta_ts>2011-09-08 15:21:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67494-20110908150828.patch</filename>
            <type>text/plain</type>
            <size>30578</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDll
NThhZGU4YWM5Yjg5NzAyMTZlODk4NjkwYzAxMmFlZmY2Y2QwZmIuLjczYzc4NzFiYTBiZmE0NjUz
NTg2MWJhZWEwOWU0MWI2ZWE2Yjg2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUzIEBACisyMDExLTA5LTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5IHN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgYnVt
cCBhbGxvY2F0b3IgZm9yIGluaXRpYWwgYWxsb2NhdGlvbiBvZiBwcm9wZXJ0eSBzdG9yYWdlLAor
ICAgICAgICBhbmQgcHJvbW90ZSB0byBmYXN0TWFsbG9jIG1lbW9yeSBvbmx5IGlmIGl0IHN1cnZp
dmVzIGEgR0MgcGFzcy4KKworICAgICAgICBDb21lcyBvdXQgYXMgYSAxJSB3aW4gb24gdjgsIGFu
ZCBpcyBhIHVzZWZ1bCBzdGVwIG9uIHRoZSB3YXkgdG8KKyAgICAgICAgR0MgYWxsb2NhdGlvbiBv
ZiBhbGwgcHJvcGVydHkgc3RvcmFnZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aW5Qcm9wZXJ0eVN0b3Jh
Z2VOdXJzZXJ5KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgICogaGVh
cC9OZXdTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok5ld1NwYWNlOjpOZXdTcGFjZSk6CisgICAg
ICAgICogaGVhcC9OZXdTcGFjZS5oOgorICAgICAgICAoSlNDOjpOZXdTcGFjZTo6cmVzZXRQcm9w
ZXJ0eVN0b3JhZ2VOdXJzZXJ5KToKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6OmFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6TmV3U3BhY2U6OmluUHJvcGVydHlTdG9yYWdl
TnVyc2VyeSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVG
SU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzVXNpbmdJbmxp
bmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
Ojp+SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0cmFuc2l0aW9uVG8pOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRpcmVjdCk6CisgICAgICAgICogcnVudGltZS9TdG9y
YWdlQmFycmllci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RvcmFnZUJhcnJpZXI6OlN0b3Jh
Z2VCYXJyaWVyKToKKyAgICAgICAgKEpTQzo6U3RvcmFnZUJhcnJpZXI6OnNldCk6CisgICAgICAg
IChKU0M6OlN0b3JhZ2VCYXJyaWVyOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6U3RvcmFn
ZUJhcnJpZXI6Om9wZXJhdG9yKik6CisgICAgICAgIChKU0M6OlN0b3JhZ2VCYXJyaWVyOjpvcGVy
YXRvcltdKToKKyAgICAgICAgKEpTQzo6U3RvcmFnZUJhcnJpZXI6OmdldCk6CisKIDIwMTEtMDkt
MDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxYWU2NjM4
ZjYzZDYwYTlmY2RkMmU0NDlkODZkZWRhYjYzNTkzOGM1Li44YjE4MzRiMTMwZGYyYjczMTZhMGZl
Yzc4ODFjNDFlZjE0Njk2YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNDE3LDYgKzQxNyw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW5NYXJrLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdG9yYWdlQmFycmllci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAppbmRleCBhZmY1ZTdmYmY3MDA2OWM0ZDIzMDU3YjIyODRkMGYxNzQ1YTg5
MWEzLi45MjcyMzYyZGFmODA3MzE2ZDQyZjA1NmUyYzdiZDNjMGQ3NDY3NmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTIxNCw2ICsyMTQsNyBAQCBfX1pO
M0pTQzIwY3JlYXRlUmVmZXJlbmNlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0UK
IF9fWk4zSlNDMjJnbG9iYWxNZW1vcnlTdGF0aXN0aWNzRXYKIF9fWk4zSlNDMjJvYmplY3RDb25z
dHJ1Y3RvclRhYmxlRQogX19aTjNKU0MyM0Fic3RyYWN0U2FtcGxpbmdDb3VudGVyNGR1bXBFdgor
X19aTjNKU0MyM0Fic3RyYWN0U2FtcGxpbmdDb3VudGVyMzBzX2Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyQ2hhaW5FCiBfX1pOM0pTQzIzb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzIzc2V0VXBTdGF0aWNGdW5jdGlvblNsb3RFUE5TXzlFeGVjU3RhdGVFUEtO
U185SGFzaEVudHJ5RVBOU184SlNPYmplY3RFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVy
dHlTbG90RQogX19aTjNKU0MyNER5bmFtaWNHbG9iYWxPYmplY3RTY29wZUMxRVJOU18xMkpTR2xv
YmFsRGF0YUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKQEAgLTMxOCw3ICszMTksNyBAQCBfX1pOM0pT
QzhKU09iamVjdDE4Z2V0UHJpbWl0aXZlTnVtYmVyRVBOU185RXhlY1N0YXRlRVJkUk5TXzdKU1Zh
bHVlRQogX19aTjNKU0M4SlNPYmplY3QxOWdldE93blByb3BlcnR5TmFtZXNFUE5TXzlFeGVjU3Rh
dGVFUk5TXzE3UHJvcGVydHlOYW1lQXJyYXlFTlNfMTVFbnVtZXJhdGlvbk1vZGVFCiBfX1pOM0pT
QzhKU09iamVjdDIxZ2V0UHJvcGVydHlEZXNjcmlwdG9yRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9fWk4zSlNDOEpTT2JqZWN0MjJm
aWxsR2V0dGVyUHJvcGVydHlTbG90RVJOU18xMlByb3BlcnR5U2xvdEVQTlNfMTZXcml0ZUJhcnJp
ZXJCYXNlSU5TXzdVbmtub3duRUVFCi1fX1pOM0pTQzhKU09iamVjdDIzYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2VFbW0KK19fWk4zSlNDOEpTT2JqZWN0MjNhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUVS
TlNfMTJKU0dsb2JhbERhdGFFbW0KIF9fWk4zSlNDOEpTT2JqZWN0MjRnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUk5TXzE4UHJvcGVydHlE
ZXNjcmlwdG9yRQogX19aTjNKU0M4SlNPYmplY3QzcHV0RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJ
ZGVudGlmaWVyRU5TXzdKU1ZhbHVlRVJOU18xNVB1dFByb3BlcnR5U2xvdEUKIF9fWk4zSlNDOEpT
T2JqZWN0M3B1dEVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFsdWVFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IGY0NGM0ZjdhNmNhYzk5ZjNhYmY3MjUxNmJh
YjUxYzI5OGVhZWQ0NDEuLmY3YzIyODdjNzcyNjgzYWNkZjFmNjE0ZTA4ODQzZjU2ZTg0YzBmOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCkBAIC0xMTQsNiAr
MTE0LDcgQEAKICAgICAgICAgICAgICdydW50aW1lL1JvcGVJbXBsLmgnLAogICAgICAgICAgICAg
J3J1bnRpbWUvU2NvcGVDaGFpbi5oJywKICAgICAgICAgICAgICdydW50aW1lL1NtYWxsU3RyaW5n
cy5oJywKKyAgICAgICAgICAgICdydW50aW1lL1N0b3JhZ2VCYXJyaWVyLmgnLAogICAgICAgICAg
ICAgJ3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaCcsCiAgICAgICAgICAgICAncnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDdkMDcwMTVmMTZhNjhlYjdkODE3YTAzMDgxMGQ3
YWVkZmQ4MDIxZTYuLjE3ZTRlOGRjYWFmMDE1MWU4YTNkZWM1YzM5Nzk1MWI4MDgwM2I3MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVm
CkBAIC01Nyw3ICs1Nyw3IEBAIEVYUE9SVFMKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBK
U0NAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRl
QDJAUEFWU3RyaW5nSW1wbEA0QEBaCiAgICAgP2FkZFN0YXRpY0dsb2JhbHNASlNHbG9iYWxPYmpl
Y3RASlNDQEBJQUVYUEFVR2xvYmFsUHJvcGVydHlJbmZvQDEyQEhAWgogICAgID9hbGxvY2F0ZUBI
ZWFwQEpTQ0BAUUFFUEFYQUFVU2l6ZUNsYXNzQE5ld1NwYWNlQDJAQFoKLSAgICA/YWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2VASlNPYmplY3RASlNDQEBRQUVYSUlAWgorICAgID9hbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZUBKU09iamVjdEBKU0NAQFFBRVhBQVZKU0dsb2JhbERhdGFAMkBJSUBaCiAgICAg
P2FsbG9jYXRlU2xvd0Nhc2VASGVhcEBKU0NAQEFBRVBBWEFBVVNpemVDbGFzc0BOZXdTcGFjZUAy
QEBaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCRElAWgogICAgID9hcHBl
bmRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQl9XSUBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGZjMTkzMDQ3Y2Y0ZDAyZjVlNDg4ZDUxMWYwY2VjYmQxZjJlZGMwMzkuLjI3Y2Jl
MWU0MjMzZTdhNWVhMzExNzg0MjM0ODhkN2U5NTM1ZTVhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00MTYsNiArNDE2LDcgQEAKIAkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENB
IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxs
b2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTc2QzUxNzYxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzZDNTE3NDExODI3NDhEMDA3
MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLzsgfTsKIAkJQTc2RjU0QTMxM0IyOEFBQjAwRUYy
QkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmll
ci5oICovOyB9OworCQlBNzgxRTM1OTE0MTk3MEM3MDAwOTREOTAgLyogU3RvcmFnZUJhcnJpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3ODFFMzU4
MTQxOTcwQzcwMDA5NEQ5MCAvKiBTdG9yYWdlQmFycmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAv
KiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0E3RUU3NDExQjk4QjhEMDA2NUExNEYgLyogQVNUQnVpbGRlci5oICovOyB9OwogCQlB
Nzg0QTI2MjExRDE2NjIyMDA1Nzc2QUMgLyogSlNQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBN0VFNzUxMUI5OEI4RDAwNjVBMTRGIC8q
IEpTUGFyc2VyLmNwcCAqLzsgfTsKIAkJQTc4NEEyNjMxMUQxNjYyMjAwNTc3NkFDIC8qIEpTUGFy
c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E3
RUU3NjExQjk4QjhEMDA2NUExNEYgLyogSlNQYXJzZXIuaCAqLzsgfTsKQEAgLTExODIsNiArMTE4
Myw3IEBACiAJCUE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQXJpdGhtZXRpYzMy
XzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2QzUxNzQxMTgyNzQ4RDAw
NzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSW50ZXJmYWNlSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NkY1
NEEyMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSklUV3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3ODFFMzU4MTQxOTcwQzcwMDA5NEQ5MCAvKiBTdG9yYWdlQmFycmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQmFycmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzkxRUYyNjBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRl
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCeXRlQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc5MUVGMjcwRjExRTA3OTAwQUUxRjY4IC8q
IEpTQnl0ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Qnl0ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc5RURCMDgxMTUz
MUNENjAwMTlFOTEyIC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU09iamVjdFJlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxMDQsNiArMjEwNiw3IEBACiAJCQkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUy
IC8qIFNjb3BlQ2hhaW5NYXJrLmggKi8sCiAJCQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8q
IFNtYWxsU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZBIC8qIFNt
YWxsU3RyaW5ncy5oICovLAorCQkJCUE3ODFFMzU4MTQxOTcwQzcwMDA5NEQ5MCAvKiBTdG9yYWdl
QmFycmllci5oICovLAogCQkJCUE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5jcHAgKi8sCiAJCQkJQTczMEI2MTAxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmlj
dEV2YWxBY3RpdmF0aW9uLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0
cmluZ0NvbnN0cnVjdG9yLmNwcCAqLywKQEAgLTI3NDgsNiArMjc1MSw3IEBACiAJCQkJODY2NzM5
RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM2NkJBRTQxM0Y0OTJDQzAwQzIzRkFFIC8qIENvbXBpbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0JDMEM4MjE0MDYwOEIwMDBCMUJCNzEgLyogQ2hlY2tlZEFyaXRobWV0aWMuaCBp
biBIZWFkZXJzICovLAorCQkJCUE3ODFFMzU5MTQxOTcwQzcwMDA5NEQ5MCAvKiBTdG9yYWdlQmFy
cmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IDE5OTBiZjUwNDE0NGQ0Mjg0NTY4OGNiZWJhYjMyM2M4OWMzMTY5NDcuLmY1NmNjMGE3NzNkZmVl
OWFlNGExNTA4ZGJlNTMwZDdiODNhNzhiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3
ZWVwVG9nZ2xlKQogICAgIC8vIG5ldyBieXRlcyBhbGxvY2F0ZWQpIHByb3BvcnRpb24sIGFuZCBz
ZWVtcyB0byB3b3JrIHdlbGwgaW4gYmVuY2htYXJrcy4KICAgICBzaXplX3QgcHJvcG9ydGlvbmFs
Qnl0ZXMgPSAyICogc2l6ZSgpOwogICAgIG1fbmV3U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgo
cHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwotCisgICAgbV9uZXdTcGFj
ZS5yZXNldFByb3BlcnR5U3RvcmFnZU51cnNlcnkoKTsKICAgICBKQVZBU0NSSVBUQ09SRV9HQ19F
TkQoKTsKIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCmluZGV4IGM4N2IyZjMwMTI1YjA0NmU0ZDVjOWJiYjFhZTVhMjA2YzRkODk0NTguLmVm
NWU2ZDg2YWIwZDQzNzkwZjRlMTdmNThjMzJhNjBiNjY0OTUxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKQEAgLTkxLDYgKzkxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkgeyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0K
ICAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCisgICAgICAgIGlubGluZSB2b2lk
KiBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3QpOworICAgICAgICBpbmxpbmUgYm9vbCBp
blByb3BlcnR5U3RvcmFnZU51cnNlcnkodm9pZCopOworCiAgICAgICAgIHZvaWQgcmVwb3J0RXh0
cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsKIAogICAgICAgICB2b2lkIHByb3RlY3QoSlNWYWx1
ZSk7CkBAIC0xNjMsNyArMTY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVy
RmlsZSYgcmVnaXN0ZXJGaWxlKCk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVy
U2xvd0Nhc2UoY29uc3QgSlNDZWxsKiwgSlNDZWxsKik7Ci0gICAgICAgIAorCiAjaWYgRU5BQkxF
KExBWllfQkxPQ0tfRlJFRUlORykKICAgICAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hp
bGVIb2xkaW5nTG9jayhkb3VibGUgcmVsYXRpdmUpOwogICAgICAgICB2b2lkIHdhaXRGb3JSZWxh
dGl2ZVRpbWUoZG91YmxlIHJlbGF0aXZlKTsKQEAgLTM1OSw2ICszNjIsMjIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOwogICAgIH0KIAorICAg
IGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3QgYnl0ZXMp
CisgICAgeworICAgICAgICBBU1NFUlQoIShieXRlcyAlIHNpemVvZihKU1ZhbHVlKSkpOworICAg
ICAgICBpZiAoYnl0ZXMgPj0gTmV3U3BhY2U6OlByb3BlcnR5U3RvcmFnZU51cnNlcnlTaXplKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSBtX25ld1Nw
YWNlLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGJ5dGVzKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIGNvbGxlY3QoRG9Ob3RTd2VlcCk7CisgICAgICAgIHJldHVybiBtX25l
d1NwYWNlLmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGJ5dGVzKTsKKyAgICB9CisgICAgCisgICAg
aW5saW5lIGJvb2wgSGVhcDo6aW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHZvaWQqIHB0cikKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX25ld1NwYWNlLmluUHJvcGVydHlTdG9yYWdlTnVyc2VyeShw
dHIpOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBIZWFwX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDhhYmVkYWQ5NWRhZjFi
ZjhiODY5MmUwYzJmMDBlY2EzMTg2NzdjYjguLjZhODU1MGJkMTQ3ZjQ1NzFiNjgyOWZiYjg4MDdi
ZDEzNzczZTdkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApA
QCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIHVpbnRwdHJfdCBC
aXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBLQiA9IDEwMjQ7CisgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBNQiA9IDEwMjQgKiAxMDI0OwogICAgIAogICAgIC8vIEEgbWFya2VkIGJsb2Nr
IGlzIGEgcGFnZS1hbGlnbmVkIGNvbnRhaW5lciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4K
ICAgICAvLyBPYmplY3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9mIHRoZSBtYXJrZWQg
YmxvY2suIEZvciBhIGdpdmVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9OZXdTcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAK
aW5kZXggMmYxNmY5OTZjMmJmZmIwNjVmNGY2OGQ3ZjdiYTZiMzNmMjE3NDE5ZS4uODY2MDgyZDdm
ZGVjY2Q4MTliNGJhMjU2ZmE1ZDc0YTQwZjVjYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL05ld1NwYWNlLmNwcApAQCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFN0cnVjdHVyZTsKIAogTmV3U3BhY2U6Ok5ld1NwYWNlKEhlYXAqIGhlYXApCi0gICAgOiBtX3dh
dGVyTWFyaygwKQorICAgIDogbV9wcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHN0YXRpY19jYXN0PGNo
YXIqPihmYXN0TWFsbG9jKFByb3BlcnR5U3RvcmFnZU51cnNlcnlTaXplKSkpCisgICAgLCBtX3By
b3BlcnR5U3RvcmFnZUFsbG9jYXRpb25Qb2ludChtX3Byb3BlcnR5U3RvcmFnZU51cnNlcnkpCisg
ICAgLCBtX3dhdGVyTWFyaygwKQogICAgICwgbV9oaWdoV2F0ZXJNYXJrKDApCiAgICAgLCBtX2hl
YXAoaGVhcCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1Nw
YWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oCmluZGV4IGIwZTk0
MzE0NjEzZDYyYjFhMWU5MDk4YzExNjdlYTg2ZDBhZTg0MjMuLmYyMmQ3NzBhNTdlMjg0Yzk1YjRh
NDFmM2QzYjViYmUxNmU1ZjI5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL05ld1NwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2Uu
aApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTmV3U3BhY2UpOwogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhDZWxsU2l6ZSA9IDEwMjQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgUHJv
cGVydHlTdG9yYWdlTnVyc2VyeVNpemUgPSA0ICogTUI7CiAKICAgICAgICAgc3RydWN0IFNpemVD
bGFzcyB7CiAgICAgICAgICAgICBTaXplQ2xhc3MoKTsKQEAgLTYzLDYgKzY0LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CiAg
ICAgICAgIHZvaWQqIGFsbG9jYXRlKFNpemVDbGFzcyYpOworICAgICAgICBpbmxpbmUgdm9pZCog
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90KTsKKyAgICAgICAgaW5saW5lIGJvb2wgaW5Q
cm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KHZvaWQqIHB0cik7CisgICAgICAgIGlubGluZSB2b2lkIHJl
c2V0UHJvcGVydHlTdG9yYWdlTnVyc2VyeSgpOworICAgICAgICAKICAgICAgICAgdm9pZCByZXNl
dEFsbG9jYXRvcigpOwogCiAgICAgICAgIHZvaWQgYWRkQmxvY2soU2l6ZUNsYXNzJiwgTWFya2Vk
QmxvY2sqKTsKQEAgLTkxLDYgKzk2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU2l6
ZUNsYXNzIG1fcHJlY2lzZVNpemVDbGFzc2VzW3ByZWNpc2VDb3VudF07CiAgICAgICAgIFNpemVD
bGFzcyBtX2ltcHJlY2lzZVNpemVDbGFzc2VzW2ltcHJlY2lzZUNvdW50XTsKKyAgICAgICAgY2hh
ciogbV9wcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5OworICAgICAgICBjaGFyKiBtX3Byb3BlcnR5U3Rv
cmFnZUFsbG9jYXRpb25Qb2ludDsKICAgICAgICAgc2l6ZV90IG1fd2F0ZXJNYXJrOwogICAgICAg
ICBzaXplX3QgbV9oaWdoV2F0ZXJNYXJrOwogICAgICAgICBIZWFwKiBtX2hlYXA7CkBAIC0xNjAs
NiArMTY3LDMwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmlyc3RGcmVlQ2Vs
bDsKICAgICB9CiAKKyAgICBpbmxpbmUgdm9pZCBOZXdTcGFjZTo6cmVzZXRQcm9wZXJ0eVN0b3Jh
Z2VOdXJzZXJ5KCkKKyAgICB7CisgICAgICAgIG1fcHJvcGVydHlTdG9yYWdlQWxsb2NhdGlvblBv
aW50ID0gbV9wcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5OworICAgIH0KKyAgICAKKyAgICBpbmxpbmUg
dm9pZCogTmV3U3BhY2U6OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBzaXplKQorICAg
IHsKKyAgICAgICAgY2hhciogcmVzdWx0ID0gbV9wcm9wZXJ0eVN0b3JhZ2VBbGxvY2F0aW9uUG9p
bnQ7CisgICAgICAgIGlmIChzaXplID4gUHJvcGVydHlTdG9yYWdlTnVyc2VyeVNpemUpCisgICAg
ICAgICAgICBDUkFTSCgpOworICAgICAgICBtX3Byb3BlcnR5U3RvcmFnZUFsbG9jYXRpb25Qb2lu
dCArPSBzaXplOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3Byb3BlcnR5U3Rv
cmFnZUFsbG9jYXRpb25Qb2ludCAtIG1fcHJvcGVydHlTdG9yYWdlTnVyc2VyeSkgPiBQcm9wZXJ0
eVN0b3JhZ2VOdXJzZXJ5U2l6ZSkgeworICAgICAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VBbGxv
Y2F0aW9uUG9pbnQgPSByZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlubGluZSBib29sIE5ld1NwYWNl
OjppblByb3BlcnR5U3RvcmFnZU51cnNlcnkodm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgY2hh
ciogYWRkciA9IHN0YXRpY19jYXN0PGNoYXIqPihwdHIpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihhZGRyIC0gbV9wcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KSA8IFByb3BlcnR5
U3RvcmFnZU51cnNlcnlTaXplOworICAgIH0KKyAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTmV3U3BhY2U6OmZv
ckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAppbmRleCBlYzI4NTIyMmM5ODY4ZjIzZjc5NDM2YWJiNTM1YWFkZTA4MTY0OWNl
Li5jMTJkMDZjMjRkZDYyYTIwYjU2YTk1YjZhZDFmMzFjMDM1OGIyMGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMTQ4MSw3ICsxNDgxLDcgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9yZWFsbG9jKQog
CiAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZSA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYmFzZS0+YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
b2xkU2l6ZSwgbmV3U2l6ZSk7CisgICAgYmFzZS0+YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKnN0
YWNrRnJhbWUuZ2xvYmFsRGF0YSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CiAKICAgICByZXR1cm4gYmFz
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA5
YTJmZWY1MDEyZDAzNDE1M2M3OWQyOTA3YjEwZDI0NDU1YjA4MjE3Li44MzUzMGYyYWIxNzI1OTFh
N2ZmMmI5YmE5ZmZkNzFjOGUyNTkxNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCkBAIC01OTQsMjQgKzU5NCwzNCBAQCBTdHJ1Y3R1cmUqIEpTT2JqZWN0
OjpjcmVhdGVJbmhlcml0b3JJRChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgcmV0dXJu
IG1faW5oZXJpdG9ySUQuZ2V0KCk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKK3ZvaWQgSlNPYmplY3Q6
OmFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90
IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogewogICAgIEFTU0VSVChuZXdTaXplID4gb2xkU2l6
ZSk7CiAKICAgICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMgZnVuY3Rpb24gbm90IHJlbHkg
b24gbV9zdHJ1Y3R1cmUsIHNpbmNlCiAgICAgLy8gd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBv
ZiBhIHRyYW5zaXRpb24uCi0gICAgYm9vbCB3YXNJbmxpbmUgPSAob2xkU2l6ZSA8IEpTT2JqZWN0
OjpiYXNlRXh0ZXJuYWxTdG9yYWdlQ2FwYWNpdHkpOworICAgIFByb3BlcnR5U3RvcmFnZSBuZXdQ
cm9wZXJ0eVN0b3JhZ2UgPSAwOworICAgIGlmIChnbG9iYWxEYXRhLmhlYXAuaW5Qcm9wZXJ0eVN0
b3JhZ2VOdXJzZXJ5KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSkgeworICAgICAgICBuZXdQcm9w
ZXJ0eVN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KGdsb2JhbERhdGEuaGVh
cC5hbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShuZXdTaXplICogc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pKSk7CisgICAgICAgIGlmICghbmV3UHJvcGVydHlTdG9yYWdlIHx8ICFnbG9i
YWxEYXRhLmhlYXAuaW5Qcm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KG1fcHJvcGVydHlTdG9yYWdlLmdl
dCgpKSkgeworICAgICAgICAgICAgLy8gSWYgYWxsb2NhdGlvbiBmYWlsZWQgYmVjYXVzZSBpdCdz
IHRvbyBiaWcsIG9yIGl0IHRyaWdnZXJlZCBhIEdDCisgICAgICAgICAgICAvLyB0aGF0IHByb21v
dGVkIHVzIHRvIG9sZCBzcGFjZSwgd2UgbmVlZCB0byBhbGxvY2F0ZSBvdXIgcHJvcGVydHkKKyAg
ICAgICAgICAgIC8vIHN0b3JhZ2UgaW4gb2xkIHNwYWNlLgorICAgICAgICAgICAgbmV3UHJvcGVy
dHlTdG9yYWdlID0gbmV3IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj5bbmV3U2l6ZV07CisgICAg
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbmV3UHJvcGVydHlTdG9yYWdlID0gbmV3IFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj5bbmV3U2l6ZV07CiAKLSAgICBQcm9wZXJ0eVN0b3JhZ2Ugb2xk
UHJvcGVydHlTdG9yYWdlID0gbV9wcm9wZXJ0eVN0b3JhZ2U7Ci0gICAgUHJvcGVydHlTdG9yYWdl
IG5ld1Byb3BlcnR5U3RvcmFnZSA9IG5ldyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+W25ld1Np
emVdOworICAgIFByb3BlcnR5U3RvcmFnZSBvbGRQcm9wZXJ0eVN0b3JhZ2UgPSBtX3Byb3BlcnR5
U3RvcmFnZS5nZXQoKTsKKyAgICBBU1NFUlQobmV3UHJvcGVydHlTdG9yYWdlKTsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpCiAgICAgICAgbmV3UHJvcGVydHlT
dG9yYWdlW2ldID0gb2xkUHJvcGVydHlTdG9yYWdlW2ldOwogCi0gICAgaWYgKCF3YXNJbmxpbmUp
CisgICAgaWYgKCFpc1VzaW5nSW5saW5lU3RvcmFnZSgpICYmICFnbG9iYWxEYXRhLmhlYXAuaW5Q
cm9wZXJ0eVN0b3JhZ2VOdXJzZXJ5KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSkKICAgICAgICAg
ZGVsZXRlIFtdIG9sZFByb3BlcnR5U3RvcmFnZTsKIAotICAgIG1fcHJvcGVydHlTdG9yYWdlID0g
bmV3UHJvcGVydHlTdG9yYWdlOworICAgIG1fcHJvcGVydHlTdG9yYWdlLnNldChnbG9iYWxEYXRh
LCB0aGlzLCBuZXdQcm9wZXJ0eVN0b3JhZ2UpOwogfQogCiBib29sIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGQ3NmJlZmNjZjVmNjdmM2M5NzZjNDI4NGVl
MjUwOTY1ZWZiNDMzMGEuLjgxMDU3ODJkOTBkYmYzMzcwZjE4OWViYjRiOWVkMGVlY2Q2MDA3MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xv
dC5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdG9yYWdlQmFycmllci5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC02OSw5ICs3MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBTZXR0ZXIgICAgICAgPSAxIDw8IDYgICAvLyBwcm9wZXJ0eSBpcyBhIHNldHRlcgogICAg
IH07CiAKLSAgICB0eXBlZGVmIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3Rv
cmFnZTsKLSAgICB0eXBlZGVmIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0
UHJvcGVydHlTdG9yYWdlOwotCiAgICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwpAQCAtMjIxLDggKzIxOSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUoKSBjb25zdCB7IHJldHVy
biBUaHJvdzsgfQogCi0gICAgICAgIHZvaWQgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90
IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKTsKLSAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3Rv
cmFnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5
U3RvcmFnZSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsgfQorICAgICAg
ICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRT
aXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2Uo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3Jh
Z2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0aGlzICsgMSk7IH0KIAogICAg
ICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eUF0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiAgICAg
ICAgIHsKQEAgLTI5NCw3ICsyOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmpl
Y3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UpOwogICAgICAgICBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSwgUHJvcGVydHlTdG9y
YWdlIGlubGluZVN0b3JhZ2UpCiAgICAgICAgICAgICA6IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNr
KQotICAgICAgICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZShpbmxpbmVTdG9yYWdlKQorICAgICAg
ICAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZShpbmxpbmVTdG9yYWdlLCBTdG9yYWdlQmFycmllcjo6
VW5jaGVja2VkKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtMzA4LDggKzMwNiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNT
dHJpbmcoKTsKICAgICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5
U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlOyB9Ci0gICAgICAgIFBy
b3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFn
ZTsgfQorICAgICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsgfQorICAgICAgICBQcm9wZXJ0eVN0
b3JhZ2UgcHJvcGVydHlTdG9yYWdlKCkgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7
IH0KIAogICAgICAgICBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZv
ck9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAogICAgICAgICB7CkBAIC0zMzAsNyArMzI4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZmluZFByb3BlcnR5
SGFzaEVudHJ5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29u
c3Q7CiAgICAgICAgIFN0cnVjdHVyZSogY3JlYXRlSW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJik7
CiAKLSAgICAgICAgUHJvcGVydHlTdG9yYWdlIG1fcHJvcGVydHlTdG9yYWdlOworICAgICAgICBT
dG9yYWdlQmFycmllciBtX3Byb3BlcnR5U3RvcmFnZTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9pbmhlcml0b3JJRDsKICAgICB9OwogCkBAIC00NjQsMTQgKzQ2MiwxNCBAQCBp
bmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAKIGlubGluZSBKU09iamVj
dDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlKQotICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSkKKyAg
ICAsIG1fcHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHRoaXMsIGlubGluZVN0b3JhZ2UpCiB7
CiB9CiAKIGlubGluZSBKU09iamVjdDo6fkpTT2JqZWN0KCkKIHsKLSAgICBpZiAoIWlzVXNpbmdJ
bmxpbmVTdG9yYWdlKCkpCi0gICAgICAgIGRlbGV0ZSBbXSBtX3Byb3BlcnR5U3RvcmFnZTsKKyAg
ICBpZiAoIWlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgJiYgIUhlYXA6OmhlYXAodGhpcyktPmluUHJv
cGVydHlTdG9yYWdlTnVyc2VyeShtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKSkpCisgICAgICAgIGRl
bGV0ZSBbXSBtX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNP
YmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CkBAIC02NjQsNyArNjYyLDcgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmkKICAgICAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwogICAgICAgICBpZiAoY3VycmVudENhcGFj
aXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAg
ICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZShnbG9iYWxEYXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgICAgICBBU1NFUlQob2Zmc2V0IDwgbV9zdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgICAgICBwdXREaXJlY3RPZmZzZXQo
Z2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC02NzgsNyArNjc2LDcgQEAgaW5saW5lIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmkKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKG1f
c3RydWN0dXJlLmdldCgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rp
b24sIG9mZnNldCkpIHsgICAgCiAgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICAgICAgYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOworICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
OwogCiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpOwogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
QEAgLTcyOCw3ICs3MjYsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbiwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQotICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSk7CisgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIGN1cnJlbnRD
YXBhY2l0eSwgc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIAogICAgIEFT
U0VSVChvZmZzZXQgPCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAg
IHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpAQCAtNzg5LDcgKzc4Nyw3IEBA
IGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0CiAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1f
c3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQg
PSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIDApOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0g
bV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCi0gICAgICAgIGFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpOworICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShnbG9iYWxE
YXRhLCBjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9
CiAKQEAgLTc5OCwxNCArNzk2LDE0IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0CiAgICAgc2l6
ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHZhbHVlKTsK
ICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKQotICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNp
dHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgY3VycmVudENhcGFjaXR5LCBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGds
b2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6dHJh
bnNpdGlvblRvKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUpCiB7CiAgICAgaWYgKG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9
IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKLSAgICAgICAgYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UobV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCks
IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIGFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpLCBuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwog
ICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBuZXdTdHJ1Y3R1cmUpOwogfQogCkBAIC04OTYs
NiArODk0LDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbkRp
cmVjdChTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7CiAKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgp
OworICAgIGlmIChIZWFwOjpoZWFwKHRoaXMpLT5pblByb3BlcnR5U3RvcmFnZU51cnNlcnkoc3Rv
cmFnZSkpIHsKKyAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2Uuc2V0KG5ldyBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+W3N0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpXSwgU3Rv
cmFnZUJhcnJpZXI6OlVuY2hlY2tlZCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSA+IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkp
CisgICAgICAgICAgICBBU1NFUlQoIXN0b3JhZ2VbbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZVNpemUoKV0pOworICAgICAgICBtZW1jcHkobV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCksIHN0b3Jh
Z2UsIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgKiBzaXplb2YoV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPikpOworICAgIH0KICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKICAgICBpZiAobV9pbmhlcml0b3JJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0b3JhZ2VCYXJyaWVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdG9yYWdlQmFycmllci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
Yzk0NmFkOGM1YTUyMjAxYmM4NzVlODY1ZTczNzRlZTQyNzA5MTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdG9yYWdlQmFycmllci5oCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0b3JhZ2VCYXJyaWVyX2gKKyNkZWZpbmUg
U3RvcmFnZUJhcnJpZXJfaAorCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAi
V3JpdGVCYXJyaWVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0eXBlZGVmIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFnZTsKK3R5cGVkZWYgY29uc3QgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogQ29uc3RQcm9wZXJ0eVN0b3JhZ2U7CisKK2NsYXNzIFN0b3JhZ2VC
YXJyaWVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIFVuY2hlY2tlZFRhZyB7IFVuY2hlY2tlZCB9Owor
ICAgIFN0b3JhZ2VCYXJyaWVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25l
ciwgUHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UpCisgICAgeworICAgICAgICBzZXQoZ2xvYmFsRGF0
YSwgb3duZXIsIHN0b3JhZ2UpOworICAgIH0KKyAgICAKKyAgICBTdG9yYWdlQmFycmllcihQcm9w
ZXJ0eVN0b3JhZ2Ugc3RvcmFnZSwgVW5jaGVja2VkVGFnKQorICAgIHsKKyAgICAgICAgc2V0KHN0
b3JhZ2UsIFVuY2hlY2tlZCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUHJvcGVydHlTdG9yYWdlIG5ld1N0b3JhZ2Up
CisgICAgeworICAgICAgICBpZiAoIWdsb2JhbERhdGEuaGVhcC5pblByb3BlcnR5U3RvcmFnZU51
cnNlcnkobV9zdG9yYWdlKSkKKyAgICAgICAgICAgIGdsb2JhbERhdGEuaGVhcC53cml0ZUJhcnJp
ZXIob3duZXIsIEpTVmFsdWUoKSk7CisgICAgICAgIG1fc3RvcmFnZSA9IG5ld1N0b3JhZ2U7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgc2V0KFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlLCBVbmNo
ZWNrZWRUYWcpCisgICAgeworICAgICAgICBtX3N0b3JhZ2UgPSBuZXdTdG9yYWdlOworICAgIH0K
KyAgICAKKyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlOyB9CisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogb3Bl
cmF0b3ItPigpIHsgcmV0dXJuIG1fc3RvcmFnZTsgfQorICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4gb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fc3RvcmFnZTsgfQorICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4gb3BlcmF0b3IqKCkgeyByZXR1cm4gKm1fc3RvcmFnZTsgfQor
ICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIG9wZXJhdG9yW10oc2l6ZV90IGkp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVtpXTsgfQorICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZVtpXTsgfQorICAg
IAorICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZTsgfQorICAgIFByb3BlcnR5U3RvcmFnZSBnZXQoKSB7IHJldHVybiBtX3N0b3JhZ2U7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgUHJvcGVydHlTdG9yYWdlIG1fc3RvcmFnZTsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmFkNDYwNzFmNGY4ZGJhN2Y0MjE2YjBmMjY4ZTc0ZGNjMjUz
YTU5Mi4uYWIxNTZlZWVkOTNhNzBlOTY2MTk5YzRmNzY5ZDBkZmE4YjlhZDkzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA5LTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXNlIGJ1bXAgYWxsb2NhdG9yIGZvciBpbml0aWFsIHByb3BlcnR5
IHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3NDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgZm9yd2FyZGluZyBoZWFkZXIuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL1N0b3JhZ2VCYXJyaWVyLmg6IEFkZGVkLgorCiAyMDExLTA5LTA4ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByOTQ3ODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1N0b3JhZ2VCYXJyaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1N0b3JhZ2VCYXJyaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgyYjk1Zjc0
MzIwYzM3OTJkZTQ2ZjM2NTJjY2Q2MmJlYmU3MzY0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU3RvcmFnZUJhcnJpZXIuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3RvcmFnZUJhcnJpZXJfaAorI2RlZmlu
ZSBXZWJDb3JlX0ZXRF9TdG9yYWdlQmFycmllcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3RvcmFnZUJhcnJpZXIuaD4KKyNlbmRpZgo=
</data>
<flag name="review"
          id="103314"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>