<?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>64582</bug_id>
          
          <creation_ts>2011-07-14 20:10:13 -0700</creation_ts>
          <short_desc>JSC JIT does not inline GC allocation fast paths</short_desc>
          <delta_ts>2011-07-18 11:56:05 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>437497</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-14 20:10:13 -0700</bug_when>
    <thetext>The JSC GC now has easy-to-inline allocation fast paths.  But the JSC JIT still emits out-of-line stub calls for allocation.  This introduces two forms of overhead.  First, every allocation pays the price of call overhead, even if the allocation just involves a load, a branch, and a handful of stores.  Second, an inlined JIT-generated fast path can directly locate and access the appropriate SizeClass, which should simplify the fast path even more than would be possible with ahead-of-time compilation with a C++ compiler (since the C++ compiler does not statically know the address of the SizeClass and must instead find it by first loading the global data and then adding a constant).  The JSC JIT should inline the GC allocation fast path to alleviate these overheads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437516</commentid>
    <comment_count>1</comment_count>
      <attachid>100924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-14 20:47:41 -0700</bug_when>
    <thetext>Created attachment 100924
the patch

This patch works gives a 1.3% speed-up on V8, and is neutral on SunSpider.

I&apos;ve lived on it for a day or so, and it seems to work.  It passes all tests.  But I&apos;m not sure if I&apos;m handling global objects (for initializing the structure in op_new_object) correctly, so I&apos;d appreciate some feedback on that!  Separately I tested the speed-up of op_new_object in isolation, and it wasn&apos;t much (statistically significant but fraction of a percent); it definitely appears that op_create_this is doing most of the work.


[pizlo@minime PerformanceTests] ../Tools/Scripts/sunspider-compare-results --v8 v8-v4-results/sunspider-results-2011-07-14-20.03.02.js /Volumes/Data/pizlo/quinary/OpenSource/PerformanceTests/SunSpider/v8-v4-results/sunspider-results-2011-07-14-20.00.09.js


TEST              COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:      1.013x as fast    1166.2ms +/- 0.3%   1150.7ms +/- 0.3%     significant

=============================================================================

  v8:             1.013x as fast    1166.2ms +/- 0.3%   1150.7ms +/- 0.3%     significant
    crypto:       1.016x as fast     194.6ms +/- 0.6%    191.6ms +/- 0.4%     significant
    deltablue:    1.014x as fast     240.7ms +/- 0.8%    237.4ms +/- 0.5%     significant
    earley-boyer: 1.028x as fast     129.7ms +/- 0.3%    126.2ms +/- 0.4%     significant
    raytrace:     1.050x as fast      73.8ms +/- 0.8%     70.3ms +/- 1.4%     significant
    regexp:       ??                 105.9ms +/- 0.6%    106.2ms +/- 0.4%     not conclusive: might be *1.003x as slow*
    richards:     -                  223.8ms +/- 0.6%    223.8ms +/- 0.9% 
    splay:        1.013x as fast     197.7ms +/- 0.5%    195.2ms +/- 0.9%     significant



[pizlo@minime PerformanceTests] ../Tools/Scripts/sunspider-compare-results sunspider-1.0-results/sunspider-results-2011-07-14-20.04.12.js /Volumes/Data/pizlo/quinary/OpenSource/PerformanceTests/SunSpider/sunspider-1.0-results/sunspider-results-2011-07-14-20.04.56.js


TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           -                 174.4ms +/- 0.3%   173.9ms +/- 0.4% 

=============================================================================

  3d:                  -                  25.2ms +/- 1.0%    25.1ms +/- 0.9% 
    cube:              ??                  8.9ms +/- 1.0%     9.0ms +/- 0.8%     not conclusive: might be *1.009x as slow*
    morph:             -                   7.3ms +/- 3.3%     7.1ms +/- 1.4% 
    raytrace:          ??                  9.0ms +/- 0.0%     9.0ms +/- 0.9%     not conclusive: might be *1.004x as slow*

  access:              -                  22.1ms +/- 0.4%    22.1ms +/- 0.5% 
    binary-trees:      ??                  2.0ms +/- 2.0%     2.0ms +/- 2.8%     not conclusive: might be *1.010x as slow*
    fannkuch:          -                  11.1ms +/- 0.8%    11.1ms +/- 0.6% 
    nbody:             -                   6.0ms +/- 0.0%     6.0ms +/- 0.0% 
    nsieve:            ??                  3.0ms +/- 0.0%     3.0ms +/- 1.3%     not conclusive: might be *1.007x as slow*

  bitops:              ??                 15.4ms +/- 1.2%    15.5ms +/- 1.0%     not conclusive: might be *1.006x as slow*
    3bit-bits-in-byte: -                   2.0ms +/- 0.0%     2.0ms +/- 0.0% 
    bits-in-byte:      ??                  5.4ms +/- 2.6%     5.5ms +/- 2.6%     not conclusive: might be *1.019x as slow*
    bitwise-and:       -                   3.1ms +/- 2.5%     3.0ms +/- 1.9% 
    nsieve-bits:       ??                  5.0ms +/- 1.1%     5.0ms +/- 0.0%     not conclusive: might be *1.008x as slow*

  controlflow:         ??                  1.1ms +/- 6.4%     1.1ms +/- 7.8%     not conclusive: might be *1.038x as slow*
    recursive:         ??                  1.1ms +/- 6.4%     1.1ms +/- 7.8%     not conclusive: might be *1.038x as slow*

  crypto:              -                  11.0ms +/- 0.5%    10.9ms +/- 1.1% 
    aes:               1.017x as fast      7.0ms +/- 0.6%     6.9ms +/- 1.5%     significant
    md5:               ??                  2.0ms +/- 2.0%     2.0ms +/- 2.8%     not conclusive: might be *1.010x as slow*
    sha1:              -                   2.0ms +/- 0.0%     2.0ms +/- 0.0% 

  date:                1.020x as fast     21.9ms +/- 0.6%    21.5ms +/- 0.9%     significant
    format-tofte:      1.036x as fast     13.8ms +/- 0.9%    13.4ms +/- 1.0%     significant
    format-xparb:      ??                  8.0ms +/- 0.7%     8.1ms +/- 1.1%     not conclusive: might be *1.007x as slow*

  math:                -                  16.0ms +/- 0.0%    16.0ms +/- 0.0% 
    cordic:            -                   6.0ms +/- 0.0%     6.0ms +/- 0.0% 
    partial-sums:      -                   7.0ms +/- 0.0%     7.0ms +/- 0.0% 
    spectral-norm:     -                   3.0ms +/- 0.0%     3.0ms +/- 0.0% 

  regexp:              ??                 10.0ms +/- 0.0%    10.0ms +/- 0.4%     not conclusive: might be *1.002x as slow*
    dna:               ??                 10.0ms +/- 0.0%    10.0ms +/- 0.4%     not conclusive: might be *1.002x as slow*

  string:              -                  51.7ms +/- 0.4%    51.6ms +/- 0.9% 
    base64:            1.062x as fast      5.5ms +/- 2.6%     5.2ms +/- 2.0%     significant
    fasta:             1.036x as fast      7.0ms +/- 0.6%     6.7ms +/- 1.9%     significant
    tagcloud:          ??                 13.0ms +/- 0.3%    13.0ms +/- 0.4%     not conclusive: might be *1.002x as slow*
    unpack-code:       *1.021x as slow*   20.2ms +/- 0.5%    20.6ms +/- 1.2%     significant
    validate-input:    ??                  6.1ms +/- 1.4%     6.1ms +/- 1.5%     not conclusive: might be *1.003x as slow*
[pizlo@minime PerformanceTests]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437517</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 20:50:12 -0700</bug_when>
    <thetext>Attachment 100924 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/jit/JITOpcodes.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 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>437518</commentid>
    <comment_count>3</comment_count>
      <attachid>100925</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-14 20:59:39 -0700</bug_when>
    <thetext>Created attachment 100925
the patch (fix style, fix 32-bit)

This updated patch fixes style and also fixes 32-bit builds, and adds a note to the ChangeLog that this patch only inlines allocation on 64-bit (32-bit proceeds same as before).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437520</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 21:03:33 -0700</bug_when>
    <thetext>Attachment 100925 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/ChangeLog:19:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 9 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>437521</commentid>
    <comment_count>5</comment_count>
      <attachid>100926</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-14 21:06:57 -0700</bug_when>
    <thetext>Created attachment 100926
