<?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>149048</bug_id>
          
          <creation_ts>2015-09-10 16:22:59 -0700</creation_ts>
          <short_desc>JavaScriptCore should discard optimized code after some time</short_desc>
          <delta_ts>2015-09-11 10:48:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1125061</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-10 16:22:59 -0700</bug_when>
    <thetext>JavaScriptCore should discard optimized code after some time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125093</commentid>
    <comment_count>1</comment_count>
      <attachid>260974</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-10 17:43:09 -0700</bug_when>
    <thetext>Created attachment 260974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125131</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-10 19:49:16 -0700</bug_when>
    <thetext>Seems performance neutral.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Geoffrey-Garens-Mac-Pro (MacPro6,1).

VMs tested:
&quot;Base&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuild/Release/jsc (r189584)
&quot;Patch&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuildPatch/Release/jsc

Collected 4 samples per benchmark/VM, with 4 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.

                                                           Base                     Patch                                       
SunSpider:
   3d-cube                                            6.2373+-0.6998            6.0918+-0.5057          might be 1.0239x faster
   3d-morph                                           6.4552+-0.5559            6.3865+-0.2720          might be 1.0108x faster
   3d-raytrace                                        7.0774+-0.2845     ?      7.2231+-0.3546        ? might be 1.0206x slower
   access-binary-trees                                2.5340+-0.2187            2.4935+-0.1033          might be 1.0163x faster
   access-fannkuch                                    6.6491+-0.1683     ?      6.7792+-0.1741        ? might be 1.0196x slower
   access-nbody                                       3.3130+-0.1320            3.3050+-0.1610        
   access-nsieve                                      3.8568+-0.1119     ?      3.9174+-0.3181        ? might be 1.0157x slower
   bitops-3bit-bits-in-byte                           1.5070+-0.0284     ?      1.5217+-0.0832        ?
   bitops-bits-in-byte                                3.9033+-0.0874            3.8508+-0.1092          might be 1.0136x faster
   bitops-bitwise-and                                 2.3863+-0.0722     ?      2.4268+-0.0485        ? might be 1.0170x slower
   bitops-nsieve-bits                                 3.4908+-0.0414     !      3.7028+-0.0856        ! definitely 1.0607x slower
   controlflow-recursive                              2.9725+-0.1339            2.8986+-0.0561          might be 1.0255x faster
   crypto-aes                                         5.0654+-0.1232     ?      5.0667+-0.1937        ?
   crypto-md5                                         3.1998+-0.1150            3.1823+-0.2156        
   crypto-sha1                                        2.9482+-0.0862     ?      2.9938+-0.0787        ? might be 1.0154x slower
   date-format-tofte                                 10.2503+-0.1374           10.2407+-0.1787        
   date-format-xparb                                  5.9922+-0.1604     ?      6.0702+-0.3438        ? might be 1.0130x slower
   math-cordic                                        3.5610+-0.0136     ?      3.6011+-0.1595        ? might be 1.0113x slower
   math-partial-sums                                  6.1277+-0.0955            6.0555+-0.1174          might be 1.0119x faster
   math-spectral-norm                                 2.4400+-0.2233            2.3893+-0.0634          might be 1.0212x faster
   regexp-dna                                         7.5459+-0.1979     ?      7.5820+-0.1625        ?
   string-base64                                      5.2004+-0.0721     ?      5.2903+-0.2524        ? might be 1.0173x slower
   string-fasta                                       6.9998+-0.3947     ?      7.0070+-0.2213        ?
   string-tagcloud                                    9.4146+-0.1670     ?      9.5873+-0.3361        ? might be 1.0183x slower
   string-unpack-code                                21.7823+-0.4895           21.4761+-0.4036          might be 1.0143x faster
   string-validate-input                              5.2923+-0.1939            5.1880+-0.1313          might be 1.0201x faster

   &lt;arithmetic&gt;                                       5.6232+-0.0523     ?      5.6280+-0.0212        ? might be 1.0009x slower

                                                           Base                     Patch                                       
LongSpider:
   3d-cube                                          948.2208+-3.5460     !    954.2710+-1.8615        ! definitely 1.0064x slower
   3d-morph                                        1629.8265+-4.5521     ?   1635.0995+-5.5715        ?
   3d-raytrace                                      745.0506+-12.0808         731.1832+-19.6636         might be 1.0190x faster
   access-binary-trees                             1009.4177+-2.1948         1009.0797+-7.9027        
   access-fannkuch                                  356.6237+-20.6786    ?    359.5458+-6.8134        ?
   access-nbody                                     629.9277+-1.3096     ?    631.1139+-3.0141        ?
   access-nsieve                                    456.8562+-6.7241          456.4175+-5.9906        
   bitops-3bit-bits-in-byte                          41.9263+-0.7383           41.8788+-0.1513        
   bitops-bits-in-byte                               93.4480+-1.8670     ?     94.0328+-2.3434        ?
   bitops-nsieve-bits                               461.6011+-3.7435          460.2842+-5.2090        
   controlflow-recursive                            504.9008+-4.3465          503.0662+-2.5977        
   crypto-aes                                       658.4852+-6.1292     !    684.1891+-7.0355        ! definitely 1.0390x slower
   crypto-md5                                       540.2925+-1.1328     ?    552.6625+-47.9564       ? might be 1.0229x slower
   crypto-sha1                                      760.6544+-11.9878    ?    764.1653+-2.0718        ?
   date-format-tofte                                770.2838+-21.2322    ?    806.0181+-42.6851       ? might be 1.0464x slower
   date-format-xparb                                849.3405+-24.4395         845.8824+-22.7552       
   hash-map                                         192.5185+-14.1186         188.5817+-4.5427          might be 1.0209x faster
   math-cordic                                      564.9545+-3.1905     ?    565.1143+-2.6668        ?
   math-partial-sums                                637.1646+-3.6162          632.9369+-2.8693        
   math-spectral-norm                               601.4333+-3.3690     ?    601.8270+-4.6640        ?
   string-base64                                    421.3780+-2.5806          420.9502+-3.0048        
   string-fasta                                     426.9791+-6.4953     ?    431.3574+-4.6062        ? might be 1.0103x slower
   string-tagcloud                                  211.5512+-7.9018          211.2122+-3.9881        

   &lt;geometric&gt;                                      471.2531+-3.7056     ?    473.0172+-2.3338        ? might be 1.0037x slower

                                                           Base                     Patch                                       
V8Spider:
   crypto                                            58.2097+-0.6847           58.0803+-0.5660        
   deltablue                                         77.3356+-1.3123           76.9157+-1.9631        
   earley-boyer                                      48.6772+-0.5288           48.5846+-0.9942        
   raytrace                                          34.3395+-2.9003           33.5005+-0.7629          might be 1.0250x faster
   regexp                                            77.2864+-0.2377     ?     77.8897+-1.2145        ?
   richards                                          66.8525+-2.7246           65.7289+-0.7452          might be 1.0171x faster
   splay                                             41.3040+-2.4085     ?     42.1997+-5.3736        ? might be 1.0217x slower

   &lt;geometric&gt;                                       55.4076+-0.7865           55.2283+-1.0001          might be 1.0032x faster

                                                           Base                     Patch                                       
Octane:
   encrypt                                           0.23409+-0.00612          0.23326+-0.00528       
   decrypt                                           3.95816+-0.13177    ?     4.12333+-0.27060       ? might be 1.0417x slower
   deltablue                                x2       0.19946+-0.00486    ?     0.20553+-0.01411       ? might be 1.0305x slower
   earley                                            0.36717+-0.00167    !     0.37233+-0.00259       ! definitely 1.0141x slower
   boyer                                             5.48428+-0.12144    ?     5.56320+-0.01901       ? might be 1.0144x slower
   navier-stokes                            x2       5.47994+-0.01630          5.46790+-0.00738       
   raytrace                                 x2       1.26255+-0.08325    ?     1.33305+-0.12293       ? might be 1.0558x slower
   richards                                 x2       0.12981+-0.00145    ?     0.12984+-0.00070       ?
   splay                                    x2       0.37700+-0.00468          0.37496+-0.00241       
   regexp                                   x2      28.75323+-0.27899    ?    28.86369+-0.31549       ?
   pdfjs                                    x2      44.65081+-0.34340    ?    44.82206+-0.09845       ?
   mandreel                                 x2      51.61221+-0.22120         51.50935+-0.36027       
   gbemu                                    x2      50.04648+-4.62259         48.81325+-4.94189         might be 1.0253x faster
   closure                                           0.76864+-0.00280          0.76804+-0.00432       
   jquery                                            9.64820+-0.10518          9.64324+-0.09229       
   box2d                                    x2      13.48822+-0.20810         13.39042+-0.05116       
   zlib                                     x2     431.98319+-32.10724   ?   444.29810+-8.06167       ? might be 1.0285x slower
   typescript                               x2     896.21698+-12.58872       891.41260+-17.48438      

   &lt;geometric&gt;                                       6.95822+-0.13383    ?     7.00655+-0.03539       ? might be 1.0069x slower

                                                           Base                     Patch                                       
Kraken:
   ai-astar                                          292.406+-5.995      ?     296.105+-7.487         ? might be 1.0127x slower
   audio-beat-detection                               63.339+-2.650      ?      63.389+-0.878         ?
   audio-dft                                         112.648+-0.466            112.370+-1.076         
   audio-fft                                          42.341+-1.827             41.859+-0.479           might be 1.0115x faster
   audio-oscillator                                   74.727+-0.311      ?      74.835+-0.461         ?
   imaging-darkroom                                   73.143+-0.605      ?      73.244+-0.466         ?
   imaging-desaturate                                 65.622+-0.597      ?      66.083+-0.246         ?
   imaging-gaussian-blur                             110.054+-1.044      ?     110.892+-0.787         ?
   json-parse-financial                               48.437+-0.348      ?      48.912+-1.294         ?
   json-stringify-tinderbox                           29.625+-0.609      ?      29.689+-0.435         ?
   stanford-crypto-aes                                49.640+-2.558             48.840+-0.351           might be 1.0164x faster
   stanford-crypto-ccm                                46.026+-2.410      ?      47.207+-2.503         ? might be 1.0257x slower
   stanford-crypto-pbkdf2                            109.024+-8.086            106.833+-0.944           might be 1.0205x faster
   stanford-crypto-sha256-iterative                   43.832+-1.966             43.548+-0.650         

   &lt;arithmetic&gt;                                       82.919+-1.092      ?      83.129+-0.352         ? might be 1.0025x slower

                                                           Base                     Patch                                       
