<?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>196886</bug_id>
          
          <creation_ts>2019-04-12 17:37:31 -0700</creation_ts>
          <short_desc>DFG should be able to constant fold Object.create() with a constant prototype operand</short_desc>
          <delta_ts>2019-04-15 17:29:19 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=186199</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1526954</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-12 17:37:31 -0700</bug_when>
    <thetext>It is a fairly simple and limited patch, as it only works when the DFG can prove the exact object used as prototype.
But when it applies it can be a significant win:

                                                 Baseline                   Optim                                       

object-create-constant-prototype              3.6082+-0.0979     ^      1.6947+-0.0756        ^ definitely 2.1292x faster
object-create-null                           11.4492+-0.2510     ?     11.5030+-0.2402        ?
object-create-unknown-object-prototype       15.6067+-0.1851     ?     15.7500+-0.2322        ?
object-create-untyped-prototype               8.8873+-0.1240     ?      8.9806+-0.1202        ? might be 1.0105x slower

&lt;geometric&gt;                                   8.6967+-0.1208     ^      7.2408+-0.1367        ^ definitely 1.2011x faster

The only subtlety is that we need to to access the StructureCache concurrently from the compiler thread (see https://bugs.webkit.org/show_bug.cgi?id=186199)
I solved this with a simple lock, taken when the compiler thread tries to read it, and when the main thread tries to modify it.
I expect it to be extremely low contention, but will watch the bots just in case.
The lock is taken neither when the main thread is only reading the cache (it has no-one to race with), nor when the GC purges it of dead entries (it does not free anything while a compiler thread is in the middle of a phase).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526955</commentid>
    <comment_count>1</comment_count>
      <attachid>367361</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-12 17:44:22 -0700</bug_when>
    <thetext>Created attachment 367361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526981</commentid>
    <comment_count>2</comment_count>
      <attachid>367361</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-12 18:48:30 -0700</bug_when>
    <thetext>Comment on attachment 367361
Patch

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

Looks nice. r=me with nits.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2595
&gt; +            else {
&gt; +                RELEASE_ASSERT(base.isObject());

Since this child1 is `UntypedUse`, any value can come here. Let&apos;s do `else if (base.isObject())` instead.
And initialize `structure` with nullptr since we now have a path that does not assign anything to the variable structure :)

I think we can write a test, like,

function test()
{
    for (var i = 0; i &lt; 1e6; ++i) {
        try { Object.create(undefined); } catch { }
    }
}

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2599
&gt; +            if (!!structure) {

Personally I like `if (structure)`.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:759
&gt; +                        RELEASE_ASSERT(base.isObject());

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:763
&gt; +                    if (!!structure) {

Ditto.

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:63
&gt; +    holdLock(m_lock);

This immediately discards the LockHolder after this statement finishes, and unlocked.
Use `auto locker = holdLock(m_lock);` instead.

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:74
&gt; +    holdLock(m_lock);

Ditto.

&gt; Source/JavaScriptCore/runtime/StructureCache.h:61
&gt;      StructureMap m_structures;

This is WeakGCMap. So it is held by Heap, and collector checks this without taking this lock.
I think it is safe since we don&apos;t run GC end phase while compiler thread is running.
Another thing I would like to ensure is that this holds Weak&lt;&gt; handles.
I think this does not return dead cells when the compiler threads successfully read it concurrently.
Can you ensure they are safe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527182</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-15 09:31:45 -0700</bug_when>
    <thetext>Attachment 367361 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/StructureCache.h:55:  The parameter name &quot;globalObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527184</commentid>
    <comment_count>4</comment_count>
      <attachid>367361</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 09:33:02 -0700</bug_when>
    <thetext>Comment on attachment 367361
Patch

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

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:68
&gt; +Structure* StructureCache::tryEmptyObjectStructureForPrototypeFromCompilerThread(JSGlobalObject* globalObject, JSObject* prototype, unsigned inlineCapacity)

Name nit: maybe “tryGetEmpty...”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527195</commentid>
    <comment_count>5</comment_count>
      <attachid>367361</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 09:49:55 -0700</bug_when>
    <thetext>Comment on attachment 367361
Patch

r=me too with Yusuke’s comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527263</commentid>
    <comment_count>6</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 11:08:00 -0700</bug_when>
    <thetext>Thanks for the review!

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2595
&gt; &gt; +            else {
&gt; &gt; +                RELEASE_ASSERT(base.isObject());
&gt; 
&gt; Since this child1 is `UntypedUse`, any value can come here. Let&apos;s do `else
&gt; if (base.isObject())` instead.
&gt; And initialize `structure` with nullptr since we now have a path that does
&gt; not assign anything to the variable structure :)
&gt; 
&gt; I think we can write a test, like,
&gt; 
&gt; function test()
&gt; {
&gt;     for (var i = 0; i &lt; 1e6; ++i) {
&gt;         try { Object.create(undefined); } catch { }
&gt;     }
&gt; }

Done. I&apos;ve added a couple lines to JSTests/stress/object-create-undefined.js to that effect.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2599
&gt; &gt; +            if (!!structure) {
&gt; 
&gt; Personally I like `if (structure)`.

Fixed.

&gt; &gt; Source/JavaScriptCore/runtime/StructureCache.cpp:63
&gt; &gt; +    holdLock(m_lock);
&gt; 
&gt; This immediately discards the LockHolder after this statement finishes, and
&gt; unlocked.
&gt; Use `auto locker = holdLock(m_lock);` instead.

Oops, that was a big mistake on my part. Thank you for catching it.
I will add WARN_UNUSED_RESULT to holdLock in a separate patch.

&gt; &gt; Source/JavaScriptCore/runtime/StructureCache.h:61
&gt; &gt;      StructureMap m_structures;
&gt; 
&gt; This is WeakGCMap. So it is held by Heap, and collector checks this without
&gt; taking this lock.
&gt; I think it is safe since we don&apos;t run GC end phase while compiler thread is
&gt; running.
&gt; Another thing I would like to ensure is that this holds Weak&lt;&gt; handles.
&gt; I think this does not return dead cells when the compiler threads
&gt; successfully read it concurrently.
&gt; Can you ensure they are safe?

I don&apos;t understand what you mean here. The main thread outside of GC can only add things to the cache, not remove them. The compiler thread can never race with the GC end phase, as it only runs between compiler phases. And the lock ensures that additions to the cache are atomic to the compiler thread (it cannot see a half-written value). So I don&apos;t see how the compiler could ever read stuff that has not been properly written into the cache, and since it is a WeakGCMap, they are automatically Structure* referred by a Weak&lt;&gt; handle. We then registerStructure them, making sure they won&apos;t be GC-ed even after our phase ends.

What do you mean by &quot;safe&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527265</commentid>
    <comment_count>7</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 11:11:07 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; Comment on attachment 367361 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367361&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StructureCache.cpp:68
&gt; &gt; +Structure* StructureCache::tryEmptyObjectStructureForPrototypeFromCompilerThread(JSGlobalObject* globalObject, JSObject* prototype, unsigned inlineCapacity)
&gt; 
&gt; Name nit: maybe “tryGetEmpty...”?

The webkit style guide (https://webkit.org/code-style-guidelines/#names) recommends only using the &quot;Get&quot; verb for functions that return their result through an argument: &apos;Use bare words for getters [..] Precede getters that return values through out arguments with the word “get”.&apos;

But I agree that the current name is a monstrosity, I was just unsure what better name to pick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527269</commentid>
    <comment_count>8</comment_count>
      <attachid>367431</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 11:15:59 -0700</bug_when>
    <thetext>Created attachment 367431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527279</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 11:34:19 -0700</bug_when>
    <thetext>(In reply to Robin Morisset from comment #7)
&gt; (In reply to Saam Barati from comment #4)
&gt; &gt; Comment on attachment 367361 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=367361&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/StructureCache.cpp:68
&gt; &gt; &gt; +Structure* StructureCache::tryEmptyObjectStructureForPrototypeFromCompilerThread(JSGlobalObject* globalObject, JSObject* prototype, unsigned inlineCapacity)
&gt; &gt; 
&gt; &gt; Name nit: maybe “tryGetEmpty...”?
&gt; 
&gt; The webkit style guide (https://webkit.org/code-style-guidelines/#names)
&gt; recommends only using the &quot;Get&quot; verb for functions that return their result
&gt; through an argument: &apos;Use bare words for getters [..] Precede getters that
&gt; return values through out arguments with the word “get”.&apos;
&gt; 
&gt; But I agree that the current name is a monstrosity, I was just unsure what
&gt; better name to pick.

I would ignore the style guide here given that the current name doesn&apos;t resemble anything sensible and we probably ignore it in other places. Alternately, we&apos;ve picked names like this for stuff like this in the past:

&quot;emptyObjectStructureForPrototypeConcurrently&quot;

I think that&apos;s good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527284</commentid>
    <comment_count>10</comment_count>
      <attachid>367431</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 11:35:16 -0700</bug_when>
    <thetext>Comment on attachment 367431
Patch

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

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:62
&gt; +    // We do need to lock here to avoid a race with a compiler thread that may be accessing the cache in read-only mode.

No need for this comment, it&apos;s obvious.

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:73
&gt; +    // We need to hold a lock to make sure the main thread is not modifying the underlying hash table from under us.

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527302</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-15 11:56:44 -0700</bug_when>
    <thetext>Attachment 367431 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/StructureCache.h:55:  The parameter name &quot;globalObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527311</commentid>
    <comment_count>12</comment_count>
      <attachid>367361</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-15 12:02:20 -0700</bug_when>
    <thetext>Comment on attachment 367361
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/StructureCache.h:61
&gt;&gt;      StructureMap m_structures;
&gt; 
&gt; This is WeakGCMap. So it is held by Heap, and collector checks this without taking this lock.
&gt; I think it is safe since we don&apos;t run GC end phase while compiler thread is running.
&gt; Another thing I would like to ensure is that this holds Weak&lt;&gt; handles.
&gt; I think this does not return dead cells when the compiler threads successfully read it concurrently.
&gt; Can you ensure they are safe?

Sorry, I&apos;ll simplify the questions. Can you answer the following questions?

1. WeakGCMap is registered to the Heap, and GC repeatedly looks into it. But at that time, collector does not take this m_lock. Is it safe?
2. WeakGCMap holds Weak&lt;&gt;, and concurrent compiler reads cells from it. Do concurrent compilers read the live cells or nullptr from this Weak&lt;&gt; handles?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527327</commentid>
    <comment_count>13</comment_count>
      <attachid>367441</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 12:42:02 -0700</bug_when>
    <thetext>Created attachment 367441
Patch

Went with tryEmptyObjectStructureConcurrently, it is significantly shorter, respect the style guide, and still makes it clear that it can fail.
The &apos;ForPrototype&apos; part of the name is less important in my view, considering that there is an argument called prototype, it should be sufficiently clear.

Also removed the comments that Saam finds obvious, and updated the year in the top-of-file copyright comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527328</commentid>
    <comment_count>14</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 12:45:29 -0700</bug_when>
    <thetext>(In reply to Robin Morisset from comment #13)
&gt; Created attachment 367441 [details]
&gt; Patch
&gt; 
&gt; Went with tryEmptyObjectStructureConcurrently, it is significantly shorter,
&gt; respect the style guide, and still makes it clear that it can fail.
&gt; The &apos;ForPrototype&apos; part of the name is less important in my view,
&gt; considering that there is an argument called prototype, it should be
&gt; sufficiently clear.
I still don&apos;t like that name. I&apos;m not sure what our style guideline says here, but I think we tend to not choose names like this that would make a grammatically incorrect sentence.

&gt; 
&gt; Also removed the comments that Saam finds obvious, and updated the year in
&gt; the top-of-file copyright comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527332</commentid>
    <comment_count>15</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 12:48:19 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #14)
&gt; (In reply to Robin Morisset from comment #13)
&gt; &gt; Created attachment 367441 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Went with tryEmptyObjectStructureConcurrently, it is significantly shorter,
&gt; &gt; respect the style guide, and still makes it clear that it can fail.
&gt; &gt; The &apos;ForPrototype&apos; part of the name is less important in my view,
&gt; &gt; considering that there is an argument called prototype, it should be
&gt; &gt; sufficiently clear.
&gt; I still don&apos;t like that name. I&apos;m not sure what our style guideline says
&gt; here, but I think we tend to not choose names like this that would make a
&gt; grammatically incorrect sentence.
&gt; 
&gt; &gt; 
&gt; &gt; Also removed the comments that Saam finds obvious, and updated the year in
&gt; &gt; the top-of-file copyright comments.

I guess if we followed the style guide to a T, we&apos;d end up with:
emptyObjectStructureIfExists.

FWIW, &quot;Concurrently&quot; in JSC is sorta like &quot;IfExists&quot; in the rest of WebKit. I think we use &quot;Concurrently&quot; to generally mean &quot;can return null&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527336</commentid>
    <comment_count>16</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 12:56:15 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; Comment on attachment 367361 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367361&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/StructureCache.h:61
&gt; &gt;&gt;      StructureMap m_structures;
&gt; &gt; 
&gt; &gt; This is WeakGCMap. So it is held by Heap, and collector checks this without taking this lock.
&gt; &gt; I think it is safe since we don&apos;t run GC end phase while compiler thread is running.
&gt; &gt; Another thing I would like to ensure is that this holds Weak&lt;&gt; handles.
&gt; &gt; I think this does not return dead cells when the compiler threads successfully read it concurrently.
&gt; &gt; Can you ensure they are safe?
&gt; 
&gt; Sorry, I&apos;ll simplify the questions. Can you answer the following questions?
&gt; 
&gt; 1. WeakGCMap is registered to the Heap, and GC repeatedly looks into it. But
&gt; at that time, collector does not take this m_lock. Is it safe?

The collector can read into the WeakGCMap whenever it wants, that won&apos;t cause trouble to the compiler thread that only reads it too. The collector only mutates it at the end of GC phase, when the compiler thread is paused between phases, so no race there either.

The lock clearly protects against races between the mutator main thread and the compiler threads.

So it only leaves mutator main thread/collector as a potential hazard. I am not sure how that one is safe, but since it was not changed in any way by my change, I don&apos;t see how I could have made it unsafe.

&gt; 2. WeakGCMap holds Weak&lt;&gt;, and concurrent compiler reads cells from it. Do
&gt; concurrent compilers read the live cells or nullptr from this Weak&lt;&gt; handles?

I think (with low confidence) that it should read the live cells, as Heap::runEndPhase basically goes &quot;pause all compiler threads -&gt; reap weak handles -&gt; prune weakGCMaps&quot;, so the compiler thread should never see a weakGCMap with reaped but not pruned Weak&lt;&gt;.
The good news is that even if I am wrong on that point it should not matter: tryEmptyObjectStructureConcurrently is always allowed to return nullptr for any reason (since it does not try to build the structure if it is not already in the cache), and both of its clients check that the return is not null.


Did this answer your questions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527348</commentid>
    <comment_count>17</comment_count>
      <attachid>367446</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 13:11:42 -0700</bug_when>
    <thetext>Created attachment 367446
Patch

New name: emptyObjectStructureConcurrently

I was not aware that Concurrently canonically implies try/ifExists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527428</commentid>
    <comment_count>18</comment_count>
      <attachid>367446</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 14:45:40 -0700</bug_when>
    <thetext>Comment on attachment 367446
Patch

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

&gt; Source/JavaScriptCore/runtime/StructureCache.h:55
&gt; +    JS_EXPORT_PRIVATE Structure* tryEmptyObjectStructureConcurrently(JSGlobalObject*, JSObject* prototype, unsigned inlineCapacity);

still using the old name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527430</commentid>
    <comment_count>19</comment_count>
      <attachid>367446</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 14:45:58 -0700</bug_when>
    <thetext>Comment on attachment 367446
Patch

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

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:71
&gt; +    PrototypeKey key { prototype, nullptr, inlineCapacity, JSFinalObject::info(), globalObject};

nit: space before &quot;}&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527433</commentid>
    <comment_count>20</comment_count>
      <attachid>367446</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 14:47:06 -0700</bug_when>
    <thetext>Comment on attachment 367446
Patch

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

&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:74
&gt; +        ASSERT(prototype-&gt;mayBePrototype());

this assertion is wrong. Nothing guaranteeing that this thing is already a prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527434</commentid>
    <comment_count>21</comment_count>
      <attachid>367446</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 14:47:35 -0700</bug_when>
    <thetext>Comment on attachment 367446
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/StructureCache.cpp:74
&gt;&gt; +        ASSERT(prototype-&gt;mayBePrototype());
&gt; 
&gt; this assertion is wrong. Nothing guaranteeing that this thing is already a prototype

oops. Ignore me! It&apos;s in the map, so of course it&apos;s already a prototype!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527460</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-15 15:17:23 -0700</bug_when>
    <thetext>*** Bug 186199 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527503</commentid>
    <comment_count>23</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 16:22:20 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #18)
&gt; Comment on attachment 367446 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367446&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StructureCache.h:55
&gt; &gt; +    JS_EXPORT_PRIVATE Structure* tryEmptyObjectStructureConcurrently(JSGlobalObject*, JSObject* prototype, unsigned inlineCapacity);
&gt; 
&gt; still using the old name.

oh?! I must have updated the wrong patch. Fixing it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527504</commentid>
    <comment_count>24</comment_count>
      <attachid>367475</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-04-15 16:22:50 -0700</bug_when>
    <thetext>Created attachment 367475
PatchForLanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527542</commentid>
    <comment_count>25</comment_count>
      <attachid>367475</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-15 17:28:53 -0700</bug_when>
    <thetext>Comment on attachment 367475
PatchForLanding

Clearing flags on attachment: 367475

Committed r244313: &lt;https://trac.webkit.org/changeset/244313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527543</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-15 17:28:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527544</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-15 17:29:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/49924798&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367361</attachid>
            <date>2019-04-12 17:44:22 -0700</date>
            <delta_ts>2019-04-15 11:15:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch196886</filename>
            <type>text/plain</type>
            <size>11608</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDQyMzcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA0LTEyICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0YW50IGZvbGQg
T2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3BlcmFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMg
bmV3IGJlbmNobWFyayBkb2VzIG5vdCBjdXJyZW50bHkgc2VlIGEgc3BlZWR1cCB3aXRoIGlubGlu
aW5nIHJlbW92ZWQuCisgICAgICAgIFRoZSByZWFzb24gaXMgdGhhdCB3ZSBkbyBub3QgeWV0IGhh
dmUgaW5saW5lIGNhY2hpbmcgZm9yIE9iamVjdC5jcmVhdGUoKSwgd2Ugb25seSBvcHRpbWl6ZSBp
dCB3aGVuIHRoZSBERkcgY2FuIHNlZSBzdGF0aWNhbGx5IHRoZSBwcm90b3R5cGUgYmVpbmcgcGFz
c2VkLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQt
cHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorCiAyMDE5LTA0LTExICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gb3BfaGFzX2lu
ZGV4ZWRfcHJvcGVydHkgc2hvdWxkIG5vdCBhc3N1bWUgc3Vic2NyaXB0IHBhcnQgaXMgVWludDMy
CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtY3JlYXRlLWNvbnN0YW50LXBy
b3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3Qt
Y3JlYXRlLWNvbnN0YW50LXByb3RvdHlwZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9vYmplY3QtY3JlYXRlLWNvbnN0YW50LXByb3RvdHlwZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIHRlc3QocHJvdG90eXBlKQoreworICAg
IHJldHVybiBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSk7Cit9CisKK3ZhciBwcm90b3R5cGUgPSB7
Zm9vOiA0Mn07Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgdGVzdChwcm90
b3R5cGUpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDQyMzYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTktMDQtMTIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KKworICAgICAgICBERkcgc2hvdWxkIGJlIGFibGUgdG8gY29uc3RhbnQgZm9sZCBPYmpl
Y3QuY3JlYXRlKCkgd2l0aCBhIGNvbnN0YW50IHByb3RvdHlwZSBvcGVyYW5kCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY4ODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgIEl0IGlzIGEgZmFpcmx5IHNp
bXBsZSBhbmQgbGltaXRlZCBwYXRjaCwgYXMgaXQgb25seSB3b3JrcyB3aGVuIHRoZSBERkcgY2Fu
IHByb3ZlIHRoZSBleGFjdCBvYmplY3QgdXNlZCBhcyBwcm90b3R5cGUuCisgICAgICAgIEJ1dCB3
aGVuIGl0IGFwcGxpZXMgaXQgY2FuIGJlIGEgc2lnbmlmaWNhbnQgd2luOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlbGluZSAgICAg
ICAgICAgICAgICAgICBPcHRpbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICBvYmplY3QtY3JlYXRlLWNvbnN0YW50LXByb3RvdHlwZSAgICAgICAgICAgICAg
My42MDgyKy0wLjA5NzkgICAgIF4gICAgICAxLjY5NDcrLTAuMDc1NiAgICAgICAgXiBkZWZpbml0
ZWx5IDIuMTI5MnggZmFzdGVyCisgICAgICAgIG9iamVjdC1jcmVhdGUtbnVsbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDExLjQ0OTIrLTAuMjUxMCAgICAgPyAgICAgMTEuNTAzMCstMC4yNDAy
ICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW5rbm93bi1vYmplY3QtcHJvdG90eXBl
ICAgICAgIDE1LjYwNjcrLTAuMTg1MSAgICAgPyAgICAgMTUuNzUwMCstMC4yMzIyICAgICAgICA/
CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW50eXBlZC1wcm90b3R5cGUgICAgICAgICAgICAgICA4
Ljg4NzMrLTAuMTI0MCAgICAgPyAgICAgIDguOTgwNistMC4xMjAyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEwNXggc2xvd2VyCisgICAgICAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjY5NjcrLTAuMTIwOCAgICAgXiAgICAgIDcuMjQwOCstMC4xMzY3ICAg
ICAgICBeIGRlZmluaXRlbHkgMS4yMDExeCBmYXN0ZXIKKworICAgICAgICBUaGUgb25seSBzdWJ0
bGV0eSBpcyB0aGF0IHdlIG5lZWQgdG8gdG8gYWNjZXNzIHRoZSBTdHJ1Y3R1cmVDYWNoZSBjb25j
dXJyZW50bHkgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkIChzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5OSkKKyAgICAgICAgSSBzb2x2ZWQgdGhpcyB3aXRo
IGEgc2ltcGxlIGxvY2ssIHRha2VuIHdoZW4gdGhlIGNvbXBpbGVyIHRocmVhZCB0cmllcyB0byBy
ZWFkIGl0LCBhbmQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdHJpZXMgdG8gbW9kaWZ5IGl0LgorICAg
ICAgICBJIGV4cGVjdCBpdCB0byBiZSBleHRyZW1lbHkgbG93IGNvbnRlbnRpb24sIGJ1dCB3aWxs
IHdhdGNoIHRoZSBib3RzIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgVGhlIGxvY2sgaXMgdGFrZW4g
bmVpdGhlciB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyBvbmx5IHJlYWRpbmcgdGhlIGNhY2hlIChp
dCBoYXMgbm8tb25lIHRvIHJhY2Ugd2l0aCksIG5vciB3aGVuIHRoZSBHQyBwdXJnZXMgaXQgb2Yg
ZGVhZCBlbnRyaWVzIChpdCBkb2VzIG5vdCBmcmVlIGFueXRoaW5nIHdoaWxlIGEgY29tcGlsZXIg
dGhyZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBwaGFzZSkuCisKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDYWNoZTo6Y3JlYXRl
RW1wdHlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDYWNoZTo6dHJ5RW1wdHlP
YmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQ29tcGlsZXJUaHJlYWQpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKwogMjAxOS0wNC0xMiAgU2FhbSBiYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21ldGltZXMgd2UgbmVlZCB0byB1c2VyIGZl
d2VyIENQVXMgaW4gb3VyIHRocmVhZGluZyBjYWxjdWxhdGlvbnMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgJKHJldmlzaW9uIDI0NDIzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQm9v
bGVhbkxhdHRpY2UuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAgLTI1
ODYsMTcgKzI1ODcsMjIgQEAKIAogICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7CiAgICAgICAgIGlm
IChKU1ZhbHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Ci0gICAg
ICAgICAgICBpZiAoYmFzZS5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgICAgIGlmIChiYXNlLmlzTnVsbCgpKQor
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9i
amVjdFN0cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoYmFzZS5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPnZtKCkuc3RydWN0dXJlQ2FjaGUudHJ5RW1wdHlPYmplY3RTdHJ1Y3R1
cmVGb3JQcm90b3R5cGVGcm9tQ29tcGlsZXJUaHJlYWQoZ2xvYmFsT2JqZWN0LCBiYXNlLmdldE9i
amVjdCgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghIXN0cnVjdHVyZSkgewogICAg
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAg
ICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7Ci0gICAgICAgICAgICAgICAgc2V0
Rm9yTm9kZShub2RlLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBnZXQgYSBzdHJ1Y3R1cmUgZm9yIGEgY29uc3RhbnQgcHJvdG90eXBlLiBXZSBuZWVk
IHRvIGFsbG93IGNvbmN1cnJlbnQKLSAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVD
YWNoZSBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MTk5CiAgICAgICAgIH0KICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgY2xv
YmJlcldvcmxkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjQ0MjM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVDYWNoZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTc1MCwxNSArNzUxLDIwIEBACiAKICAgICAgICAgICAgIGNhc2UgT2JqZWN0Q3JlYXRlOiB7
CiAgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9IG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc051
bGwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdPYmplY3QobV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSkpOworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgICAg
IGlmIChiYXNlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmFzZS5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+dm0oKS5zdHJ1Y3R1cmVDYWNoZS50cnlFbXB0eU9iamVjdFN0cnVjdHVyZUZv
clByb3RvdHlwZUZyb21Db21waWxlclRocmVhZChnbG9iYWxPYmplY3QsIGJhc2UuZ2V0T2JqZWN0
KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCEhc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9O
ZXdPYmplY3QobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBnZXQgYSBzdHJ1Y3R1cmUgZm9yIGEgY29uc3RhbnQgcHJvdG90eXBlLiBX
ZSBuZWVkIHRvIGFsbG93IGNvbmN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNz
IHRvIFN0cnVjdHVyZUNhY2hlIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5OQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNhY2hlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNo
ZS5jcHAJKHJldmlzaW9uIDI0NDIzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCiAKLSNpbmNsdWRl
ICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0zNiw2ICszNiw3IEBACiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFwcm90b3R5cGUp
OyAvLyBXZSB1c2UgbnVsbHB0ciBpbnNpZGUgdGhlIEhhc2hNYXAgZm9yIHByb3RvdHlwZSB0byBt
ZWFuIHBvbHkgcHJvdG8sIHNvIHVzZXIncyBvZiB0aGlzIEFQSSBtdXN0IHByb3ZpZGUgbm9uLW51
bGwgcHJvdG90eXBlcy4KIAorICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gbG9jayBoZXJlIGJlY2F1
c2Ugb25seSB0aGUgbWFpbiB0aHJlYWQgY2FuIGdldCBoZXJlLCBhbmQgb25seSB0aGUgbWFpbiB0
aHJlYWQgY2FuIG11dGF0ZSB0aGUgY2FjaGUKICAgICBQcm90b3R5cGVLZXkga2V5IHsgbWFrZVBv
bHlQcm90b1N0cnVjdHVyZSA/IG51bGxwdHIgOiBwcm90b3R5cGUsIGV4ZWN1dGFibGUsIGlubGlu
ZUNhcGFjaXR5LCBjbGFzc0luZm8sIGdsb2JhbE9iamVjdCB9OwogICAgIGlmIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IG1fc3RydWN0dXJlcy5nZXQoa2V5KSkgewogICAgICAgICBpZiAobWFrZVBv
bHlQcm90b1N0cnVjdHVyZSkgewpAQCAtNTgsMTEgKzU5LDI2IEBACiAgICAgICAgIHN0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKAogICAgICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCB0eXBlSW5mbywgY2xhc3NJbmZvLCBpbmRleGluZ1R5cGUsIGlubGluZUNhcGFjaXR5
KTsKICAgICB9CisgICAgLy8gV2UgZG8gbmVlZCB0byBsb2NrIGhlcmUgdG8gYXZvaWQgYSByYWNl
IHdpdGggYSBjb21waWxlciB0aHJlYWQgdGhhdCBtYXkgYmUgYWNjZXNzaW5nIHRoZSBjYWNoZSBp
biByZWFkLW9ubHkgbW9kZS4KKyAgICBob2xkTG9jayhtX2xvY2spOwogICAgIG1fc3RydWN0dXJl
cy5zZXQoa2V5LCBzdHJ1Y3R1cmUpOwotCiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIAorU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmVDYWNoZTo6dHJ5RW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5
cGVGcm9tQ29tcGlsZXJUaHJlYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoISFwcm90b3R5cGUpOyAvLyBXZSB1c2UgbnVsbHB0ciBpbnNpZGUgdGhlIEhhc2hNYXAg
Zm9yIHByb3RvdHlwZSB0byBtZWFuIHBvbHkgcHJvdG8sIHNvIHVzZXIncyBvZiB0aGlzIEFQSSBt
dXN0IHByb3ZpZGUgbm9uLW51bGwgcHJvdG90eXBlcy4KKyAgICAKKyAgICBQcm90b3R5cGVLZXkg
a2V5IHsgcHJvdG90eXBlLCBudWxscHRyLCBpbmxpbmVDYXBhY2l0eSwgSlNGaW5hbE9iamVjdDo6
aW5mbygpLCBnbG9iYWxPYmplY3R9OworICAgIC8vIFdlIG5lZWQgdG8gaG9sZCBhIGxvY2sgdG8g
bWFrZSBzdXJlIHRoZSBtYWluIHRocmVhZCBpcyBub3QgbW9kaWZ5aW5nIHRoZSB1bmRlcmx5aW5n
IGhhc2ggdGFibGUgZnJvbSB1bmRlciB1cy4KKyAgICBob2xkTG9jayhtX2xvY2spOworICAgIGlm
IChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fc3RydWN0dXJlcy5nZXQoa2V5KSkgeworICAgICAg
ICBBU1NFUlQocHJvdG90eXBlLT5tYXlCZVByb3RvdHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0
cnVjdHVyZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFN0cnVjdHVyZSogU3Ry
dWN0dXJlQ2FjaGU6OmVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0
dXJlKiBiYXNlU3RydWN0dXJlKQogewogICAgIC8vIFdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBp
bmxpbmUgY2FwYWNpdHkgc3RhdGljIGFuYWx5c2lzIGZvciBzdWJjbGFzc2VzIGFuZCBhbGwgaW50
ZXJuYWwgZnVuY3Rpb24gY29uc3RydWN0b3JzIGhhdmUgYSBkZWZhdWx0IGlubGluZSBjYXBhY2l0
eSBvZiAwLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2Fj
aGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDYWNoZS5oCShyZXZpc2lvbiAyNDQyMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIlByb3RvdHlwZUtleS5oIgogI2luY2x1
ZGUgIldlYWtHQ01hcC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Ry
aVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTEsNiArNTIsNyBAQAogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlw
ZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHksIGJv
b2wgbWFrZVBvbHlQcm90b1N0cnVjdHVyZSA9IGZhbHNlLCBGdW5jdGlvbkV4ZWN1dGFibGUqID0g
bnVsbHB0cik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eVN0cnVjdHVy
ZUZvclByb3RvdHlwZUZyb21CYXNlU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIHRyeUVtcHR5
T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUNvbXBpbGVyVGhyZWFkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNh
cGFjaXR5KTsKIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3RydWN0dXJl
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBj
b25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBi
b29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSopOwpAQCAtNTcs
NiArNTksNyBAQAogCiAgICAgdXNpbmcgU3RydWN0dXJlTWFwID0gV2Vha0dDTWFwPFByb3RvdHlw
ZUtleSwgU3RydWN0dXJlPjsKICAgICBTdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOworICAgIExv
Y2sgbV9sb2NrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="383723"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367431</attachid>
            <date>2019-04-15 11:15:59 -0700</date>
            <delta_ts>2019-04-15 12:42:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch196886</filename>
            <type>text/plain</type>
            <size>12268</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDQyNzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0YW50IGZvbGQg
T2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3BlcmFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBu
ZXcgYmVuY2htYXJrIGRvZXMgbm90IGN1cnJlbnRseSBzZWUgYSBzcGVlZHVwIHdpdGggaW5saW5p
bmcgcmVtb3ZlZC4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGRvIG5vdCB5ZXQgaGF2
ZSBpbmxpbmUgY2FjaGluZyBmb3IgT2JqZWN0LmNyZWF0ZSgpLCB3ZSBvbmx5IG9wdGltaXplIGl0
IHdoZW4gdGhlIERGRyBjYW4gc2VlIHN0YXRpY2FsbHkgdGhlIHByb3RvdHlwZSBiZWluZyBwYXNz
ZWQuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWNyZWF0ZS1jb25zdGFudC1w
cm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTktMDQtMTMgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUNhY2hlIHNob3Vs
ZCBjaGVjayB0aGF0IHRoZSBVbmxpbmtlZENvZGVCbG9jayB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgYmVmb3JlIGNhY2hpbmcgaXQKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQt
cHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gdGVz
dChwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKK30K
KwordmFyIHByb3RvdHlwZSA9IHtmb286IDQyfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyAr
K2kpIHsKKyAgICB0ZXN0KHByb3RvdHlwZSk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwkocmV2aXNpb24gMjQ0MjcxKQorKysgSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWNyZWF0ZS11bmRlZmluZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMgKzI0
LDEwIEBACiAgICAgICAgIHRlc3QodW5kZWZpbmVkKTsKICAgICB9LCBgVHlwZUVycm9yOiBPYmpl
Y3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLmApOwogfQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIC8vIFNvbWUgZm9sZGluZyBkb2VzIG5vdCBo
YXBwZW4gaW4gdGhlIG5vbi1pbmxpbmVkIHZlcnNpb24sIHNvIHRoaXMgY2FuIHRlc3QgYSBkaWZm
ZXJlbnQgcGF0aCB0aHJvdWdoIHRoZSBjb21waWxlcgorICAgIC8vIHRoYW4gdGhlIHByZXZpb3Vz
IGxvb3AuCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBPYmplY3QuY3JlYXRlKHVu
ZGVmaW5lZCk7CisgICAgfSwgYFR5cGVFcnJvcjogT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC5gKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ0MjcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNv
bnN0YW50IGZvbGQgT2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3Bl
cmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2
ODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworCisgICAgICAgIEl0
IGlzIGEgZmFpcmx5IHNpbXBsZSBhbmQgbGltaXRlZCBwYXRjaCwgYXMgaXQgb25seSB3b3JrcyB3
aGVuIHRoZSBERkcgY2FuIHByb3ZlIHRoZSBleGFjdCBvYmplY3QgdXNlZCBhcyBwcm90b3R5cGUu
CisgICAgICAgIEJ1dCB3aGVuIGl0IGFwcGxpZXMgaXQgY2FuIGJlIGEgc2lnbmlmaWNhbnQgd2lu
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCYXNlbGluZSAgICAgICAgICAgICAgICAgICBPcHRpbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICBvYmplY3QtY3JlYXRlLWNvbnN0YW50LXByb3RvdHlw
ZSAgICAgICAgICAgICAgMy42MDgyKy0wLjA5NzkgICAgIF4gICAgICAxLjY5NDcrLTAuMDc1NiAg
ICAgICAgXiBkZWZpbml0ZWx5IDIuMTI5MnggZmFzdGVyCisgICAgICAgIG9iamVjdC1jcmVhdGUt
bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjQ0OTIrLTAuMjUxMCAgICAgPyAgICAg
MTEuNTAzMCstMC4yNDAyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW5rbm93bi1v
YmplY3QtcHJvdG90eXBlICAgICAgIDE1LjYwNjcrLTAuMTg1MSAgICAgPyAgICAgMTUuNzUwMCst
MC4yMzIyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW50eXBlZC1wcm90b3R5cGUg
ICAgICAgICAgICAgICA4Ljg4NzMrLTAuMTI0MCAgICAgPyAgICAgIDguOTgwNistMC4xMjAyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCisgICAgICAgIDxnZW9tZXRyaWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY5NjcrLTAuMTIwOCAgICAgXiAgICAgIDcu
MjQwOCstMC4xMzY3ICAgICAgICBeIGRlZmluaXRlbHkgMS4yMDExeCBmYXN0ZXIKKworICAgICAg
ICBUaGUgb25seSBzdWJ0bGV0eSBpcyB0aGF0IHdlIG5lZWQgdG8gdG8gYWNjZXNzIHRoZSBTdHJ1
Y3R1cmVDYWNoZSBjb25jdXJyZW50bHkgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkIChzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5OSkKKyAgICAgICAgSSBz
b2x2ZWQgdGhpcyB3aXRoIGEgc2ltcGxlIGxvY2ssIHRha2VuIHdoZW4gdGhlIGNvbXBpbGVyIHRo
cmVhZCB0cmllcyB0byByZWFkIGl0LCBhbmQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdHJpZXMgdG8g
bW9kaWZ5IGl0LgorICAgICAgICBJIGV4cGVjdCBpdCB0byBiZSBleHRyZW1lbHkgbG93IGNvbnRl
bnRpb24sIGJ1dCB3aWxsIHdhdGNoIHRoZSBib3RzIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgVGhl
IGxvY2sgaXMgdGFrZW4gbmVpdGhlciB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyBvbmx5IHJlYWRp
bmcgdGhlIGNhY2hlIChpdCBoYXMgbm8tb25lIHRvIHJhY2Ugd2l0aCksIG5vciB3aGVuIHRoZSBH
QyBwdXJnZXMgaXQgb2YgZGVhZCBlbnRyaWVzIChpdCBkb2VzIG5vdCBmcmVlIGFueXRoaW5nIHdo
aWxlIGEgY29tcGlsZXIgdGhyZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBwaGFzZSkuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDYWNoZTo6Y3JlYXRlRW1wdHlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
YWNoZTo6dHJ5RW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQ29tcGlsZXJUaHJl
YWQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKwogMjAxOS0wNC0xNCAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
SmF2YVNjcmlwdENvcmUgZGVyaXZlZCBzb3VyY2VzIHNob3VsZCBvbmx5IGJlIHJlZmVyZW5jZWQg
aW5zaWRlIEphdmFTY3JpcHRDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
NDQyNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlN0cmlu
Z09iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Jvb2xlYW5MYXR0aWNlLmg+CiAj
aW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC0yNTg2LDE3ICsyNTg3LDIwIEBA
CiAKICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgewotICAgICAgICAgICAgaWYgKGJhc2Uu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGJhc2UuaXNOdWxsKCkpCisgICAgICAg
ICAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChiYXNlLmlzT2JqZWN0KCkpCisgICAgICAg
ICAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT52bSgpLnN0cnVjdHVyZUNhY2hlLnRy
eUVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUNvbXBpbGVyVGhyZWFkKGdsb2Jh
bE9iamVjdCwgYmFzZS5nZXRPYmplY3QoKSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNh
cGFjaXR5KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAg
ICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgICAgICBz
ZXRGb3JOb2RlKG5vZGUsIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIHN0cnVjdHVyZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGdldCBhIHN0cnVjdHVyZSBmb3IgYSBjb25zdGFudCBwcm90b3R5cGUuIFdlIG5l
ZWQgdG8gYWxsb3cgY29uY3VycmVudAotICAgICAgICAgICAgLy8gYWNjZXNzIHRvIFN0cnVjdHVy
ZUNhY2hlIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYxOTkKICAgICAgICAgfQogICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICBj
bG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyNDQyNzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUNhY2hlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IApAQCAtNzUwLDE1ICs3NTEsMTggQEAKIAogICAgICAgICAgICAgY2FzZSBPYmplY3RDcmVhdGU6
IHsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBiYXNlID0gbV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld09iamVjdChtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVj
dHVyZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChiYXNlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UuaXNPYmplY3QoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dm0oKS5zdHJ1Y3R1cmVD
YWNoZS50cnlFbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21Db21waWxlclRocmVh
ZChnbG9iYWxPYmplY3QsIGJhc2UuZ2V0T2JqZWN0KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJ
bmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb05ld09iamVjdChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGdldCBhIHN0cnVjdHVyZSBmb3IgYSBjb25zdGFudCBwcm90b3R5
cGUuIFdlIG5lZWQgdG8gYWxsb3cgY29uY3VycmVudAotICAgICAgICAgICAgICAgICAgICAvLyBh
Y2Nlc3MgdG8gU3RydWN0dXJlQ2FjaGUgZnJvbSBjb21waWxlciB0aHJlYWRzLgotICAgICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2
MTk5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNhY2hlLmNwcAkocmV2aXNpb24gMjQ0MjcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUuaCIKIAotI2lu
Y2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTM2LDYgKzM2LDcgQEAKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghIXByb3Rv
dHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGluc2lkZSB0aGUgSGFzaE1hcCBmb3IgcHJvdG90eXBl
IHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNlcidzIG9mIHRoaXMgQVBJIG11c3QgcHJvdmlkZSBu
b24tbnVsbCBwcm90b3R5cGVzLgogCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBsb2NrIGhlcmUg
YmVjYXVzZSBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gZ2V0IGhlcmUsIGFuZCBvbmx5IHRoZSBt
YWluIHRocmVhZCBjYW4gbXV0YXRlIHRoZSBjYWNoZQogICAgIFByb3RvdHlwZUtleSBrZXkgeyBt
YWtlUG9seVByb3RvU3RydWN0dXJlID8gbnVsbHB0ciA6IHByb3RvdHlwZSwgZXhlY3V0YWJsZSwg
aW5saW5lQ2FwYWNpdHksIGNsYXNzSW5mbywgZ2xvYmFsT2JqZWN0IH07CiAgICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbV9zdHJ1Y3R1cmVzLmdldChrZXkpKSB7CiAgICAgICAgIGlmICht
YWtlUG9seVByb3RvU3RydWN0dXJlKSB7CkBAIC01OCwxMSArNTksMjYgQEAKICAgICAgICAgc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoCiAgICAgICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIHR5cGVJbmZvLCBjbGFzc0luZm8sIGluZGV4aW5nVHlwZSwgaW5saW5lQ2Fw
YWNpdHkpOwogICAgIH0KKyAgICAvLyBXZSBkbyBuZWVkIHRvIGxvY2sgaGVyZSB0byBhdm9pZCBh
IHJhY2Ugd2l0aCBhIGNvbXBpbGVyIHRocmVhZCB0aGF0IG1heSBiZSBhY2Nlc3NpbmcgdGhlIGNh
Y2hlIGluIHJlYWQtb25seSBtb2RlLgorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKICAgICBtX3N0cnVjdHVyZXMuc2V0KGtleSwgc3RydWN0dXJlKTsKLQogICAgIHJldHVybiBz
dHJ1Y3R1cmU7CiB9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlQ2FjaGU6OnRyeUVtcHR5T2JqZWN0
U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUNvbXBpbGVyVGhyZWFkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKCEhcHJvdG90eXBlKTsgLy8gV2UgdXNlIG51bGxwdHIg
aW5zaWRlIHRoZSBIYXNoTWFwIGZvciBwcm90b3R5cGUgdG8gbWVhbiBwb2x5IHByb3RvLCBzbyB1
c2VyJ3Mgb2YgdGhpcyBBUEkgbXVzdCBwcm92aWRlIG5vbi1udWxsIHByb3RvdHlwZXMuCisgICAg
CisgICAgUHJvdG90eXBlS2V5IGtleSB7IHByb3RvdHlwZSwgbnVsbHB0ciwgaW5saW5lQ2FwYWNp
dHksIEpTRmluYWxPYmplY3Q6OmluZm8oKSwgZ2xvYmFsT2JqZWN0fTsKKyAgICAvLyBXZSBuZWVk
IHRvIGhvbGQgYSBsb2NrIHRvIG1ha2Ugc3VyZSB0aGUgbWFpbiB0aHJlYWQgaXMgbm90IG1vZGlm
eWluZyB0aGUgdW5kZXJseWluZyBoYXNoIHRhYmxlIGZyb20gdW5kZXIgdXMuCisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG1fc3RydWN0dXJlcy5nZXQoa2V5KSkgeworICAgICAgICBBU1NFUlQocHJvdG90eXBlLT5tYXlC
ZVByb3RvdHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIFN0cnVjdHVyZSogU3RydWN0dXJlQ2FjaGU6OmVtcHR5U3RydWN0
dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlKQogewog
ICAgIC8vIFdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBpbmxpbmUgY2FwYWNpdHkgc3RhdGljIGFu
YWx5c2lzIGZvciBzdWJjbGFzc2VzIGFuZCBhbGwgaW50ZXJuYWwgZnVuY3Rpb24gY29uc3RydWN0
b3JzIGhhdmUgYSBkZWZhdWx0IGlubGluZSBjYXBhY2l0eSBvZiAwLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCShyZXZpc2lvbiAyNDQy
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgog
I2luY2x1ZGUgIlByb3RvdHlwZUtleS5oIgogI2luY2x1ZGUgIldlYWtHQ01hcC5oIgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNTEsNiArNTIsNyBAQAogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJl
KiBlbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHksIGJvb2wgbWFrZVBvbHlQcm90b1N0cnVjdHVy
ZSA9IGZhbHNlLCBGdW5jdGlvbkV4ZWN1dGFibGUqID0gbnVsbHB0cik7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RydWN0dXJlKiBlbXB0eVN0cnVjdHVyZUZvclByb3RvdHlwZUZyb21CYXNlU3Ry
dWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIHRyeUVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90
eXBlRnJvbUNvbXBpbGVyVGhyZWFkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKIAogcHJpdmF0ZToKICAg
ICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGlu
Z1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1
cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSopOwpAQCAtNTcsNiArNTksNyBAQAogCiAgICAgdXNpbmcg
U3RydWN0dXJlTWFwID0gV2Vha0dDTWFwPFByb3RvdHlwZUtleSwgU3RydWN0dXJlPjsKICAgICBT
dHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOworICAgIExvY2sgbV9sb2NrOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367441</attachid>
            <date>2019-04-15 12:42:02 -0700</date>
            <delta_ts>2019-04-15 13:11:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch196886</filename>
            <type>text/plain</type>
            <size>13087</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDQyNzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0YW50IGZvbGQg
T2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3BlcmFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBu
ZXcgYmVuY2htYXJrIGRvZXMgbm90IGN1cnJlbnRseSBzZWUgYSBzcGVlZHVwIHdpdGggaW5saW5p
bmcgcmVtb3ZlZC4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGRvIG5vdCB5ZXQgaGF2
ZSBpbmxpbmUgY2FjaGluZyBmb3IgT2JqZWN0LmNyZWF0ZSgpLCB3ZSBvbmx5IG9wdGltaXplIGl0
IHdoZW4gdGhlIERGRyBjYW4gc2VlIHN0YXRpY2FsbHkgdGhlIHByb3RvdHlwZSBiZWluZyBwYXNz
ZWQuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWNyZWF0ZS1jb25zdGFudC1w
cm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTktMDQtMTMgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUNhY2hlIHNob3Vs
ZCBjaGVjayB0aGF0IHRoZSBVbmxpbmtlZENvZGVCbG9jayB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgYmVmb3JlIGNhY2hpbmcgaXQKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQt
cHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gdGVz
dChwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKK30K
KwordmFyIHByb3RvdHlwZSA9IHtmb286IDQyfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyAr
K2kpIHsKKyAgICB0ZXN0KHByb3RvdHlwZSk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwkocmV2aXNpb24gMjQ0MjcxKQorKysgSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWNyZWF0ZS11bmRlZmluZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMgKzI0
LDEwIEBACiAgICAgICAgIHRlc3QodW5kZWZpbmVkKTsKICAgICB9LCBgVHlwZUVycm9yOiBPYmpl
Y3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLmApOwogfQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIC8vIFNvbWUgZm9sZGluZyBkb2VzIG5vdCBo
YXBwZW4gaW4gdGhlIG5vbi1pbmxpbmVkIHZlcnNpb24sIHNvIHRoaXMgY2FuIHRlc3QgYSBkaWZm
ZXJlbnQgcGF0aCB0aHJvdWdoIHRoZSBjb21waWxlcgorICAgIC8vIHRoYW4gdGhlIHByZXZpb3Vz
IGxvb3AuCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBPYmplY3QuY3JlYXRlKHVu
ZGVmaW5lZCk7CisgICAgfSwgYFR5cGVFcnJvcjogT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC5gKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ0Mjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNv
bnN0YW50IGZvbGQgT2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3Bl
cmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2
ODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworCisgICAgICAgIEl0
IGlzIGEgZmFpcmx5IHNpbXBsZSBhbmQgbGltaXRlZCBwYXRjaCwgYXMgaXQgb25seSB3b3JrcyB3
aGVuIHRoZSBERkcgY2FuIHByb3ZlIHRoZSBleGFjdCBvYmplY3QgdXNlZCBhcyBwcm90b3R5cGUu
CisgICAgICAgIEJ1dCB3aGVuIGl0IGFwcGxpZXMgaXQgY2FuIGJlIGEgc2lnbmlmaWNhbnQgd2lu
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCYXNlbGluZSAgICAgICAgICAgICAgICAgICBPcHRpbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICBvYmplY3QtY3JlYXRlLWNvbnN0YW50LXByb3RvdHlw
ZSAgICAgICAgICAgICAgMy42MDgyKy0wLjA5NzkgICAgIF4gICAgICAxLjY5NDcrLTAuMDc1NiAg
ICAgICAgXiBkZWZpbml0ZWx5IDIuMTI5MnggZmFzdGVyCisgICAgICAgIG9iamVjdC1jcmVhdGUt
bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjQ0OTIrLTAuMjUxMCAgICAgPyAgICAg
MTEuNTAzMCstMC4yNDAyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW5rbm93bi1v
YmplY3QtcHJvdG90eXBlICAgICAgIDE1LjYwNjcrLTAuMTg1MSAgICAgPyAgICAgMTUuNzUwMCst
MC4yMzIyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW50eXBlZC1wcm90b3R5cGUg
ICAgICAgICAgICAgICA4Ljg4NzMrLTAuMTI0MCAgICAgPyAgICAgIDguOTgwNistMC4xMjAyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCisgICAgICAgIDxnZW9tZXRyaWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY5NjcrLTAuMTIwOCAgICAgXiAgICAgIDcu
MjQwOCstMC4xMzY3ICAgICAgICBeIGRlZmluaXRlbHkgMS4yMDExeCBmYXN0ZXIKKworICAgICAg
ICBUaGUgb25seSBzdWJ0bGV0eSBpcyB0aGF0IHdlIG5lZWQgdG8gdG8gYWNjZXNzIHRoZSBTdHJ1
Y3R1cmVDYWNoZSBjb25jdXJyZW50bHkgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkIChzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5OSkKKyAgICAgICAgSSBz
b2x2ZWQgdGhpcyB3aXRoIGEgc2ltcGxlIGxvY2ssIHRha2VuIHdoZW4gdGhlIGNvbXBpbGVyIHRo
cmVhZCB0cmllcyB0byByZWFkIGl0LCBhbmQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdHJpZXMgdG8g
bW9kaWZ5IGl0LgorICAgICAgICBJIGV4cGVjdCBpdCB0byBiZSBleHRyZW1lbHkgbG93IGNvbnRl
bnRpb24sIGJ1dCB3aWxsIHdhdGNoIHRoZSBib3RzIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgVGhl
IGxvY2sgaXMgdGFrZW4gbmVpdGhlciB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyBvbmx5IHJlYWRp
bmcgdGhlIGNhY2hlIChpdCBoYXMgbm8tb25lIHRvIHJhY2Ugd2l0aCksIG5vciB3aGVuIHRoZSBH
QyBwdXJnZXMgaXQgb2YgZGVhZCBlbnRyaWVzIChpdCBkb2VzIG5vdCBmcmVlIGFueXRoaW5nIHdo
aWxlIGEgY29tcGlsZXIgdGhyZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBwaGFzZSkuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDYWNoZTo6Y3JlYXRlRW1wdHlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
YWNoZTo6dHJ5RW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQ29tcGlsZXJUaHJl
YWQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKwogMjAxOS0wNC0xNCAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
SmF2YVNjcmlwdENvcmUgZGVyaXZlZCBzb3VyY2VzIHNob3VsZCBvbmx5IGJlIHJlZmVyZW5jZWQg
aW5zaWRlIEphdmFTY3JpcHRDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
NDQyNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Cb29sZWFuTGF0dGljZS5oPgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMjU4NiwxNyArMjU4NywyMCBA
QAogCiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChiYXNl
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChiYXNlLmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0
cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoYmFzZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dm0oKS5zdHJ1Y3R1cmVDYWNoZS50
cnlFbXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShnbG9iYWxPYmplY3QsIGJhc2UuZ2V0
T2JqZWN0KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIG1f
c3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBk
aWRGb2xkQ2xvYmJlcldvcmxkKCk7Ci0gICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBn
bG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBnZXQgYSBz
dHJ1Y3R1cmUgZm9yIGEgY29uc3RhbnQgcHJvdG90eXBlLiBXZSBuZWVkIHRvIGFsbG93IGNvbmN1
cnJlbnQKLSAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVDYWNoZSBmcm9tIGNvbXBp
bGVyIHRocmVhZHMuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2MTk5CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjQ0MjcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2Fj
aGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC03NTAsMTUgKzc1
MSwxOCBAQAogCiAgICAgICAgICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNOdWxsKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3T2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJhc2UuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoYmFzZS5pc09iamVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT52bSgpLnN0cnVjdHVyZUNhY2hlLnRyeUVtcHR5T2Jq
ZWN0U3RydWN0dXJlQ29uY3VycmVudGx5KGdsb2JhbE9iamVjdCwgYmFzZS5nZXRPYmplY3QoKSwg
SlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3T2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IGEgc3RydWN0dXJl
IGZvciBhIGNvbnN0YW50IHByb3RvdHlwZS4gV2UgbmVlZCB0byBhbGxvdyBjb25jdXJyZW50Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVDYWNoZSBmcm9tIGNvbXBp
bGVyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODYxOTkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwCShyZXZpc2lvbiAyNDQyNzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2FjaGUuaCIKIAotI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0
Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM2LDYgKzM2LDcgQEAKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghIXByb3RvdHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGluc2lkZSB0
aGUgSGFzaE1hcCBmb3IgcHJvdG90eXBlIHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNlcidzIG9m
IHRoaXMgQVBJIG11c3QgcHJvdmlkZSBub24tbnVsbCBwcm90b3R5cGVzLgogCisgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBsb2NrIGhlcmUgYmVjYXVzZSBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4g
Z2V0IGhlcmUsIGFuZCBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gbXV0YXRlIHRoZSBjYWNoZQog
ICAgIFByb3RvdHlwZUtleSBrZXkgeyBtYWtlUG9seVByb3RvU3RydWN0dXJlID8gbnVsbHB0ciA6
IHByb3RvdHlwZSwgZXhlY3V0YWJsZSwgaW5saW5lQ2FwYWNpdHksIGNsYXNzSW5mbywgZ2xvYmFs
T2JqZWN0IH07CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9zdHJ1Y3R1cmVzLmdl
dChrZXkpKSB7CiAgICAgICAgIGlmIChtYWtlUG9seVByb3RvU3RydWN0dXJlKSB7CkBAIC01OCwx
MSArNTksMjQgQEAKICAgICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoCiAgICAg
ICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHR5cGVJbmZvLCBjbGFzc0luZm8s
IGluZGV4aW5nVHlwZSwgaW5saW5lQ2FwYWNpdHkpOwogICAgIH0KKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgbV9zdHJ1Y3R1cmVzLnNldChrZXksIHN0cnVjdHVyZSk7
Ci0KICAgICByZXR1cm4gc3RydWN0dXJlOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hl
Ojp0cnlFbXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVCghIXByb3RvdHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGlu
c2lkZSB0aGUgSGFzaE1hcCBmb3IgcHJvdG90eXBlIHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNl
cidzIG9mIHRoaXMgQVBJIG11c3QgcHJvdmlkZSBub24tbnVsbCBwcm90b3R5cGVzLgorICAgIAor
ICAgIFByb3RvdHlwZUtleSBrZXkgeyBwcm90b3R5cGUsIG51bGxwdHIsIGlubGluZUNhcGFjaXR5
LCBKU0ZpbmFsT2JqZWN0OjppbmZvKCksIGdsb2JhbE9iamVjdH07CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOworICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fc3Ry
dWN0dXJlcy5nZXQoa2V5KSkgeworICAgICAgICBBU1NFUlQocHJvdG90eXBlLT5tYXlCZVByb3Rv
dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFN0cnVjdHVyZSogU3RydWN0dXJlQ2FjaGU6OmVtcHR5U3RydWN0dXJlRm9y
UHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlKQogewogICAgIC8v
IFdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBpbmxpbmUgY2FwYWNpdHkgc3RhdGljIGFuYWx5c2lz
IGZvciBzdWJjbGFzc2VzIGFuZCBhbGwgaW50ZXJuYWwgZnVuY3Rpb24gY29uc3RydWN0b3JzIGhh
dmUgYSBkZWZhdWx0IGlubGluZSBjYXBhY2l0eSBvZiAwLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCShyZXZpc2lvbiAyNDQyNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNs
dWRlICJQcm90b3R5cGVLZXkuaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIKKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTUxLDYgKzUyLDcgQEAKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1w
dHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCos
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUgPSBm
YWxzZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiA9IG51bGxwdHIpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZSogZW1wdHlTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQmFzZVN0cnVjdHVy
ZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RydWN0dXJlKiB0cnlFbXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5KTsKIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3RydWN0dXJlKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29s
IG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSopOwpAQCAtNTcsNiAr
NTksNyBAQAogCiAgICAgdXNpbmcgU3RydWN0dXJlTWFwID0gV2Vha0dDTWFwPFByb3RvdHlwZUtl
eSwgU3RydWN0dXJlPjsKICAgICBTdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOworICAgIExvY2sg
bV9sb2NrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367446</attachid>
            <date>2019-04-15 13:11:42 -0700</date>
            <delta_ts>2019-04-15 16:22:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch196886</filename>
            <type>text/plain</type>
            <size>13087</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDQyNzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0YW50IGZvbGQg
T2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3BlcmFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBu
ZXcgYmVuY2htYXJrIGRvZXMgbm90IGN1cnJlbnRseSBzZWUgYSBzcGVlZHVwIHdpdGggaW5saW5p
bmcgcmVtb3ZlZC4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGRvIG5vdCB5ZXQgaGF2
ZSBpbmxpbmUgY2FjaGluZyBmb3IgT2JqZWN0LmNyZWF0ZSgpLCB3ZSBvbmx5IG9wdGltaXplIGl0
IHdoZW4gdGhlIERGRyBjYW4gc2VlIHN0YXRpY2FsbHkgdGhlIHByb3RvdHlwZSBiZWluZyBwYXNz
ZWQuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWNyZWF0ZS1jb25zdGFudC1w
cm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTktMDQtMTMgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUNhY2hlIHNob3Vs
ZCBjaGVjayB0aGF0IHRoZSBVbmxpbmtlZENvZGVCbG9jayB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgYmVmb3JlIGNhY2hpbmcgaXQKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQt
cHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gdGVz
dChwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKK30K
KwordmFyIHByb3RvdHlwZSA9IHtmb286IDQyfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyAr
K2kpIHsKKyAgICB0ZXN0KHByb3RvdHlwZSk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwkocmV2aXNpb24gMjQ0MjcxKQorKysgSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWNyZWF0ZS11bmRlZmluZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMgKzI0
LDEwIEBACiAgICAgICAgIHRlc3QodW5kZWZpbmVkKTsKICAgICB9LCBgVHlwZUVycm9yOiBPYmpl
Y3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLmApOwogfQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIC8vIFNvbWUgZm9sZGluZyBkb2VzIG5vdCBo
YXBwZW4gaW4gdGhlIG5vbi1pbmxpbmVkIHZlcnNpb24sIHNvIHRoaXMgY2FuIHRlc3QgYSBkaWZm
ZXJlbnQgcGF0aCB0aHJvdWdoIHRoZSBjb21waWxlcgorICAgIC8vIHRoYW4gdGhlIHByZXZpb3Vz
IGxvb3AuCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBPYmplY3QuY3JlYXRlKHVu
ZGVmaW5lZCk7CisgICAgfSwgYFR5cGVFcnJvcjogT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC5gKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ0Mjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNv
bnN0YW50IGZvbGQgT2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3Bl
cmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2
ODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworCisgICAgICAgIEl0
IGlzIGEgZmFpcmx5IHNpbXBsZSBhbmQgbGltaXRlZCBwYXRjaCwgYXMgaXQgb25seSB3b3JrcyB3
aGVuIHRoZSBERkcgY2FuIHByb3ZlIHRoZSBleGFjdCBvYmplY3QgdXNlZCBhcyBwcm90b3R5cGUu
CisgICAgICAgIEJ1dCB3aGVuIGl0IGFwcGxpZXMgaXQgY2FuIGJlIGEgc2lnbmlmaWNhbnQgd2lu
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCYXNlbGluZSAgICAgICAgICAgICAgICAgICBPcHRpbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICBvYmplY3QtY3JlYXRlLWNvbnN0YW50LXByb3RvdHlw
ZSAgICAgICAgICAgICAgMy42MDgyKy0wLjA5NzkgICAgIF4gICAgICAxLjY5NDcrLTAuMDc1NiAg
ICAgICAgXiBkZWZpbml0ZWx5IDIuMTI5MnggZmFzdGVyCisgICAgICAgIG9iamVjdC1jcmVhdGUt
bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjQ0OTIrLTAuMjUxMCAgICAgPyAgICAg
MTEuNTAzMCstMC4yNDAyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW5rbm93bi1v
YmplY3QtcHJvdG90eXBlICAgICAgIDE1LjYwNjcrLTAuMTg1MSAgICAgPyAgICAgMTUuNzUwMCst
MC4yMzIyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW50eXBlZC1wcm90b3R5cGUg
ICAgICAgICAgICAgICA4Ljg4NzMrLTAuMTI0MCAgICAgPyAgICAgIDguOTgwNistMC4xMjAyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCisgICAgICAgIDxnZW9tZXRyaWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY5NjcrLTAuMTIwOCAgICAgXiAgICAgIDcu
MjQwOCstMC4xMzY3ICAgICAgICBeIGRlZmluaXRlbHkgMS4yMDExeCBmYXN0ZXIKKworICAgICAg
ICBUaGUgb25seSBzdWJ0bGV0eSBpcyB0aGF0IHdlIG5lZWQgdG8gdG8gYWNjZXNzIHRoZSBTdHJ1
Y3R1cmVDYWNoZSBjb25jdXJyZW50bHkgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkIChzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5OSkKKyAgICAgICAgSSBz
b2x2ZWQgdGhpcyB3aXRoIGEgc2ltcGxlIGxvY2ssIHRha2VuIHdoZW4gdGhlIGNvbXBpbGVyIHRo
cmVhZCB0cmllcyB0byByZWFkIGl0LCBhbmQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdHJpZXMgdG8g
bW9kaWZ5IGl0LgorICAgICAgICBJIGV4cGVjdCBpdCB0byBiZSBleHRyZW1lbHkgbG93IGNvbnRl
bnRpb24sIGJ1dCB3aWxsIHdhdGNoIHRoZSBib3RzIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgVGhl
IGxvY2sgaXMgdGFrZW4gbmVpdGhlciB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyBvbmx5IHJlYWRp
bmcgdGhlIGNhY2hlIChpdCBoYXMgbm8tb25lIHRvIHJhY2Ugd2l0aCksIG5vciB3aGVuIHRoZSBH
QyBwdXJnZXMgaXQgb2YgZGVhZCBlbnRyaWVzIChpdCBkb2VzIG5vdCBmcmVlIGFueXRoaW5nIHdo
aWxlIGEgY29tcGlsZXIgdGhyZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBwaGFzZSkuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDYWNoZTo6Y3JlYXRlRW1wdHlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
YWNoZTo6dHJ5RW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQ29tcGlsZXJUaHJl
YWQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKwogMjAxOS0wNC0xNCAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
SmF2YVNjcmlwdENvcmUgZGVyaXZlZCBzb3VyY2VzIHNob3VsZCBvbmx5IGJlIHJlZmVyZW5jZWQg
aW5zaWRlIEphdmFTY3JpcHRDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
NDQyNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Cb29sZWFuTGF0dGljZS5oPgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMjU4NiwxNyArMjU4NywyMCBA
QAogCiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChiYXNl
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChiYXNlLmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0
cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoYmFzZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dm0oKS5zdHJ1Y3R1cmVDYWNoZS50
cnlFbXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShnbG9iYWxPYmplY3QsIGJhc2UuZ2V0
T2JqZWN0KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIG1f
c3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBk
aWRGb2xkQ2xvYmJlcldvcmxkKCk7Ci0gICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBn
bG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICAgICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBnZXQgYSBz
dHJ1Y3R1cmUgZm9yIGEgY29uc3RhbnQgcHJvdG90eXBlLiBXZSBuZWVkIHRvIGFsbG93IGNvbmN1
cnJlbnQKLSAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVDYWNoZSBmcm9tIGNvbXBp
bGVyIHRocmVhZHMuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2MTk5CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjQ0MjcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2Fj
aGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC03NTAsMTUgKzc1
MSwxOCBAQAogCiAgICAgICAgICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNOdWxsKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3T2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJhc2UuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoYmFzZS5pc09iamVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT52bSgpLnN0cnVjdHVyZUNhY2hlLnRyeUVtcHR5T2Jq
ZWN0U3RydWN0dXJlQ29uY3VycmVudGx5KGdsb2JhbE9iamVjdCwgYmFzZS5nZXRPYmplY3QoKSwg
SlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3T2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IGEgc3RydWN0dXJl
IGZvciBhIGNvbnN0YW50IHByb3RvdHlwZS4gV2UgbmVlZCB0byBhbGxvdyBjb25jdXJyZW50Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVDYWNoZSBmcm9tIGNvbXBp
bGVyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODYxOTkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwCShyZXZpc2lvbiAyNDQyNzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2FjaGUuaCIKIAotI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0
Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM2LDYgKzM2LDcgQEAKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghIXByb3RvdHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGluc2lkZSB0
aGUgSGFzaE1hcCBmb3IgcHJvdG90eXBlIHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNlcidzIG9m
IHRoaXMgQVBJIG11c3QgcHJvdmlkZSBub24tbnVsbCBwcm90b3R5cGVzLgogCisgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBsb2NrIGhlcmUgYmVjYXVzZSBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4g
Z2V0IGhlcmUsIGFuZCBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gbXV0YXRlIHRoZSBjYWNoZQog
ICAgIFByb3RvdHlwZUtleSBrZXkgeyBtYWtlUG9seVByb3RvU3RydWN0dXJlID8gbnVsbHB0ciA6
IHByb3RvdHlwZSwgZXhlY3V0YWJsZSwgaW5saW5lQ2FwYWNpdHksIGNsYXNzSW5mbywgZ2xvYmFs
T2JqZWN0IH07CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9zdHJ1Y3R1cmVzLmdl
dChrZXkpKSB7CiAgICAgICAgIGlmIChtYWtlUG9seVByb3RvU3RydWN0dXJlKSB7CkBAIC01OCwx
MSArNTksMjQgQEAKICAgICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoCiAgICAg
ICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHR5cGVJbmZvLCBjbGFzc0luZm8s
IGluZGV4aW5nVHlwZSwgaW5saW5lQ2FwYWNpdHkpOwogICAgIH0KKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgbV9zdHJ1Y3R1cmVzLnNldChrZXksIHN0cnVjdHVyZSk7
Ci0KICAgICByZXR1cm4gc3RydWN0dXJlOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hl
Ojp0cnlFbXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVCghIXByb3RvdHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGlu
c2lkZSB0aGUgSGFzaE1hcCBmb3IgcHJvdG90eXBlIHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNl
cidzIG9mIHRoaXMgQVBJIG11c3QgcHJvdmlkZSBub24tbnVsbCBwcm90b3R5cGVzLgorICAgIAor
ICAgIFByb3RvdHlwZUtleSBrZXkgeyBwcm90b3R5cGUsIG51bGxwdHIsIGlubGluZUNhcGFjaXR5
LCBKU0ZpbmFsT2JqZWN0OjppbmZvKCksIGdsb2JhbE9iamVjdH07CisgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOworICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fc3Ry
dWN0dXJlcy5nZXQoa2V5KSkgeworICAgICAgICBBU1NFUlQocHJvdG90eXBlLT5tYXlCZVByb3Rv
dHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFN0cnVjdHVyZSogU3RydWN0dXJlQ2FjaGU6OmVtcHR5U3RydWN0dXJlRm9y
UHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIHByb3RvdHlwZSwgU3RydWN0dXJlKiBiYXNlU3RydWN0dXJlKQogewogICAgIC8v
IFdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSBpbmxpbmUgY2FwYWNpdHkgc3RhdGljIGFuYWx5c2lz
IGZvciBzdWJjbGFzc2VzIGFuZCBhbGwgaW50ZXJuYWwgZnVuY3Rpb24gY29uc3RydWN0b3JzIGhh
dmUgYSBkZWZhdWx0IGlubGluZSBjYXBhY2l0eSBvZiAwLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCShyZXZpc2lvbiAyNDQyNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNs
dWRlICJQcm90b3R5cGVLZXkuaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIKKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTUxLDYgKzUyLDcgQEAKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogZW1w
dHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCos
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUgPSBm
YWxzZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiA9IG51bGxwdHIpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZSogZW1wdHlTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQmFzZVN0cnVjdHVy
ZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RydWN0dXJlKiB0cnlFbXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5KTsKIAogcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUVtcHR5U3RydWN0dXJlKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBib29s
IG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJsZSopOwpAQCAtNTcsNiAr
NTksNyBAQAogCiAgICAgdXNpbmcgU3RydWN0dXJlTWFwID0gV2Vha0dDTWFwPFByb3RvdHlwZUtl
eSwgU3RydWN0dXJlPjsKICAgICBTdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOworICAgIExvY2sg
bV9sb2NrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="commit-queue"
          id="383805"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367475</attachid>
            <date>2019-04-15 16:22:50 -0700</date>
            <delta_ts>2019-04-15 17:28:53 -0700</delta_ts>
            <desc>PatchForLanding</desc>
            <filename>patch196886</filename>
            <type>text/plain</type>
            <size>13076</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDQyNzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0YW50IGZvbGQg
T2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3BlcmFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBu
ZXcgYmVuY2htYXJrIGRvZXMgbm90IGN1cnJlbnRseSBzZWUgYSBzcGVlZHVwIHdpdGggaW5saW5p
bmcgcmVtb3ZlZC4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGRvIG5vdCB5ZXQgaGF2
ZSBpbmxpbmUgY2FjaGluZyBmb3IgT2JqZWN0LmNyZWF0ZSgpLCB3ZSBvbmx5IG9wdGltaXplIGl0
IHdoZW4gdGhlIERGRyBjYW4gc2VlIHN0YXRpY2FsbHkgdGhlIHByb3RvdHlwZSBiZWluZyBwYXNz
ZWQuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWNyZWF0ZS1jb25zdGFudC1w
cm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTktMDQtMTMgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUNhY2hlIHNob3Vs
ZCBjaGVjayB0aGF0IHRoZSBVbmxpbmtlZENvZGVCbG9jayB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgYmVmb3JlIGNhY2hpbmcgaXQKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQtcHJvdG90eXBlLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1jcmVhdGUtY29uc3RhbnQt
cHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gdGVz
dChwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKK30K
KwordmFyIHByb3RvdHlwZSA9IHtmb286IDQyfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyAr
K2kpIHsKKyAgICB0ZXN0KHByb3RvdHlwZSk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY3JlYXRlLXVuZGVmaW5lZC5qcwkocmV2aXNpb24gMjQ0MjcxKQorKysgSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWNyZWF0ZS11bmRlZmluZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMgKzI0
LDEwIEBACiAgICAgICAgIHRlc3QodW5kZWZpbmVkKTsKICAgICB9LCBgVHlwZUVycm9yOiBPYmpl
Y3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLmApOwogfQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIC8vIFNvbWUgZm9sZGluZyBkb2VzIG5vdCBo
YXBwZW4gaW4gdGhlIG5vbi1pbmxpbmVkIHZlcnNpb24sIHNvIHRoaXMgY2FuIHRlc3QgYSBkaWZm
ZXJlbnQgcGF0aCB0aHJvdWdoIHRoZSBjb21waWxlcgorICAgIC8vIHRoYW4gdGhlIHByZXZpb3Vz
IGxvb3AuCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBPYmplY3QuY3JlYXRlKHVu
ZGVmaW5lZCk7CisgICAgfSwgYFR5cGVFcnJvcjogT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC5gKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ0MjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA0LTE1ICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGNv
bnN0YW50IGZvbGQgT2JqZWN0LmNyZWF0ZSgpIHdpdGggYSBjb25zdGFudCBwcm90b3R5cGUgb3Bl
cmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2
ODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworCisgICAgICAgIEl0
IGlzIGEgZmFpcmx5IHNpbXBsZSBhbmQgbGltaXRlZCBwYXRjaCwgYXMgaXQgb25seSB3b3JrcyB3
aGVuIHRoZSBERkcgY2FuIHByb3ZlIHRoZSBleGFjdCBvYmplY3QgdXNlZCBhcyBwcm90b3R5cGUu
CisgICAgICAgIEJ1dCB3aGVuIGl0IGFwcGxpZXMgaXQgY2FuIGJlIGEgc2lnbmlmaWNhbnQgd2lu
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCYXNlbGluZSAgICAgICAgICAgICAgICAgICBPcHRpbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICBvYmplY3QtY3JlYXRlLWNvbnN0YW50LXByb3RvdHlw
ZSAgICAgICAgICAgICAgMy42MDgyKy0wLjA5NzkgICAgIF4gICAgICAxLjY5NDcrLTAuMDc1NiAg
ICAgICAgXiBkZWZpbml0ZWx5IDIuMTI5MnggZmFzdGVyCisgICAgICAgIG9iamVjdC1jcmVhdGUt
bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjQ0OTIrLTAuMjUxMCAgICAgPyAgICAg
MTEuNTAzMCstMC4yNDAyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW5rbm93bi1v
YmplY3QtcHJvdG90eXBlICAgICAgIDE1LjYwNjcrLTAuMTg1MSAgICAgPyAgICAgMTUuNzUwMCst
MC4yMzIyICAgICAgICA/CisgICAgICAgIG9iamVjdC1jcmVhdGUtdW50eXBlZC1wcm90b3R5cGUg
ICAgICAgICAgICAgICA4Ljg4NzMrLTAuMTI0MCAgICAgPyAgICAgIDguOTgwNistMC4xMjAyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCisgICAgICAgIDxnZW9tZXRyaWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY5NjcrLTAuMTIwOCAgICAgXiAgICAgIDcu
MjQwOCstMC4xMzY3ICAgICAgICBeIGRlZmluaXRlbHkgMS4yMDExeCBmYXN0ZXIKKworICAgICAg
ICBUaGUgb25seSBzdWJ0bGV0eSBpcyB0aGF0IHdlIG5lZWQgdG8gdG8gYWNjZXNzIHRoZSBTdHJ1
Y3R1cmVDYWNoZSBjb25jdXJyZW50bHkgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkIChzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5OSkKKyAgICAgICAgSSBz
b2x2ZWQgdGhpcyB3aXRoIGEgc2ltcGxlIGxvY2ssIHRha2VuIHdoZW4gdGhlIGNvbXBpbGVyIHRo
cmVhZCB0cmllcyB0byByZWFkIGl0LCBhbmQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdHJpZXMgdG8g
bW9kaWZ5IGl0LgorICAgICAgICBJIGV4cGVjdCBpdCB0byBiZSBleHRyZW1lbHkgbG93IGNvbnRl
bnRpb24sIGJ1dCB3aWxsIHdhdGNoIHRoZSBib3RzIGp1c3QgaW4gY2FzZS4KKyAgICAgICAgVGhl
IGxvY2sgaXMgdGFrZW4gbmVpdGhlciB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyBvbmx5IHJlYWRp
bmcgdGhlIGNhY2hlIChpdCBoYXMgbm8tb25lIHRvIHJhY2Ugd2l0aCksIG5vciB3aGVuIHRoZSBH
QyBwdXJnZXMgaXQgb2YgZGVhZCBlbnRyaWVzIChpdCBkb2VzIG5vdCBmcmVlIGFueXRoaW5nIHdo
aWxlIGEgY29tcGlsZXIgdGhyZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBwaGFzZSkuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDYWNoZTo6Y3JlYXRlRW1wdHlTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVD
YWNoZTo6dHJ5RW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGVGcm9tQ29tcGlsZXJUaHJl
YWQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaDoKKwogMjAxOS0wNC0xNCAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
SmF2YVNjcmlwdENvcmUgZGVyaXZlZCBzb3VyY2VzIHNob3VsZCBvbmx5IGJlIHJlZmVyZW5jZWQg
aW5zaWRlIEphdmFTY3JpcHRDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
NDQyNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdHJp
bmdPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Cb29sZWFuTGF0dGljZS5oPgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMjU4NiwxNyArMjU4NywyMCBA
QAogCiAgICAgY2FzZSBPYmplY3RDcmVhdGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgYmFzZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChiYXNl
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChiYXNlLmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0
cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoYmFzZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dm0oKS5zdHJ1Y3R1cmVDYWNoZS5l
bXB0eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShnbG9iYWxPYmplY3QsIGJhc2UuZ2V0T2Jq
ZWN0KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBkaWRG
b2xkQ2xvYmJlcldvcmxkKCk7Ci0gICAgICAgICAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBnbG9i
YWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAg
ICAgc2V0Rm9yTm9kZShub2RlLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBnZXQgYSBzdHJ1
Y3R1cmUgZm9yIGEgY29uc3RhbnQgcHJvdG90eXBlLiBXZSBuZWVkIHRvIGFsbG93IGNvbmN1cnJl
bnQKLSAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVDYWNoZSBmcm9tIGNvbXBpbGVy
IHRocmVhZHMuCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2MTk5CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMjQ0MjcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2FjaGUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC03NTAsMTUgKzc1MSwx
OCBAQAogCiAgICAgICAgICAgICBjYXNlIE9iamVjdENyZWF0ZTogewogICAgICAgICAgICAgICAg
IGlmIChKU1ZhbHVlIGJhc2UgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFs
dWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNOdWxsKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvTmV3T2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJh
c2UuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYmFzZS5pc09iamVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT52bSgpLnN0cnVjdHVyZUNhY2hlLmVtcHR5T2JqZWN0U3Ry
dWN0dXJlQ29uY3VycmVudGx5KGdsb2JhbE9iamVjdCwgYmFzZS5nZXRPYmplY3QoKSwgSlNGaW5h
bE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvTmV3T2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
c3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IGEgc3RydWN0dXJlIGZvciBh
IGNvbnN0YW50IHByb3RvdHlwZS4gV2UgbmVlZCB0byBhbGxvdyBjb25jdXJyZW50Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIGFjY2VzcyB0byBTdHJ1Y3R1cmVDYWNoZSBmcm9tIGNvbXBpbGVyIHRo
cmVhZHMuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODYxOTkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuY3BwCShyZXZpc2lvbiAyNDQyNzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlQ2FjaGUuaCIKIAotI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
ZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM2LDYgKzM2LDcgQEAKIHsKICAgICBSRUxF
QVNFX0FTU0VSVCghIXByb3RvdHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGluc2lkZSB0aGUgSGFz
aE1hcCBmb3IgcHJvdG90eXBlIHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNlcidzIG9mIHRoaXMg
QVBJIG11c3QgcHJvdmlkZSBub24tbnVsbCBwcm90b3R5cGVzLgogCisgICAgLy8gV2UgZG9uJ3Qg
bmVlZCB0byBsb2NrIGhlcmUgYmVjYXVzZSBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gZ2V0IGhl
cmUsIGFuZCBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gbXV0YXRlIHRoZSBjYWNoZQogICAgIFBy
b3RvdHlwZUtleSBrZXkgeyBtYWtlUG9seVByb3RvU3RydWN0dXJlID8gbnVsbHB0ciA6IHByb3Rv
dHlwZSwgZXhlY3V0YWJsZSwgaW5saW5lQ2FwYWNpdHksIGNsYXNzSW5mbywgZ2xvYmFsT2JqZWN0
IH07CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9zdHJ1Y3R1cmVzLmdldChrZXkp
KSB7CiAgICAgICAgIGlmIChtYWtlUG9seVByb3RvU3RydWN0dXJlKSB7CkBAIC01OCwxMSArNTks
MjQgQEAKICAgICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUoCiAgICAgICAgICAg
ICB2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHR5cGVJbmZvLCBjbGFzc0luZm8sIGluZGV4
aW5nVHlwZSwgaW5saW5lQ2FwYWNpdHkpOwogICAgIH0KKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fbG9jayk7CiAgICAgbV9zdHJ1Y3R1cmVzLnNldChrZXksIHN0cnVjdHVyZSk7Ci0KICAg
ICByZXR1cm4gc3RydWN0dXJlOwogfQogCitTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hlOjplbXB0
eU9iamVjdFN0cnVjdHVyZUNvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVCghIXByb3RvdHlwZSk7IC8vIFdlIHVzZSBudWxscHRyIGluc2lkZSB0aGUg
SGFzaE1hcCBmb3IgcHJvdG90eXBlIHRvIG1lYW4gcG9seSBwcm90bywgc28gdXNlcidzIG9mIHRo
aXMgQVBJIG11c3QgcHJvdmlkZSBub24tbnVsbCBwcm90b3R5cGVzLgorICAgIAorICAgIFByb3Rv
dHlwZUtleSBrZXkgeyBwcm90b3R5cGUsIG51bGxwdHIsIGlubGluZUNhcGFjaXR5LCBKU0ZpbmFs
T2JqZWN0OjppbmZvKCksIGdsb2JhbE9iamVjdCB9OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9sb2NrKTsKKyAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX3N0cnVjdHVyZXMu
Z2V0KGtleSkpIHsKKyAgICAgICAgQVNTRVJUKHByb3RvdHlwZS0+bWF5QmVQcm90b3R5cGUoKSk7
CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwor
fQorCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUNhY2hlOjplbXB0eVN0cnVjdHVyZUZvclByb3RvdHlw
ZUZyb21CYXNlU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkKIHsKICAgICAvLyBXZSBjdXJy
ZW50bHkgZG8gbm90IGhhdmUgaW5saW5lIGNhcGFjaXR5IHN0YXRpYyBhbmFseXNpcyBmb3Igc3Vi
Y2xhc3NlcyBhbmQgYWxsIGludGVybmFsIGZ1bmN0aW9uIGNvbnN0cnVjdG9ycyBoYXZlIGEgZGVm
YXVsdCBpbmxpbmUgY2FwYWNpdHkgb2YgMC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAkocmV2aXNpb24gMjQ0MjcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiUHJv
dG90eXBlS2V5LmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KICNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw2
ICs1Miw3IEBACiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGVtcHR5T2JqZWN0
U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCB1bnNpZ25l
ZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVByb3RvU3RydWN0dXJlID0gZmFsc2UsIEZ1
bmN0aW9uRXhlY3V0YWJsZSogPSBudWxscHRyKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1
Y3R1cmUqIGVtcHR5U3RydWN0dXJlRm9yUHJvdG90eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCosIFN0cnVjdHVyZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IFN0cnVjdHVyZSogZW1wdHlPYmplY3RTdHJ1Y3R1cmVDb25jdXJyZW50bHkoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7CiAKIHBy
aXZhdGU6CiAgICAgU3RydWN0dXJlKiBjcmVhdGVFbXB0eVN0cnVjdHVyZShKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZv
KiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVBy
b3RvU3RydWN0dXJlLCBGdW5jdGlvbkV4ZWN1dGFibGUqKTsKQEAgLTU3LDYgKzU5LDcgQEAKIAog
ICAgIHVzaW5nIFN0cnVjdHVyZU1hcCA9IFdlYWtHQ01hcDxQcm90b3R5cGVLZXksIFN0cnVjdHVy
ZT47CiAgICAgU3RydWN0dXJlTWFwIG1fc3RydWN0dXJlczsKKyAgICBMb2NrIG1fbG9jazsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>