the patch (fix style)

Replaced a tab character that emacs accidentally inserted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437534</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-14 21:50:51 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=100924) [details]
&gt; the patch
&gt; 
&gt; This patch works gives a 1.3% speed-up on V8, and is neutral on SunSpider.
&gt; 
&gt; I&apos;ve lived on it for a day or so, and it seems to work.  It passes all tests.  But I&apos;m not sure if I&apos;m handling global objects (for initializing the structure in op_new_object) correctly, so I&apos;d appreciate some feedback on that!  Separately I tested the speed-up of op_new_object in isolation, and it wasn&apos;t much (statistically significant but fraction of a percent); it definitely appears that op_create_this is doing most of the work.

I&apos;m kind of surprised it doesn&apos;t help a microbenchmark of op_new_object, or do you mean only inlining op_new_object doesn&apos;t seem to help any of the benchmarks we track? (which is less surprising)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437538</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-14 21:55:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=100924) [details] [details]
&gt; &gt; the patch
&gt; &gt; 
&gt; &gt; This patch works gives a 1.3% speed-up on V8, and is neutral on SunSpider.
&gt; &gt; 
&gt; &gt; I&apos;ve lived on it for a day or so, and it seems to work.  It passes all tests.  But I&apos;m not sure if I&apos;m handling global objects (for initializing the structure in op_new_object) correctly, so I&apos;d appreciate some feedback on that!  Separately I tested the speed-up of op_new_object in isolation, and it wasn&apos;t much (statistically significant but fraction of a percent); it definitely appears that op_create_this is doing most of the work.
&gt; 
&gt; I&apos;m kind of surprised it doesn&apos;t help a microbenchmark of op_new_object, or do you mean only inlining op_new_object doesn&apos;t seem to help any of the benchmarks we track? (which is less surprising)

To clarify: I only meant that it didn&apos;t help V8 or SunSpider by more than a fraction of a percent.  I haven&apos;t tried a micro benchmark; I &quot;declared victory&quot; once I saw that it gave a slight win on V8.

It definitely helps micro benchmarks (see below).

mytest2.js:
for (var i = 0; i &lt; 10000000; ++i) {
    var x = new Object();
}

With the patch:
[pizlo@minime OpenSource] time WebKitBuild/Release/jsc mytest2.js 

real	0m0.277s
user	0m0.270s
sys	0m0.006s

Without the patch:
[pizlo@minime OpenSource] time ../../secondary/OpenSource/WebKitBuild/Release/jsc mytest2.js 

real	0m0.474s
user	0m0.264s
sys	0m0.008s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437542</commentid>
    <comment_count>8</comment_count>
      <attachid>100926</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-14 21:58:36 -0700</bug_when>
    <thetext>Comment on attachment 100926
the patch (fix style)

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

r- but basically just because of the code duplication.  Would be good to get 32bit going as well.

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:352
&gt; +    // remove the object from the free list
&gt; +    loadPtr(Address(regT0), regT1);
&gt; +    storePtr(regT1, &amp;sizeClass-&gt;firstFreeCell);
&gt; +    
&gt; +    // initialize the object&apos;s vtable
&gt; +    storePtr(ImmPtr(m_globalData-&gt;jsFinalObjectVPtr), Address(regT0));
&gt; +    
&gt; +    // initialize the object&apos;s structure
&gt; +    storePtr(ImmPtr(m_codeBlock-&gt;globalObject()-&gt;emptyObjectStructure()), Address(regT0, JSCell::structureOffset()));
&gt; +    
&gt; +    // initialize the inheritor ID
&gt; +    storePtr(ImmPtr(0), Address(regT0, JSObject::offsetOfInheritorID()));
&gt; +    
&gt; +    // initialize the object&apos;s property storage pointer
&gt; +    addPtr(Imm32(sizeof(JSObject)), regT0, regT1);

I think all of this could be hoisted into a separate helper function, rather than duplicating the code in op_create_this, well i guess with the exception of the initial structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437543</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-14 21:59:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 100926 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100926&amp;action=review
&gt; 
&gt; r- but basically just because of the code duplication.  Would be good to get 32bit going as well.
&gt; 

That&apos;s a fine point.  I&apos;ll hoist that, and implement a 32-bit version, and then resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438017</commentid>
    <comment_count>10</comment_count>
      <attachid>101054</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-15 15:18:53 -0700</bug_when>
    <thetext>Created attachment 101054
the patch

This reduces code duplication and adds 32-bit support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438577</commentid>
    <comment_count>11</comment_count>
      <attachid>101054</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-18 11:00:02 -0700</bug_when>
    <thetext>Comment on attachment 101054
the patch

Sorry, i thought i had reviewed this :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438620</commentid>
    <comment_count>12</comment_count>
      <attachid>101054</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 11:56:01 -0700</bug_when>
    <thetext>Comment on attachment 101054
the patch

Clearing flags on attachment: 101054

Committed r91199: &lt;http://trac.webkit.org/changeset/91199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438621</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 11:56:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100924</attachid>
            <date>2011-07-14 20:47:41 -0700</date>
            <delta_ts>2011-07-14 20:59:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>allocinline_patch_1.diff</filename>
            <type>text/plain</type>
            <size>13570</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMTEtMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgSklUIGRvZXMgbm90IGlubGluZSBHQyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGFkZHJl
c3NlcyBpbmxpbmluZyBhbGxvY2F0aW9uIGZvciB0aGUgZWFzaWVzdC10by1hbGxvY2F0ZSBjYXNl
czoKKyAgICAgICAgb3BfbmV3X29iamVjdCBhbmQgb3BfY3JlYXRlX3RoaXMuICBJbmxpbmluZyBH
QyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAgcmVxdWlyZWQgdGhyZWUgY2hhbmdlcy4g
IEZpcnN0LCB0aGUgSlNHbG9iYWxEYXRhIG5vdyBzYXZlcyB0aGUgdnRhYmxlCisgICAgICAgIHBv
aW50ZXIgb2YgSlNGaW5hbE9iamVjdCwgc2luY2UgdGhhdCdzIHdoYXQgb3BfbmV3X29iamVjdCBh
bmQKKyAgICAgICAgb3BfY3JlYXRlX3RoaXMgYWxsb2NhdGUuICBTZWNvbmQsIHRoZSBIZWFwIGV4
cG9zZXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIFNpemVDbGFzcywg
c28gdGhhdCB0aGUgSklUIG1heSBpbmxpbmUgYWNjZXNzZXMKKyAgICAgICAgZGlyZWN0bHkgdG8g
dGhlIFNpemVDbGFzcyBmb3IgSlNGaW5hbE9iamVjdCBhbGxvY2F0aW9ucy4gIEFuZCB0aGlyZCwK
KyAgICAgICAgdGhlIEpJVCBpcyBleHRlbmRlZCB3aXRoIGNvZGUgdG8gZW1pdCBpbmxpbmUgZmFz
dCBwYXRocyBmb3IgR0MKKyAgICAgICAgYWxsb2NhdGlvbi4gIEEgc3R1YiBjYWxsIGlzIGVtaXR0
ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGlubGluZSBmYXN0CisgICAgICAgIHBhdGggZmFpbHMu
CisKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c2l6ZUNsYXNz
Rm9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGUpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhp
cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX25ld19vYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNGaW5hbE9iamVjdDo6SlNGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKToKKwogMjAxMS0wNy0xNCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBKSVQgZG9lcyBub3Qgb3B0aW1pemUgQnJh
bmNoIGFzIHdlbGwgYXMgaXQgY291bGQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
aW5saW5lIGJvb2wgaXNCdXN5KCk7CiAKICAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsK
KyAgICAgICAgTmV3U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CiAgICAg
ICAgIHZvaWQqIGFsbG9jYXRlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKICAgICAgICAgdm9pZCBu
b3RpZnlJc1NhZmVUb0NvbGxlY3QoKSB7IG1faXNTYWZlVG9Db2xsZWN0ID0gdHJ1ZTsgfQogICAg
ICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CkBAIC0yODksNiArMjkwLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIH0K
ICAgICAKKyAgICBpbmxpbmUgTmV3U3BhY2U6OlNpemVDbGFzcyYgSGVhcDo6c2l6ZUNsYXNzRm9y
KHNpemVfdCBieXRlcykKKyAgICB7CisgICAgICAgIHJldHVybiBtX25ld1NwYWNlLnNpemVDbGFz
c0ZvcihieXRlcyk7CisgICAgfQorICAgIAogICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0
ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCiAgICAgewogICAgICAgICAvLyBUaGlz
IGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9zdCBjb21tb24gY2Fz
ZS4KQEAgLTMwMyw3ICszMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCog
SGVhcDo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVmFs
aWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0gICAgICAgIE5ld1NwYWNlOjpTaXplQ2xhc3MmIHNpemVD
bGFzcyA9IG1fbmV3U3BhY2Uuc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKKyAgICAgICAgTmV3U3BhY2U6
OlNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyLDYgKzQwMiw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25z
dHJ1Y3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb252ZXJ0X3RoaXMpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb252ZXJ0X3RoaXNfc3RyaWN0KQorICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9kaXYpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9lcSkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZCkKQEAgLTQzNiw2ICs0MzcsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfbmVnYXRlKQogI2VuZGlmCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9uZXEp
CisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3Bfbm90KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbnN0
cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9kZWMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtODU0LDYgKzg1NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0cnVjdChJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29udmVydF90aGlzX3N0cmlj
dChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kaXYoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtODg2LDYgKzg4Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX211bChJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX25l
d19vYmplY3QoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfbm90KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25zdHJpY3Rl
cShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9wb3N0X2RlYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNiAr
NDg4LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24KICAgICBK
SVRTdHViQ2FsbCh0aGlzLCBjdGlfb3BfbmV3X29iamVjdCkuY2FsbChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3Qo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKK30KKwog
dm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgYmFzZVZhbCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHJldmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkhlYXAuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTMzMCw2ICszMzEsMzMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKEluc3RydWN0aW9uKiBj
dXJyZQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CisgICAgTmV3U3BhY2U6OlNpemVDbGFzcyogc2l6ZUNsYXNzID0gJm1f
Z2xvYmFsRGF0YS0+aGVhcC5zaXplQ2xhc3NGb3Ioc2l6ZW9mKEpTRmluYWxPYmplY3QpKTsKKyAg
ICBsb2FkUHRyKCZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlZ1QwKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QwKSk7CisgICAgCisgICAgLy8gcmVtb3ZlIHRo
ZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwKSwg
cmVnVDEpOworICAgIHN0b3JlUHRyKHJlZ1QxLCAmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsKTsK
KyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyB2dGFibGUKKyAgICBzdG9yZVB0
cihJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciksIEFkZHJlc3MocmVnVDAp
KTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUKKyAgICBz
dG9yZVB0cihJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0
cnVjdHVyZSgpKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwor
ICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIGluaGVyaXRvciBJRAorICAgIHN0b3JlUHRyKElt
bVB0cigwKSwgQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSkp
OworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2Ug
cG9pbnRlcgorICAgIGFkZFB0cihJbW0zMihzaXplb2YoSlNPYmplY3QpKSwgcmVnVDAsIHJlZ1Qx
KTsKKyAgICBzdG9yZVB0cihyZWdUMSwgQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6Om9mZnNldE9m
UHJvcGVydHlTdG9yYWdlKCkpKTsKKyAgICAKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
ICAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfb3BfbmV3X29iamVjdCkuY2FsbChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIApAQCAtMTE2Niw2ICsxMTk0LDUwIEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1Qy
KTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKSk7CisgICAgCisg
ICAgLy8gbm93IHdlIGtub3cgdGhhdCB0aGUgcHJvdG90eXBlIGlzIGFuIG9iamVjdCwgYnV0IHdl
IGRvbid0IGtub3cgaWYgaXQncyBnb3QgYW4KKyAgICAvLyBpbmhlcml0b3IgSUQKKyAgICAKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkp
LCByZWdUMik7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMikpOwor
ICAgIAorICAgIC8vIG5vdyByZWdUMiBjb250YWlucyB0aGUgaW5oZXJpdG9ySUQsIHdoaWNoIGlz
IHRoZSBzdHJ1Y3R1cmUgdGhhdCB0aGUgbmV3bHkKKyAgICAvLyBhbGxvY2F0ZWQgb2JqZWN0IHdp
bGwgaGF2ZS4KKyAgICAKKyAgICBOZXdTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAmbV9n
bG9iYWxEYXRhLT5oZWFwLnNpemVDbGFzc0ZvcihzaXplb2YoSlNGaW5hbE9iamVjdCkpOworICAg
IGxvYWRQdHIoJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCwgcmVnVDApOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApKTsKKyAgICAKKyAgICAvLyByZW1vdmUgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDApLCBy
ZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDEsICZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwpOwor
ICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHZ0YWJsZQorICAgIHN0b3JlUHRy
KEltbVB0cihtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RWUHRyKSwgQWRkcmVzcyhyZWdUMCkp
OworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQorICAgIHN0
b3JlUHRyKHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgaW5oZXJpdG9yIElECisgICAgc3RvcmVQdHIo
SW1tUHRyKDApLCBBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgp
KSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZSBwb2ludGVyCisgICAgYWRkUHRyKEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZWdUMCwgcmVn
VDEpOworICAgIHN0b3JlUHRyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgIAorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gbm90IGEgY2VsbAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gbm90IGFuIG9iamVj
dAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBoYXZlIGFuIGluaGVyaXRvciBJ
RAorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxsb2NhdGlvbiBmYWlsZWQKICAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfY3JlYXRlX3RoaXMpOwogICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAg
ICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZp
c2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBleHRlcm4gSlNDX0NPTlNU
X0hBU0hUQUJMRSBIYXNoVGFibGUgcmVnCiBleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNo
VGFibGUgc3RyaW5nVGFibGU7CiBleHRlcm4gSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUg
c3RyaW5nQ29uc3RydWN0b3JUYWJsZTsKIAordm9pZCogSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2Jq
ZWN0VlB0cjsKIHZvaWQqIEpTR2xvYmFsRGF0YTo6anNBcnJheVZQdHI7CiB2b2lkKiBKU0dsb2Jh
bERhdGE6OmpzQnl0ZUFycmF5VlB0cjsKIHZvaWQqIEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRy
OwpAQCAtMTMzLDYgKzEzNCwxMSBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycygpCiAg
ICAgLy8gQ09NUElMRV9BU1NFUlRTIGJlbG93IGNoZWNrIHRoYXQgdGhpcyBpcyB0cnVlLgogICAg
IGNoYXIgc3RvcmFnZVs2NF07CiAKKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNGaW5hbE9i
amVjdCkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNGaW5hbE9iamVjdF9tdXN0X2JlX2xl
c3NfdGhhbl9zdG9yYWdlKTsKKyAgICBKU0NlbGwqIGpzRmluYWxPYmplY3QgPSBuZXcgKHN0b3Jh
Z2UpIEpTRmluYWxPYmplY3QoSlNGaW5hbE9iamVjdDo6VlB0clN0ZWFsaW5nSGFjayk7CisgICAg
Q0xPQkJFUl9NRU1PUlkoKTsKKyAgICBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RWUHRyID0g
anNGaW5hbE9iamVjdC0+dnB0cigpOworCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQXJy
YXkpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5f
c3RvcmFnZSk7CiAgICAgSlNDZWxsKiBqc0FycmF5ID0gbmV3IChzdG9yYWdlKSBKU0FycmF5KEpT
QXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIENMT0JCRVJfTUVNT1JZKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
OTEwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
CiAKICAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOworICAgICAgICBzdGF0aWMgSlNf
RVhQT1JUREFUQSB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cjsKICAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRB
IHZvaWQqIGpzQnl0ZUFycmF5VlB0cjsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9p
ZCoganNTdHJpbmdWUHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rp
b247CisgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFN0cnVjdHVyZTsKQEAg
LTc1LDYgKzc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2Nr
OwogICAgICAgICBmcmllbmQgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCk7CiAKICAgICBwdWJs
aWM6CkBAIC0yNTAsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAgICAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOworICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
SW5oZXJpdG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCkBAIC0zNTcsNiArMzYwLDExIEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTT2JqZWN0OwogCiAg
ICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hh
Y2tUeXBlKQorICAgICAgICAgICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBtX2lubGlu
ZVN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU0ZpbmFsT2Jq
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKQEAgLTM5MSw2ICszOTksMTEgQEAg
aW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eQogICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKTsKIH0KIAoraW5saW5lIHNp
emVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgpCit7CisgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU09iamVjdCwgbV9pbmhlcml0b3JJRCk7Cit9CisKIGlubGluZSBKU09iamVj
dCogY29uc3RydWN0RW1wdHlPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKICAgICByZXR1cm4gSlNGaW5hbE9iamVjdDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVy
ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100925</attachid>
            <date>2011-07-14 20:59:39 -0700</date>
            <delta_ts>2011-07-14 21:06:57 -0700</delta_ts>
            <desc>the patch (fix style, fix 32-bit)</desc>
            <filename>allocinline_patch_2.diff</filename>
            <type>text/plain</type>
            <size>14028</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTEtMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgSklUIGRvZXMgbm90IGlubGluZSBHQyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGFkZHJl
c3NlcyBpbmxpbmluZyBhbGxvY2F0aW9uIGZvciB0aGUgZWFzaWVzdC10by1hbGxvY2F0ZSBjYXNl
czoKKyAgICAgICAgb3BfbmV3X29iamVjdCBhbmQgb3BfY3JlYXRlX3RoaXMuICBJbmxpbmluZyBH
QyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAgcmVxdWlyZWQgdGhyZWUgY2hhbmdlcy4g
IEZpcnN0LCB0aGUgSlNHbG9iYWxEYXRhIG5vdyBzYXZlcyB0aGUgdnRhYmxlCisgICAgICAgIHBv
aW50ZXIgb2YgSlNGaW5hbE9iamVjdCwgc2luY2UgdGhhdCdzIHdoYXQgb3BfbmV3X29iamVjdCBh
bmQKKyAgICAgICAgb3BfY3JlYXRlX3RoaXMgYWxsb2NhdGUuICBTZWNvbmQsIHRoZSBIZWFwIGV4
cG9zZXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIFNpemVDbGFzcywg
c28gdGhhdCB0aGUgSklUIG1heSBpbmxpbmUgYWNjZXNzZXMKKyAgICAgICAgZGlyZWN0bHkgdG8g
dGhlIFNpemVDbGFzcyBmb3IgSlNGaW5hbE9iamVjdCBhbGxvY2F0aW9ucy4gIEFuZCB0aGlyZCwK
KyAgICAgICAgdGhlIEpJVCBpcyBleHRlbmRlZCB3aXRoIGNvZGUgdG8gZW1pdCBpbmxpbmUgZmFz
dCBwYXRocyBmb3IgR0MKKyAgICAgICAgYWxsb2NhdGlvbi4gIEEgc3R1YiBjYWxsIGlzIGVtaXR0
ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGlubGluZSBmYXN0CisgICAgICAgIHBhdGggZmFpbHMu
CisKKwlOT1RFOiB0aGlzIHBhdGNoIG9ubHkgYWRkcmVzc2VzIDY0LWJpdCBwbGF0Zm9ybXMuCisK
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c2l6ZUNsYXNzRm9y
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGUpOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlz
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsRGF0YTo6c3RvcmVWUHRycyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTRmluYWxP
YmplY3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZJ
bmhlcml0b3JJRCk6CisKIDIwMTEtMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkcgSklUIGRvZXMgbm90IG9wdGltaXplIEJyYW5jaCBhcyB3ZWxsIGFz
IGl0IGNvdWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTEw
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDYgKzgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlubGluZSBib29sIGlz
QnVzeSgpOwogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgICAgIE5ld1Nw
YWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOwogICAgICAgICB2b2lkKiBhbGxv
Y2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgICAgIHZvaWQgbm90aWZ5SXNTYWZlVG9D
b2xsZWN0KCkgeyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0KICAgICAgICAgdm9pZCBjb2xs
ZWN0QWxsR2FyYmFnZSgpOwpAQCAtMjg5LDYgKzI5MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICB9CiAgICAgCisgICAgaW5s
aW5lIE5ld1NwYWNlOjpTaXplQ2xhc3MmIEhlYXA6OnNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMp
CisgICAgeworICAgICAgICByZXR1cm4gbV9uZXdTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOwor
ICAgIH0KKyAgICAKICAgICBpbmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGUoTmV3U3BhY2U6OlNp
emVDbGFzcyYgc2l6ZUNsYXNzKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdl
aWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2UuCkBAIC0zMDMsNyAr
MzA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRl
KHNpemVfdCBieXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlvbihi
eXRlcykpOwotICAgICAgICBOZXdTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBtX25ld1Nw
YWNlLnNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgICAgIE5ld1NwYWNlOjpTaXplQ2xhc3MmIHNp
emVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZShz
aXplQ2xhc3MpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2
aXNpb24gOTEwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwMiw2ICs0MDIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29uc3RydWN0KQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29udmVydF90aGlzKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZGl2KQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9nZXRfYnlfaWQpCkBAIC00MzYsNiArNDM3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25lZ2F0ZSkK
ICNlbmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbmVxKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX25vdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25zdHJpY3RlcSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfZGVjKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1NCw2ICs4NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29udmVy
dF90aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnZlcnRfdGhpc19zdHJpY3QoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2VxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTg4Niw2ICs4ODcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVnYXRl
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX25lcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX25vdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCwxMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uCiAgICAgSklUU3R1YkNhbGwodGhp
cywgY3RpX29wX25ld19vYmplY3QpLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpAQCAtMTQzNyw2ICsxNDQxLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKElu
c3RydWN0aW8KICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sKK30KKwogdm9pZCBKSVQ6OmVt
aXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNp
b24gOTEwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNs
dWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
TWV0aG9kcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJDYWxsLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgpAQCAtMzMwLDYgKzMzMSwzMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoSW5zdHJ1Y3Rpb24q
IGN1cnJlCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKKyAgICBOZXdTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAm
bV9nbG9iYWxEYXRhLT5oZWFwLnNpemVDbGFzc0ZvcihzaXplb2YoSlNGaW5hbE9iamVjdCkpOwor
ICAgIGxvYWRQdHIoJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCwgcmVnVDApOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApKTsKKyAgICAKKyAgICAvLyByZW1vdmUg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAp
LCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDEsICZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwp
OworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHZ0YWJsZQorICAgIHN0b3Jl
UHRyKEltbVB0cihtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RWUHRyKSwgQWRkcmVzcyhyZWdU
MCkpOworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQorICAg
IHN0b3JlUHRyKEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0
U3RydWN0dXJlKCkpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgaW5oZXJpdG9yIElECisgICAgc3RvcmVQdHIo
SW1tUHRyKDApLCBBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCgp
KSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFn
ZSBwb2ludGVyCisgICAgYWRkUHRyKEltbTMyKHNpemVvZihKU09iamVjdCkpLCByZWdUMCwgcmVn
VDEpOworICAgIHN0b3JlUHRyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zmc2V0
T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgIAorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwogICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KS5jYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCkBAIC0xMTY2LDYgKzExOTQsNTAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbgogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogeworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVn
VDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMik7CisgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpKTsKKyAgICAK
KyAgICAvLyBub3cgd2Uga25vdyB0aGF0IHRoZSBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LCBidXQg
d2UgZG9uJ3Qga25vdyBpZiBpdCdzIGdvdCBhbgorICAgIC8vIGluaGVyaXRvciBJRAorICAgIAor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQo
KSksIHJlZ1QyKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QyKSk7
CisgICAgCisgICAgLy8gbm93IHJlZ1QyIGNvbnRhaW5zIHRoZSBpbmhlcml0b3JJRCwgd2hpY2gg
aXMgdGhlIHN0cnVjdHVyZSB0aGF0IHRoZSBuZXdseQorICAgIC8vIGFsbG9jYXRlZCBvYmplY3Qg
d2lsbCBoYXZlLgorICAgIAorICAgIE5ld1NwYWNlOjpTaXplQ2xhc3MqIHNpemVDbGFzcyA9ICZt
X2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yKHNpemVvZihKU0ZpbmFsT2JqZWN0KSk7Cisg
ICAgbG9hZFB0cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZWdUMCk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCkpOworICAgIAorICAgIC8vIHJlbW92ZSB0
aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdAorICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCks
IHJlZ1QxKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCk7
CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgdnRhYmxlCisgICAgc3RvcmVQ
dHIoSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVjdFZQdHIpLCBBZGRyZXNzKHJlZ1Qw
KSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAg
c3RvcmVQdHIocmVnVDIsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
KTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBpbmhlcml0b3IgSUQKKyAgICBzdG9yZVB0
cihJbW1QdHIoMCksIEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklE
KCkpKTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBzdG9y
YWdlIHBvaW50ZXIKKyAgICBhZGRQdHIoSW1tMzIoc2l6ZW9mKEpTT2JqZWN0KSksIHJlZ1QwLCBy
ZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKK30KKwordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBub3QgYSBjZWxsCisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBub3QgYW4gb2Jq
ZWN0CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gaW5oZXJpdG9y
IElECisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVfdGhpcyk7CiAgICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEpOwog
ICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJl
dmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIGV4dGVybiBKU0NfQ09O
U1RfSEFTSFRBQkxFIEhhc2hUYWJsZSByZWcKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhh
c2hUYWJsZSBzdHJpbmdUYWJsZTsKIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJs
ZSBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOwogCit2b2lkKiBKU0dsb2JhbERhdGE6OmpzRmluYWxP
YmplY3RWUHRyOwogdm9pZCogSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0cjsKIHZvaWQqIEpTR2xv
YmFsRGF0YTo6anNCeXRlQXJyYXlWUHRyOwogdm9pZCogSlNHbG9iYWxEYXRhOjpqc1N0cmluZ1ZQ
dHI7CkBAIC0xMzMsNiArMTM0LDExIEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCkK
ICAgICAvLyBDT01QSUxFX0FTU0VSVFMgYmVsb3cgY2hlY2sgdGhhdCB0aGlzIGlzIHRydWUuCiAg
ICAgY2hhciBzdG9yYWdlWzY0XTsKIAorICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0ZpbmFs
T2JqZWN0KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0ZpbmFsT2JqZWN0X211c3RfYmVf
bGVzc190aGFuX3N0b3JhZ2UpOworICAgIEpTQ2VsbCoganNGaW5hbE9iamVjdCA9IG5ldyAoc3Rv
cmFnZSkgSlNGaW5hbE9iamVjdChKU0ZpbmFsT2JqZWN0OjpWUHRyU3RlYWxpbmdIYWNrKTsKKyAg
ICBDTE9CQkVSX01FTU9SWSgpOworICAgIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdFZQdHIg
PSBqc0ZpbmFsT2JqZWN0LT52cHRyKCk7CisKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNB
cnJheSkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNBcnJheV9tdXN0X2JlX2xlc3NfdGhh
bl9zdG9yYWdlKTsKICAgICBKU0NlbGwqIGpzQXJyYXkgPSBuZXcgKHN0b3JhZ2UpIEpTQXJyYXko
SlNBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7CiAgICAgQ0xPQkJFUl9NRU1PUlkoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5k
aWYKIAogICAgICAgICBzdGF0aWMgdm9pZCBzdG9yZVZQdHJzKCk7CisgICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyOwogICAgICAgICBzdGF0aWMgSlNf
RVhQT1JUREFUQSB2b2lkKiBqc0FycmF5VlB0cjsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgdm9pZCoganNCeXRlQXJyYXlWUHRyOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2
b2lkKiBqc1N0cmluZ1ZQdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbjsKKyAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0
b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgU3RydWN0dXJlOwpA
QCAtNzUsNiArNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAg
ICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxv
Y2s7CiAgICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAogICAgIHB1
YmxpYzoKQEAgLTI1MCw2ICsyNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0
aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKQEAgLTM1Nyw2ICszNjAsMTEgQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CiAK
ICAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoVlB0clN0ZWFsaW5n
SGFja1R5cGUpCisgICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2ssIG1faW5s
aW5lU3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzdGF0
aWMgSlNGaW5hbE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRmluYWxP
YmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwpAQCAtMzkxLDYgKzM5OSwxMSBA
QCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5CiAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpOwogfQogCitpbmxpbmUg
c2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkKK3sKKyAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX2luaGVyaXRvcklEKTsKK30KKwogaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYywgc3RydWN0
dXJlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100926</attachid>
            <date>2011-07-14 21:06:57 -0700</date>
            <delta_ts>2011-07-15 15:18:53 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>allocinline_patch_3.diff</filename>
            <type>text/plain</type>
            <size>13989</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTEwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTEtMDctMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgSklUIGRvZXMgbm90IGlubGluZSBHQyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGFkZHJl
c3NlcyBpbmxpbmluZyBhbGxvY2F0aW9uIGZvciB0aGUgZWFzaWVzdC10by1hbGxvY2F0ZSBjYXNl
czoKKyAgICAgICAgb3BfbmV3X29iamVjdCBhbmQgb3BfY3JlYXRlX3RoaXMuICBJbmxpbmluZyBH
QyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAgcmVxdWlyZWQgdGhyZWUgY2hhbmdlcy4g
IEZpcnN0LCB0aGUgSlNHbG9iYWxEYXRhIG5vdyBzYXZlcyB0aGUgdnRhYmxlCisgICAgICAgIHBv
aW50ZXIgb2YgSlNGaW5hbE9iamVjdCwgc2luY2UgdGhhdCdzIHdoYXQgb3BfbmV3X29iamVjdCBh
bmQKKyAgICAgICAgb3BfY3JlYXRlX3RoaXMgYWxsb2NhdGUuICBTZWNvbmQsIHRoZSBIZWFwIGV4
cG9zZXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIFNpemVDbGFzcywg
c28gdGhhdCB0aGUgSklUIG1heSBpbmxpbmUgYWNjZXNzZXMKKyAgICAgICAgZGlyZWN0bHkgdG8g
dGhlIFNpemVDbGFzcyBmb3IgSlNGaW5hbE9iamVjdCBhbGxvY2F0aW9ucy4gIEFuZCB0aGlyZCwK
KyAgICAgICAgdGhlIEpJVCBpcyBleHRlbmRlZCB3aXRoIGNvZGUgdG8gZW1pdCBpbmxpbmUgZmFz
dCBwYXRocyBmb3IgR0MKKyAgICAgICAgYWxsb2NhdGlvbi4gIEEgc3R1YiBjYWxsIGlzIGVtaXR0
ZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGlubGluZSBmYXN0CisgICAgICAgIHBhdGggZmFpbHMu
CisKKyAgICAgICAgTk9URTogdGhpcyBwYXRjaCBvbmx5IGFkZHJlc3NlcyA2NC1iaXQgcGxhdGZv
cm1zLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnNpemVD
bGFzc0Zvcik6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlKToKKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6Cisg
ICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9uZXdfb2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OkpTRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6b2Zmc2V0T2ZJbmhlcml0b3JJRCk6CisKIDIwMTEtMDctMTQgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgSklUIGRvZXMgbm90IG9wdGltaXpl
IEJyYW5jaCBhcyB3ZWxsIGFzIGl0IGNvdWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAkocmV2aXNpb24gOTEwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGlubGluZSBib29sIGlzQnVzeSgpOwogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVf
dCk7CisgICAgICAgIE5ld1NwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOwog
ICAgICAgICB2b2lkKiBhbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgICAgIHZv
aWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkgeyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0K
ICAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwpAQCAtMjg5LDYgKzI5MCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAg
ICB9CiAgICAgCisgICAgaW5saW5lIE5ld1NwYWNlOjpTaXplQ2xhc3MmIEhlYXA6OnNpemVDbGFz
c0ZvcihzaXplX3QgYnl0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gbV9uZXdTcGFjZS5zaXpl
Q2xhc3NGb3IoYnl0ZXMpOworICAgIH0KKyAgICAKICAgICBpbmxpbmUgdm9pZCogSGVhcDo6YWxs
b2NhdGUoTmV3U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQogICAgIHsKICAgICAgICAgLy8g
VGhpcyBpcyBhIGxpZ2h0LXdlaWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9u
IGNhc2UuCkBAIC0zMDMsNyArMzA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZv
aWQqIEhlYXA6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c1ZhbGlkQWxsb2NhdGlvbihieXRlcykpOwotICAgICAgICBOZXdTcGFjZTo6U2l6ZUNsYXNzJiBz
aXplQ2xhc3MgPSBtX25ld1NwYWNlLnNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgICAgIE5ld1Nw
YWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7CiAgICAgICAg
IHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTEwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMiw2ICs0MDIsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
Y29uc3RydWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29udmVydF90aGlzKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY29udmVydF90aGlzX3N0cmljdCkKKyAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfZGl2KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQpCkBAIC00MzYsNiArNDM3LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX25lZ2F0ZSkKICNlbmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
bmVxKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX25vdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X25zdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfZGVjKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTg1NCw2ICs4NTQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb25zdHJ1Y3QoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnZlcnRfdGhpc19z
dHJpY3QoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cisg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGl2
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2VxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTg4Niw2ICs4ODcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfbmVnYXRlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25vdChJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uc3Ry
aWN0ZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4
LDYgKzQ4OCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uCiAg
ICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpLmNhbGwoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2Jq
ZWN0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit7Cit9
CisKIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtMTQzNyw2ICsxNDQxLDEwIEBAIHZvaWQgSklUOjplbWl0
X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW8KICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRl
X3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3sK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfY29udmVydF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgdGhpc1JlZ2lzdGVyID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gOTEwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiSklULmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJIZWFwLmgiCiAj
aW5jbHVkZSAiSklUSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJDYWxsLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgpAQCAtMzMwLDYgKzMzMSwzMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qbXAoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3Qo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBOZXdTcGFjZTo6U2l6ZUNs
YXNzKiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLnNpemVDbGFzc0ZvcihzaXplb2Yo
SlNGaW5hbE9iamVjdCkpOworICAgIGxvYWRQdHIoJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCwg
cmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApKTsKKyAg
ICAKKyAgICAvLyByZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDApLCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDEsICZzaXplQ2xh
c3MtPmZpcnN0RnJlZUNlbGwpOworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdz
IHZ0YWJsZQorICAgIHN0b3JlUHRyKEltbVB0cihtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RW
UHRyKSwgQWRkcmVzcyhyZWdUMCkpOworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVj
dCdzIHN0cnVjdHVyZQorICAgIHN0b3JlUHRyKEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgaW5oZXJpdG9y
IElECisgICAgc3RvcmVQdHIoSW1tUHRyKDApLCBBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmhlcml0b3JJRCgpKSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCisgICAgYWRkUHRyKEltbTMyKHNpemVvZihKU09i
amVjdCkpLCByZWdUMCwgcmVnVDEpOworICAgIHN0b3JlUHRyKHJlZ1QxLCBBZGRyZXNzKHJlZ1Qw
LCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSkpOworICAgIAorICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cit9CisK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2Jq
ZWN0KS5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCkBAIC0xMTY2
LDYgKzExOTQsNTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbgog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogeworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCwgcmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMik7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDEpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2Jq
ZWN0VHlwZSkpKTsKKyAgICAKKyAgICAvLyBub3cgd2Uga25vdyB0aGF0IHRoZSBwcm90b3R5cGUg
aXMgYW4gb2JqZWN0LCBidXQgd2UgZG9uJ3Qga25vdyBpZiBpdCdzIGdvdCBhbgorICAgIC8vIGlu
aGVyaXRvciBJRAorICAgIAorICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNPYmplY3Q6Om9m
ZnNldE9mSW5oZXJpdG9ySUQoKSksIHJlZ1QyKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0
UHRyKFplcm8sIHJlZ1QyKSk7CisgICAgCisgICAgLy8gbm93IHJlZ1QyIGNvbnRhaW5zIHRoZSBp
bmhlcml0b3JJRCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB0aGF0IHRoZSBuZXdseQorICAgIC8v
IGFsbG9jYXRlZCBvYmplY3Qgd2lsbCBoYXZlLgorICAgIAorICAgIE5ld1NwYWNlOjpTaXplQ2xh
c3MqIHNpemVDbGFzcyA9ICZtX2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yKHNpemVvZihK
U0ZpbmFsT2JqZWN0KSk7CisgICAgbG9hZFB0cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCBy
ZWdUMCk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMCkpOworICAg
IAorICAgIC8vIHJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdAorICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCksIHJlZ1QxKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgJnNpemVDbGFz
cy0+Zmlyc3RGcmVlQ2VsbCk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mg
dnRhYmxlCisgICAgc3RvcmVQdHIoSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVjdFZQ
dHIpLCBBZGRyZXNzKHJlZ1QwKSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3Mgc3RydWN0dXJlCisgICAgc3RvcmVQdHIocmVnVDIsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBpbmhlcml0
b3IgSUQKKyAgICBzdG9yZVB0cihJbW1QdHIoMCksIEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0Ojpv
ZmZzZXRPZkluaGVyaXRvcklEKCkpKTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBwcm9wZXJ0eSBzdG9yYWdlIHBvaW50ZXIKKyAgICBhZGRQdHIoSW1tMzIoc2l6ZW9mKEpT
T2JqZWN0KSksIHJlZ1QwLCByZWdUMSk7CisgICAgc3RvcmVQdHIocmVnVDEsIEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpKSk7CisgICAgCisgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBub3QgYSBjZWxsCisgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBub3QgYW4gb2JqZWN0CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0
IGhhdmUgYW4gaW5oZXJpdG9yIElECisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0
aW9uIGZhaWxlZAogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jcmVhdGVf
dGhpcyk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCwgcmVnVDEpOwogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3
IEBAIGV4dGVybiBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSByZWcKIGV4dGVybiBKU0Nf
Q09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBzdHJpbmdUYWJsZTsKIGV4dGVybiBKU0NfQ09OU1Rf
SEFTSFRBQkxFIEhhc2hUYWJsZSBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOwogCit2b2lkKiBKU0ds
b2JhbERhdGE6OmpzRmluYWxPYmplY3RWUHRyOwogdm9pZCogSlNHbG9iYWxEYXRhOjpqc0FycmF5
VlB0cjsKIHZvaWQqIEpTR2xvYmFsRGF0YTo6anNCeXRlQXJyYXlWUHRyOwogdm9pZCogSlNHbG9i
YWxEYXRhOjpqc1N0cmluZ1ZQdHI7CkBAIC0xMzMsNiArMTM0LDExIEBAIHZvaWQgSlNHbG9iYWxE
YXRhOjpzdG9yZVZQdHJzKCkKICAgICAvLyBDT01QSUxFX0FTU0VSVFMgYmVsb3cgY2hlY2sgdGhh
dCB0aGlzIGlzIHRydWUuCiAgICAgY2hhciBzdG9yYWdlWzY0XTsKIAorICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZihKU0ZpbmFsT2JqZWN0KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0Zp
bmFsT2JqZWN0X211c3RfYmVfbGVzc190aGFuX3N0b3JhZ2UpOworICAgIEpTQ2VsbCoganNGaW5h
bE9iamVjdCA9IG5ldyAoc3RvcmFnZSkgSlNGaW5hbE9iamVjdChKU0ZpbmFsT2JqZWN0OjpWUHRy
U3RlYWxpbmdIYWNrKTsKKyAgICBDTE9CQkVSX01FTU9SWSgpOworICAgIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdFZQdHIgPSBqc0ZpbmFsT2JqZWN0LT52cHRyKCk7CisKICAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoSlNBcnJheSkgPD0gc2l6ZW9mKHN0b3JhZ2UpLCBzaXplb2ZfSlNBcnJh
eV9tdXN0X2JlX2xlc3NfdGhhbl9zdG9yYWdlKTsKICAgICBKU0NlbGwqIGpzQXJyYXkgPSBuZXcg
KHN0b3JhZ2UpIEpTQXJyYXkoSlNBcnJheTo6VlB0clN0ZWFsaW5nSGFjayk7CiAgICAgQ0xPQkJF
Ul9NRU1PUlkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCShyZXZpc2lvbiA5MTA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgICAgICBzdGF0aWMgdm9pZCBzdG9yZVZQdHJzKCk7
CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyOwog
ICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0FycmF5VlB0cjsKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNCeXRlQXJyYXlWUHRyOwogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc1N0cmluZ1ZQdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDkxMDQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAg
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFz
cyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAg
Y2xhc3MgU3RydWN0dXJlOwpAQCAtNzUsNiArNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOworICAgICAgICBmcmll
bmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmpl
Y3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KTsKIAogICAgIHB1YmxpYzoKQEAgLTI1MCw2ICsyNTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAg
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTM1Nyw2ICszNjAsMTEgQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQg
Y2xhc3MgSlNPYmplY3Q7CiAKICAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEpTRmluYWxP
YmplY3QoVlB0clN0ZWFsaW5nSGFja1R5cGUpCisgICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJT
dGVhbGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBzdGF0aWMgSlNGaW5hbE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBu
ZXcgKGV4ZWMpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwpA
QCAtMzkxLDYgKzM5OSwxMSBAQCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZlByb3Bl
cnR5CiAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3Jh
Z2UpOwogfQogCitpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkK
K3sKKyAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX2luaGVyaXRvcklEKTsK
K30KKwogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIHJldHVybiBKU0ZpbmFsT2JqZWN0Ojpj
cmVhdGUoZXhlYywgc3RydWN0dXJlKTsK
</data>
<flag name="review"
          id="95699"
          type_id="1"
          status="-"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="95700"
          type_id="3"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101054</attachid>
            <date>2011-07-15 15:18:53 -0700</date>
            <delta_ts>2011-07-18 11:56:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>allocinline_patch_4.diff</filename>
            <type>text/plain</type>
            <size>15857</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTExMTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDctMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgSklUIGRvZXMgbm90IGlubGluZSBHQyBhbGxvY2F0aW9uIGZhc3QgcGF0aHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRyZXNzZXMgaW5s