JSRegress:
   abc-forward-loop-equal                            48.1035+-0.5561     ?     48.2924+-1.0393        ?
   abc-postfix-backward-loop                         48.0013+-0.8086           47.8587+-0.6556        
   abc-simple-backward-loop                          47.6072+-0.8286     ?     47.7894+-0.3806        ?
   abc-simple-forward-loop                           47.5130+-0.3448     ?     47.9283+-0.7418        ?
   abc-skippy-loop                                   33.0482+-0.2891           32.8343+-0.7428        
   abs-boolean                                        2.9927+-0.1647     ?      2.9993+-0.1007        ?
   adapt-to-double-divide                            16.7838+-0.3599           16.6985+-0.3171        
   aliased-arguments-getbyval                         1.4738+-0.1747     ?      1.4794+-0.1304        ?
   allocate-big-object                                2.6908+-0.0736     ?      2.7150+-0.0954        ?
   arguments-named-and-reflective                    11.3193+-0.2797           11.0587+-0.2759          might be 1.0236x faster
   arguments-out-of-bounds                           12.1168+-0.2314     ?     12.6416+-0.5029        ? might be 1.0433x slower
   arguments-strict-mode                              9.7892+-0.3217     ?      9.8463+-0.5311        ?
   arguments                                          8.8338+-0.3951            8.8176+-0.4749        
   arity-mismatch-inlining                            1.1785+-0.0632            1.1765+-0.0791        
   array-access-polymorphic-structure                 6.7513+-0.3880            6.6359+-0.2965          might be 1.0174x faster
   array-nonarray-polymorhpic-access                 32.2955+-1.1367           32.2368+-1.8580        
   array-prototype-every                             90.6672+-1.1731     ^     87.3447+-0.7376        ^ definitely 1.0380x faster
   array-prototype-forEach                           87.8310+-0.6259     ^     85.7389+-0.9604        ^ definitely 1.0244x faster
   array-prototype-map                               94.6243+-3.8122     ?     95.2415+-3.5741        ?
   array-prototype-reduce                            84.8847+-0.9273     ^     83.1986+-0.4480        ^ definitely 1.0203x faster
   array-prototype-reduceRight                       85.2482+-3.5397           83.5174+-1.7338          might be 1.0207x faster
   array-prototype-some                              90.0785+-0.9885     ^     87.6427+-0.8578        ^ definitely 1.0278x faster
   array-splice-contiguous                           27.2339+-0.7555     ?     27.7100+-1.0436        ? might be 1.0175x slower
   array-with-double-add                              4.5016+-0.1538            4.4897+-0.0679        
   array-with-double-increment                        3.5605+-0.1503     ?      3.6738+-0.2240        ? might be 1.0318x slower
   array-with-double-mul-add                          5.3488+-0.0276     ?      5.4230+-0.1689        ? might be 1.0139x slower
   array-with-double-sum                              3.6185+-0.0872     ?      3.6650+-0.2377        ? might be 1.0129x slower
   array-with-int32-add-sub                           7.5129+-0.2097            7.3766+-0.1579          might be 1.0185x faster
   array-with-int32-or-double-sum                     3.7282+-0.0855            3.7060+-0.0880        
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     32.4965+-0.7169           32.3425+-0.4192        
   ArrayBuffer-DataView-alloc-long-lived             13.8568+-0.6737           13.8319+-0.1462        
   ArrayBuffer-Int32Array-byteOffset                  4.1959+-0.2235     ?      4.2175+-0.1405        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     39.1814+-0.7421     ?     40.2591+-0.3356        ? might be 1.0275x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     22.8585+-0.8327     ?     22.9091+-0.3903        ?
   ArrayBuffer-Int8Array-alloc-long-lived            13.7353+-0.3880     ?     13.8456+-0.6961        ?
   ArrayBuffer-Int8Array-alloc                       10.6022+-0.6779     ?     10.8674+-0.2719        ? might be 1.0250x slower
   arrowfunction-call                                12.2315+-0.3184     ?     12.3964+-0.1959        ? might be 1.0135x slower
   asmjs_bool_bug                                     8.3838+-0.1533     ?      8.4919+-0.2304        ? might be 1.0129x slower
   assign-custom-setter-polymorphic                   3.2315+-0.2413     ?      3.3799+-0.1348        ? might be 1.0459x slower
   assign-custom-setter                               4.4169+-0.2202     !      4.7983+-0.1085        ! definitely 1.0864x slower
   basic-set                                          9.8530+-0.3592     ?      9.9135+-0.4781        ?
   big-int-mul                                        4.2476+-0.0409     ?      4.3080+-0.2400        ? might be 1.0142x slower
   boolean-test                                       3.4380+-0.0488     ?      3.4860+-0.1120        ? might be 1.0140x slower
   branch-fold                                        4.2503+-0.1265            4.2258+-0.1025        
   branch-on-string-as-boolean                       18.8042+-0.2395           18.5748+-0.3348          might be 1.0123x faster
   by-val-generic                                     2.9458+-0.1551            2.8915+-0.1721          might be 1.0188x faster
   call-spread-apply                                 31.0847+-0.6128     ?     31.1466+-0.6160        ?
   call-spread-call                                  25.4944+-0.3940     ?     25.6371+-0.7728        ?
   captured-assignments                               0.6633+-0.0708     ?      0.6989+-0.0173        ? might be 1.0536x slower
   cast-int-to-double                                 5.9068+-0.1977     ?      6.1335+-0.4189        ? might be 1.0384x slower
   cell-argument                                      7.4530+-0.2797            7.1038+-0.1011          might be 1.0492x faster
   cfg-simplify                                       3.2186+-0.2275            3.1664+-0.0892          might be 1.0165x faster
   chain-getter-access                                8.5395+-0.7279            8.5180+-0.1890        
   cmpeq-obj-to-obj-other                            11.3019+-0.3684           11.1620+-0.2548          might be 1.0125x faster
   constant-test                                      5.4701+-0.2929     ?      5.5930+-0.3335        ? might be 1.0225x slower
   create-lots-of-functions                          11.5002+-0.4423           11.2812+-0.4050          might be 1.0194x faster
   cse-new-array-buffer                               2.6204+-0.0989     ?      2.6536+-0.1842        ? might be 1.0127x slower
   cse-new-array                                      2.7009+-0.1032     ?      2.7596+-0.0704        ? might be 1.0217x slower
   DataView-custom-properties                        38.5078+-1.1626     ?     38.5394+-1.7292        ?
   delay-tear-off-arguments-strictmode               14.3003+-0.4223     ?     14.5397+-0.3416        ? might be 1.0167x slower
   deltablue-varargs                                223.1760+-4.3511     ?    234.9409+-16.3981       ? might be 1.0527x slower
   destructuring-arguments                          187.9759+-1.2313     ?    190.3360+-2.2611        ? might be 1.0126x slower
   destructuring-parameters-overridden-by-function   
                                                      0.7146+-0.0277            0.6899+-0.0176          might be 1.0358x faster
   destructuring-swap                                 5.7375+-0.1178            5.7073+-0.4247        
   direct-arguments-getbyval                          1.4429+-0.1372            1.4395+-0.0783        
   div-boolean-double                                 5.7106+-0.2121     ?      5.7683+-0.2591        ? might be 1.0101x slower
   div-boolean                                        8.5978+-0.3652            8.4628+-0.3403          might be 1.0160x faster
   double-get-by-val-out-of-bounds                    4.8203+-0.0944     ?      4.8655+-0.1121        ?
   double-pollution-getbyval                          9.4998+-0.2149            9.3795+-0.0371          might be 1.0128x faster
   double-pollution-putbyoffset                       4.5532+-0.2151     ?      4.6624+-0.2673        ? might be 1.0240x slower
   double-real-use                                   30.7264+-0.7680     ?     31.3766+-1.1779        ? might be 1.0212x slower
   double-to-int32-typed-array-no-inline              2.7514+-0.0644     ?      2.7988+-0.0404        ? might be 1.0172x slower
   double-to-int32-typed-array                        2.4935+-0.0339     ?      2.5008+-0.0269        ?
   double-to-uint32-typed-array-no-inline             2.8384+-0.0736            2.8302+-0.1239        
   double-to-uint32-typed-array                       2.5436+-0.2247            2.5090+-0.0900          might be 1.0138x faster
   elidable-new-object-dag                           40.2050+-0.7183           39.6685+-0.8250          might be 1.0135x faster
   elidable-new-object-roflcopter                    41.5924+-2.3977           40.3585+-0.2329          might be 1.0306x faster
   elidable-new-object-then-call                     32.4847+-0.7504     ?     32.6133+-1.0561        ?
   elidable-new-object-tree                          44.1786+-1.5786     ?     44.6307+-1.3642        ? might be 1.0102x slower
   empty-string-plus-int                              5.7098+-0.2421            5.4800+-0.0760          might be 1.0419x faster
   emscripten-cube2hash                              40.6042+-0.7137     ?     40.8475+-0.3289        ?
   exit-length-on-plain-object                       14.6960+-1.0210           14.4001+-0.6074          might be 1.0205x faster
   external-arguments-getbyval                        1.6146+-0.1492     ?      1.6296+-0.1953        ?
   external-arguments-putbyval                        2.5869+-0.1000            2.5798+-0.0944        
   fixed-typed-array-storage-var-index                1.5748+-0.0273     ?      1.5806+-0.0486        ?
   fixed-typed-array-storage                          1.2333+-0.0361            1.2120+-0.0101          might be 1.0176x faster
   Float32Array-matrix-mult                           5.0604+-0.1371     ?      5.1265+-0.1525        ? might be 1.0131x slower
   Float32Array-to-Float64Array-set                  55.5769+-0.4961     !     60.3507+-3.0429        ! definitely 1.0859x slower
   Float64Array-alloc-long-lived                     87.2200+-1.3251     ?     88.1776+-0.8644        ? might be 1.0110x slower
   Float64Array-to-Int16Array-set                    71.9532+-0.6098     !     75.4155+-1.0384        ! definitely 1.0481x slower
   fold-double-to-int                                15.0355+-0.6995           14.8770+-0.1703          might be 1.0107x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.0189+-0.1284            9.7164+-0.4659          might be 1.0311x faster
   fold-get-by-id-to-multi-get-by-offset              8.3186+-0.0879     !      8.6828+-0.2584        ! definitely 1.0438x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.0441+-0.2120            7.7456+-0.8229          might be 1.0385x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      7.9437+-0.4780     ?      8.0733+-0.0665        ? might be 1.0163x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.6274+-0.2882     ?      8.7487+-0.1560        ? might be 1.0141x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.2975+-0.0354            6.2590+-0.0789        
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     11.5766+-1.0997     ?     12.2416+-0.3844        ? might be 1.0574x slower
   fold-put-by-id-to-multi-put-by-offset              9.2458+-0.1445            9.1170+-0.0616          might be 1.0141x faster
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.2343+-0.7437           10.1255+-0.6364          might be 1.0107x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.5015+-0.2209           10.3148+-0.1339          might be 1.0181x faster
   fold-put-structure                                 5.6913+-0.0697            5.6516+-0.1104        
   for-of-iterate-array-entries                      12.8765+-0.5243     ?     13.1497+-0.3388        ? might be 1.0212x slower
   for-of-iterate-array-keys                          4.1752+-0.3003            4.0663+-0.0699          might be 1.0268x faster
   for-of-iterate-array-values                        4.2271+-0.2269            4.1605+-0.2083          might be 1.0160x faster
   fround                                            17.3673+-0.3637           17.0823+-0.5189          might be 1.0167x faster
   ftl-library-inlining-dataview                     68.0703+-1.2451           67.6883+-0.3754        
   ftl-library-inlining                              87.8853+-10.6803          87.7934+-9.9843        
   function-call                                     12.5859+-0.6688     ?     12.7795+-0.3634        ? might be 1.0154x slower
   function-dot-apply                                 2.6051+-0.0469            2.5950+-0.0448        
   function-test                                      3.2193+-0.0786     ?      3.2261+-0.1740        ?
   function-with-eval                               112.6788+-3.5921     ?    113.9485+-5.9971        ? might be 1.0113x slower
   gcse-poly-get-less-obvious                        22.9280+-3.0578     ?     23.6687+-4.1118        ? might be 1.0323x slower
   gcse-poly-get                                     25.4863+-1.7762           25.1368+-1.2359          might be 1.0139x faster
   gcse                                               4.7037+-0.0821     ?      4.7100+-0.0861        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0352+-0.1894            2.9593+-0.0199          might be 1.0257x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.5380+-0.2632     ?      6.6253+-0.2399        ? might be 1.0134x slower
   get-by-id-chain-from-try-block                     6.0472+-0.1046     ?      6.0513+-0.0810        ?
   get-by-id-check-structure-elimination              5.4367+-0.0847     ?      5.4952+-0.1171        ? might be 1.0108x slower
   get-by-id-proto-or-self                           19.8561+-3.9997           18.1194+-2.3369          might be 1.0958x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.5529+-0.2508     ?      3.6356+-0.1542        ? might be 1.0233x slower
   get-by-id-self-or-proto                           16.8647+-0.5897     ?     17.5812+-0.3535        ? might be 1.0425x slower
   get-by-val-out-of-bounds                           4.7416+-0.1714     ?      4.7797+-0.1559        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.1897+-0.1960            3.1546+-0.0187          might be 1.0111x faster
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      7.6027+-0.3610            7.5794+-0.3607        
   get-by-val-with-string-chain-from-try-block   
                                                      6.1221+-0.1064     ?      6.1418+-0.1981        ?
   get-by-val-with-string-check-structure-elimination   
                                                      6.6045+-0.1906            6.5778+-0.4556        
   get-by-val-with-string-proto-or-self              16.8469+-0.9328     ?     16.9870+-0.6625        ?
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.9755+-0.0743            3.9297+-0.0649          might be 1.0116x faster
   get-by-val-with-string-self-or-proto              18.6971+-3.3760           18.6467+-4.7651        
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      4.0092+-0.1205     ?      4.0128+-0.1225        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     14.9407+-0.5033           14.6888+-0.2942          might be 1.0172x faster
   get-by-val-with-symbol-chain-from-try-block   
                                                      6.2743+-0.3345            6.1370+-0.0784          might be 1.0224x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     13.8293+-0.2424     ?     14.0618+-0.6038        ? might be 1.0168x slower
   get-by-val-with-symbol-proto-or-self              17.6307+-1.8650           16.6982+-1.0487          might be 1.0558x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      4.6359+-0.0676            4.6089+-0.0569        
   get-by-val-with-symbol-self-or-proto              18.9074+-3.4554     ?     19.7935+-5.2944        ? might be 1.0469x slower
   get_callee_monomorphic                             2.7129+-0.1072            2.6530+-0.1890          might be 1.0226x faster
   get_callee_polymorphic                             3.8300+-0.2907            3.7509+-0.0909          might be 1.0211x faster
   getter-no-activation                               5.4818+-0.1841     ?      5.5209+-0.1138        ?
   getter-prototype                                  12.4570+-0.3733     ?     12.5677+-0.2328        ?
   getter-richards                                  105.8670+-6.9694     ?    109.2382+-1.4403        ? might be 1.0318x slower
   getter                                             5.8940+-0.0644     ?      5.9675+-0.1726        ? might be 1.0125x slower
   global-object-access-with-mutating-structure   
                                                      6.7225+-0.5886     ?      6.7460+-0.5548        ?
   global-var-const-infer-fire-from-opt               1.0620+-0.1053            1.0029+-0.0591          might be 1.0589x faster
   global-var-const-infer                             0.9444+-0.1326     ?      0.9679+-0.2018        ? might be 1.0249x slower
   hard-overflow-check-equal                         52.9185+-0.5200           52.8524+-0.7410        
   hard-overflow-check                               52.6165+-0.4986     ?     52.8942+-0.3932        ?
   HashMap-put-get-iterate-keys                      29.5360+-0.4139           29.5180+-0.2162        
   HashMap-put-get-iterate                           29.5767+-0.4430     ?     29.6217+-0.6966        ?
   HashMap-string-put-get-iterate                    28.2620+-0.5061     ?     28.8810+-1.0779        ? might be 1.0219x slower
   hoist-make-rope                                    9.8349+-0.9167            9.7319+-0.4388          might be 1.0106x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.7693+-0.0739            5.6109+-0.3129          might be 1.0282x faster
   hoist-poly-check-structure                         3.9210+-0.1325     ?      3.9910+-0.0457        ? might be 1.0179x slower
   imul-double-only                                   6.7025+-0.0828     ?      6.8994+-0.3171        ? might be 1.0294x slower
   imul-int-only                                      7.4933+-0.4571            7.3098+-0.3317          might be 1.0251x faster
   imul-mixed                                         6.3622+-0.7186     ?      6.7463+-0.2592        ? might be 1.0604x slower
   in-four-cases                                     22.2242+-0.7362     ?     22.4494+-0.6771        ? might be 1.0101x slower
   in-one-case-false                                 12.1819+-0.4986     ?     12.1830+-0.1656        ?
   in-one-case-true                                  12.0107+-0.1792     ?     12.3430+-0.4526        ? might be 1.0277x slower
   in-two-cases                                      12.9393+-0.6616           12.6743+-0.3044          might be 1.0209x faster
   indexed-properties-in-objects                      3.2122+-0.1168     !      3.4222+-0.0666        ! definitely 1.0654x slower
   infer-closure-const-then-mov-no-inline             4.4662+-0.1405     ?      4.4791+-0.1120        ?
   infer-closure-const-then-mov                      18.3288+-0.6653           18.0468+-0.3235          might be 1.0156x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.3832+-0.5111     ?     13.4852+-0.3499        ?
   infer-closure-const-then-put-to-scope             24.3826+-0.7556     ?     24.7231+-0.7332        ? might be 1.0140x slower
   infer-closure-const-then-reenter-no-inline   
                                                     59.7552+-0.6142     ?     59.8978+-0.8822        ?
   infer-closure-const-then-reenter                  24.3978+-1.1732     ?     24.9388+-0.7626        ? might be 1.0222x slower
   infer-constant-global-property                     3.9473+-0.1238            3.8723+-0.0588          might be 1.0194x faster
   infer-constant-property                            3.0565+-0.1574            3.0112+-0.0925          might be 1.0150x faster
   infer-one-time-closure-ten-vars                    9.9090+-0.4527            9.5013+-0.3505          might be 1.0429x faster
   infer-one-time-closure-two-vars                    9.1288+-0.1974            9.0475+-0.4048        
   infer-one-time-closure                             8.9611+-0.0701     ?      9.1169+-1.0928        ? might be 1.0174x slower
   infer-one-time-deep-closure                       15.7145+-0.3856           15.5960+-0.1721        
   inline-arguments-access                            4.2329+-0.0805     ?      4.2457+-0.1745        ?
   inline-arguments-aliased-access                    4.3180+-0.2005            4.2280+-0.2336          might be 1.0213x faster
   inline-arguments-local-escape                      4.3953+-0.4073            4.2136+-0.0859          might be 1.0431x faster
   inline-get-scoped-var                              5.4865+-0.0399     ?      5.5066+-0.0951        ?
   inlined-put-by-id-transition                      12.0798+-0.3691           12.0021+-0.3956        
   inlined-put-by-val-with-string-transition   
                                                     83.7814+-2.2002           82.7788+-3.2583          might be 1.0121x faster
   inlined-put-by-val-with-symbol-transition   
                                                     78.9785+-1.0235     ?     80.2457+-2.3106        ? might be 1.0160x slower
   int-or-other-abs-then-get-by-val                   5.4112+-0.2169     ?      5.4224+-0.3706        ?
   int-or-other-abs-zero-then-get-by-val             17.8592+-0.7648     ?     17.8660+-0.1983        ?
   int-or-other-add-then-get-by-val                   4.7850+-0.1026     ?      4.9000+-0.1965        ? might be 1.0240x slower
   int-or-other-add                                   5.9617+-0.3165            5.8693+-0.1850          might be 1.0157x faster
   int-or-other-div-then-get-by-val                   4.5030+-0.1448     ?      4.6926+-0.2731        ? might be 1.0421x slower
   int-or-other-max-then-get-by-val                   4.7780+-0.1563            4.7155+-0.0684          might be 1.0132x faster
   int-or-other-min-then-get-by-val                   4.6543+-0.0917            4.5980+-0.0488          might be 1.0122x faster
   int-or-other-mod-then-get-by-val                   4.2036+-0.0928            4.0475+-0.0728          might be 1.0386x faster
   int-or-other-mul-then-get-by-val                   4.3290+-0.0631            4.3159+-0.0306        
   int-or-other-neg-then-get-by-val                   4.7644+-0.0480            4.7549+-0.1058        
   int-or-other-neg-zero-then-get-by-val             17.7068+-0.6359     ?     17.7236+-0.2004        ?
   int-or-other-sub-then-get-by-val                   5.0949+-0.5794            5.0521+-0.2516        
   int-or-other-sub                                   4.1118+-0.1812            4.0336+-0.0845          might be 1.0194x faster
   int-overflow-local                                 5.0202+-0.1580            4.9775+-0.1859        
   Int16Array-alloc-long-lived                       53.7579+-1.1505     ?     54.5819+-0.7837        ? might be 1.0153x slower
   Int16Array-bubble-sort-with-byteLength            21.4916+-1.7347     ?     23.4140+-0.9621        ? might be 1.0895x slower
   Int16Array-bubble-sort                            21.2446+-0.4869     !     23.8806+-0.4579        ! definitely 1.1241x slower
   Int16Array-load-int-mul                            1.8278+-0.0364     ?      1.8324+-0.0484        ?
   Int16Array-to-Int32Array-set                      56.6932+-0.3758     ^     53.6176+-0.6763        ^ definitely 1.0574x faster
   Int32Array-alloc-large                            20.9693+-0.3988     ?     21.1763+-1.3286        ?
   Int32Array-alloc-long-lived                       65.6148+-2.1784     ?     66.2059+-2.1091        ?
   Int32Array-alloc                                   2.8509+-0.3403            2.7319+-0.1152          might be 1.0435x faster
   Int32Array-Int8Array-view-alloc                    6.8150+-0.4187     ?      6.8752+-0.3104        ?
   int52-spill                                        5.8445+-0.0795     ?      5.9636+-0.1852        ? might be 1.0204x slower
   Int8Array-alloc-long-lived                        48.0988+-1.1143           48.0609+-0.3585        
   Int8Array-load-with-byteLength                     3.7614+-0.1651            3.7407+-0.1625        
   Int8Array-load                                     3.7318+-0.0947            3.7098+-0.0998        
   integer-divide                                    12.3812+-0.1302     ?     12.3933+-0.0598        ?
   integer-modulo                                     2.3895+-0.1456     ?      2.5073+-0.5597        ? might be 1.0493x slower
   is-boolean-fold-tricky                             4.6791+-0.1768            4.5599+-0.1430          might be 1.0262x faster
   is-boolean-fold                                    3.1417+-0.0568            3.1248+-0.0739        
   is-function-fold-tricky-internal-function   
                                                     12.3511+-0.1122     !     12.7722+-0.2373        ! definitely 1.0341x slower
   is-function-fold-tricky                            4.7083+-0.1464            4.6413+-0.1993          might be 1.0144x faster
   is-function-fold                                   3.2090+-0.2112     ?      3.2590+-0.0977        ? might be 1.0156x slower
   is-number-fold-tricky                              4.5206+-0.0877            4.4832+-0.1153        
   is-number-fold                                     3.0812+-0.0086     ?      3.1103+-0.1050        ?
   is-object-or-null-fold-functions                   3.2311+-0.1815            3.2076+-0.0344        
   is-object-or-null-fold-less-tricky                 4.7050+-0.2780            4.7010+-0.1387        
   is-object-or-null-fold-tricky                      6.6096+-0.3387            6.5068+-0.3227          might be 1.0158x faster
   is-object-or-null-fold                             3.2028+-0.2336     ?      3.2035+-0.1728        ?
   is-object-or-null-trickier-function                4.9253+-0.4361            4.6915+-0.0762          might be 1.0498x faster
   is-object-or-null-trickier-internal-function   
                                                     12.7163+-0.4285     ?     12.8639+-0.1060        ? might be 1.0116x slower
   is-object-or-null-tricky-function                  4.6570+-0.0428     ?      4.6932+-0.1739        ?
   is-object-or-null-tricky-internal-function   
                                                      9.7974+-0.0980     ?      9.9031+-0.3577        ? might be 1.0108x slower
   is-string-fold-tricky                              4.5418+-0.0991            4.5173+-0.0994        
   is-string-fold                                     3.1372+-0.0893     ?      3.1390+-0.1655        ?
   is-undefined-fold-tricky                           3.7626+-0.1408     ?      3.8765+-0.1306        ? might be 1.0303x slower
   is-undefined-fold                                  3.1303+-0.1176     ?      3.1395+-0.0810        ?
   JSONP-negative-0                                   0.4467+-0.1607            0.4174+-0.0156          might be 1.0703x faster
   large-int-captured                                 4.9310+-0.1557            4.7653+-0.1667          might be 1.0348x faster
   large-int-neg                                     16.0753+-0.2672     ?     16.6140+-0.8417        ? might be 1.0335x slower
   large-int                                         14.3806+-0.6807     ?     14.6409+-0.8332        ? might be 1.0181x slower
   load-varargs-elimination                          25.7891+-1.6299           25.3300+-1.4658          might be 1.0181x faster
   logical-not-weird-types                            3.9338+-0.3594            3.8328+-0.1446          might be 1.0263x faster
   logical-not                                        5.0678+-0.1032     ?      5.1293+-0.2495        ? might be 1.0121x slower
   lots-of-fields                                    12.2301+-0.5804           11.7603+-0.5923          might be 1.0399x faster
   make-indexed-storage                               3.2770+-0.3707     ?      3.3136+-0.3320        ? might be 1.0112x slower
   make-rope-cse                                      3.7972+-0.1017            3.7879+-0.0661        
   marsaglia-larger-ints                             40.6863+-0.9590           40.3148+-1.7619        
   marsaglia-osr-entry                               22.4962+-0.6040           22.0637+-0.0399          might be 1.0196x faster
   math-with-out-of-bounds-array-values              24.9387+-0.1729     !     25.9249+-0.3306        ! definitely 1.0395x slower
   max-boolean                                        2.7365+-0.0751     ?      2.7622+-0.0953        ?
   method-on-number                                  18.3220+-0.6449     ?     18.5464+-0.8985        ? might be 1.0122x slower
   min-boolean                                        2.8106+-0.0773     ?      2.8146+-0.0643        ?
   minus-boolean-double                               3.4840+-0.0728            3.4763+-0.0489        
   minus-boolean                                      2.6152+-0.0850     ?      2.6163+-0.0106        ?
   misc-strict-eq                                    33.7088+-1.8749           33.3093+-1.6502          might be 1.0120x faster
   mod-boolean-double                                11.5528+-0.2004     ?     11.5768+-0.1514        ?
   mod-boolean                                        8.4190+-0.3070            8.3293+-0.2680          might be 1.0108x faster
   mul-boolean-double                                 4.0167+-0.0893     ?      4.0730+-0.1955        ? might be 1.0140x slower
   mul-boolean                                        3.1799+-0.1238     ?      3.2496+-0.1714        ? might be 1.0219x slower
   neg-boolean                                        3.5299+-0.1829            3.4731+-0.0845          might be 1.0163x faster
   negative-zero-divide                               0.5255+-0.0303     ?      0.5269+-0.0240        ?
   negative-zero-modulo                               0.5057+-0.0287     ?      0.5204+-0.0178        ? might be 1.0291x slower
   negative-zero-negate                               0.5245+-0.0199     ?      0.5298+-0.0072        ? might be 1.0100x slower
   nested-function-parsing                           52.9336+-0.6886     !     54.5853+-0.5575        ! definitely 1.0312x slower
   new-array-buffer-dead                            107.6801+-1.3331          107.3778+-0.5421        
   new-array-buffer-push                              6.8890+-0.3760     ?      6.9991+-0.1106        ? might be 1.0160x slower
   new-array-dead                                    15.8400+-1.9725     ?     16.7477+-4.1757        ? might be 1.0573x slower
   new-array-push                                     4.1543+-0.0463            4.1073+-0.1780          might be 1.0114x faster
   no-inline-constructor                             38.1882+-2.8637           37.9509+-0.8652        
   number-test                                        3.4013+-0.0479     ?      3.4438+-0.0406        ? might be 1.0125x slower
   object-closure-call                                6.3429+-0.1600     ?      6.3528+-0.1952        ?
   object-get-own-property-symbols-on-large-array   
                                                      4.0447+-0.2725     ?      4.2041+-0.2472        ? might be 1.0394x slower
   object-test                                        3.2077+-0.2401     ?      3.2257+-0.1948        ?
   obvious-sink-pathology-taken                     124.3295+-1.0017     ?    124.6260+-0.9326        ?
   obvious-sink-pathology                           117.5911+-1.0863     ?    117.7963+-0.6207        ?
   obviously-elidable-new-object                     28.3379+-0.2113     !     29.4803+-0.7092        ! definitely 1.0403x slower
   plus-boolean-arith                                 2.8150+-0.1031     ?      2.8298+-0.0754        ?
   plus-boolean-double                                3.5417+-0.1951     ?      3.5540+-0.1459        ?
   plus-boolean                                       2.6378+-0.0951     ?      2.6926+-0.1230        ? might be 1.0208x slower
   poly-chain-access-different-prototypes-simple   
                                                      4.3190+-0.1118     ?      4.3412+-0.2244        ?
   poly-chain-access-different-prototypes             4.3748+-0.0752            4.3513+-0.0730        
   poly-chain-access-simpler                          4.3500+-0.1794            4.3227+-0.1853        
   poly-chain-access                                  4.3268+-0.0655            4.3008+-0.0254        
   poly-stricteq                                     65.0734+-0.3617     ?     65.4987+-3.6282        ?
   polymorphic-array-call                             1.6907+-0.0373     ?      1.7180+-0.1425        ? might be 1.0161x slower
   polymorphic-get-by-id                              3.4050+-0.0604     ?      3.5034+-0.1792        ? might be 1.0289x slower
   polymorphic-put-by-id                             30.6072+-4.1435           28.1839+-2.0028          might be 1.0860x faster
   polymorphic-put-by-val-with-string                31.8353+-4.0195           30.9077+-4.8101          might be 1.0300x faster
   polymorphic-put-by-val-with-symbol                30.4117+-3.9061           28.5417+-0.3851          might be 1.0655x faster
   polymorphic-structure                             15.9402+-0.1737     ?     16.3052+-1.0374        ? might be 1.0229x slower
   polyvariant-monomorphic-get-by-id                  9.2556+-0.3274            9.0581+-0.1915          might be 1.0218x faster
   proto-getter-access                                8.4208+-0.2796            8.4055+-0.2691        
   prototype-access-with-mutating-prototype           6.4734+-0.1408            6.3663+-0.2912          might be 1.0168x faster
   put-by-id-replace-and-transition                   9.7357+-0.3364            9.6450+-0.3109        
   put-by-id-slightly-polymorphic                     3.1693+-0.2227            3.1048+-0.1054          might be 1.0208x faster
   put-by-id                                         12.6175+-0.4947     ?     12.6537+-0.5938        ?
   put-by-val-direct                                  0.5532+-0.0739     ?      0.5535+-0.0568        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.6323+-0.0783     ?      5.8564+-0.3423        ? might be 1.0398x slower
   put-by-val-machine-int                             2.9135+-0.0925     ?      2.9188+-0.2052        ?
   put-by-val-with-string-replace-and-transition   
                                                     14.2010+-0.6017           13.9992+-0.1558          might be 1.0144x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      4.0900+-0.1024     ?      4.1268+-0.1660        ?
   put-by-val-with-string                            13.5883+-0.7296           13.4720+-0.0482        
   put-by-val-with-symbol-replace-and-transition   
                                                     15.3295+-0.5172           15.0808+-0.5488          might be 1.0165x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.1121+-0.1476            4.0933+-0.1579        
   put-by-val-with-symbol                            13.2982+-0.4330     ?     13.3563+-0.6064        ?
   rare-osr-exit-on-local                            15.1112+-0.1928     ?     15.1863+-0.3113        ?
   register-pressure-from-osr                        22.7595+-0.4318     ?     23.1343+-0.5986        ? might be 1.0165x slower
   repeat-multi-get-by-offset                        25.1729+-0.4199     ?     25.3583+-0.9629        ?
   setter-prototype                                   7.3597+-0.1280     ?      7.5302+-0.3865        ? might be 1.0232x slower
   setter                                             6.0432+-0.0519     ?      6.1143+-0.1187        ? might be 1.0118x slower
   simple-activation-demo                            26.9531+-0.4117           26.7610+-0.7117        
   simple-getter-access                              10.9451+-0.2104     ?     11.2740+-0.5488        ? might be 1.0301x slower
   simple-poly-call-nested                            8.1638+-0.1222            8.0952+-0.0735        
   simple-poly-call                                   1.6819+-0.0246     ?      1.7116+-0.0199        ? might be 1.0176x slower
   sin-boolean                                       18.3032+-1.4250     ?     18.3826+-1.1145        ?
   singleton-scope                                   65.7672+-0.5304           65.7308+-0.7070        
   sink-function                                     10.2374+-0.1175           10.2098+-0.3518        
   sink-huge-activation                              16.1848+-0.5124     ?     16.2265+-0.4778        ?
   sinkable-new-object-dag                           65.5506+-5.7785     ?     66.7152+-5.1335        ? might be 1.0178x slower
   sinkable-new-object-taken                         49.2723+-1.0427     ?     49.3115+-0.3463        ?
   sinkable-new-object                               36.6432+-0.2633     ?     36.7252+-0.1604        ?
   slow-array-profile-convergence                     3.0258+-0.3610     ?      3.1163+-0.2794        ? might be 1.0299x slower
   slow-convergence                                   3.0170+-0.1360            3.0093+-0.0834        
   slow-ternaries                                    19.4141+-0.3800     ?     19.5340+-0.2947        ?
   sorting-benchmark                                 20.4288+-0.2233     ?     20.8904+-1.7590        ? might be 1.0226x slower
   sparse-conditional                                 1.5334+-0.0369            1.5275+-0.0156        
   splice-to-remove                                  15.4173+-0.3900     ?     16.0878+-0.9037        ? might be 1.0435x slower
   string-char-code-at                               17.9681+-0.4810           17.6215+-0.2419          might be 1.0197x faster
   string-concat-object                               2.2531+-0.0724     ?      2.3021+-0.0538        ? might be 1.0218x slower
   string-concat-pair-object                          2.2101+-0.1823            2.2093+-0.1749        
   string-concat-pair-simple                         11.7041+-0.2897     ?     11.8547+-0.3716        ? might be 1.0129x slower
   string-concat-simple                              12.2270+-0.5407           12.0445+-0.2470          might be 1.0152x faster
   string-cons-repeat                                 8.1304+-0.3160            7.8806+-0.5256          might be 1.0317x faster
   string-cons-tower                                  8.0052+-0.3428     ?      8.0276+-0.1973        ?
   string-equality                                   18.6295+-0.3478     ?     19.0002+-0.4735        ? might be 1.0199x slower
   string-get-by-val-big-char                         7.3295+-0.2414            7.2252+-0.0996          might be 1.0144x faster
   string-get-by-val-out-of-bounds-insane             3.9244+-0.0414            3.9018+-0.1706        
   string-get-by-val-out-of-bounds                    5.4972+-0.1938     ?      5.6815+-0.1329        ? might be 1.0335x slower
   string-get-by-val                                  3.6685+-0.1686     ?      3.7336+-0.0370        ? might be 1.0177x slower
   string-hash                                        2.4371+-0.1263            2.3954+-0.0807          might be 1.0174x faster
   string-long-ident-equality                        15.6154+-0.4045           15.3831+-0.2601          might be 1.0151x faster
   string-out-of-bounds                              12.8478+-0.4156           12.8387+-0.3508        
   string-repeat-arith                               34.6110+-1.0393           34.1917+-2.4397          might be 1.0123x faster
   string-sub                                        70.7313+-0.1943     ^     69.0818+-0.4489        ^ definitely 1.0239x faster
   string-test                                        3.2631+-0.0478     ?      3.3445+-0.1715        ? might be 1.0249x slower
   string-var-equality                               34.2977+-0.8461           33.9955+-0.1745        
   structure-hoist-over-transitions                   2.7400+-0.0622            2.7134+-0.1239        
   substring-concat-weird                            43.3453+-1.0381           43.0583+-0.7842        
   substring-concat                                  47.2188+-0.9017           46.9208+-1.1969        
   substring                                         51.8653+-0.8646     ?     52.4946+-2.6871        ? might be 1.0121x slower
   switch-char-constant                               3.0668+-0.0569     ?      3.0958+-0.1218        ?
   switch-char                                        6.8625+-0.2702            6.6623+-0.0978          might be 1.0301x faster
   switch-constant                                   11.0928+-0.7461           11.0499+-1.6914        
   switch-string-basic-big-var                       22.0075+-0.3705           21.5055+-0.3714          might be 1.0233x faster
   switch-string-basic-big                           19.7175+-0.3262     ?     20.1105+-0.1904        ? might be 1.0199x slower
   switch-string-basic-var                           15.9337+-0.1604     ?     16.1204+-0.2862        ? might be 1.0117x slower
   switch-string-basic                               15.1682+-0.4945           14.9330+-0.7539          might be 1.0157x faster
   switch-string-big-length-tower-var                21.3610+-0.6158     ?     21.5001+-0.2621        ?
   switch-string-length-tower-var                    16.0756+-0.7110           15.8297+-0.4328          might be 1.0155x faster
   switch-string-length-tower                        13.4177+-0.2120           13.2820+-0.2260          might be 1.0102x faster
   switch-string-short                               13.4620+-0.2589           13.2797+-0.5204          might be 1.0137x faster
   switch                                            14.4987+-0.3938     ?     14.8499+-0.2951        ? might be 1.0242x slower
   tear-off-arguments-simple                          3.3881+-0.2707     ?      3.4697+-0.0793        ? might be 1.0241x slower
   tear-off-arguments                                 4.6969+-0.1263     ?      4.7200+-0.2809        ?
   temporal-structure                                14.4500+-0.2179           14.4330+-0.2158        
   to-int32-boolean                                  14.1476+-0.3757     ?     14.4440+-0.5843        ? might be 1.0209x slower
   try-catch-get-by-val-cloned-arguments             15.7106+-0.7948           15.5933+-0.6106        
   try-catch-get-by-val-direct-arguments              6.9453+-0.1399     ?      7.4100+-0.5119        ? might be 1.0669x slower
   try-catch-get-by-val-scoped-arguments              8.2535+-0.4974            8.1392+-0.1651          might be 1.0140x faster
   typed-array-get-set-by-val-profiling              30.2241+-0.5645     ?     30.3189+-0.6442        ?
   undefined-property-access                        382.6136+-1.6418          381.9443+-1.1407        
   undefined-test                                     3.4184+-0.1295     ?      3.4193+-0.0883        ?
   unprofiled-licm                                   20.0278+-0.7352     ?     20.0485+-0.9729        ?
   varargs-call                                      14.8815+-0.3872           14.8328+-0.3921        
   varargs-construct-inline                          26.8505+-0.5301     ?     27.1570+-0.8905        ? might be 1.0114x slower
   varargs-construct                                 23.5258+-0.5923           23.3618+-0.1625        
   varargs-inline                                     9.4118+-0.1307     ?      9.8157+-0.4786        ? might be 1.0429x slower
   varargs-strict-mode                               10.7822+-0.1246     ?     11.0145+-0.1695        ? might be 1.0216x slower
   varargs                                           10.8675+-0.4662           10.7636+-0.4807        
   weird-inlining-const-prop                          2.6058+-0.1340     ?      2.6479+-0.1650        ? might be 1.0162x slower

   &lt;geometric&gt;                                        9.3877+-0.0234     ?      9.4067+-0.0242        ? might be 1.0020x slower

                                                           Base                     Patch                                       
