<?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>126722</bug_id>
          
          <creation_ts>2014-01-09 15:05:31 -0800</creation_ts>
          <short_desc>DFG and FTL should have separate compilation worklists</short_desc>
          <delta_ts>2014-01-10 13:22:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966088</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-09 15:05:31 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966090</commentid>
    <comment_count>1</comment_count>
      <attachid>220773</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-09 15:08:37 -0800</bug_when>
    <thetext>Created attachment 220773
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966093</commentid>
    <comment_count>2</comment_count>
      <attachid>220773</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-09 15:15:34 -0800</bug_when>
    <thetext>Comment on attachment 220773
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966128</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-09 16:26:19 -0800</bug_when>
    <thetext>Benchmark report for SunSpider, Octane, and Kraken on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/cStack/OpenSource/WebKitBuild/Release/jsc (r161590)
&quot;ToTParallel&quot; at /Volumes/Data/pizlo/cStack/OpenSource/WebKitBuild/Release/jsc (r161590)
    export JSC_numberOfCompilerThreads=7
&quot;DualFTL&quot; at /Volumes/Data/fromMiniMe/cStack/OpenSource/WebKitBuild/Release/jsc (r161590)

Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark
iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree                ToTParallel                 DualFTL               DualFTL v. TipOfTree   
SunSpider:
   3d-cube                                    7.7350+-0.1403     ?      7.8031+-0.0543     ?      7.8924+-0.0669        ? might be 1.0204x slower
   3d-morph                                   8.7733+-0.0991     !      9.1814+-0.1007     ^      8.7825+-0.0606        ?
   3d-raytrace                                9.5156+-0.1249            9.2736+-0.1206     ?      9.3440+-0.1619          might be 1.0184x faster
   access-binary-trees                        2.4751+-0.0171     ^      2.3861+-0.0198     ^      2.1944+-0.0394        ^ definitely 1.1279x faster
   access-fannkuch                            7.9955+-0.1110     ?      8.2837+-0.5175            8.0945+-0.0772        ? might be 1.0124x slower
   access-nbody                               4.2644+-0.0142     !      4.4524+-0.0255     ^      4.2758+-0.0098        ?
   access-nsieve                              5.5880+-0.0206     ?      5.6016+-0.0964            5.5880+-0.1668        
   bitops-3bit-bits-in-byte                   1.9945+-0.0207     !      2.1833+-0.0133     ^      1.9876+-0.0198        
   bitops-bits-in-byte                        6.7168+-0.0741     !      6.8758+-0.0213     ^      6.6912+-0.0102        
   bitops-bitwise-and                         3.0426+-0.1102     ?      3.1417+-0.0885            2.9948+-0.0926          might be 1.0159x faster
   bitops-nsieve-bits                         5.7832+-0.0789     !      6.1569+-0.0582     ^      5.7990+-0.0970        ?
   controlflow-recursive                      4.5550+-0.0541     ^      3.9242+-0.0130     ^      3.8724+-0.0140        ^ definitely 1.1763x faster
   crypto-aes                                 5.8840+-0.0771     !      6.0512+-0.0807     ?      6.0727+-0.0630        ! definitely 1.0321x slower
   crypto-md5                                 3.5651+-0.0237     ?      3.6012+-0.0418     ?      3.6126+-0.0722        ? might be 1.0133x slower
   crypto-sha1                                3.6039+-0.0455     !      3.8102+-0.0323     ^      3.7198+-0.0110        ! definitely 1.0321x slower
   date-format-tofte                         11.4091+-0.1328     !     11.6409+-0.0693           11.4883+-0.1030        ?
   date-format-xparb                          8.4204+-0.0703     !      8.5730+-0.0675            8.5148+-0.1166        ? might be 1.0112x slower
   math-cordic                                4.7391+-0.0530     !      4.9023+-0.0500            4.8443+-0.0160        ! definitely 1.0222x slower
   math-partial-sums                         10.2762+-0.1186     ?     10.4455+-0.0977           10.2392+-0.1667        
   math-spectral-norm                         4.4365+-0.3661     ^      3.1942+-0.0144     !      3.2475+-0.0260        ^ definitely 1.3661x faster
   regexp-dna                                13.0538+-0.1486           12.9485+-0.1302     ?     13.1896+-0.2219        ? might be 1.0104x slower
   string-base64                              5.5600+-0.0266     !      5.9501+-0.0452     ^      5.6209+-0.0939        ? might be 1.0109x slower
   string-fasta                              11.2043+-0.2024           10.8907+-0.1598     ?     10.8925+-0.1670          might be 1.0286x faster
   string-tagcloud                           15.0982+-0.1287     !     15.4909+-0.1335     ^     15.1574+-0.1170        ?
   string-unpack-code                        32.1125+-0.3270     ?     32.6096+-0.2257           32.2217+-0.1813        ?
   string-validate-input                      7.0659+-0.0967     ?      7.2557+-0.0951     ^      7.0590+-0.0798        

   &lt;arithmetic&gt; *                             7.8795+-0.0217     !      7.9472+-0.0231     ^      7.8230+-0.0155        ^ definitely 1.0072x faster
   &lt;geometric&gt;                                6.5084+-0.0227     ?      6.5309+-0.0209     ^      6.3898+-0.0163        ^ definitely 1.0186x faster
   &lt;harmonic&gt;                                 5.5083+-0.0320     ?      5.5089+-0.0198     ^      5.3392+-0.0228        ^ definitely 1.0317x faster

                                                TipOfTree                ToTParallel                 DualFTL               DualFTL v. TipOfTree   
