<?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>143734</bug_id>
          
          <creation_ts>2015-04-14 15:55:12 -0700</creation_ts>
          <short_desc>MovHint should be a strong use</short_desc>
          <delta_ts>2015-04-27 05:02:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143833</dependson>
    
    <dependson>144256</dependson>
    
    <dependson>143792</dependson>
          <blocked>143733</blocked>
    
    <blocked>143736</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1085299</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-14 15:55:12 -0700</bug_when>
    <thetext>Currently MovHint is a &quot;weak&quot; use in the sense that if nothing else uses a child of a MovHint then the MovHint turns into a ZombieHint.  We should change this.  Instead, MovHint should be a strong use.  This will fix bugs where our other mechanisms of keeping things alive for OSR (i.e. Phantoms) aren&apos;t properly preserved.

This will reduce the amount of DCE we do.  As part of this patch, we should mitigate the reduction in DCE by introducing a phase that removes MovHints if the value is dead in bytecode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085302</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-14 15:58:56 -0700</bug_when>
    <thetext>Here is the performance on x86_64 if I just make MovHint a strong use but don&apos;t introduce any mitigations:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r182806)
&quot;NoOSRDCE&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r182806)

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

                                                        TipOfTree                  NoOSRDCE                                     
SunSpider:
   3d-cube                                            4.8970+-0.0688     !      5.0621+-0.0654        ! definitely 1.0337x slower
   3d-morph                                           5.7936+-0.0622     ?      5.8701+-0.1637        ? might be 1.0132x slower
   3d-raytrace                                        6.2652+-0.0645     ?      6.3186+-0.1366        ?
   access-binary-trees                                2.2135+-0.0646            2.1853+-0.0662          might be 1.0129x faster
   access-fannkuch                                    5.7381+-0.0905     ?      5.7992+-0.0863        ? might be 1.0107x slower
   access-nbody                                       2.9460+-0.0613     ?      2.9598+-0.0903        ?
   access-nsieve                                      3.3917+-0.1440            3.3150+-0.0651          might be 1.0231x faster
   bitops-3bit-bits-in-byte                           1.5988+-0.0542     ?      1.6005+-0.0697        ?
   bitops-bits-in-byte                                3.3753+-0.0615     ?      3.4091+-0.0383        ? might be 1.0100x slower
   bitops-bitwise-and                                 2.1683+-0.0785            2.0660+-0.0592          might be 1.0495x faster
   bitops-nsieve-bits                                 3.6375+-0.0648     ^      3.3792+-0.0707        ^ definitely 1.0765x faster
   controlflow-recursive                              2.1691+-0.0390     ?      2.2079+-0.0517        ? might be 1.0179x slower
   crypto-aes                                         4.4987+-0.6472     ?      4.5353+-0.4057        ?
   crypto-md5                                         2.4281+-0.0815     ?      2.4513+-0.1338        ?
   crypto-sha1                                        2.7152+-0.1572            2.7021+-0.1951        
   date-format-tofte                                  9.4003+-0.2199            9.2496+-0.1236          might be 1.0163x faster
   date-format-xparb                                  5.8364+-0.1643            5.8093+-0.3173        
   math-cordic                                        3.0746+-0.0481            3.0420+-0.0921          might be 1.0107x faster
   math-partial-sums                                  5.2565+-0.1236     ?      5.3582+-0.3989        ? might be 1.0193x slower
   math-spectral-norm                                 1.9328+-0.0643     ?      1.9793+-0.1651        ? might be 1.0241x slower
   regexp-dna                                         8.0500+-1.5896            7.5887+-1.2486          might be 1.0608x faster
   string-base64                                      4.4369+-0.1049     ?      4.8056+-0.7815        ? might be 1.0831x slower
   string-fasta                                       6.6282+-0.0698     ?      6.6963+-0.0985        ? might be 1.0103x slower
   string-tagcloud                                   10.1379+-0.2248            9.7635+-0.2526          might be 1.0383x faster
   string-unpack-code                                19.6618+-0.3229     ?     19.9645+-0.7952        ? might be 1.0154x slower
   string-validate-input                              4.9487+-0.1412            4.8728+-0.0770          might be 1.0156x faster

   &lt;arithmetic&gt;                                       5.1231+-0.0991            5.1150+-0.0698          might be 1.0016x faster

                                                        TipOfTree                  NoOSRDCE                                     
LongSpider:
   3d-cube                                         1067.5059+-5.8140     ^    897.4189+-26.3117       ^ definitely 1.1895x faster
   3d-morph                                        1530.5034+-5.1575     ?   1532.3490+-6.2662        ?
   3d-raytrace                                      733.8377+-4.3057          729.0163+-7.2074        
   access-binary-trees                             1021.8750+-5.8868         1020.7007+-9.6463        
   access-fannkuch                                  336.5179+-8.8821          336.3901+-12.7039       
   access-nbody                                     620.4231+-10.0821         617.6023+-5.3693        
   access-nsieve                                    855.5782+-6.0463          847.1084+-9.3556        
   bitops-3bit-bits-in-byte                          45.3331+-1.6364           44.9288+-0.6749        
   bitops-bits-in-byte                              104.9795+-1.5006          104.1633+-2.1275        
   bitops-nsieve-bits                               707.8824+-5.9502     ^    633.3958+-4.0748        ^ definitely 1.1176x faster
   controlflow-recursive                            480.4709+-8.5079     !    503.6184+-2.5956        ! definitely 1.0482x slower
   crypto-aes                                       718.1868+-9.5828          711.8633+-5.7931        
   crypto-md5                                       558.9170+-9.2708     ?    559.4188+-6.7474        ?
   crypto-sha1                                      604.1073+-16.9826         596.7307+-7.8045          might be 1.0124x faster
   date-format-tofte                                771.6822+-9.3199          768.6345+-16.8049       
   date-format-xparb                                794.1659+-24.5549         781.6139+-16.0455         might be 1.0161x faster
   math-cordic                                      598.2437+-10.6035         596.2216+-6.1040        
   math-partial-sums                                506.0310+-1.9356     ?    510.1378+-4.3534        ?
   math-spectral-norm                               566.6849+-2.9046          565.9801+-2.0958        
   string-base64                                    371.0673+-5.2165          369.7343+-4.8038        
   string-fasta                                     448.4598+-4.3884          448.3228+-4.4780        
   string-tagcloud                                  217.3328+-2.2594          215.1924+-2.3505        

   &lt;geometric&gt;                                      507.1557+-1.9180     ^    499.6948+-1.7390        ^ definitely 1.0149x faster

                                                        TipOfTree                  NoOSRDCE                                     
V8Spider:
   crypto                                            55.6004+-0.5162           55.5916+-0.9692        
   deltablue                                         97.6347+-5.3479           95.3752+-2.0943          might be 1.0237x faster
   earley-boyer                                      42.3557+-1.8550           41.7365+-0.5457          might be 1.0148x faster
   raytrace                                          39.7775+-2.7812     ?     40.0792+-2.4522        ?
   regexp                                            68.3621+-2.7212     !     87.4352+-2.3372        ! definitely 1.2790x slower
   richards                                          79.1165+-1.3258           78.2292+-1.8148          might be 1.0113x faster
   splay                                             38.0673+-1.2425     ?     38.5365+-1.9379        ? might be 1.0123x slower

   &lt;geometric&gt;                                       56.6620+-0.8414     !     58.4507+-0.5616        ! definitely 1.0316x slower

                                                        TipOfTree                  NoOSRDCE                                     
Octane:
   encrypt                                           0.20318+-0.00145          0.20280+-0.00124       
   decrypt                                           3.63673+-0.04904          3.58847+-0.03558         might be 1.0134x faster
   deltablue                                x2       0.20873+-0.00289          0.20696+-0.00118       
   earley                                            0.58985+-0.00328    ^     0.58279+-0.00254       ^ definitely 1.0121x faster
   boyer                                             6.43795+-0.02255    !     6.52377+-0.02575       ! definitely 1.0133x slower
   navier-stokes                            x2       5.30640+-0.18366          5.20271+-0.03220         might be 1.0199x faster
   raytrace                                 x2       1.27357+-0.08940    ?     1.28555+-0.02189       ?
   richards                                 x2       0.12330+-0.00118          0.12303+-0.00090       
   splay                                    x2       0.38232+-0.00314          0.38224+-0.00553       
   regexp                                   x2      33.24388+-0.11767    ?    33.27609+-0.33954       ?
   pdfjs                                    x2      44.24863+-0.16381    ?    45.41128+-2.54610       ? might be 1.0263x slower
   mandreel                                 x2      50.23713+-0.46079         50.15673+-0.34736       
   gbemu                                    x2      38.79241+-0.18215    !    42.04436+-0.21398       ! definitely 1.0838x slower
   closure                                           0.55605+-0.00548    ?     0.55845+-0.00388       ?
   jquery                                            7.18395+-0.07158          7.11326+-0.13777       
   box2d                                    x2      12.31547+-0.28960         12.27296+-0.14332       
   zlib                                     x2     380.92706+-14.58368   ?   388.41813+-3.38749       ? might be 1.0197x slower
   typescript                               x2     824.53459+-12.52081   ?   827.03031+-19.26953      ?

   &lt;geometric&gt;                                       6.69997+-0.04311    ?     6.74269+-0.04480       ? might be 1.0064x slower

                                                        TipOfTree                  NoOSRDCE                                     