AsmBench:
   bigfib.cpp                                       528.5793+-3.3852     ?    529.1025+-0.9544        ?
   cray.c                                           456.2888+-4.0944          455.0552+-3.0460        
   dry.c                                            527.4217+-5.1473          520.4431+-16.5272         might be 1.0134x faster
   FloatMM.c                                        768.4789+-7.8811          766.0724+-2.0565        
   gcc-loops.cpp                                   4200.5502+-42.5262    ?   4226.8358+-60.5876       ?
   n-body.c                                        1047.1781+-10.4612    ?   1048.1959+-3.9731        ?
   Quicksort.c                                      444.4725+-13.0951    ?    450.0363+-4.6655        ? might be 1.0125x slower
   stepanov_container.cpp                          3930.5422+-43.8807        3927.3470+-42.9982       
   Towers.c                                         268.5123+-0.9841          268.3182+-0.7044        

   &lt;geometric&gt;                                      837.0230+-2.7997          837.0180+-3.4398          might be 1.0000x faster

                                                           Base                     Patch                                       
CompressionBench:
   huffman                                           67.4948+-0.4238           66.7712+-0.7150          might be 1.0108x faster
   arithmetic-simple                                354.3824+-1.4436     ?    355.1945+-3.7094        ?
   arithmetic-precise                               286.4746+-0.6170     ?    286.8820+-1.5880        ?
   arithmetic-complex-precise                       289.9983+-4.2780          288.6801+-4.6025        
   arithmetic-precise-order-0                       363.2487+-2.1802     ?    364.5946+-2.4276        ?
   arithmetic-precise-order-1                       341.5037+-4.9531          339.1226+-2.1590        
   arithmetic-precise-order-2                       403.8220+-3.6805     ?    404.6668+-6.2920        ?
   arithmetic-simple-order-1                        409.1862+-3.4871     ?    409.3912+-2.5747        ?
   arithmetic-simple-order-2                        466.1685+-3.7014          465.3141+-1.5558        
   lz-string                                        315.7957+-10.5015    ?    320.7185+-9.8534        ? might be 1.0156x slower

   &lt;geometric&gt;                                      300.4539+-1.3091     ?    300.4931+-1.3449        ? might be 1.0001x slower

                                                           Base                     Patch                                       