aW5pbmcgYWxsb2NhdGlvbiBmb3IgdGhlIGVhc2llc3QtdG8tYWxsb2NhdGUgY2FzZXM6CisgICAg
ICAgIG9wX25ld19vYmplY3QgYW5kIG9wX2NyZWF0ZV90aGlzLiAgSW5saW5pbmcgR0MgYWxsb2Nh
dGlvbiBmYXN0IHBhdGhzCisgICAgICAgIHJlcXVpcmVkIHRocmVlIGNoYW5nZXMuICBGaXJzdCwg
dGhlIEpTR2xvYmFsRGF0YSBub3cgc2F2ZXMgdGhlIHZ0YWJsZQorICAgICAgICBwb2ludGVyIG9m
IEpTRmluYWxPYmplY3QsIHNpbmNlIHRoYXQncyB3aGF0IG9wX25ld19vYmplY3QgYW5kCisgICAg
ICAgIG9wX2NyZWF0ZV90aGlzIGFsbG9jYXRlLiAgU2Vjb25kLCB0aGUgSGVhcCBleHBvc2VzIGEg
cmVmZXJlbmNlIHRvCisgICAgICAgIHRoZSBhcHByb3ByaWF0ZSBTaXplQ2xhc3MsIHNvIHRoYXQg
dGhlIEpJVCBtYXkgaW5saW5lIGFjY2Vzc2VzCisgICAgICAgIGRpcmVjdGx5IHRvIHRoZSBTaXpl
Q2xhc3MgZm9yIEpTRmluYWxPYmplY3QgYWxsb2NhdGlvbnMuICBBbmQgdGhpcmQsCisgICAgICAg
IHRoZSBKSVQgaXMgZXh0ZW5kZWQgd2l0aCBjb2RlIHRvIGVtaXQgaW5saW5lIGZhc3QgcGF0aHMg
Zm9yIEdDCisgICAgICAgIGFsbG9jYXRpb24uICBBIHN0dWIgY2FsbCBpcyBlbWl0dGVkIGluIHRo
ZSBjYXNlIHdoZXJlIHRoZSBpbmxpbmUgZmFzdAorICAgICAgICBwYXRoIGZhaWxzLgorCisgICAg
ICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnNpemVDbGFzc0Zvcik6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY3Jl
YXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhp
cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpzdG9yZVZQdHJzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6SlNG
aW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklE
KToKKwogMjAxMS0wNy0xNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5j
b20+CiAKICAgICAgICAgTmF0aXZlRXJyb3IucHJvdG90eXBlIG9iamVjdHMgaGF2ZSBbW0NsYXNz
XV0gb2YgIk9iamVjdCIgYnV0IHNob3VsZCBiZSAiRXJyb3IiCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiA5MTExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CiAKICAgICAgICAgdm9pZCogYWxsb2Nh
dGUoc2l6ZV90KTsKKyAgICAgICAgTmV3U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNp
emVfdCk7CiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKICAg
ICAgICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3QoKSB7IG1faXNTYWZlVG9Db2xsZWN0ID0g
dHJ1ZTsgfQogICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CkBAIC0yODksNiArMjkw
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOwogICAgIH0KICAgICAKKyAgICBpbmxpbmUgTmV3U3BhY2U6OlNpemVDbGFzcyYgSGVhcDo6
c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykKKyAgICB7CisgICAgICAgIHJldHVybiBtX25ld1Nw
YWNlLnNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgfQorICAgIAogICAgIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCiAgICAgewogICAg
ICAgICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9z
dCBjb21tb24gY2FzZS4KQEAgLTMwMyw3ICszMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBp
bmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0gICAgICAgIE5ld1NwYWNlOjpTaXpl
Q2xhc3MmIHNpemVDbGFzcyA9IG1fbmV3U3BhY2Uuc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKKyAgICAg
ICAgTmV3U3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9yKGJ5dGVzKTsK
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiA5MTExMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAxLDYgKzQwMSw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9jYWxsX3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb25z
dHJ1Y3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jb252ZXJ0X3RoaXMpCisgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2RpdikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2VxKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkKQpAQCAtNDM1LDYgKzQzNiw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9uZWdhdGUpCiAjZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X25lcSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25ld19vYmplY3QpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9ub3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9uc3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2RlYykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gOTExMTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGVzdFByb3RvdHlwZShKU1ZhbHVlLCBKdW1w
TGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoUmVn
aXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKyAgICAgICAgCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVj
dChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFudElt
bWVkaWF0ZUludCh1bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQmIG9wLCBpbnQz
Ml90JiBjb25zdGFudCk7CkBAIC04NTMsNiArODU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NvbnN0
cnVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9jb252ZXJ0X3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY3Jl
YXRlX3RoaXMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZGl2KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKQEAgLTg4NSw2ICs4ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbmVnYXRlKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX25lcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX25vdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcG9z
dF9kZWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2
aXNpb24gOTExMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYgKzM3NCwzMSBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSklUOjppc09wZXJhbmRDb25zdGFuCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5n
KCkgJiYgYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgo
KSA9PSAxOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgSklUOjplbWl0
QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzY3JhdGNoKQoreworICAgIE5ld1NwYWNlOjpTaXplQ2xhc3MqIHNpemVDbGFzcyA9
ICZtX2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yKHNpemVvZihKU0ZpbmFsT2JqZWN0KSk7
CisgICAgbG9hZFB0cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZXN1bHQpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVzdWx0KSk7CisgICAgCisgICAgLy8gcmVt
b3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0CisgICAgbG9hZFB0cihBZGRyZXNzKHJl
c3VsdCksIHNjcmF0Y2gpOworICAgIHN0b3JlUHRyKHNjcmF0Y2gsICZzaXplQ2xhc3MtPmZpcnN0
RnJlZUNlbGwpOworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHZ0YWJsZQor
ICAgIHN0b3JlUHRyKEltbVB0cihtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RWUHRyKSwgQWRk
cmVzcyhyZXN1bHQpKTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXplIHRoZSBvYmplY3QncyBzdHJ1
Y3R1cmUKKyAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIEFkZHJlc3MocmVzdWx0LCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSk7CisgICAgCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgaW5oZXJpdG9y
IElECisgICAgc3RvcmVQdHIoSW1tUHRyKDApLCBBZGRyZXNzKHJlc3VsdCwgSlNPYmplY3Q6Om9m
ZnNldE9mSW5oZXJpdG9ySUQoKSkpOworICAgIAorICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVj
dCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgorICAgIGFkZFB0cihJbW0zMihzaXplb2YoSlNP
YmplY3QpKSwgcmVzdWx0LCBzY3JhdGNoKTsKKyAgICBzdG9yZVB0cihzY3JhdGNoLCBBZGRyZXNz
KHJlc3VsdCwgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkpKTsKK30KKwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWRUYWcodW5zaWdu
ZWQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gOTExMTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
NSw2ICs0ODUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam1wKEluc3RydWN0aW9uKiBjdXJyZQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CisgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKSwgcmVnVDAsIHJlZ1Qx
KTsKKyAgICAKKyAgICBlbWl0U3RvcmVDZWxsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIHJlZ1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgSklUU3R1YkNhbGwodGhp
cywgY3RpX29wX25ld19vYmplY3QpLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CiB9CiAKQEAgLTE0MzgsNiArMTQ0NiwzMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2Fs
bGVlKEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEpOworICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsK
KyAgICBhZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKSk7Cisg
ICAgCisgICAgLy8gbm93IHdlIGtub3cgdGhhdCB0aGUgcHJvdG90eXBlIGlzIGFuIG9iamVjdCwg
YnV0IHdlIGRvbid0IGtub3cgaWYgaXQncyBnb3QgYW4KKyAgICAvLyBpbmhlcml0b3IgSUQKKyAg
ICAKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRv
cklEKCkpLCByZWdUMik7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdU
MikpOworICAgIAorICAgIC8vIG5vdyByZWdUMiBjb250YWlucyB0aGUgaW5oZXJpdG9ySUQsIHdo
aWNoIGlzIHRoZSBzdHJ1Y3R1cmUgdGhhdCB0aGUgbmV3bHkKKyAgICAvLyBhbGxvY2F0ZWQgb2Jq
ZWN0IHdpbGwgaGF2ZS4KKyAgICAKKyAgICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KHJlZ1Qy
LCByZWdUMCwgcmVnVDEpOworCisgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVhdGVf
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIs
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOyAvLyBub3QgYSBjZWxsCisgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBub3QgYW4gb2JqZWN0CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBkb2Vzbid0IGhhdmUgYW4gaW5oZXJpdG9yIElECisgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogICAgIHVuc2lnbmVkIHByb3RvUmVnaXN0ZXIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGVtaXRMb2FkKHByb3RvUmVnaXN0ZXIs
IHJlZ1QxLCByZWdUMCk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2Ny
ZWF0ZV90aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkocmV2aXNpb24gOTExMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSklULmgi
CiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJDYWxsLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgpAQCAtMzMwLDYgKzMzMSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbXAoSW5z
dHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKKyAgICBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0
KEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJl
KCkpLCByZWdUMCwgcmVnVDEpOworICAgIAorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
ICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdfb2JqZWN0KS5jYWxsKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQogCkBAIC0xMTU2LDYgKzExNjUsMzEgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9j
cmVhdGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogeworICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDIp
OworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMiwgY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoT2JqZWN0VHlwZSkpKTsKKyAgICAKKyAgICAvLyBub3cgd2Uga25vdyB0aGF0IHRo
ZSBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LCBidXQgd2UgZG9uJ3Qga25vdyBpZiBpdCdzIGdvdCBh
bgorICAgIC8vIGluaGVyaXRvciBJRAorICAgIAorICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwg
SlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKSksIHJlZ1QyKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QyKSk7CisgICAgCisgICAgLy8gbm93IHJlZ1QyIGNv
bnRhaW5zIHRoZSBpbmhlcml0b3JJRCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB0aGF0IHRoZSBu
ZXdseQorICAgIC8vIGFsbG9jYXRlZCBvYmplY3Qgd2lsbCBoYXZlLgorICAgIAorICAgIGVtaXRB
bGxvY2F0ZUpTRmluYWxPYmplY3QocmVnVDIsIHJlZ1QwLCByZWdUMSk7CisgICAgCisgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7Cisg
ICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7IC8vIG5vdCBhIGNlbGwKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG5vdCBh
biBvYmplY3QKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBpbmhl
cml0b3IgSUQKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCiAg
ICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV90aGlzKTsKICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MSk7CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAkocmV2aXNpb24gOTExMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAgZXh0ZXJuIEpT
Q19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIHJlZwogZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFC
TEUgSGFzaFRhYmxlIHN0cmluZ1RhYmxlOwogZXh0ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFz
aFRhYmxlIHN0cmluZ0NvbnN0cnVjdG9yVGFibGU7CiAKK3ZvaWQqIEpTR2xvYmFsRGF0YTo6anNG
aW5hbE9iamVjdFZQdHI7CiB2b2lkKiBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyOwogdm9pZCog
SlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHI7CiB2b2lkKiBKU0dsb2JhbERhdGE6OmpzU3Ry
aW5nVlB0cjsKQEAgLTEzMyw2ICsxMzQsMTEgQEAgdm9pZCBKU0dsb2JhbERhdGE6OnN0b3JlVlB0
cnMoKQogICAgIC8vIENPTVBJTEVfQVNTRVJUUyBiZWxvdyBjaGVjayB0aGF0IHRoaXMgaXMgdHJ1
ZS4KICAgICBjaGFyIHN0b3JhZ2VbNjRdOwogCisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpT
RmluYWxPYmplY3QpIDw9IHNpemVvZihzdG9yYWdlKSwgc2l6ZW9mX0pTRmluYWxPYmplY3RfbXVz
dF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7CisgICAgSlNDZWxsKiBqc0ZpbmFsT2JqZWN0ID0gbmV3
IChzdG9yYWdlKSBKU0ZpbmFsT2JqZWN0KEpTRmluYWxPYmplY3Q6OlZQdHJTdGVhbGluZ0hhY2sp
OworICAgIENMT0JCRVJfTUVNT1JZKCk7CisgICAgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0
VlB0ciA9IGpzRmluYWxPYmplY3QtPnZwdHIoKTsKKwogICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihKU0FycmF5KSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0FycmF5X211c3RfYmVfbGVz
c190aGFuX3N0b3JhZ2UpOwogICAgIEpTQ2VsbCoganNBcnJheSA9IG5ldyAoc3RvcmFnZSkgSlNB
cnJheShKU0FycmF5OjpWUHRyU3RlYWxpbmdIYWNrKTsKICAgICBDTE9CQkVSX01FTU9SWSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJl
dmlzaW9uIDkxMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNlbmRpZgogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsKKyAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNGaW5hbE9iamVjdFZQdHI7CiAgICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIHZvaWQqIGpzQXJyYXlWUHRyOwogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSB2b2lkKiBqc0J5dGVBcnJheVZQdHI7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIHZvaWQqIGpzU3RyaW5nVlB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkocmV2aXNpb24gOTExMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5h
bEZ1bmN0aW9uOworICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVz
Y3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBTdHJ1Y3R1
cmU7CkBAIC03NSw2ICs3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xh
c3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICAgICAgZnJpZW5kIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwogCiAg
ICAgcHVibGljOgpAQCAtMjUwLDYgKzI1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZkluaGVyaXRvcklEKCk7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtMzU3LDYgKzM2MCwxMSBAQCBDT01QSUxFX0FTU0VS
VCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU09iamVj
dDsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChWUHRyU3Rl
YWxpbmdIYWNrVHlwZSkKKyAgICAgICAgICAgIDogSlNPYmplY3QoVlB0clN0ZWFsaW5nSGFjaywg
bV9pbmxpbmVTdG9yYWdlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBKU0ZpbmFsT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNG
aW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7CkBAIC0zOTEsNiArMzk5
LDExIEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHkKICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CiB9CiAKK2lu
bGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKQoreworICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1faW5oZXJpdG9ySUQpOworfQorCiBpbmxpbmUg
SlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7CiAgICAgcmV0dXJuIEpTRmluYWxPYmplY3Q6OmNyZWF0ZShleGVjLCBz
dHJ1Y3R1cmUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>