Kraken:
   ai-astar                                          268.446+-2.273      !     273.171+-1.978         ! definitely 1.0176x slower
   audio-beat-detection                              105.607+-0.711      ?     106.068+-1.173         ?
   audio-dft                                         151.037+-2.511            148.576+-2.351           might be 1.0166x faster
   audio-fft                                          85.230+-3.616      ?      85.241+-3.658         ?
   audio-oscillator                                  210.924+-1.903            208.206+-2.072           might be 1.0131x faster
   imaging-darkroom                                  106.016+-1.708            105.023+-1.833         
   imaging-desaturate                                 63.661+-1.425             62.795+-0.528           might be 1.0138x faster
   imaging-gaussian-blur                             115.390+-5.202            114.176+-1.556           might be 1.0106x faster
   json-parse-financial                               46.785+-2.009             45.952+-1.895           might be 1.0181x faster
   json-stringify-tinderbox                           58.300+-1.732             57.600+-1.592           might be 1.0122x faster
   stanford-crypto-aes                                63.091+-2.343      ?      65.638+-3.253         ? might be 1.0404x slower
   stanford-crypto-ccm                                51.539+-4.606             48.991+-1.078           might be 1.0520x faster
   stanford-crypto-pbkdf2                            168.484+-2.134      ?     171.559+-3.952         ? might be 1.0183x slower
   stanford-crypto-sha256-iterative                   56.685+-1.654             55.286+-1.936           might be 1.0253x faster

   &lt;arithmetic&gt;                                      110.800+-0.716            110.592+-0.499           might be 1.0019x faster

                                                        TipOfTree                  NoOSRDCE                                     