Geomean of preferred means:
   &lt;scaled-result&gt;                                   61.3229+-0.2256     ?     61.4227+-0.2358        ? might be 1.0016x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125137</commentid>
    <comment_count>3</comment_count>
      <attachid>260974</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-10 21:12:57 -0700</bug_when>
    <thetext>Comment on attachment 260974
Patch

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

r=me

&gt; Source/JavaScriptCore/jit/JITCode.h:129
&gt; +            return std::chrono::milliseconds(10000); // 10s

It probably makes sense to have this time to live as an option.

&gt; Source/JavaScriptCore/jit/JITCode.h:131
&gt; +            return std::chrono::milliseconds(100000); // 100s

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125191</commentid>
    <comment_count>4</comment_count>
      <attachid>260974</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-11 09:08:47 -0700</bug_when>
    <thetext>Comment on attachment 260974
Patch

Clearing flags on attachment: 260974

Committed r189620: &lt;http://trac.webkit.org/changeset/189620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125192</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-11 09:08:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125194</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-11 09:14:40 -0700</bug_when>
    <thetext>&gt; It probably makes sense to have this time to live as an option.

I should be able to arrange that in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125198</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-09-11 09:29:17 -0700</bug_when>
    <thetext>This appears to have broken CLOOP build:

CompileC /Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/Objects-normal/x86_64/CodeBlock.o bytecode/CodeBlock.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++11 -stdlib=libc++ -Wno-trigraphs -fno-exceptions -fno-rtti -fpascal-strings -O0 -fno-common -Werror -Wno-missing-field-initializers -Wmissing-prototypes -Wnon-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wsign-compare -Wno-shorten-64-to-32 -Wnewline-eof -Wno-c++11-extensions -DHAVE_HEADER_DETECTION_H -DENABLE_3D_TRANSFORMS -DENABLE_ATTACHMENT_ELEMENT -DENABLE_CACHE_PARTITIONING -DENABLE_CANVAS_PATH -DENABLE_CHANNEL_MESSAGING -DENABLE_ES6_ARROWFUNCTION_SYNTAX -DENABLE_ES6_CLASS_SYNTAX -DENABLE_ES6_TEMPLATE_LITERAL_SYNTAX -DENABLE_CONTENT_FILTERING -DENABLE_CSS_ANIMATIONS_LEVEL_2 -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_GRID_LAYOUT -DENABLE_CSS_REGIONS -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_SHAPES -DENABLE_CURSOR_VISIBILITY -DENABLE_DASHBOARD_SUPPORT -DENABLE_DETAILS_ELEMENT -DENABLE_DOM4_EVENTS_CONSTRUCTOR -DENABLE_ENCRYPTED_MEDIA -DENABLE_ENCRYPTED_MEDIA_V2 -DENABLE_FULLSCREEN_API -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING -DENABLE_ICONDATABASE -DENABLE_INDEXED_DATABASE -DENABLE_INDIE_UI -DENABLE_INPUT_TYPE_COLOR -DENABLE_INPUT_TYPE_COLOR_POPOVER -DENABLE_INTL -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_NOTIFICATIONS -DENABLE_LEGACY_VENDOR_PREFIXES -DENABLE_LEGACY_WEB_AUDIO -DENABLE_MATHML -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_STREAM -DENABLE_METER_ELEMENT -DENABLE_MOUSE_CURSOR_SCALE -DENABLE_NAVIGATOR_HWCONCURRENCY -DENABLE_NOTIFICATIONS -DENABLE_PDFKIT_PLUGIN -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REQUEST_ANIMATION_FRAME -DENABLE_RUBBER_BANDING -DENABLE_CSS_SCROLL_SNAP -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SUBTLE_CRYPTO -DENABLE_SVG_FONTS -DENABLE_SVG_OTF_CONVERTER -DENABLE_TEMPLATE_ELEMENT -DENABLE_CSS_TRAILING_WORD -DENABLE_USERSELECT_ALL -DENABLE_VIDEO -DENABLE_VIDEO_TRACK -DENABLE_DATACUE_VALUE -DENABLE_WEBGL -DENABLE_WEB_AUDIO -DENABLE_WEB_REPLAY -DENABLE_WEB_SOCKETS -DENABLE_XHR_TIMEOUT -DENABLE_XSLT -DENABLE_FTL_JIT=0 -DENABLE_JIT=0 -DENABLE_SATURATED_LAYOUT_ARITHMETIC -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.9 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/JavaScriptCore.hmap -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/include -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/DerivedSources/JavaScriptCore -I. -Iicu -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/usr/local/LLVMForJavaScriptCore/include -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/ExtraIncludesForLocalLLVMBuild -I/usr/local/LLVMForJavaScriptCore/include -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/usr/local/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/DerivedSources/x86_64 -I/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug -fno-strict-aliasing -include /Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/PrecompiledHeaders/JavaScriptCorePrefix-bgfzggyfwybghlcusrgbwgdrrqyr/JavaScriptCorePrefix.h -MMD -MT dependencies -MF /Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/Objects-normal/x86_64/CodeBlock.d --serialize-diagnostics /Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/Objects-normal/x86_64/CodeBlock.dia -c /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp -o /Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/Objects-normal/x86_64/CodeBlock.o
/Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:2654:22: error: use of undeclared identifier &apos;callLinkInfosBegin&apos;
    for (auto iter = callLinkInfosBegin(); !!iter; ++iter)
                     ^
/Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:2657:50: error: use of undeclared identifier &apos;m_stubInfos&apos;
    for (Bag&lt;StructureStubInfo&gt;::iterator iter = m_stubInfos.begin(); !!iter; ++iter) {
                                                 ^
/Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:2659:17: error: member access into incomplete type &apos;JSC::StructureStubInfo&apos;
        stubInfo.visitWeakReferences(this);
                ^
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:59:
/Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/jit/Repatch.h:61:8: note: forward declaration of &apos;JSC::StructureStubInfo&apos;
struct StructureStubInfo;
       ^
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:31:
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.h:33:
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/ArrayProfile.h:30:
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/runtime/JSArray.h:25:
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/runtime/ButterflyInlines.h:31:
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/heap/CopiedSpaceInlines.h:32:
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/runtime/VM.h:58:
/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/usr/local/include/wtf/Bag.h:44:11: error: field has incomplete type &apos;JSC::StructureStubInfo&apos;
        T m_item;
          ^
/Volumes/Data/slave/mavericks-cloop-debug/build/WebKitBuild/Debug/usr/local/include/wtf/Bag.h:92:28: note: in instantiation of member class &apos;WTF::Bag&lt;JSC::StructureStubInfo&gt;::Node&apos; requested here
            m_node = m_node-&gt;m_next;
                           ^
/Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:2657:79: note: in instantiation of member function &apos;WTF::Bag&lt;JSC::StructureStubInfo&gt;::iterator::operator++&apos; requested here
    for (Bag&lt;StructureStubInfo&gt;::iterator iter = m_stubInfos.begin(); !!iter; ++iter) {
                                                                              ^
In file included from /Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/bytecode/CodeBlock.cpp:59:
/Volumes/Data/slave/mavericks-cloop-debug/build/Source/JavaScriptCore/jit/Repatch.h:61:8: note: forward declaration of &apos;JSC::StructureStubInfo&apos;
struct StructureStubInfo;
       ^
4 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125217</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-11 10:48:26 -0700</bug_when>
    <thetext>Committed revision 189623.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260974</attachid>
            <date>2015-09-10 17:43:09 -0700</date>
            <delta_ts>2015-09-11 09:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149048-20150910174302.patch</filename>
            <type>text/plain</type>
            <size>29149</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5NTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBA
CisyMDE1LTA5LTEwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSmF2YVNjcmlwdENvcmUgc2hvdWxkIGRpc2NhcmQgb3B0aW1pemVkIGNvZGUgYWZ0ZXIgc29t
ZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDkwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYSBuZXcgamV0dGlzb24gdHlwZSAtLSBKZXR0aXNvbkR1ZVRvT2xkQWdl
IC0tIGFuZCBzdGFydHMKKyAgICAgICAgdXNpbmcgaXQgZm9yIERGRyBhbmQgRlRMIGNvZGUuIEJh
c2VsaW5lIGFuZCBMTEludCBjb2RlIHdpbGwgY29tZSBpbiBhCisgICAgICAgIGZvbGxvdy11cCBw
YXRjaC4KKworICAgICAgICBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIHNhdmUgbWVtb3J5LiBTb21l
IHBvcHVsYXIgd2Vic2l0ZXMgbGVhdmUgYWJvdXQgMTBNQgorICAgICAgICBvZiBkZWFkIGNvZGUg
c2l0dGluZyBhcm91bmQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhleSBmaW5pc2ggbG9hZGluZy4KKwor
ICAgICAgICBUaHJvd2luZyBhd2F5IGNvZGUgcGVyaW9kaWNhbGx5IG1pZ2h0IGFsc28gc2F2ZSB1
cyBmcm9tIHByb2ZpbGluZworICAgICAgICBwYXRob2xvZ2llcyB0aGF0IGxlYWQgdG8gcGVyZm9y
bWFuY2UgZGVhZCBlbmRzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6IFVwZGF0ZWQgZm9yIHJlbmFt
ZSwgYW5kIHJlbW92ZWQgYQorICAgICAgICBzdGFsZSBjb21tZW50LgorCisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c2hvdWxkVmlzaXRTdHJvbmdseSk6IFJlbmFtZWQgdG8gc2hvdWxkVmlzaXRT
dHJvbmdseQorICAgICAgICBiZWNhdXNlIHRoZSBwcmFjdGljYWwgZWZmZWN0IG9mIHRoaXMgZnVu
Y3Rpb24gaXMgdG8gdHJpZ2dlciBhIGNhbGwgdG8KKyAgICAgICAgdmlzaXRTdHJvbmdseS4KKwor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKTogQ2hlY2sg
dGhlCisgICAgICAgIG1fdmlzaXRTdHJvbmdseUhhc0JlZW5DYWxsZWQgZmxhZyBpbnN0ZWFkIG9m
CisgICAgICAgIHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuIC8gc2hv
dWxkVmlzaXRTdHJvbmdseSBiZWNhdXNlCisgICAgICAgIG1fdmlzaXRTdHJvbmdseUhhc0JlZW5D
YWxsZWQgY2FuIGJlIHNldCBieSBhbnlib2R5IGV2ZW4gaWYgdGhlIENvZGVCbG9jaworICAgICAg
ICB3b3VsZCBub3Qgb3RoZXJ3aXNlIHZpc2l0IGl0c2VsZiBzdHJvbmdseS4KKworICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNob3VsZEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKTogTmV3IGhl
bHBlciBmdW5jdGlvbgorICAgICAgICBmb3IgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpzaG91bGRKZXR0aXNvbkR1ZVRvT2xkQWdlKTogTmV3IGhlbHBlciBmdW5jdGlv
biB0aGF0CisgICAgICAgIHRlbGxzIGlmIGEgQ29kZUJsb2NrIGlzIG9sZCBlbm91Z2ggZm9yIGRl
bGV0aW9uLgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZGV0ZXJtaW5lTGl2ZW5lc3MpOiBU
aGVyZSdzIG5vIG5lZWQgdG8gY2hlY2sKKyAgICAgICAgc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVM
aXZlbmVzc0R1cmluZ1NjYW4gaGVyZSBiZWNhdXNlIHdlIHdpbGwgbm90IGNhbGwKKyAgICAgICAg
dGhpcyBmdW5jdGlvbiBpZiBzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2Nh
biBpcyB0cnVlLgorICAgICAgICBBbHNvLCBpdCdzIGp1c3Qgbm90IGNsZWFyIC0tIGlmIHNvbWVv
bmUgY2hvb3NlcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gLS0KKyAgICAgICAgdGhhdCBpdCB3b3Vs
ZCBiZSBzYWZlIHRvIGlnbm9yZSB0aGVtIHNpbXBseSBiZWNhdXNlCisgICAgICAgIHNob3VsZElt
bWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuIHdhcyB0cnVlLgorCisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6IE1vdmVkIGNvZGUgb3V0
IGludG8gYSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24gdG8gbWFrZSB0aGUgbWFpbiBmdW5jdGlv
biBtb3JlIHJlYWRhYmxlLgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVCYXNl
bGluZUpJVElubGluZUNhY2hlcyk6IERpdHRvLgorCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOiBBZGRlZCBjb2RlIGZvciBqZXR0aXNvbmluZyBhCisg
ICAgICAgIENvZGVCbG9jayBpZiBpdCBpcyB0b28gb2xkLiBNb3ZlZCBsYXJnZSBzZWN0aW9ucyBv
ZiBjb2RlIGludG8gaGVscGVyCisgICAgICAgIGZ1bmN0aW9ucyB0byBhaWQgcmVhZGFiaWxpdHkg
aW4gdGhpcyBmdW5jdGlvbi4KKworICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKTog
QWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCB3ZSBtaWdodCBqZXR0aXNvbgorICAgICAgICBhIENv
ZGVCbG9jayB3aXRob3V0IE9TUiBleGl0IGFuZCB3aXRob3V0IHJlcXVpcmluZyBhIHN0YWNrIHNo
b290LWRvd24uCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzZXRJbnN0YWxsVGltZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dGltZVNpbmNlSW5zdGFsbCk6IFRyYWNrIENvZGVCbG9jayBhZ2UgdG8gaGVscCB1cworICAgICAg
ICBkZWNpZGUgd2hlbiB0byBkZWxldGUuCisKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjp0aW1lVG9MaXZlKTogU3RhdGljIGxpbWl0cyBvbiBDb2RlQmxv
Y2sgbGlmZXRpbWUuIEkgZ290CisgICAgICAgIHRoZXNlIG51bWJlcnMgZnJvbSB0aGUgcGxhY2Ug
d2hlcmUgbnVtYmVycyBjb21lIGZyb20uIAorCisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJK
ZXR0aXNvblJlYXNvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uaDogVXBkYXRlZCBmb3IgbmV3IGpl
dHRpc29uIHR5cGUuCisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZSk6IFJlY29yZCBpbnN0YWxsIHRp
bWUgc28gdGhhdCB3ZQorICAgICAgICBjYW4gbWVhc3VyZSBob3cgb2xkIGEgQ29kZUJsb2NrIGlz
LgorCiAyMDE1LTA5LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgU3RydWN0dXJlIHNob3VsZCBiZSBhYmxlIHRvIHRlbGwgeW91IGlmIGl0IGhhZCBldmVyIGJl
ZW4gYSBkaWN0aW9uYXJ5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTg5NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNDgsMTUgKzIzNDgs
MTUgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdAogCiAgICAgdmlz
aXRvci5hcHBlbmQoJm1fdW5saW5rZWRDb2RlKTsKIAotICAgIC8vIFRoZXJlIGFyZSB0aHJlZSB0
aGluZ3MgdGhhdCBtYXkgdXNlIHVuY29uZGl0aW9uYWwgZmluYWxpemVyczogbGF6eSBieXRlY29k
ZSBmcmVlaW5nLAotICAgIC8vIGlubGluZSBjYWNoZSBjbGVhcmluZywgYW5kIGpldHRpc29uaW5n
LiBUaGUgcHJvYmFiaWxpdHkgb2YgdXMgd2FudGluZyB0byBkbyBhdAotICAgIC8vIGxlYXN0IG9u
ZSBvZiB0aG9zZSB0aGluZ3MgaXMgcHJvYmFibHkgcXVpdGUgY2xvc2UgdG8gMS4gU28gd2UgYWRk
IG9uZSBubyBtYXR0ZXIgd2hhdAotICAgIC8vIGFuZCB3aGVuIGl0IHJ1bnMsIGl0IGZpZ3VyZXMg
b3V0IHdoZXRoZXIgaXQgaGFzIGFueSB3b3JrIHRvIGRvLgorICAgIC8vIFRoZXJlIGFyZSB0d28g
dGhpbmdzIHRoYXQgbWF5IHVzZSB1bmNvbmRpdGlvbmFsIGZpbmFsaXplcnM6IGlubGluZSBjYWNo
ZSBjbGVhcmluZworICAgIC8vIGFuZCBqZXR0aXNvbmluZy4gVGhlIHByb2JhYmlsaXR5IG9mIHVz
IHdhbnRpbmcgdG8gZG8gYXQgbGVhc3Qgb25lIG9mIHRob3NlIHRoaW5ncworICAgIC8vIGlzIHBy
b2JhYmx5IHF1aXRlIGNsb3NlIHRvIDEuIFNvIHdlIGFkZCBvbmUgbm8gbWF0dGVyIHdoYXQgYW5k
IHdoZW4gaXQgcnVucywgaXQKKyAgICAvLyBmaWd1cmVzIG91dCB3aGV0aGVyIGl0IGhhcyBhbnkg
d29yayB0byBkby4KICAgICB2aXNpdG9yLmFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIodGhpcyk7
CiAgICAgCiAgICAgbV9hbGxUcmFuc2l0aW9uc0hhdmVCZWVuTWFya2VkID0gZmFsc2U7CiAgICAg
Ci0gICAgaWYgKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkpIHsK
KyAgICBpZiAoc2hvdWxkVmlzaXRTdHJvbmdseSgpKSB7CiAgICAgICAgIHZpc2l0U3Ryb25nbHko
dmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzg1LDcgKzIzODUsNyBAQCB2
b2lkIENvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0CiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCiB9CiAKLWJvb2wgQ29kZUJsb2NrOjpzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxp
dmVuZXNzRHVyaW5nU2NhbigpCitib29sIENvZGVCbG9jazo6c2hvdWxkVmlzaXRTdHJvbmdseSgp
CiB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gSW50ZXJwcmV0ZXIgYW5kIEJhc2VsaW5l
IEpJVCBDb2RlQmxvY2tzIGRvbid0IG5lZWQgdG8gYmUgamV0dGlzb25lZCB3aGVuCkBAIC0yNDA1
LDcgKzI0MDUsNiBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMCiAK
IGJvb2wgQ29kZUJsb2NrOjppc0tub3duVG9CZUxpdmVEdXJpbmdHQygpCiB7Ci0jaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIHRydWUgZm9yOgogICAgIC8vIC0g
Q29kZSBibG9ja3MgdGhhdCBiZWhhdmUgbGlrZSBub3JtYWwgb2JqZWN0cyAtIGkuZS4gaWYgdGhl
eSBhcmUgcmVmZXJlbmNlZCB0aGVuIHRoZXkKICAgICAvLyAgIGFyZSBsaXZlLgpAQCAtMjQxMywx
MiArMjQxMiwzNyBAQCBib29sIENvZGVCbG9jazo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoCiAg
ICAgLy8gLSBDb2RlIGJsb2NrcyB0aGF0IHN1cnZpdmVkIHRoZSBsYXN0IEdDIGlmIHRoZSBjdXJy
ZW50IEdDIGlzIGFuIEVkZW4gR0MuIFRoaXMgaXMKICAgICAvLyAgIGJlY2F1c2UgbGl2ZW5lc3NI
YXNCZWVuUHJvdmVkIHdvdWxkIGhhdmUgc3Vydml2ZWQgYXMgdHJ1ZS4KICAgICAvLyAtIENvZGUg
YmxvY2tzIHRoYXQgZG9uJ3QgaGF2ZSBhbnkgZGVhZCB3ZWFrIHJlZmVyZW5jZXMuCi0gICAgCi0g
ICAgcmV0dXJuIHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkKLSAg
ICAgICAgfHwgbV9qaXRDb2RlLT5kZmdDb21tb24oKS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkOwot
I2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3Zpc2l0U3Ryb25nbHlIYXNCZWVu
Q2FsbGVkLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChqaXRUeXBlKCkpKSB7CisgICAgICAgIGlmIChtX2ppdENvZGUtPmRmZ0NvbW1vbigpLT5s
aXZlbmVzc0hhc0JlZW5Qcm92ZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAj
ZW5kaWYKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDb2RlQmxvY2s6OnNob3VsZEpl
dHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKCkKK3sKKyAgICByZXR1cm4gIWlzS25vd25Ub0JlTGl2
ZUR1cmluZ0dDKCk7Cit9CisKK2Jvb2wgQ29kZUJsb2NrOjpzaG91bGRKZXR0aXNvbkR1ZVRvT2xk
QWdlKCkKK3sKKyAgICBpZiAobV92aXNpdFN0cm9uZ2x5SGFzQmVlbkNhbGxlZC5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAodGltZVNpbmNlSW5zdGFsbCgpIDwgSklUQ29kZTo6dGltZVRvTGl2ZShq
aXRUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjU0Nyw5ICsyNTcxLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmRldGVybWluZUxpdmVuZXNzKFNsb3RWaQogewogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9y
KTsKICAgICAKLSAgICBpZiAoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1Nj
YW4oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8v
IENoZWNrIGlmIHdlIGhhdmUgYW55IHJlbWFpbmluZyB3b3JrIHRvIGRvLgogICAgIERGRzo6Q29t
bW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKQEAgLTI1OTMsMTU2
ICsyNjE0LDE0NSBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90CiAg
ICAgZGV0ZXJtaW5lTGl2ZW5lc3ModmlzaXRvcik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSgpCit2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGlu
ZUNhY2hlcygpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV92bS0+aW50ZXJw
cmV0ZXI7Ci0gICAgYm9vbCBvd25lZEJ5V2ViQXNzZW1ibHlFeGVjdXRhYmxlID0gZmFsc2U7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIG93bmVkQnlXZWJBc3NlbWJseUV4ZWN1dGFibGUg
PSBtX293bmVyRXhlY3V0YWJsZS0+aXNXZWJBc3NlbWJseUV4ZWN1dGFibGUoKTsKKyAgICBpZiAo
bV9vd25lckV4ZWN1dGFibGUtPmlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKCkpCisgICAgICAgIHJl
dHVybjsKICNlbmRpZgotICAgIGlmIChKSVRDb2RlOjpjb3VsZEJlSW50ZXJwcmV0ZWQoaml0VHlw
ZSgpKSAmJiAhb3duZWRCeVdlYkFzc2VtYmx5RXhlY3V0YWJsZSkgewotICAgICAgICBjb25zdCBW
ZWN0b3I8dW5zaWduZWQ+JiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucyA9IG1fdW5saW5rZWRD
b2RlLT5wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpOwotICAgICAgICBmb3IgKHNpemVfdCBz
aXplID0gcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9ucygpW3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKLSAgICAgICAgICAgIHN3
aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
KSkgewotICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Ci0gICAgICAgICAgICBjYXNlIG9w
X2dldF9ieV9pZF9vdXRfb2ZfbGluZToKLSAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgot
ICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfb3V0X29mX2xpbmU6Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mg
d2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQo
KSk7Ci0gICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIo
KTsKLSAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworCisg
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV92bS0+aW50ZXJwcmV0ZXI7CisgICAgY29u
c3QgVmVjdG9yPHVuc2lnbmVkPiYgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlu
a2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsKKyAgICBmb3IgKHNpemVfdCBz
aXplID0gcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zKClbcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICBzd2l0Y2ggKGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfb3V0X29mX2xpbmU6CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJl
LmdldCgpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgotICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6Ci0gICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdF9vdXRfb2ZfbGluZToKLSAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgotICAgICAgICAgICAgICAgIGlmIChIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUu
Z2V0KCkpCi0gICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3aXRo
IHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNo
YWluLmdldCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3VySW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lk
KTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVy
ZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Rfb3V0X29mX2xpbmU6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lOgorICAgICAgICAgICAgaWYgKEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAg
ICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgp
KQorICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUu
c3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkgeworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBw
dXQgdHJhbnNpdGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAg
ICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisg
ICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpLAor
ICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVy
ZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFp
bi5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Ugb3BfdG9fdGhpczoKKyAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bMl0u
dS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bMl0udS5zdHJ1Y3R1
cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBvcF90
b190aGlzOgotICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bMl0udS5zdHJ1Y3R1
cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bMl0udS5zdHJ1Y3R1cmUuZ2V0KCkp
KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcg
TExJbnQgdG9fdGhpcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzJdLnUu
c3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblsyXS51LnN0
cnVjdHVyZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUudG9U
aGlzU3RhdHVzID0gbWVyZ2UoCi0gICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNd
LnUudG9UaGlzU3RhdHVzLCBUb1RoaXNDbGVhcmVkQnlHQyk7CisgICAgICAgICAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZU9TUigpKQorICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBM
TEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bMl0udS5z
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMl0udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUudG9UaGlzU3RhdHVz
ID0gbWVyZ2UoCisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS50b1RoaXNTdGF0
dXMsIFRvVGhpc0NsZWFyZWRCeUdDKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IG9wX2NyZWF0ZV90aGlzOiB7CisgICAgICAgICAgICBhdXRvJiBjYWNoZVdyaXRlQmFycmllciA9
IGN1ckluc3RydWN0aW9uWzRdLnUuanNDZWxsOworICAgICAgICAgICAgaWYgKCFjYWNoZVdyaXRl
QmFycmllciB8fCBjYWNoZVdyaXRlQmFycmllci51bnZhbGlkYXRlZEdldCgpID09IEpTQ2VsbDo6
c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewotICAgICAgICAgICAgICAgIGF1dG8mIGNh
Y2hlV3JpdGVCYXJyaWVyID0gY3VySW5zdHJ1Y3Rpb25bNF0udS5qc0NlbGw7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjYWNoZVdyaXRlQmFycmllciB8fCBjYWNoZVdyaXRlQmFycmllci51bnZhbGlk
YXRlZEdldCgpID09IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKQotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0
aW9uID0gY2FjaGVXcml0ZUJhcnJpZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKEhlYXA6
OmlzTWFya2VkKGNhY2hlZEZ1bmN0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IGNyZWF0ZV90aGlzIHdpdGggY2FjaGVkIGNh
bGxlZSAlcC5cbiIsIGNhY2hlZEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBjYWNoZVdyaXRl
QmFycmllci5jbGVhcigpOworICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGNh
Y2hlV3JpdGVCYXJyaWVyLmdldCgpOworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNh
Y2hlZEZ1bmN0aW9uKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogewotICAgICAgICAgICAgICAgIC8vIFJp
Z2h0IG5vdyB0aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeS4gQW55IHN5bWJvbCB0YWJsZXMg
dGhhdCB0aGlzIHdpbGwgcmVmZXIgdG8KLSAgICAgICAgICAgICAgICAvLyBhcmUgZm9yIG91dGVy
IGZ1bmN0aW9ucywgYW5kIHdlIHJlZmVyIHRvIHRob3NlIGZ1bmN0aW9ucyBzdHJvbmdseSwgYW5k
IHRoZXkgcmVmZXIKLSAgICAgICAgICAgICAgICAvLyB0byB0aGUgc3ltYm9sIHRhYmxlIHN0cm9u
Z2x5LiBCdXQgaXQncyBuaWNlIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuCi0gICAgICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxTeW1ib2xUYWJsZT4mIHN5bWJvbFRhYmxlID0gY3VySW5zdHJ1
Y3Rpb25bNl0udS5zeW1ib2xUYWJsZTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxl
IHx8IEhlYXA6OmlzTWFya2VkKHN5bWJvbFRhYmxlLmdldCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGRlYWQgc3ltYm9sVGFibGUgJXAu
XG4iLCBzeW1ib2xUYWJsZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuY2xl
YXIoKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IGNyZWF0ZV90aGlzIHdpdGggY2FjaGVkIGNh
bGxlZSAlcC5cbiIsIGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGNhY2hlV3JpdGVCYXJy
aWVyLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3Jlc29sdmVfc2NvcGU6IHsKKyAgICAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIGlzbid0
IHN0cmljdGx5IG5lY2Vzc2FyeS4gQW55IHN5bWJvbCB0YWJsZXMgdGhhdCB0aGlzIHdpbGwgcmVm
ZXIgdG8KKyAgICAgICAgICAgIC8vIGFyZSBmb3Igb3V0ZXIgZnVuY3Rpb25zLCBhbmQgd2UgcmVm
ZXIgdG8gdGhvc2UgZnVuY3Rpb25zIHN0cm9uZ2x5LCBhbmQgdGhleSByZWZlcgorICAgICAgICAg
ICAgLy8gdG8gdGhlIHN5bWJvbCB0YWJsZSBzdHJvbmdseS4gQnV0IGl0J3MgbmljZSB0byBiZSBv
biB0aGUgc2FmZSBzaWRlLgorICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTeW1ib2xUYWJs
ZT4mIHN5bWJvbFRhYmxlID0gY3VySW5zdHJ1Y3Rpb25bNl0udS5zeW1ib2xUYWJsZTsKKyAgICAg
ICAgICAgIGlmICghc3ltYm9sVGFibGUgfHwgSGVhcDo6aXNNYXJrZWQoc3ltYm9sVGFibGUuZ2V0
KCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9zY29wZToKLSAgICAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OiB7Ci0gICAgICAgICAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhj
dXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgICAgIGlmIChnZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCkgPT0gR2xvYmFsVmFyIHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUo
KSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIAotICAgICAgICAgICAgICAgICAg
ICB8fCBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxDbG9zdXJlVmFyIHx8IGdldFB1
dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IGdldFB1dEluZm8ucmVz
b2x2ZVR5cGUoKSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVy
QmFzZTxTdHJ1Y3R1cmU+JiBzdHJ1Y3R1cmUgPSBjdXJJbnN0cnVjdGlvbls1XS51LnN0cnVjdHVy
ZTsKLSAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChzdHJ1
Y3R1cmUuZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
RigiQ2xlYXJpbmcgc2NvcGUgYWNjZXNzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJl
LmdldCgpKTsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIGRlYWQgc3ltYm9sVGFibGUgJXAuXG4iLCBzeW1ib2xUYWJsZS5nZXQoKSk7CisgICAg
ICAgICAgICBzeW1ib2xUYWJsZS5jbGVhcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKKyAgICAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6IHsKKyAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8oY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGlmIChnZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCkgPT0gR2xvYmFsVmFyIHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUo
KSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIAorICAgICAgICAgICAgICAgIHx8
IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIgfHwgZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpID09IEdsb2JhbExleGljYWxWYXIgfHwgZ2V0UHV0SW5mby5yZXNvbHZl
VHlwZSgpID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1
cmU+JiBzdHJ1Y3R1cmUgPSBjdXJJbnN0cnVjdGlvbls1XS51LnN0cnVjdHVyZTsKKyAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKHN0cnVjdHVyZS5nZXQoKSkpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKTsKLSAgICAgICAgICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFX1VOVVNFRChvcGNvZGVJRCwgZmFsc2UsICJVbmhhbmRsZWQgb3Bjb2Rl
IGluIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHksICVzKCVkKSBhdCBiYyAldSIs
IG9wY29kZU5hbWVzW29wY29kZUlEXSwgb3Bjb2RlSUQsIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zW2ldKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpCisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIHNjb3BlIGFjY2VzcyB3
aXRoIHN0cnVjdHVyZSAlcC5cbiIsIHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICBzdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSk7CisgICAgICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFX1VOVVNFRChvcGNvZGVJRCwgZmFsc2UsICJVbmhhbmRsZWQgb3Bjb2RlIGlu
IENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHksICVzKCVkKSBhdCBiYyAldSIsIG9w
Y29kZU5hbWVzW29wY29kZUlEXSwgb3Bjb2RlSUQsIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldKTsKICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICht
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xl
YXJpbmcgTExJbnQgY2FsbCBmcm9tICIsICp0aGlzLCAiXG4iKTsKLSAgICAgICAgICAgICAgICBt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkp
Ci0gICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUu
Y2xlYXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5m
b3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlz
TGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxl
ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisgICAg
ICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICIsICp0aGlzLCAi
XG4iKTsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwogICAg
ICAgICB9CisgICAgICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2Fs
bGVlICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNh
bGxlZS5nZXQoKSkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2Vl
bkNhbGxlZS5jbGVhcigpOwogICAgIH0KK30KIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIC8v
IENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCi0gICAg
aWYgKCFpc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCp0aGlzLCAiIGhhcyBkZWFkIHdlYWsg
cmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdDLlxuIik7Cit2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpCit7CisgICAgZm9yIChhdXRvIGl0ZXIg
PSBjYWxsTGlua0luZm9zQmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpCisgICAgICAgICgqaXRlcikt
PnZpc2l0V2Vhaygqdm0oKSk7CiAKLSAgICAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2Vt
Ymx5KCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coKnRoaXMsICIgd2lsbCBiZSBqZXR0aXNvbmVk
IGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBkZWFkIHJlZmVyZW5jZXM6XG4iKTsKLSAgICAgICAg
ICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmdDb21tb24tPnRyYW5zaXRp
b25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgREZHOjpXZWFrUmVmZXJlbmNlVHJh
bnNpdGlvbiYgdHJhbnNpdGlvbiA9IGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV07Ci0gICAgICAg
ICAgICAgICAgSlNDZWxsKiBvcmlnaW4gPSB0cmFuc2l0aW9uLm1fY29kZU9yaWdpbi5nZXQoKTsK
LSAgICAgICAgICAgICAgICBKU0NlbGwqIGZyb20gPSB0cmFuc2l0aW9uLm1fZnJvbS5nZXQoKTsK
LSAgICAgICAgICAgICAgICBKU0NlbGwqIHRvID0gdHJhbnNpdGlvbi5tX3RvLmdldCgpOwotICAg
ICAgICAgICAgICAgIGlmICgoIW9yaWdpbiB8fCBIZWFwOjppc01hcmtlZChvcmlnaW4pKSAmJiBI
ZWFwOjppc01hcmtlZChmcm9tKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIFRyYW5zaXRpb24gdW5kZXIgIiwgUmF3UG9pbnRlcihv
cmlnaW4pLCAiLCAiLCBSYXdQb2ludGVyKGZyb20pLCAiIC0+ICIsIFJhd1BvaW50ZXIodG8pLCAi
LlxuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZGZnQ29tbW9uLT53ZWFrUmVmZXJlbmNlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgIEpTQ2VsbCogd2VhayA9IGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0uZ2V0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKHdlYWspKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgV2VhayByZWZlcmVu
Y2UgIiwgUmF3UG9pbnRlcih3ZWFrKSwgIi5cbiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIAorICAgIGZvciAoQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3IgaXRl
ciA9IG1fc3R1YkluZm9zLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CisgICAgICAgIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICoqaXRlcjsKKyAgICAgICAgc3R1YkluZm8udmlzaXRX
ZWFrUmVmZXJlbmNlcyh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgpCit7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgaWYgKHNob3Vs
ZEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKCkpIHsKICAgICAgICAgamV0dGlzb24oUHJvZmls
ZXI6OkpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIEVOQUJMRShKSVQpCi0gICAgLy8gSGFu
ZGxlIGlubGluZSBjYWNoZXMuCi0gICAgaWYgKCEhaml0Q29kZSgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byBpdGVyID0gY2FsbExpbmtJbmZvc0JlZ2luKCk7ICEhaXRlcjsgKytpdGVyKQotICAgICAg
ICAgICAgKCppdGVyKS0+dmlzaXRXZWFrKCp2bSgpKTsKLQotICAgICAgICBmb3IgKEJhZzxTdHJ1
Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0
ZXI7ICsraXRlcikgewotICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0g
KippdGVyOwotICAgICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyh0aGlzKTsK
LSAgICAgICAgfQorICAgIGlmIChzaG91bGRKZXR0aXNvbkR1ZVRvT2xkQWdlKCkpIHsKKyAgICAg
ICAgamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9PbGRBZ2UpOworICAgICAgICByZXR1
cm47CiAgICAgfQorCisgICAgaWYgKEpJVENvZGU6OmNvdWxkQmVJbnRlcnByZXRlZChqaXRUeXBl
KCkpKQorICAgICAgICBmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCk7CisKKyNpZiBFTkFCTEUo
SklUKQorICAgIGlmICghIWppdENvZGUoKSkKKyAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElu
bGluZUNhY2hlcygpOwogI2VuZGlmCiB9CiAKQEAgLTMxNDEsNiArMzE1MSwyOCBAQCB2b2lkIENv
ZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpCiAgICAgICAgIGRhdGFMb2coIi5cbiIp
OwogICAgIH0KICAgICAKKyAgICBpZiAocmVhc29uID09IFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRv
V2Vha1JlZmVyZW5jZSkgeworICAgICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHko
KSkgeworICAgICAgICAgICAgZGF0YUxvZygqdGhpcywgIiB3aWxsIGJlIGpldHRpc29uZWQgYmVj
YXVzZSBvZiB0aGUgZm9sbG93aW5nIGRlYWQgcmVmZXJlbmNlczpcbiIpOworICAgICAgICAgICAg
REZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBERkc6OldlYWtSZWZlcmVuY2VUcmFuc2l0
aW9uJiB0cmFuc2l0aW9uID0gZGZnQ29tbW9uLT50cmFuc2l0aW9uc1tpXTsKKyAgICAgICAgICAg
ICAgICBKU0NlbGwqIG9yaWdpbiA9IHRyYW5zaXRpb24ubV9jb2RlT3JpZ2luLmdldCgpOworICAg
ICAgICAgICAgICAgIEpTQ2VsbCogZnJvbSA9IHRyYW5zaXRpb24ubV9mcm9tLmdldCgpOworICAg
ICAgICAgICAgICAgIEpTQ2VsbCogdG8gPSB0cmFuc2l0aW9uLm1fdG8uZ2V0KCk7CisgICAgICAg
ICAgICAgICAgaWYgKCghb3JpZ2luIHx8IEhlYXA6OmlzTWFya2VkKG9yaWdpbikpICYmIEhlYXA6
OmlzTWFya2VkKGZyb20pKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgVHJhbnNpdGlvbiB1bmRlciAiLCBSYXdQb2ludGVyKG9yaWdp
biksICIsICIsIFJhd1BvaW50ZXIoZnJvbSksICIgLT4gIiwgUmF3UG9pbnRlcih0byksICIuXG4i
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
ZmdDb21tb24tPndlYWtSZWZlcmVuY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
SlNDZWxsKiB3ZWFrID0gZGZnQ29tbW9uLT53ZWFrUmVmZXJlbmNlc1tpXS5nZXQoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQod2VhaykpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBXZWFrIHJlZmVyZW5jZSAi
LCBSYXdQb2ludGVyKHdlYWspLCAiLlxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoKm1faGVhcCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpOwogICAgIApAQCAt
MzE1MSwxNCArMzE4MywxNCBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6Okpl
dHRpCiAgICAgLy8gMSkgTWFrZSBzdXJlIHRoYXQgaWYgdGhpcyBDb2RlQmxvY2sgaXMgb24gdGhl
IHN0YWNrIHJpZ2h0IG5vdywgdGhlbiBpZiB3ZSByZXR1cm4gdG8gaXQKICAgICAvLyAgICB3ZSBz
aG91bGQgT1NSIGV4aXQgYXQgdGhlIHRvcCBvZiB0aGUgbmV4dCBieXRlY29kZSBpbnN0cnVjdGlv
biBhZnRlciB0aGUgcmV0dXJuLgogICAgIC8vIDIpIE1ha2Ugc3VyZSB0aGF0IGlmIHdlIGNhbGwg
dGhlIG93bmVyIGV4ZWN1dGFibGUsIHRoZW4gd2Ugc2hvdWxkbid0IGNhbGwgdGhpcyBDb2RlQmxv
Y2suCi0gICAgCi0gICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgdGhlIE9TUi1leGl0LW9uLXJldHVy
biBwYXJ0LCBhbmQgZG9lcyBpdHMgb3duIGJvb2sta2VlcGluZyBhYm91dAotICAgIC8vIHdoZXRo
ZXIgdGhlIGludmFsaWRhdGlvbiBoYXMgYWxyZWFkeSBoYXBwZW5lZC4KLSAgICBpZiAoIWppdENv
ZGUoKS0+ZGZnQ29tbW9uKCktPmludmFsaWRhdGUoKSkgewotICAgICAgICAvLyBOb3RoaW5nIHRv
IGRvIHNpbmNlIHdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4gVGhhdCBtZWFucyB0aGF0
IHdlIGNhbm5vdCBiZQotICAgICAgICAvLyB0aGUgb3B0aW1pemVkIHJlcGxhY2VtZW50LgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2VtZW50KCkpOwotICAgICAgICByZXR1
cm47CisKKyAgICBpZiAocmVhc29uICE9IFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdlKSB7
CisgICAgICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgxKSwgYW5kIGRvZXMgaXRzIG93biBib29r
LWtlZXBpbmcgYWJvdXQgd2hldGhlciBpdCBoYXMgYWxyZWFkeSBoYXBwZW5lZC4KKyAgICAgICAg
aWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRlKCkpIHsKKyAgICAgICAgICAg
IC8vIFdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4KKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkp
CkBAIC0zMTczLDE0ICszMjA1LDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNvbihQcm9maWxl
cjo6SmV0dGkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBEaWQgY291bnQgcmVvcHRpbWl6YXRp
b24gZm9yICIsICp0aGlzLCAiXG4iKTsKICAgICB9CiAgICAgCi0gICAgLy8gTm93IHRha2UgY2Fy
ZSBvZiB0aGUgZW50cnlwb2ludC4KKyAgICAvLyBUaGlzIGFjY29tcGxpc2hlcyAoMikuCiAgICAg
aWYgKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSkgewogICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
d2Ugd2VyZSBuZXZlciB0aGUgZW50cnlwb2ludC4gVGhpcyBjYW4gaGFwcGVuIGZvciBPU1IgZW50
cnkgY29kZQogICAgICAgICAvLyBibG9ja3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
YWx0ZXJuYXRpdmUoKS0+b3B0aW1pemVBZnRlcldhcm1VcCgpOwotICAgIHRhbGx5RnJlcXVlbnRF
eGl0U2l0ZXMoKTsKKworICAgIGlmIChyZWFzb24gIT0gUHJvZmlsZXI6OkpldHRpc29uRHVlVG9P
bGRBZ2UpCisgICAgICAgIHRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKTsKKwogICAgIGFsdGVybmF0
aXZlKCktPmluc3RhbGwoKTsKICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkK
ICAgICAgICAgZGF0YUxvZygiICAgIERpZCBpbnN0YWxsIGJhc2VsaW5lIHZlcnNpb24gb2YgIiwg
KnRoaXMsICJcbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkocmV2aXNpb24gMTg5NTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MzQsNiArODM0LDggQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9ucygpOwogICAgIHZvaWQgdXBkYXRl
QWxsUHJlZGljdGlvbnMoKTsKIAorICAgIHZvaWQgc2V0SW5zdGFsbFRpbWUoc3RkOjpjaHJvbm86
OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBpbnN0YWxsVGltZSkgeyBtX2luc3RhbGxUaW1lID0g
aW5zdGFsbFRpbWU7IH0KKwogICAgIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAg
IGludCBzdGFja1BvaW50ZXJPZmZzZXQoKTsKIApAQCAtOTE3LDYgKzkxOSw4IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90Vmlz
aXRvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOworICAg
IHZvaWQgZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCk7CkBAIC05NzQsNyArOTc4
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBBcnJheVByb2ZpbGluZyhQcmludFN0cmVhbSYs
IGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZv
aWQgZHVtcFJhcmVDYXNlUHJvZmlsZShQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIG5hbWUsIFJh
cmVDYXNlUHJvZmlsZSosIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAKLSAg
ICBib29sIHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCk7CisgICAg
Ym9vbCBzaG91bGRWaXNpdFN0cm9uZ2x5KCk7CisgICAgYm9vbCBzaG91bGRKZXR0aXNvbkR1ZVRv
V2Vha1JlZmVyZW5jZSgpOworICAgIGJvb2wgc2hvdWxkSmV0dGlzb25EdWVUb09sZEFnZSgpOwog
ICAgIAogICAgIHZvaWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImKTsKICAgICB2
b2lkIGRldGVybWluZUxpdmVuZXNzKFNsb3RWaXNpdG9yJik7CkBAIC05ODMsNiArOTg5LDEyIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdHJvbmdseVZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0
b3ImKTsKICAgICB2b2lkIHZpc2l0T1NSRXhpdFRhcmdldHMoU2xvdFZpc2l0b3ImKTsKIAorICAg
IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZVNpbmNlSW5zdGFsbCgpCisgICAgeworICAg
ICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcz4oCisgICAgICAgICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSAt
IG1faW5zdGFsbFRpbWUpOworICAgIH0KKwogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCkBAIC0xMDY0LDcgKzEwNzYs
OSBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fb3NyRXhpdENvdW50ZXI7CiAgICAgdWludDE2
X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgdWludDE2X3QgbV9yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcjsKLSAgICAKKworICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6
OnRpbWVfcG9pbnQgbV9pbnN0YWxsVGltZTsKKwogICAgIG11dGFibGUgQ29kZUJsb2NrSGFzaCBt
X2hhc2g7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBt
X2xpdmVuZXNzQW5hbHlzaXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAko
cmV2aXNpb24gMTg5NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsMTkgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgc3RhdGljIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZVRvTGl2ZShKSVRUeXBlIGppdFR5cGUpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGppdFR5cGUpIHsKKyAgICAgICAgY2FzZSBERkdKSVQ6CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygxMDAwMCk7IC8vIDEwcworICAg
ICAgICBjYXNlIEZUTEpJVDoKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzKDEwMDAwMCk7IC8vIDEwMHMKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHN0YXRpYyBib29sIGlzTG93ZXJUaWVyKEpJVFR5cGUgZXhwZWN0ZWRMb3dlciwgSklU
VHlwZSBleHBlY3RlZEhpZ2hlcikKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzRXhl
Y3V0YWJsZVNjcmlwdChleHBlY3RlZExvd2VyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwCShy
ZXZpc2lvbiAxODk1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJKZXR0aXNvblJlYXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpldAogICAgIGNhc2UgSmV0dGlzb25E
dWVUb1VucHJvZmlsZWRXYXRjaHBvaW50OgogICAgICAgICBvdXQucHJpbnQoIlVucHJvZmlsZWRX
YXRjaHBvaW50Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpldHRpc29uRHVlVG9PbGRB
Z2U6CisgICAgICAgIG91dC5wcmludCgiSmV0dGlzb25EdWVUb09sZEFnZSIpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpl
dHRpc29uUmVhc29uLmgJKHJldmlzaW9uIDE4OTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDggQEAgZW51bSBKZXR0aXNvblJlYXNvbiB7CiAgICAgSmV0dGlzb25EdWVUb0Jhc2Vs
aW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9uT1NSRW50cnlGYWlsLAogICAgIEpldHRpc29u
RHVlVG9PU1JFeGl0LAogICAgIEpldHRpc29uRHVlVG9Qcm9maWxlZFdhdGNocG9pbnQsCi0gICAg
SmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50CisgICAgSmV0dGlzb25EdWVUb1VucHJv
ZmlsZWRXYXRjaHBvaW50LAorICAgIEpldHRpc29uRHVlVG9PbGRBZ2UKIH07CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpQcm9maWxlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4OTU4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiAr
MjA4LDggQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29kZShDb2RlQgogICAgIGlm
IChkZWJ1Z2dlcikKICAgICAgICAgZGVidWdnZXItPnJlZ2lzdGVyQ29kZUJsb2NrKGdlbmVyaWND
b2RlQmxvY2spOwogCisgICAgZ2VuZXJpY0NvZGVCbG9jay0+c2V0SW5zdGFsbFRpbWUoc3RkOjpj
aHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkpOworCiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+d3Jp
dGVCYXJyaWVyKHRoaXMpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>