Octane and V8v7:
   encrypt                                   0.44227+-0.00445          0.43756+-0.00049    ?     0.43765+-0.00074         might be 1.0106x faster
   decrypt                                   8.09333+-0.02411    ?     8.14397+-0.04516    ?     8.17768+-0.07785       ? might be 1.0104x slower
   deltablue                        x2       0.55937+-0.00265    ^     0.54515+-0.00929          0.53778+-0.00746       ^ definitely 1.0402x faster
   earley                                    0.89108+-0.01754          0.88955+-0.01030          0.88891+-0.01445       
   boyer                                    11.98773+-0.03993    ?    12.08035+-0.09569         12.01329+-0.05560       ?
   raytrace                         x2       3.97495+-0.04962          3.93134+-0.01134    ^     3.88757+-0.03056       ^ definitely 1.0225x faster
   regexp                           x2      30.94620+-0.10105    ?    31.18226+-0.14836    ?    31.28541+-0.05398       ! definitely 1.0110x slower
   richards                         x2       0.22445+-0.00253    ?     0.22446+-0.00196          0.22423+-0.00170       
   splay                            x2       0.63010+-0.00352          0.62697+-0.00234    ?     0.62863+-0.00345       
   navier-stokes                    x2       8.24634+-0.01810    ?     8.27680+-0.09913          8.22878+-0.01162       
   closure                                   0.77319+-0.00194          0.77150+-0.00241    ?     0.78109+-0.01136       ? might be 1.0102x slower
   jquery                                   10.86971+-0.09816    ?    10.89717+-0.09670    ?    10.90944+-0.06909       ?
   gbemu                            x2      94.55735+-2.15531    ^    85.47404+-2.31036         84.20366+-0.56867       ^ definitely 1.1230x faster
   mandreel                         x2     102.09544+-0.41028        101.44793+-0.37334    ?   101.68476+-0.91844       
   pdfjs                            x2      99.10754+-0.29963    ?    99.56893+-0.27883    !   100.22624+-0.18232       ! definitely 1.0113x slower
   box2d                            x2      31.14315+-0.08152    !    31.46904+-0.09198    ?    31.52653+-0.19350       ! definitely 1.0123x slower

V8v7:
   &lt;arithmetic&gt;                              6.91108+-0.01459    ?     6.94534+-0.02585          6.94390+-0.00663       ! definitely 1.0047x slower
   &lt;geometric&gt; *                             2.17237+-0.00685          2.16430+-0.00537          2.15712+-0.00525       ^ definitely 1.0071x faster
   &lt;harmonic&gt;                                0.79748+-0.00451          0.79203+-0.00381          0.78975+-0.00277       ^ definitely 1.0098x faster

Octane including V8v7:
   &lt;arithmetic&gt;                             29.84720+-0.16703    ^    29.18130+-0.18892         29.15674+-0.07819       ^ definitely 1.0237x faster
   &lt;geometric&gt; *                             6.57389+-0.02082    ^     6.51243+-0.01967          6.50058+-0.01290       ^ definitely 1.0113x faster
   &lt;harmonic&gt;                                1.20517+-0.00633          1.19727+-0.00544          1.19493+-0.00436         might be 1.0086x faster

                                                TipOfTree                ToTParallel                 DualFTL               DualFTL v. TipOfTree   
Kraken:
   ai-astar                                  494.054+-0.566            493.943+-0.519      ?     495.509+-4.113         ?
   audio-beat-detection                      222.228+-1.196            221.917+-0.813      ?     222.988+-2.524         ?
   audio-dft                                 292.768+-2.611      ?     293.431+-2.820      ?     294.920+-4.407         ?
   audio-fft                                 129.644+-0.126      ?     129.781+-0.128            129.740+-0.139         ?
   audio-oscillator                          530.579+-0.590      ?     531.590+-0.647      ?     533.247+-3.535         ?
   imaging-darkroom                          298.699+-7.128            289.801+-2.708      !     298.392+-1.162         
   imaging-desaturate                        109.765+-0.061      ?     109.943+-0.201            109.736+-0.179         
   imaging-gaussian-blur                     191.039+-1.253      ?     192.812+-0.961      ?     203.382+-26.139        ? might be 1.0646x slower
   json-parse-financial                       79.933+-0.454             79.550+-0.288      ?      79.895+-0.347         
   json-stringify-tinderbox                  103.529+-0.459            103.476+-0.412      ?     103.812+-0.424         ?
   stanford-crypto-aes                        92.541+-0.573             92.278+-0.384      ?      92.791+-0.704         ?
   stanford-crypto-ccm                        99.185+-1.443      !     102.089+-1.355      ?     102.411+-0.800         ! definitely 1.0325x slower
   stanford-crypto-pbkdf2                    259.257+-2.044            258.160+-1.551      ?     263.137+-3.793         ? might be 1.0150x slower
   stanford-crypto-sha256-iterative          113.674+-0.582      ?     114.611+-0.749            114.286+-0.367         ?

   &lt;arithmetic&gt; *                            215.492+-0.609            215.242+-0.378      !     217.446+-1.794         ? might be 1.0091x slower
   &lt;geometric&gt;                               177.564+-0.415      ?     177.684+-0.345      ?     179.188+-1.369         ? might be 1.0091x slower
   &lt;harmonic&gt;                                150.614+-0.300      ?     150.978+-0.330      ?     151.841+-0.780         ! definitely 1.0081x slower

                                                TipOfTree                ToTParallel                 DualFTL               DualFTL v. TipOfTree   
All benchmarks:
   &lt;arithmetic&gt;                              60.5726+-0.1297     ^     60.2837+-0.1281     ?     60.6927+-0.4013        ? might be 1.0020x slower
   &lt;geometric&gt;                               13.1755+-0.0302           13.1465+-0.0182     ^     13.0477+-0.0217        ^ definitely 1.0098x faster
   &lt;harmonic&gt;                                 2.5012+-0.0118            2.4879+-0.0098     ^      2.4700+-0.0058        ^ definitely 1.0126x faster

                                                TipOfTree                ToTParallel                 DualFTL               DualFTL v. TipOfTree   
Geomean of preferred means:
   &lt;scaled-result&gt;                           22.3486+-0.0367           22.3336+-0.0299           22.2785+-0.0631          might be 1.0031x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966546</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-10 13:22:08 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/161599</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220773</attachid>
            <date>2014-01-09 15:08:37 -0800</date>
            <delta_ts>2014-01-09 15:15:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18640</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE0LTAxLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGFuZCBGVEwgc2hvdWxkIGhhdmUgc2VwYXJhdGUgY29tcGlsYXRpb24gd29ya2xpc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3MjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRo
ZXJlIGFyZSBhIG51bWJlciBvZiBhcmNoaXRlY3R1cmFsIGNoYW5nZXMgaGVyZToKKyAgICAgICAg
CisgICAgICAgIC0gREZHRHJpdmVyLmNwcCBpcyBub3cgdGhlIG9ubHkgcGxhY2UgdGhhdCBkZWNp
ZGVzIHdoZXRoZXIgb3Igbm90IHRvIGRvIGEKKyAgICAgICAgICBjb25jdXJyZW50IGNvbXBpbGUu
IFByZXZpb3VzbHkgdGhpcyBkZWNpc2lvbiB3YXMgb2RkbHkgc3F1aXJyZWxlZCBhd2F5IGluCisg
ICAgICAgICAgVk0uY3BwLgorICAgICAgICAKKyAgICAgICAgLSBWTSBubyBsb25nZXIgcG9pbnRz
IHRvIGEgd29ya2xpc3QuIFRoYXQgd2FzIGFsd2F5cyBraW5kIG9mIHdlaXJkIHNpbmNlIHRoZXJl
IHdhcworICAgICAgICAgIG9ubHkgb25lIHdvcmtsaXN0IHBlciBwcm9jZXNzIGFueXdheS4KKyAg
ICAgICAgCisgICAgICAgIC0gVGhlcmUgYXJlIG5vdyB0d28gd29ya2xpc3RzOiBvbmUgZm9yIGFs
bCBERkcgY29tcGlsZXMgYW5kIG9uZSBmb3IgYWxsIEZUTAorICAgICAgICAgIGNvbXBpbGVzLgor
ICAgICAgICAKKyAgICAgICAgLSBUaGUgRlRMIHdvcmtsaXN0IGlzIG5vdyBwYXJhbGxlbCBieSBk
ZWZhdWx0LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpjaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xkUmVhY2hlZCk6CisgICAg
ICAgICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6aW5pdGlhbGl6ZUdsb2JhbERGR1dvcmtsaXN0T25jZSk6CisgICAgICAgIChKU0M6OkRGRzo6
ZW5zdXJlR2xvYmFsREZHV29ya2xpc3QpOgorICAgICAgICAoSlNDOjpERkc6OmV4aXN0aW5nR2xv
YmFsREZHV29ya2xpc3RPck51bGwpOgorICAgICAgICAoSlNDOjpERkc6OmluaXRpYWxpemVHbG9i
YWxGVExXb3JrbGlzdE9uY2UpOgorICAgICAgICAoSlNDOjpERkc6OmVuc3VyZUdsb2JhbEZUTFdv
cmtsaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpleGlzdGluZ0dsb2JhbEZUTFdvcmtsaXN0T3JO
dWxsKToKKyAgICAgICAgKEpTQzo6REZHOjplbnN1cmVHbG9iYWxXb3JrbGlzdEZvcik6CisgICAg
ICAgICogZGZnL0RGR1dvcmtsaXN0Lmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpjbGVhbldvcmtsaXN0KToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6
CisgICAgICAgIChKU0M6OnByZXBhcmVUb0Rpc2NhcmRDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6
Vk06OnByZXBhcmVUb0Rpc2NhcmRDb2RlKToKKyAgICAgICAgKEpTQzo6Vk06OmdhdGhlckNvbnNl
cnZhdGl2ZVJvb3RzKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTQtMDEtMDkgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENTdGFjazogUmVuYW1lICJo
b3N0IHpvbmUiIHRvICJyZXNlcnZlZCB6b25lIi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNjE1NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAzMCw3ICszMDMwLDcgQEAgaW50MzJfdCBDb2RlQmxvY2s6OmFkanVzdGVkQ291bnRlclZhbHVl
KAogYm9vbCBDb2RlQmxvY2s6OmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkK
IHsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoREZHOjpXb3JrbGlzdCogd29ya2xpc3Qg
PSBtX3ZtLT53b3JrbGlzdC5nZXQoKSkgeworICAgIGlmIChERkc6OldvcmtsaXN0KiB3b3JrbGlz
dCA9IERGRzo6ZXhpc3RpbmdHbG9iYWxERkdXb3JrbGlzdE9yTnVsbCgpKSB7CiAgICAgICAgIGlm
ICh3b3JrbGlzdC0+Y29tcGlsYXRpb25TdGF0ZShERkc6OkNvbXBpbGF0aW9uS2V5KHRoaXMsIERG
Rzo6REZHTW9kZSkpCiAgICAgICAgICAgICA9PSBERkc6OldvcmtsaXN0OjpDb21waWxlZCkgewog
ICAgICAgICAgICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbigpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNjE1NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NywxNSArODcsNiBA
QCBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotaW5saW5lIGJv
b2wgZW5hYmxlQ29uY3VycmVudEpJVCgpCi17Ci0jaWYgRU5BQkxFKENPTkNVUlJFTlRfSklUKQot
ICAgIHJldHVybiBPcHRpb25zOjplbmFibGVDb25jdXJyZW50SklUKCkgJiYgT3B0aW9uczo6bnVt
YmVyT2ZDb21waWxlclRocmVhZHMoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
Ci19Ci0KIGlubGluZSBib29sIGVuYWJsZUludDUyKCkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTYx
NTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHVuc2lnbmVkIGdldE51bUNvbXBpbGF0aW9ucygpCiBz
dGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29tcGlsYXRpb25Nb2RlIG1vZGUsIHVuc2lnbmVkIG9zckVudHJ5Qnl0
ZWNvZGVJbmRleCwKICAgICBjb25zdCBPcGVyYW5kczxKU1ZhbHVlPiYgbXVzdEhhbmRsZVZhbHVl
cywKLSAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gY2FsbGJhY2ss
IFdvcmtsaXN0KiB3b3JrbGlzdCkKKyAgICBQYXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjaz4gY2FsbGJhY2spCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
IkRGRyBDb21waWxhdGlvbiAoRHJpdmVyKSIpOwogICAgIApAQCAtOTcsNyArOTcsOCBAQCBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgUmVmUHRyPFBsYW4+IHBsYW4g
PSBhZG9wdFJlZigKICAgICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5
dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMpKTsKICAgICAKLSAgICBpZiAod29ya2xpc3Qp
IHsKKyAgICBpZiAoT3B0aW9uczo6ZW5hYmxlQ29uY3VycmVudEpJVCgpKSB7CisgICAgICAgIFdv
cmtsaXN0KiB3b3JrbGlzdCA9IGVuc3VyZUdsb2JhbFdvcmtsaXN0Rm9yKG1vZGUpOwogICAgICAg
ICBwbGFuLT5jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgICAgICBpZiAobG9nQ29tcGlsYXRpb25D
aGFuZ2VzKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJEZWZlcnJpbmcgREZHIGNvbXBpbGF0aW9u
IG9mICIsICpjb2RlQmxvY2ssICIgd2l0aCBxdWV1ZSBsZW5ndGggIiwgd29ya2xpc3QtPnF1ZXVl
TGVuZ3RoKCksICIuXG4iKTsKQEAgLTExMSw3ICsxMTIsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25S
ZXN1bHQgY29tcGlsZUltcGwoCiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKIHN0YXRpYyBDb21w
aWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICBWTSYsIENvZGVCbG9jayosIENvbXBpbGF0
aW9uTW9kZSwgdW5zaWduZWQsIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiwKLSAgICBQYXNzUmVm
UHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sIFdvcmtsaXN0KikKKyAgICBQYXNzUmVm
UHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4pCiB7CiAgICAgcmV0dXJuIENvbXBpbGF0
aW9uRmFpbGVkOwogfQpAQCAtMTIwLDExICsxMjEsMTEgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVz
dWx0IGNvbXBpbGVJbXBsKAogQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZSgKICAgICBWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrLCBDb21waWxhdGlvbk1vZGUgbW9kZSwgdW5zaWduZWQgb3Ny
RW50cnlCeXRlY29kZUluZGV4LAogICAgIGNvbnN0IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFu
ZGxlVmFsdWVzLAotICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBw
YXNzZWRDYWxsYmFjaywgV29ya2xpc3QqIHdvcmtsaXN0KQorICAgIFBhc3NSZWZQdHI8RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrPiBwYXNzZWRDYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IHBhc3NlZENhbGxiYWNrOwogICAg
IENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IGNvbXBpbGVJbXBsKAotICAgICAgICB2bSwgY29k
ZUJsb2NrLCBtb2RlLCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG11c3RIYW5kbGVWYWx1ZXMsIGNh
bGxiYWNrLCB3b3JrbGlzdCk7CisgICAgICAgIHZtLCBjb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5
Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRsZVZhbHVlcywgY2FsbGJhY2spOwogICAgIGlmIChyZXN1
bHQgIT0gQ29tcGlsYXRpb25EZWZlcnJlZCkKICAgICAgICAgY2FsbGJhY2stPmNvbXBpbGF0aW9u
RGlkQ29tcGxldGUoY29kZUJsb2NrLCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgJKHJldmlzaW9uIDE2MTU0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDE2ICs0MCwxMyBAQCBjbGFzcyBWTTsKIAogbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIFdv
cmtsaXN0OwotCiBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBnZXROdW1Db21waWxhdGlvbnMo
KTsKIAogLy8gSWYgdGhlIHdvcmtsaXN0IGlzIG5vbi1udWxsLCB3ZSBkbyBhIGNvbmN1cnJlbnQg
Y29tcGlsZS4gT3RoZXJ3aXNlIHdlIGRvIGEgc3luY2hyb25vdXMKIC8vIGNvbXBpbGUuIEV2ZW4g
aWYgd2UgZG8gYSBzeW5jaHJvbm91cyBjb21waWxlLCB3ZSBjYWxsIHRoZSBjYWxsYmFjayB3aXRo
IHRoZSByZXN1bHQuCiBDb21waWxhdGlvblJlc3VsdCBjb21waWxlKAogICAgIFZNJiwgQ29kZUJs
b2NrKiwgQ29tcGlsYXRpb25Nb2RlLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsCi0g
ICAgY29uc3QgT3BlcmFuZHM8SlNWYWx1ZT4mIG11c3RIYW5kbGVWYWx1ZXMsCi0gICAgUGFzc1Jl
ZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LCBXb3JrbGlzdCopOworICAgIGNvbnN0
IE9wZXJhbmRzPEpTVmFsdWU+JiBtdXN0SGFuZGxlVmFsdWVzLCBQYXNzUmVmUHRyPERlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjaz4pOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTYxNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IHRyaWdnZXJUaWVyVXBOb3coRXhlYwogICAgIH0KICAgICAKICAgICBXb3JrbGlzdDo6U3RhdGUg
d29ya2xpc3RTdGF0ZTsKLSAgICBpZiAoV29ya2xpc3QqIHdvcmtsaXN0ID0gdm0tPndvcmtsaXN0
LmdldCgpKSB7CisgICAgaWYgKFdvcmtsaXN0KiB3b3JrbGlzdCA9IGV4aXN0aW5nR2xvYmFsRlRM
V29ya2xpc3RPck51bGwoKSkgewogICAgICAgICB3b3JrbGlzdFN0YXRlID0gd29ya2xpc3QtPmNv
bXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKAogICAgICAgICAgICAgKnZtLCBDb21waWxhdGlvbktl
eShjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLCBGVExNb2RlKSk7CiAgICAgfSBlbHNlCkBA
IC0xMTY4LDcgKzExNjgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vdyhF
eGVjCiAgICAgLy8gV2UgbmVlZCB0byBjb21waWxlIHRoZSBjb2RlLgogICAgIGNvbXBpbGUoCiAg
ICAgICAgICp2bSwgY29kZUJsb2NrLT5uZXdSZXBsYWNlbWVudCgpLmdldCgpLCBGVExNb2RlLCBV
SU5UX01BWCwgT3BlcmFuZHM8SlNWYWx1ZT4oKSwKLSAgICAgICAgVG9GVExEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShjb2RlQmxvY2spLCB2bS0+ZW5zdXJlV29ya2xpc3QoKSk7
CisgICAgICAgIFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUoY29kZUJs
b2NrKSk7CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KApAQCAt
MTIwMCw4ICsxMjAwLDEwIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93
KAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCisgICAgV29ya2xpc3QqIHdvcmtsaXN0
ID0gZXhpc3RpbmdHbG9iYWxGVExXb3JrbGlzdE9yTnVsbCgpOworCiAgICAgV29ya2xpc3Q6OlN0
YXRlIHdvcmtsaXN0U3RhdGU7Ci0gICAgaWYgKFdvcmtsaXN0KiB3b3JrbGlzdCA9IHZtLT53b3Jr
bGlzdC5nZXQoKSkgeworICAgIGlmICh3b3JrbGlzdCkgewogICAgICAgICB3b3JrbGlzdFN0YXRl
ID0gd29ya2xpc3QtPmNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKAogICAgICAgICAgICAgKnZt
LCBDb21waWxhdGlvbktleShjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLCBGVExGb3JPU1JF
bnRyeU1vZGUpKTsKICAgICB9IGVsc2UKQEAgLTEyNTAsMTAgKzEyNTIsOSBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdygKICAgICBPcGVyYW5kczxKU1ZhbHVlPiBtdXN0
SGFuZGxlVmFsdWVzOwogICAgIGppdENvZGUtPnJlY29uc3RydWN0KAogICAgICAgICBleGVjLCBj
b2RlQmxvY2ssIENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCksIHN0cmVhbUluZGV4LCBtdXN0SGFu
ZGxlVmFsdWVzKTsKLSAgICBDb21waWxhdGlvblJlc3VsdCBmb3JFbnRyeVJlc3VsdCA9IERGRzo6
Y29tcGlsZSgKKyAgICBDb21waWxhdGlvblJlc3VsdCBmb3JFbnRyeVJlc3VsdCA9IGNvbXBpbGUo
CiAgICAgICAgICp2bSwgY29kZUJsb2NrLT5uZXdSZXBsYWNlbWVudCgpLmdldCgpLCBGVExGb3JP
U1JFbnRyeU1vZGUsIGJ5dGVjb2RlSW5kZXgsCi0gICAgICAgIG11c3RIYW5kbGVWYWx1ZXMsIFRv
RlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShjb2RlQmxv
Y2spLAotICAgICAgICB2bS0+ZW5zdXJlV29ya2xpc3QoKSk7CisgICAgICAgIG11c3RIYW5kbGVW
YWx1ZXMsIFRvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0
ZShjb2RlQmxvY2spKTsKICAgICAKICAgICAvLyBCdXQgd2UgYWxzbyB3YW50IHRvIHRyaWdnZXIg
YSByZXBsYWNlbWVudCBjb21waWxlLiBPZiBjb3Vyc2UsIHdlIGRvbid0IHdhbnQgdG8KICAgICAv
LyB0cmlnZ2VyIGl0IGlmIHdlIGRvbid0IG5lZWQgdG8uIE5vdGUgdGhhdCB0aGlzIGlzIGtpbmQg
b2Ygd2VpcmQgYmVjYXVzZSB3ZSBtaWdodApAQCAtMTI2NiwxMSArMTI2NywxMSBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdygKICAgICBDb21waWxhdGlvbktleSBrZXlG
b3JSZXBsYWNlbWVudChjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLCBGVExNb2RlKTsKICAg
ICBpZiAoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEdsb2JhbENvZGUKICAgICAgICAgJiYgIWNv
ZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQotICAgICAgICAmJiAoIXZtLT53b3Jr
bGlzdC5nZXQoKQotICAgICAgICAgICAgfHwgdm0tPndvcmtsaXN0LT5jb21waWxhdGlvblN0YXRl
KGtleUZvclJlcGxhY2VtZW50KSA9PSBXb3JrbGlzdDo6Tm90S25vd24pKSB7CisgICAgICAgICYm
ICghd29ya2xpc3QKKyAgICAgICAgICAgIHx8IHdvcmtsaXN0LT5jb21waWxhdGlvblN0YXRlKGtl
eUZvclJlcGxhY2VtZW50KSA9PSBXb3JrbGlzdDo6Tm90S25vd24pKSB7CiAgICAgICAgIGNvbXBp
bGUoCiAgICAgICAgICAgICAqdm0sIGNvZGVCbG9jay0+bmV3UmVwbGFjZW1lbnQoKS5nZXQoKSwg
RlRMTW9kZSwgVUlOVF9NQVgsIE9wZXJhbmRzPEpTVmFsdWU+KCksCi0gICAgICAgICAgICBUb0ZU
TERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y3JlYXRlKGNvZGVCbG9jayksIHZtLT5lbnN1
cmVXb3JrbGlzdCgpKTsKKyAgICAgICAgICAgIFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrOjpjcmVhdGUoY29kZUJsb2NrKSk7CiAgICAgfQogICAgIAogICAgIGlmIChmb3JFbnRyeVJl
c3VsdCAhPSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMTYxNTQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MiwxOCAr
MjYyLDU4IEBAIHZvaWQgV29ya2xpc3Q6OnRocmVhZEZ1bmN0aW9uKHZvaWQqIGFyZ3UKICAgICBz
dGF0aWNfY2FzdDxXb3JrbGlzdCo+KGFyZ3VtZW50KS0+cnVuVGhyZWFkKCk7CiB9CiAKLXN0YXRp
YyBXb3JrbGlzdCogdGhlR2xvYmFsV29ya2xpc3Q7CitzdGF0aWMgV29ya2xpc3QqIHRoZUdsb2Jh
bERGR1dvcmtsaXN0OwogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplR2xvYmFsV29ya2xpc3RPbmNl
KCkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVHbG9iYWxERkdXb3JrbGlzdE9uY2UoKQogewotICAg
IHRoZUdsb2JhbFdvcmtsaXN0ID0gV29ya2xpc3Q6OmNyZWF0ZShPcHRpb25zOjpudW1iZXJPZkNv
bXBpbGVyVGhyZWFkcygpKS5sZWFrUmVmKCk7CisgICAgdGhlR2xvYmFsREZHV29ya2xpc3QgPSBX
b3JrbGlzdDo6Y3JlYXRlKE9wdGlvbnM6Om51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzKCkpLmxl
YWtSZWYoKTsKIH0KIAotV29ya2xpc3QqIGdsb2JhbFdvcmtsaXN0KCkKK1dvcmtsaXN0KiBlbnN1
cmVHbG9iYWxERkdXb3JrbGlzdCgpCiB7Ci0gICAgc3RhdGljIFdURjo6VGhyZWFkaW5nT25jZSBp
bml0aWFsaXplR2xvYmFsV29ya2xpc3RLZXlPbmNlOwotICAgIGluaXRpYWxpemVHbG9iYWxXb3Jr
bGlzdEtleU9uY2UuY2FsbE9uY2UoaW5pdGlhbGl6ZUdsb2JhbFdvcmtsaXN0T25jZSk7Ci0gICAg
cmV0dXJuIHRoZUdsb2JhbFdvcmtsaXN0OworICAgIHN0YXRpYyBXVEY6OlRocmVhZGluZ09uY2Ug
aW5pdGlhbGl6ZUdsb2JhbERGR1dvcmtsaXN0S2V5T25jZTsKKyAgICBpbml0aWFsaXplR2xvYmFs
REZHV29ya2xpc3RLZXlPbmNlLmNhbGxPbmNlKGluaXRpYWxpemVHbG9iYWxERkdXb3JrbGlzdE9u
Y2UpOworICAgIHJldHVybiB0aGVHbG9iYWxERkdXb3JrbGlzdDsKK30KKworV29ya2xpc3QqIGV4
aXN0aW5nR2xvYmFsREZHV29ya2xpc3RPck51bGwoKQoreworICAgIHJldHVybiB0aGVHbG9iYWxE
RkdXb3JrbGlzdDsKK30KKworc3RhdGljIFdvcmtsaXN0KiB0aGVHbG9iYWxGVExXb3JrbGlzdDsK
Kworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdsb2JhbEZUTFdvcmtsaXN0T25jZSgpCit7CisgICAg
dGhlR2xvYmFsRlRMV29ya2xpc3QgPSBXb3JrbGlzdDo6Y3JlYXRlKE9wdGlvbnM6Om51bWJlck9m
RlRMQ29tcGlsZXJUaHJlYWRzKCkpLmxlYWtSZWYoKTsKK30KKworV29ya2xpc3QqIGVuc3VyZUds
b2JhbEZUTFdvcmtsaXN0KCkKK3sKKyAgICBzdGF0aWMgV1RGOjpUaHJlYWRpbmdPbmNlIGluaXRp
YWxpemVHbG9iYWxGVExXb3JrbGlzdEtleU9uY2U7CisgICAgaW5pdGlhbGl6ZUdsb2JhbEZUTFdv
cmtsaXN0S2V5T25jZS5jYWxsT25jZShpbml0aWFsaXplR2xvYmFsRlRMV29ya2xpc3RPbmNlKTsK
KyAgICByZXR1cm4gdGhlR2xvYmFsRlRMV29ya2xpc3Q7Cit9CisKK1dvcmtsaXN0KiBleGlzdGlu
Z0dsb2JhbEZUTFdvcmtsaXN0T3JOdWxsKCkKK3sKKyAgICByZXR1cm4gdGhlR2xvYmFsRlRMV29y
a2xpc3Q7Cit9CisKK1dvcmtsaXN0KiBlbnN1cmVHbG9iYWxXb3JrbGlzdEZvcihDb21waWxhdGlv
bk1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEludmFsaWRDb21w
aWxhdGlvbk1vZGU6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIGNhc2UgREZHTW9kZToKKyAgICAgICAgcmV0dXJuIGVuc3VyZUds
b2JhbERGR1dvcmtsaXN0KCk7CisgICAgY2FzZSBGVExNb2RlOgorICAgIGNhc2UgRlRMRm9yT1NS
RW50cnlNb2RlOgorICAgICAgICByZXR1cm4gZW5zdXJlR2xvYmFsRlRMV29ya2xpc3QoKTsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXb3JrbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuaAkocmV2aXNpb24gMTYxNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMCArOTUsMTUgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX251bWJlck9mQWN0aXZlVGhyZWFkczsKIH07CiAKLS8v
IEZvciBub3cgd2UgdXNlIGEgc2luZ2xlIGdsb2JhbCB3b3JrbGlzdC4gSXQncyBub3QgY2xlYXIg
dGhhdCB0aGlzCi0vLyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIGJ1dCBpdCBpcyB3aGF0IHdl
IGRvLCBmb3Igbm93LiBUaGlzIGZ1bmN0aW9uCi0vLyB3aWxsIGxhemlseSBjcmVhdGUgb25lIHdo
ZW4gaXQncyBuZWVkZWQuCi1Xb3JrbGlzdCogZ2xvYmFsV29ya2xpc3QoKTsKKy8vIEZvciBERkdN
b2RlIGNvbXBpbGF0aW9ucy4KK1dvcmtsaXN0KiBlbnN1cmVHbG9iYWxERkdXb3JrbGlzdCgpOwor
V29ya2xpc3QqIGV4aXN0aW5nR2xvYmFsREZHV29ya2xpc3RPck51bGwoKTsKKworLy8gRm9yIEZU
TE1vZGUgYW5kIEZUTEZvck9TUkVudHJ5TW9kZSBjb21waWxhdGlvbnMuCitXb3JrbGlzdCogZW5z
dXJlR2xvYmFsRlRMV29ya2xpc3QoKTsKK1dvcmtsaXN0KiBleGlzdGluZ0dsb2JhbEZUTFdvcmts
aXN0T3JOdWxsKCk7CisKK1dvcmtsaXN0KiBlbnN1cmVHbG9iYWxXb3JrbGlzdEZvcihDb21waWxh
dGlvbk1vZGUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTYxNTQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA3NCwxMyArMTA3NCwxNCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpCiAKICAgICAvLyBXZSBjYW5ub3QgYmUgaW4gdGhlIHByb2Nlc3Mgb2YgYXN5
bmNocm9ub3VzIGNvbXBpbGF0aW9uIGFuZCBhbHNvIGhhdmUgYW4gb3B0aW1pemVkCiAgICAgLy8g
cmVwbGFjZW1lbnQuCisgICAgREZHOjpXb3JrbGlzdCogd29ya2xpc3QgPSBERkc6OmV4aXN0aW5n
R2xvYmFsREZHV29ya2xpc3RPck51bGwoKTsKICAgICBBU1NFUlQoCi0gICAgICAgICF2bS53b3Jr
bGlzdAotICAgICAgICB8fCAhKHZtLndvcmtsaXN0LT5jb21waWxhdGlvblN0YXRlKERGRzo6Q29t
cGlsYXRpb25LZXkoY29kZUJsb2NrLCBERkc6OkRGR01vZGUpKSAhPSBERkc6OldvcmtsaXN0OjpO
b3RLbm93bgorICAgICAgICAhd29ya2xpc3QKKyAgICAgICAgfHwgISh3b3JrbGlzdC0+Y29tcGls
YXRpb25TdGF0ZShERkc6OkNvbXBpbGF0aW9uS2V5KGNvZGVCbG9jaywgREZHOjpERkdNb2RlKSkg
IT0gREZHOjpXb3JrbGlzdDo6Tm90S25vd24KICAgICAgICAgJiYgY29kZUJsb2NrLT5oYXNPcHRp
bWl6ZWRSZXBsYWNlbWVudCgpKSk7CiAKICAgICBERkc6OldvcmtsaXN0OjpTdGF0ZSB3b3JrbGlz
dFN0YXRlOwotICAgIGlmICh2bS53b3JrbGlzdCkgeworICAgIGlmICh3b3JrbGlzdCkgewogICAg
ICAgICAvLyBUaGUgY2FsbCB0byBERkc6OldvcmtsaXN0Ojpjb21wbGV0ZUFsbFJlYWR5UGxhbnNG
b3JWTSgpIHdpbGwgY29tcGxldGUgYWxsIHJlYWR5CiAgICAgICAgIC8vIChpLmUuIGNvbXBpbGVk
KSBjb2RlIGJsb2Nrcy4gQnV0IGlmIGl0IGNvbXBsZXRlcyBvdXJzLCB3ZSBhbHNvIG5lZWQgdG8g
a25vdwogICAgICAgICAvLyB3aGF0IHRoZSByZXN1bHQgd2FzIHNvIHRoYXQgd2UgZG9uJ3QgcGxv
dyBhaGVhZCBhbmQgYXR0ZW1wdCBPU1Igb3IgaW1tZWRpYXRlCkBAIC0xMDk5LDcgKzExMDAsNyBA
QCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8vIHBy
b2JhYmx5IGEgd2FzdGUgb2YgbWVtb3J5LiBPdXIgZ29hbCBoZXJlIGlzIHRvIGNvbXBsZXRlIGNv
ZGUgYmxvY2tzIGFzIHNvb24gYXMKICAgICAgICAgLy8gcG9zc2libGUgaW4gb3JkZXIgdG8gbWlu
aW1pemUgdGhlIGNoYW5jZXMgb2YgdXMgZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUgYWZ0ZXIKICAg
ICAgICAgLy8gb3B0aW1pemVkIGNvZGUgaXMgYWxyZWFkeSBhdmFpbGFibGUuCi0gICAgICAgIHdv
cmtsaXN0U3RhdGUgPSB2bS53b3JrbGlzdC0+Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oCisg
ICAgICAgIHdvcmtsaXN0U3RhdGUgPSB3b3JrbGlzdC0+Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9y
Vk0oCiAgICAgICAgICAgICB2bSwgREZHOjpDb21waWxhdGlvbktleShjb2RlQmxvY2ssIERGRzo6
REZHTW9kZSkpOwogICAgIH0gZWxzZQogICAgICAgICB3b3JrbGlzdFN0YXRlID0gREZHOjpXb3Jr
bGlzdDo6Tm90S25vd247CkBAIC0xMTg1LDggKzExODYsNyBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpCiAKICAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0
ID0gREZHOjpjb21waWxlKAogICAgICAgICAgICAgdm0sIGNvZGVCbG9jay0+bmV3UmVwbGFjZW1l
bnQoKS5nZXQoKSwgREZHOjpERkdNb2RlLCBieXRlY29kZUluZGV4LAotICAgICAgICAgICAgbXVz
dEhhbmRsZVZhbHVlcywgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0
ZSgpLAotICAgICAgICAgICAgdm0uZW5zdXJlV29ya2xpc3QoKSk7CisgICAgICAgICAgICBtdXN0
SGFuZGxlVmFsdWVzLCBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y3JlYXRl
KCkpOwogICAgICAgICAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBDb21waWxhdGlvblN1Y2Nlc3Nm
dWwpCiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTYxNTQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNyArMTQxLDggQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KGJv
b2wsIGZ0bENyYXNoZXMsIGZhbHNlKSAvKiBmb29sLXByb29mIHdheSBvZiBjaGVja2luZyB0aGF0
IHlvdSBlbmRlZCB1cCBpbiB0aGUgRlRMLiA7LSkgKi9cCiAgICAgXAogICAgIHYoYm9vbCwgZW5h
YmxlQ29uY3VycmVudEpJVCwgdHJ1ZSkgXAotICAgIHYodW5zaWduZWQsIG51bWJlck9mQ29tcGls
ZXJUaHJlYWRzLCBjb21wdXRlTnVtYmVyT2ZXb3JrZXJUaHJlYWRzKDIpIC0gMSkgXAorICAgIHYo
dW5zaWduZWQsIG51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzLCBjb21wdXRlTnVtYmVyT2ZXb3Jr
ZXJUaHJlYWRzKDIpIC0gMSkgXAorICAgIHYodW5zaWduZWQsIG51bWJlck9mRlRMQ29tcGlsZXJU
aHJlYWRzLCBjb21wdXRlTnVtYmVyT2ZXb3JrZXJUaHJlYWRzKDgpIC0gMSkgXAogICAgIFwKICAg
ICB2KGJvb2wsIGVuYWJsZVByb2ZpbGVyLCBmYWxzZSkgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2MTU0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiwx
NiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgbV90eXBl
ZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
cigpKTsKIH0KIAorI2lmIEVOQUJMRShERkdfSklUKQorc3RhdGljIHZvaWQgY2xlYW5Xb3JrbGlz
dChWTSYgdm0sIERGRzo6V29ya2xpc3QqIHdvcmtsaXN0KQoreworICAgIGlmICghd29ya2xpc3Qp
CisgICAgICAgIHJldHVybjsKKyAgICB3b3JrbGlzdC0+d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFy
ZVJlYWR5KHZtKTsKKyAgICB3b3JrbGlzdC0+cmVtb3ZlQWxsUmVhZHlQbGFuc0ZvclZNKHZtKTsK
K30KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwogVk06On5WTSgpCiB7CiAgICAgLy8gTmV2
ZXIgR0MsIGV2ZXIgYWdhaW4uCkBAIC0zMjAsMTAgKzMzMCw4IEBAIFZNOjp+Vk0oKQogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIC8vIE1ha2Ugc3VyZSBjb25jdXJyZW50IGNvbXBpbGF0aW9ucyBh
cmUgZG9uZSwgYnV0IGRvbid0IGluc3RhbGwgdGhlbSwgc2luY2UgdGhlcmUgaXMKICAgICAvLyBu
byBwb2ludCB0byBkb2luZyBzby4KLSAgICBpZiAod29ya2xpc3QpIHsKLSAgICAgICAgd29ya2xp
c3QtPndhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFkeSgqdGhpcyk7Ci0gICAgICAgIHdvcmts
aXN0LT5yZW1vdmVBbGxSZWFkeVBsYW5zRm9yVk0oKnRoaXMpOwotICAgIH0KKyAgICBjbGVhbldv
cmtsaXN0KCp0aGlzLCBERkc6OmV4aXN0aW5nR2xvYmFsREZHV29ya2xpc3RPck51bGwoKSk7Cisg
ICAgY2xlYW5Xb3JrbGlzdCgqdGhpcywgREZHOjpleGlzdGluZ0dsb2JhbEZUTFdvcmtsaXN0T3JO
dWxsKCkpOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAogICAgIC8vIENsZWFyIHRo
aXMgZmlyc3QgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IHRyaWVzIHRvIHJlbW92ZSB0aGVtc2VsdmVz
IGZyb20gaXQuCkBAIC00OTcsMTQgKzUwNSwyMSBAQCB2b2lkIFZNOjpzdG9wU2FtcGxpbmcoKQog
ICAgIGludGVycHJldGVyLT5zdG9wU2FtcGxpbmcoKTsKIH0KIAotdm9pZCBWTTo6cHJlcGFyZVRv
RGlzY2FyZENvZGUoKQotewogI2lmIEVOQUJMRShERkdfSklUKQorc3RhdGljIHZvaWQgcHJlcGFy
ZVRvRGlzY2FyZENvZGVGb3IoVk0mIHZtLCBERkc6OldvcmtsaXN0KiB3b3JrbGlzdCkKK3sKICAg
ICBpZiAoIXdvcmtsaXN0KQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgd29ya2xpc3QtPmNv
bXBsZXRlQWxsUGxhbnNGb3JWTSgqdGhpcyk7Ci0jZW5kaWYKKyAgICB3b3JrbGlzdC0+Y29tcGxl
dGVBbGxQbGFuc0ZvclZNKHZtKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwordm9p
ZCBWTTo6cHJlcGFyZVRvRGlzY2FyZENvZGUoKQoreworI2lmIEVOQUJMRShERkdfSklUKQorICAg
IHByZXBhcmVUb0Rpc2NhcmRDb2RlRm9yKCp0aGlzLCBERkc6OmV4aXN0aW5nR2xvYmFsREZHV29y
a2xpc3RPck51bGwoKSk7CisgICAgcHJlcGFyZVRvRGlzY2FyZENvZGVGb3IoKnRoaXMsIERGRzo6
ZXhpc3RpbmdHbG9iYWxGVExXb3JrbGlzdE9yTnVsbCgpKTsKKyNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKIH0KIAogdm9pZCBWTTo6ZGlzY2FyZEFsbENvZGUoKQpAQCAtNzI5LDE1ICs3NDQsNiBA
QCB2b2lkIFZNOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2CiAgICAgICAgIH0KICAg
ICB9CiB9Ci0KLURGRzo6V29ya2xpc3QqIFZNOjplbnN1cmVXb3JrbGlzdCgpCi17Ci0gICAgaWYg
KCFERkc6OmVuYWJsZUNvbmN1cnJlbnRKSVQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYg
KCF3b3JrbGlzdCkKLSAgICAgICAgd29ya2xpc3QgPSBERkc6Omdsb2JhbFdvcmtsaXN0KCk7Ci0g
ICAgcmV0dXJuIHdvcmtsaXN0LmdldCgpOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNjE1
NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw3ICs5Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIG5hbWVzcGFjZSBERkcgewogICAgIGNsYXNzIExvbmdMaXZlZFN0YXRlOwotICAgIGNsYXNz
IFdvcmtsaXN0OwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICNpZiBFTkFCTEUo
RlRMX0pJVCkKQEAgLTIwMSwxMCArMjAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFk
cygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KICAgICAgICAgCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0gICAgICAgIERGRzo6V29ya2xpc3QqIGVuc3VyZVdvcmtsaXN0KCk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8
SlNMb2NrPiBtX2FwaUxvY2s7CiAKQEAgLTIyMSw3ICsyMTYsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIE93blB0cjxERkc6OkxvbmdM
aXZlZFN0YXRlPiBkZmdTdGF0ZTsKLSAgICAgICAgUmVmUHRyPERGRzo6V29ya2xpc3Q+IHdvcmts
aXN0OwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7
Cg==
</data>
<flag name="review"
          id="244551"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>