JSRegress:
   abs-boolean                                        2.6613+-0.0431            2.6287+-0.0397          might be 1.0124x faster
   adapt-to-double-divide                            17.1914+-0.4228           16.7621+-0.4132          might be 1.0256x faster
   aliased-arguments-getbyval                         1.1907+-0.0552            1.1901+-0.0426        
   allocate-big-object                                2.7295+-0.1244     ?      2.7731+-0.1574        ? might be 1.0160x slower
   arguments-named-and-reflective                    13.7318+-1.4432           13.1806+-0.6998          might be 1.0418x faster
   arguments-out-of-bounds                           14.8790+-0.3209     ?     15.1908+-0.6892        ? might be 1.0210x slower
   arguments-strict-mode                             12.8287+-1.1978           12.5224+-1.1669          might be 1.0245x faster
   arguments                                         10.6535+-0.7665           10.5916+-0.1391        
   arity-mismatch-inlining                            0.8822+-0.0701            0.8615+-0.0266          might be 1.0239x faster
   array-access-polymorphic-structure                 7.5048+-1.2619     ?      8.0755+-1.2100        ? might be 1.0760x slower
   array-nonarray-polymorhpic-access                 34.8757+-1.5215     ?     36.1423+-1.9855        ? might be 1.0363x slower
   array-prototype-every                             87.5752+-1.2691     ?     89.8526+-2.2565        ? might be 1.0260x slower
   array-prototype-forEach                           85.8967+-3.0507     ?     86.1534+-3.1761        ?
   array-prototype-map                               94.8941+-2.1584     ?     95.6781+-1.6368        ?
   array-prototype-some                              87.6936+-2.2933     ?     88.5341+-0.6680        ?
   array-splice-contiguous                           43.1302+-3.4558           41.5018+-1.9971          might be 1.0392x faster
   array-with-double-add                              4.2082+-0.1177            4.1512+-0.0778          might be 1.0137x faster
   array-with-double-increment                        3.1740+-0.0380     ?      3.2146+-0.0434        ? might be 1.0128x slower
   array-with-double-mul-add                          5.0220+-0.0799     ?      5.0535+-0.0755        ?
   array-with-double-sum                              3.2501+-0.0406     ?      3.3006+-0.0434        ? might be 1.0155x slower
   array-with-int32-add-sub                           6.8524+-0.0978            6.7568+-0.0880          might be 1.0142x faster
   array-with-int32-or-double-sum                     3.3357+-0.0503     ?      3.3665+-0.0750        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     35.3763+-3.0609           33.7734+-2.0705          might be 1.0475x faster
   ArrayBuffer-DataView-alloc-long-lived             16.1352+-2.1938           15.6933+-1.9149          might be 1.0282x faster
   ArrayBuffer-Int32Array-byteOffset                  4.0250+-0.6754            3.7765+-0.0944          might be 1.0658x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     33.0465+-1.0693     ?     33.5916+-2.6171        ? might be 1.0165x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     22.9254+-0.5165     ?     25.1132+-1.8805        ? might be 1.0954x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.2803+-1.4275     ?     15.7355+-1.3985        ? might be 1.1019x slower
   ArrayBuffer-Int8Array-alloc                       11.3022+-0.7266           11.1919+-0.7937        
   asmjs_bool_bug                                     7.7214+-0.1895            7.6310+-0.0497          might be 1.0118x faster
   assign-custom-setter-polymorphic                   3.1956+-0.1111            3.0618+-0.0562          might be 1.0437x faster
   assign-custom-setter                               4.4565+-0.1082     ^      4.1613+-0.0678        ^ definitely 1.0709x faster
   basic-set                                          8.9456+-0.5908            8.7931+-0.3397          might be 1.0173x faster
   big-int-mul                                        4.0915+-0.0432     ?      4.1055+-0.0747        ?
   boolean-test                                       3.0573+-0.0593            3.0271+-0.0254        
   branch-fold                                        3.7320+-0.0889            3.7244+-0.0214        
   by-val-generic                                     8.6464+-0.5170            8.5404+-0.4354          might be 1.0124x faster
   call-spread-apply                                 31.1073+-1.6314     ?     31.8700+-1.8562        ? might be 1.0245x slower
   call-spread-call                                  25.6043+-2.0334     ?     26.1313+-1.8767        ? might be 1.0206x slower
   captured-assignments                               0.4483+-0.0149     ?      0.4640+-0.0187        ? might be 1.0349x slower
   cast-int-to-double                                 5.2533+-0.0109     ?      5.3031+-0.0947        ?
   cell-argument                                      8.6961+-0.3164            8.4875+-0.2054          might be 1.0246x faster
   cfg-simplify                                       2.8624+-0.0689     ?      3.0010+-0.1365        ? might be 1.0484x slower
   chain-getter-access                               10.1454+-0.1688           10.0223+-0.0964          might be 1.0123x faster
   cmpeq-obj-to-obj-other                            10.8257+-0.5203     ?     11.2446+-0.6541        ? might be 1.0387x slower
   constant-test                                      4.9603+-0.0576            4.9332+-0.0243        
   create-lots-of-functions                          23.5172+-1.7969     ?     24.5695+-1.4864        ? might be 1.0447x slower
   DataView-custom-properties                        39.2245+-1.9690     ?     44.5149+-12.8387       ? might be 1.1349x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.5081+-0.0390            0.4738+-0.0155          might be 1.0724x faster
   delay-tear-off-arguments-strictmode               13.9295+-0.2926     ?     14.3748+-1.1572        ? might be 1.0320x slower
   deltablue-varargs                                199.2939+-2.4432     ?    201.5839+-2.3195        ? might be 1.0115x slower
   destructuring-arguments                           16.6486+-0.9119     ?     17.5288+-1.1554        ? might be 1.0529x slower
   destructuring-swap                                 5.1011+-0.1876            5.0343+-0.0486          might be 1.0133x faster
   direct-arguments-getbyval                          1.2177+-0.0446     ?      1.2338+-0.1232        ? might be 1.0133x slower
   div-boolean-double                                 5.2057+-0.0205     ?      5.2688+-0.0989        ? might be 1.0121x slower
   div-boolean                                        7.7955+-0.0726     ?      7.9528+-0.2894        ? might be 1.0202x slower
   double-get-by-val-out-of-bounds                    4.5051+-0.0410            4.5000+-0.0336        
   double-pollution-getbyval                          8.8608+-0.0584     ?      9.0785+-0.3673        ? might be 1.0246x slower
   double-pollution-putbyoffset                       4.2858+-0.0827     ?      4.3335+-0.1657        ? might be 1.0111x slower
   double-to-int32-typed-array-no-inline              2.3186+-0.0694            2.2487+-0.0458          might be 1.0311x faster
   double-to-int32-typed-array                        1.9260+-0.0535     ?      1.9499+-0.0944        ? might be 1.0124x slower
   double-to-uint32-typed-array-no-inline             2.3184+-0.0390     ?      2.3514+-0.0549        ? might be 1.0143x slower
   double-to-uint32-typed-array                       1.9632+-0.0341            1.9347+-0.0453          might be 1.0147x faster
   elidable-new-object-dag                           44.5415+-2.8450           42.8042+-1.8685          might be 1.0406x faster
   elidable-new-object-roflcopter                    46.3348+-1.1740     ?     46.6653+-1.6405        ?
   elidable-new-object-then-call                     38.2910+-0.7143     ?     39.7568+-1.3841        ? might be 1.0383x slower
   elidable-new-object-tree                          45.3957+-1.1246     ?     45.4967+-2.3644        ?
   empty-string-plus-int                              5.3662+-0.0993            5.3510+-0.0732        
   emscripten-cube2hash                              39.1989+-1.1232     ?     39.4736+-1.0736        ?
   exit-length-on-plain-object                       15.0979+-2.1341     ?     15.2716+-1.6884        ? might be 1.0115x slower
   external-arguments-getbyval                        1.1871+-0.0262     ?      1.2115+-0.0532        ? might be 1.0206x slower
   external-arguments-putbyval                        2.3017+-0.0862     ?      2.3415+-0.0963        ? might be 1.0173x slower
   fixed-typed-array-storage-var-index                1.2411+-0.0362            1.2270+-0.0146          might be 1.0115x faster
   fixed-typed-array-storage                          0.9250+-0.0546            0.9209+-0.0540        
   Float32Array-matrix-mult                           4.5177+-0.4356            4.3447+-0.0985          might be 1.0398x faster
   Float32Array-to-Float64Array-set                  53.7063+-2.3900     !     58.6246+-2.2263        ! definitely 1.0916x slower
   Float64Array-alloc-long-lived                     73.2679+-1.3301     ?     74.6581+-2.0964        ? might be 1.0190x slower
   Float64Array-to-Int16Array-set                    71.0888+-1.4861     ?     71.9082+-3.6463        ? might be 1.0115x slower
   fold-double-to-int                                13.6420+-0.1634     ?     13.6997+-0.2073        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.7786+-0.7109     ?     10.6461+-1.2013        ? might be 1.0887x slower
   fold-get-by-id-to-multi-get-by-offset             10.3299+-1.3725     ?     10.7474+-0.9842        ? might be 1.0404x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.0185+-0.9183     ?      9.0253+-1.0213        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.5566+-0.3838     ?      9.0320+-0.8652        ? might be 1.0556x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.3947+-0.5871            8.2530+-1.5747          might be 1.0172x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.7961+-0.7545     ?      5.4729+-1.1986        ? might be 1.1411x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.5172+-0.2950            9.4537+-0.1602        
   fold-put-by-id-to-multi-put-by-offset              9.7146+-0.8440            9.4176+-0.7776          might be 1.0315x faster
   fold-put-structure                                 6.4893+-1.2507     ^      4.2612+-0.6658        ^ definitely 1.5229x faster
   for-of-iterate-array-entries                       4.7381+-0.1075     ?      4.8727+-0.2248        ? might be 1.0284x slower
   for-of-iterate-array-keys                          3.9344+-0.0972            3.8389+-0.0452          might be 1.0249x faster
   for-of-iterate-array-values                        3.9410+-0.2119            3.8560+-0.0728          might be 1.0220x faster
   fround                                            19.6753+-0.5373     ?     20.1328+-0.6463        ? might be 1.0233x slower
   ftl-library-inlining-dataview                     82.9753+-3.6728     ?     83.9054+-2.0755        ? might be 1.0112x slower
   ftl-library-inlining                              73.6185+-15.6872          67.7896+-0.4844          might be 1.0860x faster
   function-dot-apply                                 2.3213+-0.0769            2.2841+-0.1536          might be 1.0163x faster
   function-test                                      3.4548+-0.0387            3.4384+-0.0437        
   function-with-eval                               102.7368+-4.2082     ?    109.3287+-6.8411        ? might be 1.0642x slower
   gcse-poly-get-less-obvious                        19.2189+-0.5118     ?     19.3571+-1.8349        ?
   gcse-poly-get                                     22.3671+-1.8464           21.0413+-1.0849          might be 1.0630x faster
   gcse                                               4.3295+-0.0631     ?      4.3997+-0.1152        ? might be 1.0162x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7799+-0.0428     ?      2.7862+-0.0492        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.0672+-0.0802            6.0299+-0.0257        
   get-by-id-chain-from-try-block                     7.0346+-1.1584     ?      7.1876+-1.2515        ? might be 1.0217x slower
   get-by-id-check-structure-elimination              5.1025+-0.0597     ?      5.1767+-0.1047        ? might be 1.0145x slower
   get-by-id-proto-or-self                           16.8044+-0.4984     ?     17.0758+-0.9206        ? might be 1.0162x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.9735+-0.0330     ?      2.9875+-0.0942        ?
   get-by-id-self-or-proto                           17.4693+-0.3841     ?     17.5945+-0.8000        ?
   get-by-val-out-of-bounds                           4.3525+-0.0396            4.3216+-0.0269        
   get_callee_monomorphic                             3.8104+-0.0914            3.7404+-0.1070          might be 1.0187x faster
   get_callee_polymorphic                             3.3983+-0.0409     ?      3.4240+-0.0449        ?
   getter-no-activation                               5.0280+-0.2043            4.9996+-0.2071        
   getter-richards                                  126.5514+-5.0754          125.3142+-8.3532        
   getter                                             6.1037+-0.7522            5.8583+-0.7657          might be 1.0419x faster
   global-var-const-infer-fire-from-opt               0.8864+-0.0766     ?      0.9025+-0.1010        ? might be 1.0182x slower
   global-var-const-infer                             0.9327+-0.1663            0.8776+-0.1262          might be 1.0628x faster
   HashMap-put-get-iterate-keys                      26.7270+-0.2394           26.3845+-0.3441          might be 1.0130x faster
   HashMap-put-get-iterate                           26.6857+-0.8649           26.2269+-0.2393          might be 1.0175x faster
   HashMap-string-put-get-iterate                    27.6351+-1.1639     ?     28.3949+-1.4772        ? might be 1.0275x slower
   hoist-make-rope                                   11.7032+-0.4957           11.4322+-0.7077          might be 1.0237x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.9434+-0.0244     ?      5.1082+-0.1913        ? might be 1.0333x slower
   hoist-poly-check-structure                         3.7525+-0.1205            3.7063+-0.0605          might be 1.0125x faster
   imul-double-only                                   8.0524+-0.6308     ?      8.6914+-0.7298        ? might be 1.0794x slower
   imul-int-only                                     10.0866+-0.6877            9.7439+-0.1015          might be 1.0352x faster
   imul-mixed                                         8.4558+-0.3558            8.3062+-0.3160          might be 1.0180x faster
   in-four-cases                                     18.8477+-0.1706           18.8097+-0.1639        
   in-one-case-false                                 10.3478+-0.5822           10.2462+-0.4444        
   in-one-case-true                                  10.3149+-0.5971            9.9530+-0.3789          might be 1.0364x faster
   in-two-cases                                      10.3026+-0.2076     ?     10.3893+-0.3899        ?
   indexed-properties-in-objects                      2.8722+-0.0200     ?      2.9012+-0.0296        ? might be 1.0101x slower
   infer-closure-const-then-mov-no-inline             3.7030+-0.0582     ?      3.7203+-0.0220        ?
   infer-closure-const-then-mov                      19.0613+-0.4527     !     19.9965+-0.3049        ! definitely 1.0491x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.9381+-1.5319     ?     14.6198+-1.6865        ? might be 1.0489x slower
   infer-closure-const-then-put-to-scope             23.1684+-1.0714           22.5965+-0.7065          might be 1.0253x faster
   infer-closure-const-then-reenter-no-inline   
                                                     64.8354+-2.6703     ?     68.7110+-2.0056        ? might be 1.0598x slower
   infer-closure-const-then-reenter                  22.7627+-1.3098           22.0184+-0.4474          might be 1.0338x faster
   infer-constant-global-property                    30.2413+-0.6219     ?     31.3655+-1.9600        ? might be 1.0372x slower
   infer-constant-property                            2.7338+-0.0338            2.7005+-0.0410          might be 1.0123x faster
   infer-one-time-closure-ten-vars                   13.9823+-1.5857           12.8832+-0.3508          might be 1.0853x faster
   infer-one-time-closure-two-vars                   12.7184+-0.8030     ?     12.9483+-1.5113        ? might be 1.0181x slower
   infer-one-time-closure                            12.7546+-0.8612           12.3940+-0.8597          might be 1.0291x faster
   infer-one-time-deep-closure                       22.5677+-1.0921     ?     22.6368+-1.0461        ?
   inline-arguments-access                            4.3881+-0.1181     ?      4.4320+-0.1947        ? might be 1.0100x slower
   inline-arguments-aliased-access                    4.4124+-0.1914     ?      4.4358+-0.1676        ?
   inline-arguments-local-escape                      4.5333+-0.1658     ?      4.6482+-0.1954        ? might be 1.0253x slower
   inline-get-scoped-var                              4.9157+-0.2304     ?      4.9491+-0.2022        ?
   inlined-put-by-id-transition                      10.5290+-0.3718     ?     10.6319+-0.2753        ?
   int-or-other-abs-then-get-by-val                   5.1048+-0.0653     ?      5.4281+-1.5671        ? might be 1.0633x slower
   int-or-other-abs-zero-then-get-by-val             17.6322+-0.9783     ?     18.0579+-0.9528        ? might be 1.0241x slower
   int-or-other-add-then-get-by-val                   4.2520+-0.0180     ?      4.3147+-0.1075        ? might be 1.0148x slower
   int-or-other-add                                   5.2796+-0.0407     ?      5.3128+-0.0436        ?
   int-or-other-div-then-get-by-val                   4.3512+-0.0477     ^      4.1003+-0.0694        ^ definitely 1.0612x faster
   int-or-other-max-then-get-by-val                   4.4143+-0.1078            4.2909+-0.1795          might be 1.0288x faster
   int-or-other-min-then-get-by-val                   4.4820+-0.0334     ?      4.5788+-0.2324        ? might be 1.0216x slower
   int-or-other-mod-then-get-by-val                   3.9096+-0.1232            3.8387+-0.0481          might be 1.0185x faster
   int-or-other-mul-then-get-by-val                   3.9926+-0.0343     !      4.0730+-0.0401        ! definitely 1.0201x slower
   int-or-other-neg-then-get-by-val                   4.6049+-0.0295     ^      4.4800+-0.0412        ^ definitely 1.0279x faster
   int-or-other-neg-zero-then-get-by-val             17.6616+-1.1421     ?     19.7504+-5.2604        ? might be 1.1183x slower
   int-or-other-sub-then-get-by-val                   4.3586+-0.1477            4.3472+-0.1371        
   int-or-other-sub                                   3.5364+-0.0825            3.4786+-0.0373          might be 1.0166x faster
   int-overflow-local                                 4.3724+-0.0390     ^      4.2587+-0.0516        ^ definitely 1.0267x faster
   Int16Array-alloc-long-lived                       49.9170+-1.0861     ?     51.1594+-1.7642        ? might be 1.0249x slower
   Int16Array-bubble-sort-with-byteLength            21.0540+-1.6300           20.4076+-0.8934          might be 1.0317x faster
   Int16Array-bubble-sort                            20.3346+-0.5616           20.0439+-0.2505          might be 1.0145x faster
   Int16Array-load-int-mul                            1.5027+-0.0336            1.4935+-0.0127        
   Int16Array-to-Int32Array-set                      58.2192+-2.7235           54.1738+-2.0750          might be 1.0747x faster
   Int32Array-alloc-large                            25.3748+-1.1682           24.3156+-0.4395          might be 1.0436x faster
   Int32Array-alloc-long-lived                       57.8029+-0.6679           56.7143+-1.7973          might be 1.0192x faster
   Int32Array-alloc                                   3.7260+-0.4853            3.3666+-0.1520          might be 1.1067x faster
   Int32Array-Int8Array-view-alloc                    7.3708+-0.7278     ?      8.2517+-1.0361        ? might be 1.1195x slower
   int52-spill                                        6.4272+-0.0653            6.4232+-0.1793        
   Int8Array-alloc-long-lived                        49.2013+-1.1154           47.6876+-1.5764          might be 1.0317x faster
   Int8Array-load-with-byteLength                     3.3510+-0.0402     ?      3.3988+-0.0980        ? might be 1.0143x slower
   Int8Array-load                                     3.4145+-0.0762     ?      3.4273+-0.1278        ?
   integer-divide                                    11.5982+-0.1105     ?     11.8169+-0.1322        ? might be 1.0189x slower
   integer-modulo                                     2.0350+-0.0634            1.9843+-0.1078          might be 1.0256x faster
   large-int-captured                                 5.6318+-0.0637     ?      5.6321+-0.1087        ?
   large-int-neg                                     16.6255+-0.6645     ?     16.9100+-1.5711        ? might be 1.0171x slower
   large-int                                         15.1376+-0.7961     ?     15.4848+-0.9153        ? might be 1.0229x slower
   logical-not                                        4.5947+-0.0784            4.5662+-0.0229        
   lots-of-fields                                    13.2408+-0.3255           12.9112+-0.2952          might be 1.0255x faster
   make-indexed-storage                               3.1700+-0.0332            3.0996+-0.1068          might be 1.0227x faster
   make-rope-cse                                      4.5473+-0.1045     ?      4.7963+-0.3416        ? might be 1.0548x slower
   marsaglia-larger-ints                             37.4924+-1.7759           35.9100+-0.6103          might be 1.0441x faster
   marsaglia-osr-entry                               23.8927+-1.3555           23.5030+-0.9250          might be 1.0166x faster
   max-boolean                                        2.4938+-0.0196     ^      2.4474+-0.0187        ^ definitely 1.0189x faster
   method-on-number                                  19.3274+-0.8310           18.8128+-0.1808          might be 1.0274x faster
   min-boolean                                        2.5236+-0.0389     ^      2.4587+-0.0251        ^ definitely 1.0264x faster
   minus-boolean-double                               3.1440+-0.0196     ?      3.1600+-0.0480        ?
   minus-boolean                                      2.3555+-0.0444     ?      2.3575+-0.0500        ?
   misc-strict-eq                                    38.5859+-2.9162           37.9749+-0.4353          might be 1.0161x faster
   mod-boolean-double                                10.9126+-0.1800     ?     11.0961+-0.2847        ? might be 1.0168x slower
   mod-boolean                                        7.8021+-0.0171     ?      7.8497+-0.1042        ?
   mul-boolean-double                                 3.7734+-0.1584     ?      3.7745+-0.1118        ?
   mul-boolean                                        2.9662+-0.1602            2.8886+-0.0412          might be 1.0269x faster
   neg-boolean                                        3.1723+-0.0678     ?      3.2105+-0.0458        ? might be 1.0120x slower
   negative-zero-divide                               0.3573+-0.0134            0.3425+-0.0132          might be 1.0431x faster
   negative-zero-modulo                               0.3560+-0.0245     ?      0.3605+-0.0270        ? might be 1.0126x slower
   negative-zero-negate                               0.3189+-0.0107     ?      0.3482+-0.0562        ? might be 1.0917x slower
   nested-function-parsing                           41.1888+-3.1395           39.7135+-1.0447          might be 1.0371x faster
   new-array-buffer-dead                              2.8392+-0.0270     !    121.7337+-3.3111        ! definitely 42.8768x slower
   new-array-buffer-push                              7.1953+-0.9157            6.9271+-0.7169          might be 1.0387x faster
   new-array-dead                                    12.5582+-0.3092     !    127.8342+-1.5779        ! definitely 10.1794x slower
   new-array-push                                     3.9990+-0.2541            3.9109+-0.1159          might be 1.0225x faster
   no-inline-constructor                            121.4169+-2.6498          120.9824+-2.7014        
   number-test                                        2.9949+-0.0257     ?      3.0103+-0.0375        ?
   object-closure-call                                5.6076+-0.2554            5.5565+-0.0332        
   object-test                                        3.1088+-0.0471     ?      3.1448+-0.0537        ? might be 1.0116x slower
   obvious-sink-pathology-taken                     146.7847+-2.7151     ?    147.9983+-1.8675        ?
   obvious-sink-pathology                           143.2619+-1.3271          140.9951+-3.9735          might be 1.0161x faster
   obviously-elidable-new-object                     35.7540+-1.5111     ?     36.2912+-2.0035        ? might be 1.0150x slower
   plus-boolean-arith                                 2.5621+-0.0551     ?      2.5654+-0.1839        ?
   plus-boolean-double                                3.1932+-0.0544     ?      3.2041+-0.0673        ?
   plus-boolean                                       2.4267+-0.0572            2.3871+-0.0322          might be 1.0166x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.3051+-0.0760            3.2828+-0.0726        
   poly-chain-access-different-prototypes             2.5964+-0.0174     ?      2.6277+-0.0252        ? might be 1.0121x slower
   poly-chain-access-simpler                          3.2758+-0.0335     ?      3.2818+-0.0394        ?
   poly-chain-access                                  2.5938+-0.0205     ?      2.6382+-0.1102        ? might be 1.0171x slower
   poly-stricteq                                     59.0343+-1.4007     !     65.3023+-3.0280        ! definitely 1.1062x slower
   polymorphic-array-call                             1.3825+-0.1781            1.2440+-0.1637          might be 1.1113x faster
   polymorphic-get-by-id                              3.1106+-0.0607     ?      3.4022+-0.7802        ? might be 1.0937x slower
   polymorphic-put-by-id                             29.3193+-1.8780           28.9190+-2.0671          might be 1.0138x faster
   polymorphic-structure                             15.3243+-1.3245     ?     15.4026+-1.0424        ?
   polyvariant-monomorphic-get-by-id                  9.2184+-1.0416            8.6405+-0.2385          might be 1.0669x faster
   proto-getter-access                               10.3285+-0.3673           10.1118+-0.1309          might be 1.0214x faster
   put-by-id-replace-and-transition                   8.7289+-0.2068            8.6681+-0.1453        
   put-by-id-slightly-polymorphic                     2.8683+-0.0522            2.8530+-0.0593        
   put-by-id                                         13.4035+-0.4483           13.3521+-0.4366        
   put-by-val-direct                                  0.5937+-0.0178     ?      0.6093+-0.0297        ? might be 1.0263x slower
   put-by-val-large-index-blank-indexing-type   
                                                      6.6741+-1.1944            6.0630+-0.7942          might be 1.1008x faster
   put-by-val-machine-int                             2.6305+-0.0894            2.6146+-0.0619        
   rare-osr-exit-on-local                            15.3990+-0.5260     ?     15.6399+-1.1191        ? might be 1.0156x slower
   register-pressure-from-osr                        22.7585+-1.5018           22.3313+-1.1095          might be 1.0191x faster
   setter                                             5.4877+-0.3434     ?      5.6445+-0.5879        ? might be 1.0286x slower
   simple-activation-demo                            25.2721+-0.8327           25.0826+-0.5371        
   simple-getter-access                              12.8327+-0.4529           12.7647+-0.2435        
   simple-poly-call-nested                            8.1982+-0.4903     ?      8.3055+-0.3390        ? might be 1.0131x slower
   simple-poly-call                                   1.3516+-0.0522            1.3103+-0.1023          might be 1.0315x faster
   sin-boolean                                       22.4128+-0.5318     ?     23.0806+-0.6513        ? might be 1.0298x slower
   singleton-scope                                   70.8450+-2.7607     ?     71.6053+-2.2988        ? might be 1.0107x slower
   sinkable-new-object-dag                           69.7823+-1.1565     ?     71.8888+-1.9130        ? might be 1.0302x slower
   sinkable-new-object-taken                         52.0329+-3.3793     ?     54.7684+-1.0352        ? might be 1.0526x slower
   sinkable-new-object                               39.9580+-2.1338           39.7411+-1.3710        
   slow-array-profile-convergence                     2.8483+-0.1049     ?      2.8709+-0.2152        ?
   slow-convergence                                   2.6794+-0.0497            2.6329+-0.0384          might be 1.0177x faster
   sorting-benchmark                                 23.4305+-1.2208     ?     25.1613+-1.3439        ? might be 1.0739x slower
   sparse-conditional                                 1.1304+-0.0344     ?      1.1391+-0.0184        ?
   splice-to-remove                                  16.9602+-0.1700     ?     17.1242+-0.8019        ?
   string-char-code-at                               17.0796+-1.1324           16.4781+-0.4985          might be 1.0365x faster
   string-concat-object                               2.4502+-0.2056            2.4108+-0.1022          might be 1.0163x faster
   string-concat-pair-object                          2.3395+-0.0796     ?      2.4056+-0.1733        ? might be 1.0283x slower
   string-concat-pair-simple                         11.1772+-0.3719     ?     12.3527+-2.4086        ? might be 1.1052x slower
   string-concat-simple                              12.3447+-1.3512           11.8796+-0.8426          might be 1.0392x faster
   string-cons-repeat                                 8.8935+-1.1760            8.2851+-1.2359          might be 1.0734x faster
   string-cons-tower                                  8.2625+-0.7777            7.6678+-0.2026          might be 1.0776x faster
   string-equality                                   17.7817+-0.3611     ?     18.2411+-1.4297        ? might be 1.0258x slower
   string-get-by-val-big-char                         7.0943+-0.0454            7.0897+-0.1184        
   string-get-by-val-out-of-bounds-insane             3.9092+-0.0767     ?      4.0006+-0.1226        ? might be 1.0234x slower
   string-get-by-val-out-of-bounds                    5.2295+-0.0572     ?      5.2490+-0.1080        ?
   string-get-by-val                                  3.2746+-0.1207     ?      3.3588+-0.0322        ? might be 1.0257x slower
   string-hash                                        2.0667+-0.0275     ?      2.0959+-0.0581        ? might be 1.0141x slower
   string-long-ident-equality                        15.0609+-0.8679           14.9898+-1.3349        
   string-out-of-bounds                              15.0720+-0.2245           14.9559+-0.2636        
   string-repeat-arith                               33.5910+-2.7638     ?     34.6403+-3.1525        ? might be 1.0312x slower
   string-sub                                        69.1126+-1.5594     ^     64.1733+-1.8003        ^ definitely 1.0770x faster
   string-test                                        2.9108+-0.0524     ?      2.9711+-0.0319        ? might be 1.0207x slower
   string-var-equality                               36.4413+-0.5895     ^     31.3715+-1.4722        ^ definitely 1.1616x faster
   structure-hoist-over-transitions                   2.5676+-0.0537            2.5213+-0.0310          might be 1.0183x faster
   substring-concat-weird                            38.2127+-0.4311     ?     39.0038+-1.6110        ? might be 1.0207x slower
   substring-concat                                  40.0088+-1.2149           39.9718+-0.8165        
   substring                                         46.2504+-1.5609           45.2668+-1.2940          might be 1.0217x faster
   switch-char-constant                               2.7387+-0.0455     ?      2.7822+-0.0349        ? might be 1.0159x slower
   switch-char                                        6.8620+-0.6755     ?      7.1594+-1.1016        ? might be 1.0433x slower
   switch-constant                                    8.0050+-0.1673            8.0016+-0.1512        
   switch-string-basic-big-var                       15.1333+-0.9805     ?     16.0505+-1.5391        ? might be 1.0606x slower
   switch-string-basic-big                           14.7081+-1.8213           14.7017+-1.6080        
   switch-string-basic-var                           14.1947+-0.1343     ?     15.6564+-2.3704        ? might be 1.1030x slower
   switch-string-basic                               13.7054+-1.6030           13.5348+-1.3468          might be 1.0126x faster
   switch-string-big-length-tower-var                20.8852+-2.0583           19.7520+-0.1739          might be 1.0574x faster
   switch-string-length-tower-var                    15.3053+-1.4212     ?     16.1348+-2.2584        ? might be 1.0542x slower
   switch-string-length-tower                        13.1481+-1.4378     ?     13.9646+-1.6948        ? might be 1.0621x slower
   switch-string-short                               13.3698+-1.6145     ?     13.4918+-1.6807        ?
   switch                                            11.9846+-0.1995     ?     12.0808+-0.2981        ?
   tear-off-arguments-simple                          3.4627+-0.2407            3.2891+-0.0445          might be 1.0528x faster
   tear-off-arguments                                 4.6152+-0.1830            4.5060+-0.0324          might be 1.0242x faster
   temporal-structure                                12.4388+-0.5578           12.3279+-0.2875        
   to-int32-boolean                                  13.7925+-0.2309           13.6628+-0.0844        
   try-catch-get-by-val-cloned-arguments             14.5413+-1.2881           14.4927+-1.0002        
   try-catch-get-by-val-direct-arguments              6.7329+-0.9435            6.6956+-0.8093        
   try-catch-get-by-val-scoped-arguments              7.5734+-0.3318     ?      7.9068+-0.8726        ? might be 1.0440x slower
   undefined-property-access                        356.8364+-4.8139          355.8890+-2.8337        
   undefined-test                                     3.0423+-0.0367     ?      3.0800+-0.0311        ? might be 1.0124x slower
   unprofiled-licm                                   23.1819+-0.8874           23.0412+-0.7322        
   varargs-call                                      15.8305+-0.2380     ?     16.1331+-0.9722        ? might be 1.0191x slower
   varargs-construct-inline                          23.5999+-1.5507           21.3925+-0.9935          might be 1.1032x faster
   varargs-construct                                 31.2273+-0.7111           30.8835+-0.2977          might be 1.0111x faster
   varargs-inline                                     9.7754+-0.6419     ?      9.8318+-0.3185        ?
   varargs-strict-mode                               10.5522+-1.2148     ?     10.8592+-0.4916        ? might be 1.0291x slower
   varargs                                           10.0625+-0.1239     !     10.8036+-0.4644        ! definitely 1.0737x slower
   weird-inlining-const-prop                          2.4537+-0.2576            2.3320+-0.1592          might be 1.0522x faster

   &lt;geometric&gt;                                        8.7334+-0.0144     !      8.9125+-0.0219        ! definitely 1.0205x slower

                                                        TipOfTree                  NoOSRDCE                                     
AsmBench:
   bigfib.cpp                                       490.0135+-2.2505     ?    492.9130+-2.1931        ?
   cray.c                                           429.0747+-1.7310          427.8221+-1.6274        
   dry.c                                            485.0880+-7.8442     ?    492.9141+-4.2137        ? might be 1.0161x slower
   FloatMM.c                                        728.0387+-2.6530          727.5149+-3.4194        
   gcc-loops.cpp                                   4283.1709+-19.8608    ?   4286.9799+-24.7956       ?
   n-body.c                                         982.3097+-4.3523     ?    985.6561+-4.5484        ?
   Quicksort.c                                      437.0391+-2.0391     ^    419.0662+-8.3587        ^ definitely 1.0429x faster
   stepanov_container.cpp                          3585.7257+-54.7078    ?   3595.7284+-14.5040       ?
   Towers.c                                         259.6992+-1.3211     ?    259.8148+-0.7186        ?

   &lt;geometric&gt;                                      795.1833+-2.2224          793.7521+-1.5852          might be 1.0018x faster

                                                        TipOfTree                  NoOSRDCE                                     
CompressionBench:
   huffman                                          361.3750+-2.9912     ?    400.8914+-101.3090      ? might be 1.1094x slower
   arithmetic-simple                                397.9807+-4.3965          397.1354+-2.6821        
   arithmetic-precise                               299.4740+-4.4754     ?    301.6952+-3.8244        ?
   arithmetic-complex-precise                       300.7039+-6.6830     ?    303.5737+-4.1738        ?
   arithmetic-precise-order-0                       452.9108+-83.7323         424.8458+-6.7030          might be 1.0661x faster
   arithmetic-precise-order-1                       331.4609+-9.4909          329.5554+-2.4654        
   arithmetic-precise-order-2                       364.2116+-4.8249          362.5679+-4.3831        
   arithmetic-simple-order-1                        423.8401+-5.4444          421.5473+-5.8142        
   arithmetic-simple-order-2                        471.0127+-2.7611          469.9637+-5.7358        
   lz-string                                        337.8441+-14.5046         329.3901+-9.8520          might be 1.0257x faster

   &lt;geometric&gt;                                      369.3337+-6.7885     ?    369.4656+-7.2690        ? might be 1.0004x slower

                                                        TipOfTree                  NoOSRDCE                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                                   63.9643+-0.2782     ?     64.2699+-0.2850        ? might be 1.0048x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086683</commentid>
    <comment_count>2</comment_count>
      <attachid>251132</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-19 15:32:07 -0700</bug_when>
    <thetext>Created attachment 251132
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086684</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-19 15:34:10 -0700</bug_when>
    <thetext>Attachment 251132 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGMovHintRemovalPhase.cpp:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086955</commentid>
    <comment_count>4</comment_count>
      <attachid>251132</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-20 17:13:39 -0700</bug_when>
    <thetext>Comment on attachment 251132
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087147</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 13:17:40 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183072</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251132</attachid>
            <date>2015-04-19 15:32:07 -0700</date>
            <delta_ts>2015-04-20 17:13:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32726</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyOTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE1LTA0LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92SGludCBzaG91bGQgYmUgYSBzdHJvbmcgdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZGlzYWJsZXMgYW55IERDRSB0aGF0
IGFzc3VtZXMgZXF1aXZhbGVuY2UgYmV0d2VlbiBERkcgSVIgdXNlcyBhbmQgYnl0ZWNvZGUgdXNl
cy4gRG9pbmcKKyAgICAgICAgc28gaXMgYSBtYWpvciBzdGVwIHRvd2FyZHMgYWxsb3dpbmcgbW9y
ZSBmYW5jeSBERkcgdHJhbnNmb3JtYXRpb25zIGFuZCBhbHNvIHByb2JhYmx5IGZpeGluZworICAg
ICAgICBzb21lIGJ1Z3MuCisgICAgICAgIAorICAgICAgICBKdXN0IG1ha2luZyBNb3ZIaW50IGEg
c3Ryb25nIHVzZSB3b3VsZCBhbHNvIGNvbXBsZXRlbHkgZGlzYWJsZSBEQ0UuIFNvIHdlIG1pdGln
YXRlIHRoaXMgYnkKKyAgICAgICAgaW50cm9kdWNpbmcgYSBNb3ZIaW50IHJlbW92YWwgcGhhc2Ug
dGhhdCBydW5zIGluIEZUTC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBzbGlnaHQgc2xv
d2Rvd24gb24gT2N0YW5lL2diZW11LCBidXQgaXQncyBiYXNpY2FsbHkgbmV1dHJhbCBvbiBzdWl0
ZSBhdmVyYWdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OmR1bXBJbkNv
bnRleHQpOgorICAgICAgICAqIGRmZy9ERkdEQ0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6RENFUGhhc2U6OmZpeHVwQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QpOgor
ICAgICAgICAqIGRmZy9ERkdFcG9jaC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OkVw
b2NoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHRXBvY2guaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkRGRzo6RXBvY2g6OkVwb2NoKToKKyAgICAgICAgKEpTQzo6REZHOjpFcG9jaDo6Zmlyc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OkVwb2NoOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpE
Rkc6OkVwb2NoOjpuZXh0KToKKyAgICAgICAgKEpTQzo6REZHOjpFcG9jaDo6YnVtcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6RXBvY2g6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpERkc6OkVw
b2NoOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6bWF5RXhpdCk6CisgICAgICAgICogZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhh
c2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtTW92SGludFJlbW92YWwp
OgorICAgICAgICAqIGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmg6IEFkZGVkLgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE1LTA0LTE5ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIE1ha2UgQnVpbHRpbiBmdW5jdGlvbnMg
bm9uIGNvbnN0cnVjdGlibGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgZGZnL0RGR0RvbWluYXRvcnMuY3BwCiAgICAgZGZnL0RGR0RyaXZlci5jcHAK
ICAgICBkZmcvREZHRWRnZS5jcHAKKyAgICBkZmcvREZHRXBvY2guY3BwCiAgICAgZGZnL0RGR0Zh
aWxlZEZpbmFsaXplci5jcHAKICAgICBkZmcvREZHRmluYWxpemVyLmNwcAogICAgIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcApAQCAtMTgwLDYgKzE4MSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAogICAgIGRmZy9E
RkdNYXlFeGl0LmNwcAogICAgIGRmZy9ERkdNaW5pZmllZE5vZGUuY3BwCisgICAgZGZnL0RGR01v
dkhpbnRSZW1vdmFsUGhhc2UuY3BwCiAgICAgZGZnL0RGR05haXZlRG9taW5hdG9ycy5jcHAKICAg
ICBkZmcvREZHTmF0dXJhbExvb3BzLmNwcAogICAgIGRmZy9ERkdOb2RlLmNwcApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxODI4NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTksNiArMzk5LDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdEb21pbmF0b3JzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdEcml2ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cZGZnXERGR0VkZ2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR0Vwb2NoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGYWls
ZWRGaW5hbGl6ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0Zp
bmFsaXplci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHRml4dXBQ
aGFzZS5jcHAiIC8+CkBAIC00MjQsNiArNDI1LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHTWF5RXhpdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHTWluaWZpZWROb2RlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdOYWl2ZURvbWluYXRvcnMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR05hdHVyYWxMb29wcy5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHTm9kZS5jcHAiIC8+CkBAIC0xMDc2LDYgKzEwNzgsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0VkZ2UuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdFZGdlRG9taW5hdGVzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdFcG9jaC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cZGZnXERGR0ZhaWxlZEZpbmFsaXplci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cZGZnXERGR0ZpbHRyYXRpb25SZXN1bHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGRmZ1xERkdGaW5hbGl6ZXIuaCIgLz4KQEAgLTExMTAsNiArMTExMyw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTWluaWZpZWRHcmFwaC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR01pbmlmaWVkSUQuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdNaW5pZmllZE5vZGUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTmFpdmVEb21pbmF0b3JzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTmF0dXJhbExvb3BzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHTm9kZS5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC00MTYsNiArNDE2LDEwIEBACiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFu
Y2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjg4NUUxMTE4
NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRl
Y29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGODkzQkRCMTkzNkUyM0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODkzQkRBMTkzNkUyM0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCAq
LzsgfTsKKwkJMEY4RjE0MzMxQURGMDkwMTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYxNDJGMUFERjA5MDEw
MEVENzkyQyAvKiBERkdFcG9jaC5jcHAgKi87IH07CisJCTBGOEYxNDM0MUFERjA5MDEwMEVENzky
QyAvKiBERkdFcG9jaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY4RjE0MzAxQURGMDkwMTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4RjE0MzUxQURGMDkwMTAw
RUQ3OTJDIC8qIERGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjE0MzExQURGMDkwMTAwRUQ3OTJDIC8qIERG
R01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwICovOyB9OworCQkwRjhGMTQzNjFBREYwOTAxMDBFRDc5
MkMgLyogREZHTW92SGludFJlbW92YWxQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjE0MzIxQURGMDkwMTAwRUQ3OTJDIC8qIERGR01vdkhp
bnRSZW1vdmFsUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjhGMkI5NTE3MkUwNEEwMDA3REJEQTUgLyogRlRMTGluay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMkI5MzE3MkUwNDlF
MDA3REJEQTUgLyogRlRMTGluay5jcHAgKi87IH07CiAJCTBGOEYyQjk2MTcyRTA0QTMwMDdEQkRB
NSAvKiBGVExMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjhGMkI5NDE3MkUwNDlFMDA3REJEQTUgLyogRlRMTGluay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOEYyQjk5MTcyRjA0RkYwMDdE
QkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOTcxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rl
c2lyZWRJZGVudGlmaWVycy5jcHAgKi87IH07CkBAIC0yMTM0LDYgKzIxMzgsMTAgQEAKIAkJMEY4
MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hEaXJlY3Rpb24uaDsgcGF0aCA9IGRmZy9E
RkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4ODVF
MTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlVXNlRGVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGODkzQkRBMTkzNkUyM0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVy
ZUFic3RyYWN0VmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhGMTQyRjFBREYwOTAxMDBFRDc5
MkMgLyogREZHRXBvY2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHRXBvY2guY3BwOyBwYXRoID0gZGZnL0RGR0Vwb2NoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY4RjE0MzAxQURGMDkwMTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Vwb2NoLmg7IHBhdGggPSBkZmcvREZHRXBv
Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4RjE0MzExQURGMDkwMTAwRUQ3
OTJDIC8qIERGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHTW92SGludFJlbW92YWxQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZH
TW92SGludFJlbW92YWxQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OEYxNDMyMUFERjA5MDEwMEVENzkyQyAvKiBERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01vdkhpbnRSZW1vdmFsUGhhc2UuaDsgcGF0
aCA9IGRmZy9ERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGOEYyQjkzMTcyRTA0OUUwMDdEQkRBNSAvKiBGVExMaW5rLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEZUTExpbmsuY3BwOyBwYXRoID0gZnRsL0ZUTExpbmsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5NDE3MkUwNDlFMDA3REJEQTUgLyogRlRMTGluay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExMaW5rLmg7IHBhdGggPSBmdGwvRlRMTGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5NzE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVz
aXJlZElkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRJZGVudGlm
aWVycy5jcHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ4ODQsNiArNDg5Miw4IEBACiAJCQkJMEY2NkUxNjkxNERG
M0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLywKIAkJCQlBN0Q5QTI5MTE3QTBCQzc0MDBFRTI2
MTggLyogREZHRWRnZURvbWluYXRlcy5oICovLAogCQkJCUE3OTg2RDU2MTdBMEJCMUUwMEE5NURE
MCAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovLAorCQkJCTBGOEYxNDJGMUFERjA5MDEwMEVE
NzkyQyAvKiBERkdFcG9jaC5jcHAgKi8sCisJCQkJMEY4RjE0MzAxQURGMDkwMTAwRUQ3OTJDIC8q
IERGR0Vwb2NoLmggKi8sCiAJCQkJQTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxl
ZEZpbmFsaXplci5jcHAgKi8sCiAJCQkJQTc4QTk3NkQxNzk3MzhCODAwOURGNzQ0IC8qIERGR0Zh
aWxlZEZpbmFsaXplci5oICovLAogCQkJCUE3QkZGM0JGMTc5ODY4OTQwMDAyRjQ2MiAvKiBERkdG
aWx0cmF0aW9uUmVzdWx0LmggKi8sCkBAIC00OTQzLDYgKzQ5NTMsOCBAQAogCQkJCTBGQjRCNTEw
MTZCM0E5NjQwMDNGNjk2QiAvKiBERkdNaW5pZmllZElELmggKi8sCiAJCQkJMEYyQkRDNEMxNTIy
ODE4MzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgKi8sCiAJCQkJMEYyQkRDM0UxNTIy
ODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5oICovLAorCQkJCTBGOEYxNDMxMUFERjA5
MDEwMEVENzkyQyAvKiBERkdNb3ZIaW50UmVtb3ZhbFBoYXNlLmNwcCAqLywKKwkJCQkwRjhGMTQz
MjFBREYwOTAxMDBFRDc5MkMgLyogREZHTW92SGludFJlbW92YWxQaGFzZS5oICovLAogCQkJCTBG
QzNDQ0ZBMTlBREE0MTAwMDZBQzcyQSAvKiBERkdOYWl2ZURvbWluYXRvcnMuY3BwICovLAogCQkJ
CTBGQzNDQ0ZCMTlBREE0MTAwMDZBQzcyQSAvKiBERkdOYWl2ZURvbWluYXRvcnMuaCAqLywKIAkJ
CQlBNzM3ODEwQTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCAqLywKQEAg
LTU2MzUsNiArNTY0Nyw3IEBACiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVj
b2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMzE3QTlDMjRFMDAzNEM3
MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2
NkVDMDE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY4RjE0MzYxQURGMDkwMTAwRUQ3OTJDIC8qIERGR01vdkhp
bnRSZW1vdmFsUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODg1RTExMTg0OUEzQkUwMEYx
RTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MDIzRUExNjEz
ODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUQw
RTE2RjVDRDAwQjM0NDYwIC8qIENhbGxEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNjQsNiAr
NjI3Nyw3IEBACiAJCQkJNjUzMDNENjQxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNEIxNEMxNkQ0M0UwRDAwMUNEQTVBIC8qIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzQxNEUx
QjYwMDAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGOEYxNDM0MUFERjA5MDEwMEVENzkyQyAvKiBERkdFcG9jaC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5ODIwNjExNkJGRTM4MzAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtp
bGxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLApAQCAtNzM0Myw2ICs3MzU3LDcgQEAKIAkJCQkwRkYw
NTRGOTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZhbHVlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGOEJERUExQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY4RjE0MzUxQURGMDkwMTAwRUQ3OTJDIC8qIERG
R01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIwQTNF
OTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
RDcxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTRW52aXJvbm1lbnRSZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZFM0M2MUMxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUubW0g
aW4gU291cmNlcyAqLywKQEAgLTc0ODIsNiArNzQ5Nyw3IEBACiAJCQkJQTczMEI2MTMxMjUwMDY4
RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDQ2OURFQzEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEYxNDMzMUFERjA5MDEwMEVENzkyQyAvKiBERkdFcG9j
aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFRDEwN0VDN0U3MDA2NTA0NDYgLyogU3Ry
aW5nUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkQ0REVGMTk4MzJERDMwMDdE
NEIxOSAvKiBUeXBlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzVGMjREMTJFNjc2NUIw
MDJCNTU1MyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkocmV2
aXNpb24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmln
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsOCArMTk2LDggQEAgdm9pZCBJbmxpbmVDYWxs
RnJhbWU6OmR1bXBJbkNvbnRleHQoUHJpbgogICAgIGVsc2UKICAgICAgICAgb3V0LnByaW50KCIs
IGtub3duIGNhbGxlZTogIiwgaW5Db250ZXh0KGNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCksIGNv
bnRleHQpKTsKICAgICBvdXQucHJpbnQoIiwgbnVtQXJncyt0aGlzID0gIiwgYXJndW1lbnRzLnNp
emUoKSk7Ci0gICAgb3V0LnByaW50KCIsIHN0YWNrIDwgbG9jIiwgVmlydHVhbFJlZ2lzdGVyKHN0
YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwotICAgIG91dC5wcmludCgiPiIpOworICAgIG91dC5wcmlu
dCgiLCBzdGFja09mZnNldCA9ICIsIHN0YWNrT2Zmc2V0KTsKKyAgICBvdXQucHJpbnQoIiAoIiwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoMCksICIgbWFwcyB0byAiLCB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbCgwKSArIHN0YWNrT2Zmc2V0LCAiKT4iKTsKIH0KIAogdm9pZCBJbmxpbmVDYWxsRnJh
bWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDIz
ICsxNDMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAg
Y2FzZSBNb3ZIaW50OiB7Ci0gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNoaWxkIGlz
IGRlYWQuIE1vdkhpbnQncyBjaGlsZCB3b3VsZCBvbmx5IGJlIGEgUGhhbnRvbSBvcgotICAgICAg
ICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhZCBqdXN0IGtpbGxlZCBpdC4KLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRvbSB8fCBub2RlLT5jaGlsZDEo
KS0+b3AoKSA9PSBDaGVjaykgewotICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERl
ZmF1bHRGbGFncyhab21iaWVIaW50KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQx
KCkgPSBFZGdlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNhc2UgWm9tYmllSGludDogewotICAgICAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBhc3N1bWUgdGhhdCBEQ0UgcnVucyBvbmx5IG9uY2UuCisgICAgICAgICAgICBj
YXNlIE1vdkhpbnQ6CisgICAgICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CisgICAgICAgICAgICAg
ICAgLy8gVGhlc2UgYXJlIG5vdCBraWxsYWJsZS4gKFRoZXkgb25jZSB3ZXJlLikKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmZsYWdzKCkgJiBO
b2RlSGFzVmFyQXJncykgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxk
SWR4ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElkeCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSAr
IG5vZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4KyspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDggKzExMiw2IEBAIFZlY3RvcjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBE
aXNhc3NlbWIKICAgICAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAg
ICAgICAgIE5vZGUqIGxhc3ROb2RlRm9yRGlzYXNzZW1ibHkgPSBibG9jay0+YXQoMCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWJsb2NrLT5hdChpKS0+d2lsbEhhdmVDb2RlR2VuT3JPU1IoKSAmJiAhT3B0aW9u
czo6c2hvd0FsbERGR05vZGVzKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgY3VycmVudExhYmVsOwogICAgICAgICAgICAgSGFz
aE1hcDxOb2RlKiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsPjo6aXRlcmF0b3IgaXRlciA9IG1fbGFi
ZWxGb3JOb2RlLmZpbmQoYmxvY2stPmF0KGkpKTsKICAgICAgICAgICAgIGlmIChpdGVyICE9IG1f
bGFiZWxGb3JOb2RlLmVuZCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdF
cG9jaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFcG9j
aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Vwb2No
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJERkdFcG9jaC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKKwordm9pZCBFcG9jaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIGlmICghKnRoaXMpCisgICAgICAgIG91dC5wcmludCgibm9uZSIpOworICAgIGVs
c2UKKyAgICAgICAgb3V0LnByaW50KG1fZXBvY2gpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRXBvY2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Vwb2NoLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Vwb2NoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0Vwb2NoX2gK
KyNkZWZpbmUgREZHRXBvY2hfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisv
LyBVdGlsaXR5IGNsYXNzIGZvciBlcG9jaC1iYXNlZCBhbmFseXNlcy4KKworY2xhc3MgRXBvY2gg
eworcHVibGljOgorICAgIEVwb2NoKCkKKyAgICAgICAgOiBtX2Vwb2NoKHNfbm9uZSkKKyAgICB7
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBFcG9jaCBmaXJzdCgpCisgICAgeworICAgICAgICBF
cG9jaCByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2Vwb2NoID0gc19maXJzdDsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2ggPT0gc19ub25lOworICAgIH0KKyAgICAKKyAg
ICBFcG9jaCBuZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEVwb2NoIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fZXBvY2ggPSBtX2Vwb2NoICsgMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgCisgICAgdm9pZCBidW1wKCkKKyAgICB7CisgICAgICAgICp0aGlzID0gbmV4
dCgpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXBvY2gmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2ggPT0gb3RoZXIubV9lcG9jaDsK
KyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVwb2NoJiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX25vbmUgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX2ZpcnN0ID0gMTsKKyAgICAKKyAgICB1bnNpZ25lZCBtX2Vwb2NoOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNl
bmRpZiAvLyBERkdFcG9jaF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkocmV2aXNpb24gMTgyODU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOSBAQCBwcml2YXRl
OgogYm9vbCBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKKyAgICAvLyBUaGlzIGlzIGEgY2FyZWZ1bGx5IGN1cmF0ZWQgbGlzdCBv
ZiBub2RlcyB0aGF0IGRlZmluaXRlbHkgZG8gbm90IGV4aXQuIFdlIHRyeSB0byBiZSB2ZXJ5Cisg
ICAgLy8gY29uc2VydmF0aXZlIHdoZW4gbWFpbnRhaW5pbmcgdGhpcyBsaXN0LCBiZWNhdXNlIGFk
ZGluZyBuZXcgbm9kZSB0eXBlcyB0byBpdCBkb2Vzbid0CisgICAgLy8gZ2VuZXJhbGx5IG1ha2Ug
dGhpbmdzIGEgbG90IGJldHRlciBidXQgaXQgbWlnaHQgaW50cm9kdWNlIGluc2FuZWx5IHN1YnRs
ZSBidWdzLgogICAgIGNhc2UgU2V0QXJndW1lbnQ6CiAgICAgY2FzZSBKU0NvbnN0YW50OgogICAg
IGNhc2UgRG91YmxlQ29uc3RhbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTW92SGludFJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCIKKyNpbmNsdWRlICJERkdFcG9jaC5oIgorI2lu
Y2x1ZGUgIkRGR0ZvckFsbEtpbGxzLmgiCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRl
ICJERkdJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdNYXlFeGl0LmgiCisjaW5jbHVkZSAi
REZHUGhhc2UuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT3BlcmFuZHNJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworbmFtZXNwYWNl
IHsKKworYm9vbCB2ZXJib3NlID0gZmFsc2U7CisKK2NsYXNzIE1vdkhpbnRSZW1vdmFsUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIE1vdkhpbnRSZW1vdmFsUGhhc2UoR3JhcGgm
IGdyYXBoKQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAiTW92SGludCByZW1vdmFsIikKKyAgICAg
ICAgLCBtX3N0YXRlKE9wZXJhbmRzTGlrZSwgZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVh
ZCkKKyAgICAgICAgLCBtX2NoYW5nZWQoZmFsc2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICBi
b29sIHJ1bigpCisgICAgeworICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0
YUxvZygiR3JhcGggYmVmb3JlIE1vdkhpbnQgcmVtb3ZhbDpcbiIpOworICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpCisgICAgICAgICAgICBo
YW5kbGVCbG9jayhibG9jayk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2Nr
KQorICAgIHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJIYW5k
aW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuIik7CisgICAgICAgIAorICAgICAg
ICAvLyBBIE1vdkhpbnQgaXMgdW5uZWNlc3NhcnkgaWYgdGhlIGxvY2FsIGRpZXMgYmVmb3JlIGl0
IGlzIHVzZWQuIFdlIGFuc3dlciB0aGlzIHF1ZXN0aW9uIGJ5CisgICAgICAgIC8vIG1haW50YWlu
aW5nIHRoZSBjdXJyZW50IGV4aXQgZXBvY2gsIGFuZCBhc3NvY2lhdGluZyBhbiBlcG9jaCB3aXRo
IGVhY2ggbG9jYWwuIFdoZW4gYQorICAgICAgICAvLyBsb2NhbCBkaWVzLCBpdCBnZXRzIHRoZSBj
dXJyZW50IGV4aXQgZXBvY2guIElmIGEgTW92SGludCBvY2N1cnMgaW4gdGhlIHNhbWUgZXBvY2gg
YXMgaXRzCisgICAgICAgIC8vIGxvY2FsLCB0aGVuIGl0IG1lYW5zIHRoZXJlIHdhcyBubyBleGl0
IGJldHdlZW4gdGhlIGxvY2FsJ3MgZGVhdGggYW5kIHRoZSBNb3ZIaW50IC0gaS5lLgorICAgICAg
ICAvLyB0aGUgTW92SGludCBpcyB1bm5lY2Vzc2FyeS4KKyAgICAgICAgCisgICAgICAgIEVwb2No
IGN1cnJlbnRFcG9jaCA9IEVwb2NoOjpmaXJzdCgpOworICAgICAgICAKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9zdGF0ZS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZWcgPSBtX3N0YXRlLnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGkpOworICAgICAg
ICAgICAgaWYgKG1fZ3JhcGguaXNMaXZlSW5CeXRlY29kZShyZWcsIGJsb2NrLT5sYXN0KCktPm9y
aWdpbi5mb3JFeGl0KSkKKyAgICAgICAgICAgICAgICBtX3N0YXRlW2ldID0gY3VycmVudEVwb2No
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fc3RhdGVbaV0gPSBFcG9jaCgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
IGRhdGFMb2coIiAgICBMb2NhbHM6ICIsIG1fc3RhdGUsICJcbiIpOworICAgICAgICAKKyAgICAg
ICAgLy8gQXNzdW1lIHRoYXQgYmxvY2tzIGFmdGVyIHVzIGV4aXQuCisgICAgICAgIGN1cnJlbnRF
cG9jaC5idW1wKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9
IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChub2RlSW5kZXgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBNb3ZIaW50KSB7CisgICAgICAgICAgICAgICAgRXBvY2ggbG9jYWxFcG9jaCA9
IG1fc3RhdGUub3BlcmFuZChub2RlLT51bmxpbmtlZExvY2FsKCkpOworICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQXQgIiwgbm9k
ZSwgIjogY3VycmVudCA9ICIsIGN1cnJlbnRFcG9jaCwgIiwgbG9jYWwgPSAiLCBsb2NhbEVwb2No
LCAiXG4iKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxvY2FsRXBvY2ggfHwgbG9jYWxFcG9jaCA9
PSBjdXJyZW50RXBvY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZh
dWx0RmxhZ3MoWm9tYmllSGludCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgp
ID0gRWRnZSgpOworICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3N0YXRlLm9wZXJhbmQobm9kZS0+dW5saW5r
ZWRMb2NhbCgpKSA9IEVwb2NoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChtYXlFeGl0KG1fZ3JhcGgsIG5vZGUpKQorICAgICAgICAgICAgICAgIGN1cnJl
bnRFcG9jaC5idW1wKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChub2RlSW5kZXgp
IHsKKyAgICAgICAgICAgICAgICBmb3JBbGxLaWxsZWRPcGVyYW5kcygKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgYmxvY2stPmF0KG5vZGVJbmRleCAtIDEpLT5vcmlnaW4uZm9yRXhpdCwg
bm9kZSwKKyAgICAgICAgICAgICAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgYml0IHNsb3BweSAt
IGl0IG1pZ2h0IGNsYWltIHRvIGtpbGwgYSBsb2NhbCBldmVuIGlmCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpdCdzIHN0aWxsIGxpdmUgYWZ0ZXIuIFdlIG5lZWQgdG8gcHJvdGVjdCBhZ2Fp
bnN0IHRoYXQuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFtX3N0YXRlLm9wZXJhbmQo
cmVnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBLaWxsZWQgb3BlcmFuZCBhdCAiLCBu
b2RlLCAiOiAiLCByZWcsICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5v
cGVyYW5kKHJlZykgPSBjdXJyZW50RXBvY2g7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIE9wZXJhbmRzPEVwb2NoPiBt
X3N0YXRlOworICAgIGJvb2wgbV9jaGFuZ2VkOworfTsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisgICAgCitib29sIHBlcmZvcm1Nb3ZIaW50UmVtb3ZhbChHcmFwaCYgZ3JhcGgpCit7Cisg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBNb3ZIaW50IFJlbW92YWwgUGhh
c2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8TW92SGludFJlbW92YWxQaGFzZT4oZ3JhcGgpOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50UmVtb3ZhbFBo
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNb3ZIaW50
UmVtb3ZhbFBoYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01vdkhpbnRSZW1vdmFsUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
REZHTW92SGludFJlbW92YWxQaGFzZV9oCisjZGVmaW5lIERGR01vdkhpbnRSZW1vdmFsUGhhc2Vf
aAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKKworY2xhc3MgR3JhcGg7CisKKy8vIENsZWFucyB1cCB1bm5lY2Vzc2FyeSBNb3ZIaW50cy4g
QSBNb3ZIaW50IGlzIG5lY2Vzc2FyeSBpZiB0aGUgdmFyaWFibGUgZGllcyBiZWZvcmUgdGhlcmUg
aXMgYW4KKy8vIGV4aXQuCisKK2Jvb2wgcGVyZm9ybU1vdkhpbnRSZW1vdmFsKEdyYXBoJik7CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CisjZW5kaWYgLy8gREZHTW92SGludFJlbW92YWxQaGFzZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxODI4NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYz
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEtpbGxTdGFj
aywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldFN0YWNrLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBcCi0gICAgbWFjcm8oTW92SGludCwgMCkgXAotICAgIG1hY3JvKFpvbWJpZUhpbnQs
IDApIFwKKyAgICBtYWNybyhNb3ZIaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
Wm9tYmllSGludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b20sIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhIYXJkUGhhbnRvbSwgTm9kZU11c3RHZW5lcmF0ZSkg
LyogTGlrZSBQaGFudG9tLCBidXQgd2UgbmV2ZXIgcmVtb3ZlIGFueSBvZiBpdHMgY2hpbGRyZW4u
ICovIFwKICAgICBtYWNybyhDaGVjaywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVXNlZCBpZiB3ZSB3
YW50IGp1c3QgYSB0eXBlIGNoZWNrIGJ1dCBub3QgbGl2ZW5lc3MuIE5vbi1jaGVja2luZyB1c2Vz
IHdpbGwgYmUgcmVtb3ZlZC4gKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJERkdM
SUNNUGhhc2UuaCIKICNpbmNsdWRlICJERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCIKICNpbmNs
dWRlICJERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIgorI2luY2x1ZGUgIkRGR01vdkhp
bnRSZW1vdmFsUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1Bo
YXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCIKICNpbmNs
dWRlICJERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmgiCkBAIC0zOTIsNiArMzkzLDgg
QEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBwZXJm
b3JtQ0ZBKGRmZyk7CiAgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUZUTE9TUkV4aXRMaXZl
bmVzcygpKQogICAgICAgICAgICAgcGVyZm9ybVJlc3VycmVjdGlvbkZvclZhbGlkYXRpb24oZGZn
KTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmVuYWJsZU1vdkhpbnRSZW1vdmFsKCkpCisgICAgICAg
ICAgICBwZXJmb3JtTW92SGludFJlbW92YWwoZGZnKTsKICAgICAgICAgcGVyZm9ybURDRShkZmcp
OyAvLyBXZSByZWx5IG9uIHRoaXMgdG8ga2lsbCBkZWFkIGNvZGUgdGhhdCB3b24ndCBiZSByZWNv
Z25pemVkIGFzIGRlYWQgYnkgTExWTS4KICAgICAgICAgcGVyZm9ybVN0YWNrTGF5b3V0KGRmZyk7
CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKGRmZyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDE4Mjg1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjEsOSArMTkyMSwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCi0gICAgY2FzZSBNb3ZIaW50OgorICAgIGNhc2UgTW92SGludDogeworICAgICAgICBjb21w
aWxlTW92SGludChtX2N1cnJlbnROb2RlKTsKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBab21iaWVIaW50OiB7Ci0gICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7Cisg
ICAgICAgIHJlY29yZFNldExvY2FsKG1fY3VycmVudE5vZGUtPnVubGlua2VkTG9jYWwoKSwgVmly
dHVhbFJlZ2lzdGVyKCksIERhdGFGb3JtYXREZWFkKTsKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE4Mjg1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDI5LDMxICsxNDI5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJl
bnRCbG9jawogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSA9IG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgbV9sYXN0R2VuZXJhdGVkTm9kZSA9IG1fY3Vy
cmVudE5vZGUtPm9wKCk7CiAgICAgICAgIGlmICghbV9jdXJyZW50Tm9kZS0+c2hvdWxkR2VuZXJh
dGUoKSkgewotICAgICAgICAgICAgc3dpdGNoIChtX2N1cnJlbnROb2RlLT5vcCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgICAgICBpZiAoYmVsb25nc0luTWluaWZp
ZWRHcmFwaChtX2N1cnJlbnROb2RlLT5vcCgpKSkKICAgICAgICAgICAgICAgICBtX21pbmlmaWVk
R3JhcGgtPmFwcGVuZChNaW5pZmllZE5vZGU6OmZyb21Ob2RlKG1fY3VycmVudE5vZGUpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
U2V0TG9jYWw6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNh
c2UgTW92SGludDoKLSAgICAgICAgICAgICAgICBjb21waWxlTW92SGludChtX2N1cnJlbnROb2Rl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhc2UgWm9tYmllSGludDogewotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG1fY3Vy
cmVudE5vZGUtPnVubGlua2VkTG9jYWwoKSwgVmlydHVhbFJlZ2lzdGVyKCksIERhdGFGb3JtYXRE
ZWFkKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpZiAoYmVsb25nc0luTWluaWZpZWRHcmFwaCht
X2N1cnJlbnROb2RlLT5vcCgpKSkKLSAgICAgICAgICAgICAgICAgICAgbV9taW5pZmllZEdyYXBo
LT5hcHBlbmQoTWluaWZpZWROb2RlOjpmcm9tTm9kZShtX2N1cnJlbnROb2RlKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKICAg
ICAgICAgICAgICAgICBkYXRhTG9nRigKICAgICAgICAgICAgICAgICAgICAgIlNwZWN1bGF0aXZl
SklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXgiLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTgyODU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODQsNiArMTg0LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7
CiAgICAgdih1bnNpZ25lZCwgZnJlcXVlbnRDYWxsVGhyZXNob2xkLCAyLCBudWxscHRyKSBcCiAg
ICAgdihkb3VibGUsIG1pbmltdW1DYWxsVG9Lbm93blJhdGUsIDAuNTEsIG51bGxwdHIpIFwKICAg
ICB2KGJvb2wsIG9wdGltaXplTmF0aXZlQ2FsbHMsIGZhbHNlLCBudWxscHRyKSBcCisgICAgdihi
b29sLCBlbmFibGVNb3ZIaW50UmVtb3ZhbCwgdHJ1ZSwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwg
ZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcsIHRydWUsIG51bGxwdHIpIFwKICAgICBcCiAg
ICAgdihib29sLCBlbmFibGVDb25jdXJyZW50SklULCB0cnVlLCAiYWxsb3dzIHRoZSBERkcgLyBG
VEwgY29tcGlsYXRpb24gaW4gdGhyZWFkcyBvdGhlciB0aGFuIHRoZSBleGVjdXRpbmcgSlMgdGhy
ZWFkIikgXAo=
</data>
<flag name="review"
          id="275930"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>