<?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>154151</bug_id>
          
          <creation_ts>2016-02-11 20:19:41 -0800</creation_ts>
          <short_desc>[JSC] On x86, improve the selection of which value are selected for the UseDef part of commutative operations</short_desc>
          <delta_ts>2016-02-12 14:32:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1164000</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-11 20:19:41 -0800</bug_when>
    <thetext>[JSC] On x86, improve the selection of which value are selected for the UseDef part of commutative operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164007</commentid>
    <comment_count>1</comment_count>
      <attachid>271129</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-11 20:49:43 -0800</bug_when>
    <thetext>Created attachment 271129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164008</commentid>
    <comment_count>2</comment_count>
      <attachid>271130</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-11 20:55:19 -0800</bug_when>
    <thetext>Created attachment 271130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164009</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-11 20:57:18 -0800</bug_when>
    <thetext>Attachment 271130 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:7512:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7516:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7525:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7529:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7555:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7559:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7568:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7572:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7583:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7599:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7599:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7600:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7614:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7630:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7630:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:7631:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8107:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8116:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8120:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8146:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8150:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8159:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:8163:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
Total errors found: 24 in 18 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>1164020</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-11 21:34:16 -0800</bug_when>
    <thetext>                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            4.9807+-0.3910     ?      5.1310+-0.5237        ? might be 1.0302x slower
   3d-morph                                           5.6145+-0.7113            5.5343+-0.3501          might be 1.0145x faster
   3d-raytrace                                        5.5520+-0.1096     ?      5.6379+-0.0959        ? might be 1.0155x slower
   access-binary-trees                                2.1312+-0.0934     ?      2.1907+-0.0996        ? might be 1.0279x slower
   access-fannkuch                                    6.0688+-0.1713            5.9970+-0.0450          might be 1.0120x faster
   access-nbody                                       2.8165+-0.1189            2.6761+-0.0542          might be 1.0525x faster
   access-nsieve                                      3.3240+-0.3803     ?      3.4362+-0.6464        ? might be 1.0337x slower
   bitops-3bit-bits-in-byte                           1.1750+-0.0191     ?      1.2067+-0.0734        ? might be 1.0270x slower
   bitops-bits-in-byte                                3.2972+-0.2676            3.2783+-0.1430        
   bitops-bitwise-and                                 2.1758+-0.3842            2.0399+-0.0323          might be 1.0666x faster
   bitops-nsieve-bits                                 3.0468+-0.0648     ?      3.1505+-0.4272        ? might be 1.0340x slower
   controlflow-recursive                              2.3895+-0.0360            2.3827+-0.0854        
   crypto-aes                                         4.1085+-0.0824            4.1005+-0.0300        
   crypto-md5                                         2.6155+-0.1184     ?      2.6743+-0.0902        ? might be 1.0225x slower
   crypto-sha1                                        2.3057+-0.0525     ?      2.3200+-0.0430        ?
   date-format-tofte                                  7.1667+-0.3967            7.0256+-0.5552          might be 1.0201x faster
   date-format-xparb                                  4.7774+-0.3503     ?      4.9822+-0.6569        ? might be 1.0429x slower
   math-cordic                                        3.0025+-0.0117     ?      3.0117+-0.0760        ?
   math-partial-sums                                  5.2362+-0.4526            4.9336+-0.0487          might be 1.0613x faster
   math-spectral-norm                                 2.1485+-0.1867            2.0172+-0.0545          might be 1.0651x faster
   regexp-dna                                         6.4863+-0.6913            6.3231+-0.5293          might be 1.0258x faster
   string-base64                                      4.6309+-0.1672     ?      4.9260+-0.7500        ? might be 1.0637x slower
   string-fasta                                       6.1742+-0.5841            5.9218+-0.1762          might be 1.0426x faster
   string-tagcloud                                    8.2081+-0.1182     ?      8.3020+-0.1040        ? might be 1.0114x slower
   string-unpack-code                                19.2466+-0.2708     ?     20.2353+-2.4593        ? might be 1.0514x slower
   string-validate-input                              4.4363+-0.2171            4.3779+-0.1600          might be 1.0133x faster

   &lt;arithmetic&gt;                                       4.7352+-0.0616     ?      4.7620+-0.1431        ? might be 1.0057x slower

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                          859.9249+-23.7331         834.9955+-13.4516         might be 1.0299x faster
   3d-morph                                         608.1065+-0.6311     ?    612.3118+-7.5851        ?
   3d-raytrace                                      642.3957+-5.6464     ?    643.7234+-14.1999       ?
   access-binary-trees                              859.9940+-9.6951          854.5524+-4.3282        
   access-fannkuch                                  297.1360+-46.3517    ?    306.9773+-43.2358       ? might be 1.0331x slower
   access-nbody                                     704.2305+-3.0817     ^    529.6432+-5.2786        ^ definitely 1.3296x faster
   access-nsieve                                    364.4804+-23.8780         352.2651+-2.9053          might be 1.0347x faster
   bitops-3bit-bits-in-byte                          31.3505+-0.6331     ?     31.7724+-0.5952        ? might be 1.0135x slower
   bitops-bits-in-byte                              100.0665+-7.6215           94.0323+-5.4902          might be 1.0642x faster
   bitops-nsieve-bits                               411.5748+-6.0209     ^    401.3955+-4.0279        ^ definitely 1.0254x faster
   controlflow-recursive                            463.1362+-7.8059     ?    466.9354+-2.2785        ?
   crypto-aes                                       675.9106+-5.7451          671.1015+-5.2273        
   crypto-md5                                       606.9241+-17.4303         601.5291+-3.4836        
   crypto-sha1                                      760.4535+-8.1912          756.0695+-5.5658        
   date-format-tofte                                586.4337+-21.9596         581.2687+-4.3826        
   date-format-xparb                                677.7083+-3.9509     ?    677.9825+-11.3665       ?
   hash-map                                         158.2751+-2.7577          154.9199+-3.3136          might be 1.0217x faster
   math-cordic                                      469.9202+-7.0700     !    537.7718+-10.7689       ! definitely 1.1444x slower
   math-partial-sums                                443.0925+-6.8684     ^    424.0950+-3.0523        ^ definitely 1.0448x faster
   math-spectral-norm                               781.2426+-11.9736    ^    568.1845+-1.3451        ^ definitely 1.3750x faster
   string-base64                                    375.2461+-3.2254          372.9837+-1.7681        
   string-fasta                                     366.4617+-11.3853         359.8982+-3.3985          might be 1.0182x faster
   string-tagcloud                                  179.5907+-1.7535          179.3361+-1.7787        

   &lt;geometric&gt;                                      406.7255+-4.6155     ^    394.8478+-1.7041        ^ definitely 1.0301x faster

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            38.3080+-0.5236     ?     38.7747+-0.0985        ? might be 1.0122x slower
   deltablue                                         53.5134+-1.7187           52.1210+-3.5557          might be 1.0267x faster
   earley-boyer                                      41.3729+-0.6301           41.2130+-0.4564        
   raytrace                                          21.1843+-0.3867     ?     21.5524+-0.5742        ? might be 1.0174x slower
   regexp                                            64.9052+-2.4526           63.5829+-0.8795          might be 1.0208x faster
   richards                                          41.8108+-0.1672     ?     42.7329+-2.3884        ? might be 1.0221x slower
   splay                                             33.8207+-2.9171           32.7829+-0.5352          might be 1.0317x faster

   &lt;geometric&gt;                                       40.0291+-0.5147           39.8546+-0.5622          might be 1.0044x faster

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.16353+-0.00551    ?     0.16587+-0.00119       ? might be 1.0143x slower
   decrypt                                           2.90342+-0.00983    ?     2.90354+-0.01409       ?
   deltablue                                x2       0.14188+-0.00191          0.13994+-0.00292         might be 1.0139x faster
   earley                                            0.29170+-0.00404          0.29037+-0.00332       
   boyer                                             4.83234+-0.23306          4.81827+-0.28100       
   navier-stokes                            x2       5.06262+-0.00369    ^     5.02861+-0.02814       ^ definitely 1.0068x faster
   raytrace                                 x2       0.92376+-0.00730    ^     0.90786+-0.00469       ^ definitely 1.0175x faster
   richards                                 x2       0.08408+-0.00176          0.08312+-0.00158         might be 1.0115x faster
   splay                                    x2       0.34874+-0.00444    ?     0.34985+-0.00467       ?
   regexp                                   x2      25.61157+-0.30929    ?    25.88974+-0.74449       ? might be 1.0109x slower
   pdfjs                                    x2      38.42483+-0.27337    ?    38.47841+-0.27644       ?
   mandreel                                 x2      45.11808+-0.40494         44.53033+-0.51351         might be 1.0132x faster
   gbemu                                    x2      25.69402+-0.91761         25.39295+-0.31535         might be 1.0119x faster
   closure                                           0.57951+-0.00352          0.57719+-0.00627       
   jquery                                            7.60857+-0.08635          7.51081+-0.07659         might be 1.0130x faster
   box2d                                    x2       9.59004+-0.36357          9.40430+-0.17040         might be 1.0198x faster
   zlib                                     x2     398.45152+-7.95789        387.39514+-10.17527        might be 1.0285x faster
   typescript                               x2     670.43469+-6.56461    ?   674.14691+-16.07428      ?

   &lt;geometric&gt;                                       5.40296+-0.03868          5.36487+-0.02317         might be 1.0071x faster

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                           96.560+-1.149      ?      97.470+-4.044         ?
   audio-beat-detection                               52.785+-1.172      ^      46.641+-2.125         ^ definitely 1.1317x faster
   audio-dft                                          98.918+-1.551      ?      98.919+-0.889         ?
   audio-fft                                          43.882+-2.536      ^      35.610+-0.068         ^ definitely 1.2323x faster
   audio-oscillator                                   50.038+-3.190      ?      50.964+-3.232         ? might be 1.0185x slower
   imaging-darkroom                                   63.140+-0.175      ^      61.273+-0.961         ^ definitely 1.0305x faster
   imaging-desaturate                                 45.268+-0.095      ?      46.139+-1.038         ? might be 1.0192x slower
   imaging-gaussian-blur                              71.131+-1.371      ?      71.547+-0.658         ?
   json-parse-financial                               38.203+-3.073             37.659+-1.343           might be 1.0144x faster
   json-stringify-tinderbox                           23.943+-2.363             23.566+-0.478           might be 1.0160x faster
   stanford-crypto-aes                                41.649+-0.501      ?      42.465+-4.439         ? might be 1.0196x slower
   stanford-crypto-ccm                                37.482+-1.169      ?      39.173+-2.410         ? might be 1.0451x slower
   stanford-crypto-pbkdf2                            102.549+-0.583      ?     103.831+-0.866         ? might be 1.0125x slower
   stanford-crypto-sha256-iterative                   39.140+-0.400      ?      39.473+-0.622         ?

   &lt;arithmetic&gt;                                       57.478+-0.368             56.767+-0.454           might be 1.0125x faster

                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       455.7532+-2.8219          446.5265+-14.8294         might be 1.0207x faster
   cray.c                                           391.1835+-5.9553     ^    376.1931+-3.6907        ^ definitely 1.0398x faster
   dry.c                                            431.1630+-12.6541    ?    484.8128+-111.1190      ? might be 1.1244x slower
   FloatMM.c                                        737.8479+-6.6793          722.5731+-15.2301         might be 1.0211x faster
   gcc-loops.cpp                                   3678.4009+-10.9651    ?   3685.7400+-8.2060        ?
   n-body.c                                         895.2535+-6.3906     ^    829.7021+-3.5961        ^ definitely 1.0790x faster
   Quicksort.c                                      422.0996+-4.7730          412.1368+-15.3854         might be 1.0242x faster
   stepanov_container.cpp                          3392.2217+-50.0440        3363.9493+-25.7228       
   Towers.c                                         270.5571+-3.4450     ?    277.9387+-6.7250        ? might be 1.0273x slower

   &lt;geometric&gt;                                      746.9036+-3.5820          742.7479+-14.9086         might be 1.0056x faster

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                           33.8490+-0.9527           33.6009+-0.6666        
   arithmetic-simple                                270.5825+-4.7837          269.4107+-2.3910        
   arithmetic-precise                               249.8232+-4.0015     ?    252.3221+-3.8757        ? might be 1.0100x slower
   arithmetic-complex-precise                       249.8817+-1.8363     ?    252.7509+-3.6428        ? might be 1.0115x slower
   arithmetic-precise-order-0                       273.3307+-3.2085     ?    274.0517+-4.4966        ?
   arithmetic-precise-order-1                       310.1912+-8.6248          308.2789+-1.8559        
   arithmetic-precise-order-2                       352.7737+-8.1991     ?    354.0013+-3.9566        ?
   arithmetic-simple-order-1                        317.4145+-1.9266     ?    318.5526+-2.1949        ?
   arithmetic-simple-order-2                        366.1655+-3.2764     ?    367.9578+-4.4014        ?
   lz-string                                        333.1664+-8.6698     ?    340.1069+-23.7490       ? might be 1.0208x slower

   &lt;geometric&gt;                                      241.0336+-1.2623     ?    241.9587+-1.6997        ? might be 1.0038x slower

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                                   49.4459+-0.0983           49.1259+-0.2833          might be 1.0065x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164022</commentid>
    <comment_count>5</comment_count>
      <attachid>271130</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-11 21:58:09 -0800</bug_when>
    <thetext>Comment on attachment 271130
Patch

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

&gt; Source/JavaScriptCore/b3/B3CheckSpecial.cpp:133
&gt; +bool CheckSpecial::shouldTryAliasingDef(Inst&amp; inst, unsigned&amp; defIndex)

Nit: this could return Option&lt;unsigned&gt; instead of returning bool and taking an unsigned ref.

&gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1364
&gt; +            if (range.last - range.first &lt;= 1 &amp;&amp; range.count &gt; range.admitStackCount)

Is this sound for the case that you have a self loop and a use *just before* a def?  That&apos;s not super likely and the Tmp would have to be live all the way to the root block I guess, but it seems like that might be a bit weak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164030</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-11 23:01:58 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 271130 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271130&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3CheckSpecial.cpp:133
&gt; &gt; +bool CheckSpecial::shouldTryAliasingDef(Inst&amp; inst, unsigned&amp; defIndex)
&gt; 
&gt; Nit: this could return Option&lt;unsigned&gt; instead of returning bool and taking
&gt; an unsigned ref.

Good point, that&apos;s gonna be cleaner.

&gt; &gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1364
&gt; &gt; +            if (range.last - range.first &lt;= 1 &amp;&amp; range.count &gt; range.admitStackCount)
&gt; 
&gt; Is this sound for the case that you have a self loop and a use *just before*
&gt; a def?  That&apos;s not super likely and the Tmp would have to be live all the
&gt; way to the root block I guess, but it seems like that might be a bit weak.

Do you have a suggestion? The reason for this counter was that it is super cheap and only run once. I could have code to clone the HashSet and prune it based on the Liveness when we get there but that seems like extra complication for handling undefined behavior.

I would say that is still unspillable.
The Tmp would have to be live on entry. Since there are no Def on entry, there are no point to spill from.

Or am I misunderstanding the case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164128</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-12 06:05:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 271130 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=271130&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3CheckSpecial.cpp:133
&gt; &gt; &gt; +bool CheckSpecial::shouldTryAliasingDef(Inst&amp; inst, unsigned&amp; defIndex)
&gt; &gt; 
&gt; &gt; Nit: this could return Option&lt;unsigned&gt; instead of returning bool and taking
&gt; &gt; an unsigned ref.
&gt; 
&gt; Good point, that&apos;s gonna be cleaner.
&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/air/AirIteratedRegisterCoalescing.cpp:1364
&gt; &gt; &gt; +            if (range.last - range.first &lt;= 1 &amp;&amp; range.count &gt; range.admitStackCount)
&gt; &gt; 
&gt; &gt; Is this sound for the case that you have a self loop and a use *just before*
&gt; &gt; a def?  That&apos;s not super likely and the Tmp would have to be live all the
&gt; &gt; way to the root block I guess, but it seems like that might be a bit weak.
&gt; 
&gt; Do you have a suggestion? The reason for this counter was that it is super
&gt; cheap and only run once. I could have code to clone the HashSet and prune it
&gt; based on the Liveness when we get there but that seems like extra
&gt; complication for handling undefined behavior.
&gt; 
&gt; I would say that is still unspillable.
&gt; The Tmp would have to be live on entry. Since there are no Def on entry,
&gt; there are no point to spill from.
&gt; 
&gt; Or am I misunderstanding the case?

Would you want to make Var unspillable?

For (;;) {
   ... Lots of stuff
   Tmp1 = Var
   Var = Tmp2
   ... More stuff
}

I may be misreading the alto but it seems like it would make Var unspillable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164302</commentid>
    <comment_count>8</comment_count>
      <attachid>271130</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-12 13:41:01 -0800</bug_when>
    <thetext>Comment on attachment 271130
Patch

Filip is okay with me improving this in follow ups. I&apos;ll try to do that this weekend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164351</commentid>
    <comment_count>9</comment_count>
      <attachid>271130</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-12 14:32:45 -0800</bug_when>
    <thetext>Comment on attachment 271130
Patch

Clearing flags on attachment: 271130

Committed r196513: &lt;http://trac.webkit.org/changeset/196513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164352</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-12 14:32:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271129</attachid>
            <date>2016-02-11 20:49:43 -0800</date>
            <delta_ts>2016-02-11 20:55:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154151-20160211204922.patch</filename>
            <type>text/plain</type>
            <size>65039</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YTY1NmNiMTgyNDIwNGI2M2M2NTM0NWY4MTVkODJiMGM3OGYxYjQwLi4yZTgzZmZiNDQ4Njg0NDFl
MGUwOTk0MjdhNTM3YWJhNDBlYTA4YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODcgQEAKKzIwMTYtMDItMTEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtKU0NdIE9uIHg4NiwgaW1wcm92ZSB0aGUgc2VsZWN0aW9uIG9m
IHdoaWNoIHZhbHVlIGFyZSBzZWxlY3RlZCBmb3IgdGhlIFVzZURlZiBwYXJ0IG9mIGNvbW11dGF0
aXZlIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NDE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXZpb3VzbHksIHdoZW4gYW4gaW5zdHJ1Y3Rpb24gZGVzdHJveSBhbiBhcmd1bWVu
dCB3aXRoCisgICAgICAgIGEgVXNlRGVmIHVzZSwgd2Ugd291bGQgdHJ5IHRvIHBpY2sgYSBnb29k
IHRhcmdldCBmb3IgdGhlIFVzZURlZgorICAgICAgICB3aGlsZSBkb2luZyBpbnN0cnVjdGlvbiBz
ZWxlY3Rpb24uCisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICBAeCA9IEFkZChA
MSwgQDIpCisKKyAgICAgICAgY2FuIGJlIGxvd2VyZWQgdG86CisgICAgICAgICAgICBNb3ZlIEAx
IFRtcDMKKyAgICAgICAgICAgIEFkZCBAMiBUbXAzCisgICAgICAgIG9yIAorICAgICAgICAgICAg
TW92ZSBAMiBUbXAzCisgICAgICAgICAgICBBZGQgQDEgVG1wMworCisgICAgICAgIFRoZSBjaG9p
Y2Ugb2Ygd2hpY2ggdmFsdWUgZW5kcyB1cCBjb3BpZWQgaXMgZG9uZSBieSBwcmVmZXJSaWdodEZv
clJlc3VsdCgpCisgICAgICAgIGF0IGxvd2VyaW5nIHRpbWUuCisKKyAgICAgICAgVGhlcmUgYXJl
IHR3byBjb21tb24gcHJvYmxlbXMgd2l0aCB0aGUgY29kZSB3ZSBnZW5lcmF0ZToKKyAgICAgICAg
MSkgSXQgaXMgYmFzZWQgb24gVXNlQ291bnQuIElmIGEgdmFsdWUgaXMgYXQgaXRzIGxhc3QgdXNl
LAorICAgICAgICAgICBpdCBpcyBhIGdvb2QgdGFyZ2V0IGZvciBjb2FsZXNjaW5nIGV2ZW4gd2l0
aCBhIHVzZS1jb3VudCA+IDEuCisgICAgICAgIDIpIFdoZW4gYm90aCB2YWx1ZXMgYXJlIGF0IHRo
ZWlyIGxhc3QgdXNlLCB0aGUgYmVzdCBjaG9pY2UKKyAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUg
cmVnaXN0ZXIgcHJlc3N1cmUgb2YgZWFjaC4gV2UgZG9uJ3QgaGF2ZSB0aGF0IGluZm9ybWF0aW9u
CisgICAgICAgICAgIHVudGlsIHdlIGRvIHJlZ2lzdGVyIGFsbG9jYXRpb24uCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2ltcGxlIGlkZWEgdG8gbWluaW1pemUgaG93IG1hbnkg
b2YgdGhvc2UgTW92ZXMgYXJlIG5lZWRlZC4KKyAgICAgICAgRWFjaCBjb21tdXRhdGl2ZSBvcGVy
YXRpb24gZ2V0cyBhIDMgb3AgdmFyaWFudC4gVGhlIHJlZ2lzdGVyIGFsbG9jYXRvciB0aGVuIGF0
dGVtcHRzCisgICAgICAgIHRvIGFsaWFzICpib3RoKiBvZiB0aGVtIHRvIHRoZSBkZXN0aW5hdGlv
bi4KKyAgICAgICAgU2luY2Ugb3VyIGFsaWFzaW5nIGlzIGNvbnNlcnZhdGl2ZSwgaXQgcmVtb3Zl
cyBhcyBtYW55IGNvcHkgYXMgcG9zc2libGUgd2l0aG91dCBjYXVzaW5nCisgICAgICAgIHNwaWxs
aW5nLgorCisgICAgICAgIFRoZXJlIHdhcyBhbiB1bmV4cGVjdGVkIGNvb2wgaW1wb3ZlbWVudCB0
b28uIElmIHlvdSBoYXZlOgorICAgICAgICAgICAgTW92ZSBUbXAxLCBUbXAyCisgICAgICAgICAg
ICBCcmFuY2hBZGQzMiBUbXAzLCBUbXAyCisgICAgICAgIHdlIHdvdWxkIHByZXZpb3VzbHkgcmVz
dG9yZSBUbXAyIGJ5IHN1YnN0cmFjdGluZyBUbXAzIGZyb20gdGhlIHJlc3VsdC4KKyAgICAgICAg
V2UgY2FuIG5vdyBqdXN0IHVzZSBUbXAxLiBUaGF0IHJlbW92ZXMgcXVpdGUgYSBmZXcgU3ViIGZy
b20gdGhlIHNsb3cgcGF0aHMuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBzaW1wbGUg
aWRlYSB1bmNvdmVycmVkIGEgYnVuY2ggb2YgaXNzdWVzIHRoYXQgaGFkIHRvIGJlIGZpeGVkIHRv
by4KKyAgICAgICAgSSBkZXRhaWwgdGhlbSBpbmxpbmUgYmVsb3cuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjphbmQ2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmg6CisgICAgICAgIE1vc3QgYWRkaXRpb24gYXJlIGFkZGluZyBhbiBBZGRyZXNzIHZlcnNp
b24gb2YgdGhlIDMgb3BlcmFuZHMgb3Bjb2Rlcy4KKyAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhp
cyBpcyBhbGxvdyB0aGUgY29tcGxleCBhZGRyZXNzaW5nIGZvcm1zIG9mIGluc3RydWN0aW9ucwor
ICAgICAgICB3aGVuIHNwaWxsaW5nLgorCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjphbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpt
dWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhvcjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVEb3VibGUpOgorICAgICAgICBUaGlzIHdh
cyBhbiB1bmV4cGVjdGVkIGRpc2NvdmVyeTogcmVtb3ZpbmcgdG9ucyBvZiBNb3ZlMzIgbWFkZSBm
bG9hdGluZy1wb2ludCBoZWF2eQorICAgICAgICBjb2RlIG11Y2ggc2xvd2VyLgorCisgICAgICAg
IEl0IHR1cm5zIG91dCB0aGUgTW92ZURvdWJsZSB3ZSB3ZXJlIHVzaW5nIGhhcyBwYXJ0aWFsIHJl
Z2lzdGVyIGRlcGVuZGVuY2llcy4KKworICAgICAgICBUaGUgeDg2IG9wdGltaXphdGlvbiBtYW51
YWwsIENoYXB0ZXIgMywgc2VjdGlvbiAzLjQuMS4xMyBsaXN0cyB0aGUgbW92ZSBpbnN0cnVjdGlv
bnMgZXhlY3V0ZWQKKyAgICAgICAgZGlyZWN0bHkgb24gdGhlIGZyb250ZW5kLiBUaGF0J3Mgd2hh
dCB3ZSB1c2Ugbm93LgorCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjph
ZGREb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkRmxv
YXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om11bEZsb2F0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZERvdWJsZSk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphbmRGbG9hdCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4b3JEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6eG9yRmxvYXQpOgorICAgICAgICBJZiB0aGUgZGVzdGluYXRpb24g
aXMgbm90IGFsaWFzZWQsIHRoZSB2ZXJzaW9uIHRha2luZyBhbiBhZGRyZXNzCisgICAgICAgIHVz
ZSBMb2FkRmxvYXQvTG9hZERvdWJsZSBpbnN0ZWFkIG9mIGRpcmVjdCBhZGRyZXNzaW5nLgorCisg
ICAgICAgIFRoYXQgaXMgYmVjYXVzZSB0aGlzOgorICAgICAgICAgICAgTW92ZSBUbXAxLCBUbXAy
CisgICAgICAgICAgICBPcCBbVG1wM10sIFRtcDIKKyAgICAgICAgaXMgc2xvd2VyIHRoYW4KKyAg
ICAgICAgICAgIE1vdmUgW1RtcDNdIFRtcDIKKyAgICAgICAgICAgIE9wIFRtcDEsIFRtcDIKKyAg
ICAgICAgKHNvbWV0aW1lcyBzaWduaWZpY2FudGx5KS4KKworICAgICAgICBJIGFtIG5vdCBleGFj
dGx5IHN1cmUgd2h5LgorCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpi
cmFuY2hBZGQzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphbmQ2NCk6CisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6YW5kNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjptb3ZlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmFkZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjphZGRGbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpt
dWxEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsRmxv
YXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZEZsb2F0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhvckRvdWJsZSk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4b3JGbG9hdCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hBZGQzMik6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjptdWw2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp4b3I2NCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2hBZGQ2NCk6CisgICAgICAgICogYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdmFwZF9y
cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92YXBzX3JyKToKKyAgICAgICAgKiBi
My9CM0NoZWNrU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1NwZWNpYWw6OnNo
b3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Z2Vu
ZXJhdGUpOgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmg6CisgICAgICAgICogYjMvQjNM
b3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIp
OgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
UGF0Y2hDdXN0b206OnNob3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIvQWly
SW5zdC5oOgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0RlZik6CisgICAgICAgICogYjMvYWly
L0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDoKKyAgICAgICAgQWxpYXNpbmcgdGhl
IG9wZXJhbmRzIGlzIGRvbmUgdGhlIHNhbWUgd2F5IGFzIGFueSBjb2FsZXNjaW5nLgorCisgICAg
ICAgIFRoZXJlIHdlcmUgcHJvYmxlbSB3aXRoIGNvbnNpZGVyaW5nIGFsbCB0aG9zZSBjb2FsZXNj
aW5nCisgICAgICAgIGFzIGVxdWl2YWxlbnQgZm9yIHRoZSByZXN1bHQuCisKKyAgICAgICAgTW92
ZXMgYXJlIG1vc3RseSBnZW5lcmF0ZWQgZm9yIFVwc2lsb24tUGhpcy4gR2V0dGluZyByaWQgb2YK
KyAgICAgICAgdGhvc2UgdGVuZHMgdG8gZ2l2ZSBiZXR0ZXIgbG9vcHMuCisKKyAgICAgICAgU29t
ZXRpbWVzLCBibG9ja3MgaGF2ZSBvbmx5IFBoaXMgYW5kIGEgSnVtcC4gQ29hbGVzY2luZworICAg
ICAgICB0aG9zZSBtb3ZlcyBnZXRzIHJpZHMgb2YgdGhlIGJsb2NrIGVudGlyZWx5LiAKKworICAg
ICAgICBXaGVyZSBpdCBnbyBpbnRlcmVzdGluZyB3YXMgdGhhdCBzb21ldGhpbmcgbGlrZToKKyAg
ICAgICAgICAgIE1vdmUgVG1wMSwgVG1wMgorICAgICAgICAgICAgT3AgVG1wMywgVG1wMgorICAg
ICAgICB3YXMgc2lnbmlmaWNhbnRseSBiZXR0ZXIgdGhhbjoKKyAgICAgICAgICAgIE9wIFRtcDEs
IFRtcDMKKyAgICAgICAgICAgIE1vdmUgVG1wMSwgVG1wNAorICAgICAgICBldmVuIGluIHRoZSBz
YW1lIGJhc2ljIGJsb2NrLgorCisgICAgICAgIFRvIGdldCBiYWNrIHRvIHRoZSBzYW1lIHBlcmZv
cm1hbmNlIHdoZW4sIEkgaGFkIHRvIHByaW9yaXRpemUKKyAgICAgICAgcmVndWxhciBNb3ZlcyBv
cGVyYXRpb25zIG92ZXIgYXJndW1lbnQgY29hbGVzY2luZy4KKworICAgICAgICBBbm90aGVyIGFy
Z3VtZW50IGZvciBkb2luZyB0aGlzIGlzIHRoYXQgdGhlIGFsaWFzIGhhcyBhIHNob3J0ZXIKKyAg
ICAgICAgbGlmZSBpbiB0aGUgaGFyZHdhcmUgYmVjYXVzZSB0aGUgb3BlcmF0aW9uIGl0c2VsZiBn
ZXRzIGEgbmV3CisgICAgICAgIHZpcnR1YWwgcmVnaXN0ZXIgZnJvbSB0aGUgYmFuay4KKworICAg
ICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9haXIvQWlyU3Bl
Y2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlNwZWNpYWw6OnNob3VsZFRyeUFsaWFz
aW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3BlY2lhbC5oOgorICAgICAgICAqIGIzL3Rl
c3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5n
NjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzMyKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzY0KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzMyKToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RDaGVja011bEFyZ3VtZW50QWxpYXNpbmc2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5nMzIpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFtZXMpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUNh
bGxlZVNhdmVzRm9yKToKKyAgICAgICAgVGhpcyBydWluZWQgbXkgd2Vlay4KKworICAgICAgICBX
aGVuIHJlZ2VuZXJhdGluZyB0aGUgZnJhbWUgb2YgYW4gaW5saW5lZCBmdW5jdGlvbiB0aGF0Cisg
ICAgICAgIHdhcyBjYWxsZWQgdGhyb3VnaCBhIHRhaWwgY2FsbCwgd2Ugd2VyZSBpZ25vcmluZyBy
MTMgZm9yIHNvbWUgcmVhc29uLgorCisgICAgICAgIFNpbmNlIHRoaXMgcGF0Y2ggbWFrZXMgaXQg
bW9yZSBsaWtlbHkgdG8gaW5jcmVhc2UgdGhlIGRlZ3JlZQorICAgICAgICBvZiBlYWNoIFRtcCwg
dGhlIG51bWJlciBvZiByZWdpc3RlciB1c2VkIGluY3JlYXNlZCBhbmQgcjEzIHdhcyBtb3JlCisg
ICAgICAgIGNvbW1vbmx5IHVzZWQuCisKKyAgICAgICAgV2hlbiBnZXR0aW5nIG91dCBvZiBPU1JF
eGl0LCB3ZSB3b3VsZCBoYXZlIHRoYXQgdmFsdWUgdHJhc2hlZCA6KAorCisgICAgICAgIFRoZSBm
aXggaXMgc2ltcGx5IHRvIHJlc3RvcmUgaXQgbGlrZSB0aGUgb3RoZXIgdHdvIEJhc2VsaW5lIGNh
bGxlZSBzYXZlZAorICAgICAgICByZWdpc3Rlci4KKwogMjAxNi0wMi0wOSAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGNyYXNoIGlmIHdlIGZhaWwgdG8g
cGFyc2UgYSBidWlsdGluCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDY5Y2IxM2U0NjJhYWRmMjhjNzBhMzNlZmNm
OWEwZTJjMDFhYWMwOGEuLjYzN2U1YWViOWRlNzZlZThkODI1ZWRhMzJjNDRjMGNmMjZhZTVmNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCkBAIC0zNjIsNiArMzYyLDExIEBAIHB1YmxpYzoKICAgICAgICAgYW5kMzIo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3Rl
cklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVzdCwgc3JjMSwgc3JjMik7CisgICAgfQorCiAgICAg
dm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVzdCwgZGVzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAppbmRleCAwZThlZDFkN2VmMzFkMzhlOWVhZDU3ODBkMTM5MzIxZDY1NjQwMmJhLi5mZDhkNDVi
NWFhYzllNGMzMDIzYjBiY2Y3M2Q2Yjc3MTEyYzdmYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBA
IC0yNjcsNiArMjY3LDE4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQg
YW5kMzIoQWRkcmVzcyBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtb3ZlKG9wMiwgZGVzdCk7CisgICAgICAgIGFuZDMyKG9wMSwgZGVzdCk7Cisg
ICAgfQorCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgQWRkcmVzcyBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUob3AxLCBkZXN0KTsKKyAgICAgICAgYW5k
MzIob3AyLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKHNy
YywgZGVzdCk7CkBAIC0zMzUsMTAgKzM0NywzMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmltdWxsX3JyKHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBtdWwzMihSZWdpc3Rl
cklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKHNyYzIgPT0gZGVzdCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxfcnIo
c3JjMSwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbW92
ZShzcmMxLCBkZXN0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxfcnIoc3JjMiwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBtdWwzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IGRlc3QpOwogICAgIH0KKworICAgIHZvaWQgbXVsMzIoQWRkcmVzcyBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjMiwgZGVzdCk7
CisgICAgICAgIG11bDMyKHNyYzEsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgbXVsMzIoUmVn
aXN0ZXJJRCBzcmMxLCBBZGRyZXNzIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1vdmUoc3JjMSwgZGVzdCk7CisgICAgICAgIG11bDMyKHNyYzIsIGRlc3QpOworICAgIH0K
ICAgICAKICAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtNDE2LDYgKzQ1MCwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB2b2lkIG9yMzIoQWRkcmVzcyBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKG9wMiwgZGVzdCk7CisgICAg
ICAgIG9yMzIob3AxLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBv
cDEsIEFkZHJlc3Mgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKG9w
MSwgZGVzdCk7CisgICAgICAgIG9yMzIob3AyLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKQEAgLTU2Nyw2ICs2MTMsMTggQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihBZGRyZXNzIG9wMSwgUmVnaXN0
ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUob3AyLCBkZXN0
KTsKKyAgICAgICAgeG9yMzIob3AxLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjMyKFJl
Z2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShvcDEsIGRlc3QpOworICAgICAgICB4b3IzMihvcDIsIGRlc3QpOworICAgIH0KKwog
ICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKQEAgLTkwNiw3ICs5NjQs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKICAg
ICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92c2RfcnIo
c3JjLCBkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmFwc19ycihzcmMsIGRlc3Qp
OwogICAgIH0KIAogICAgIHZvaWQgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTAxNSw2ICsxMDczLDMwIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0K
IAorICAgIHZvaWQgYWRkRG91YmxlKEFkZHJlc3Mgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwor
ICAgICAgICBpZiAob3AyID09IGRlc3QpIHsKKyAgICAgICAgICAgIGFkZERvdWJsZShvcDEsIGRl
c3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbG9hZERvdWJs
ZShvcDEsIGRlc3QpOworICAgICAgICBhZGREb3VibGUob3AyLCBkZXN0KTsKKyAgICB9CisKKyAg
ICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAg
ICAgaWYgKG9wMSA9PSBkZXN0KSB7CisgICAgICAgICAgICBhZGREb3VibGUob3AyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWREb3VibGUob3Ay
LCBkZXN0KTsKKyAgICAgICAgYWRkRG91YmxlKG9wMSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBhZGRGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpAQCAtMTAyNyw2ICsxMTA5LDQxIEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIG9wMSwgRlBS
ZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgaWYgKG9wMSA9PSBkZXN0KQorICAgICAgICAgICAg
YWRkRmxvYXQob3AyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlRG91
YmxlKG9wMiwgZGVzdCk7CisgICAgICAgICAgICBhZGRGbG9hdChvcDEsIGRlc3QpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBhZGRGbG9hdChBZGRyZXNzIG9wMSwgRlBSZWdpc3RlcklE
IG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJl
c2VudCgpKTsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAgICBhZGRGbG9h
dChvcDEsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
bG9hZEZsb2F0KG9wMSwgZGVzdCk7CisgICAgICAgIGFkZEZsb2F0KG9wMiwgZGVzdCk7CisgICAg
fQorCisgICAgdm9pZCBhZGRGbG9hdChGUFJlZ2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
KyAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7CisgICAgICAgICAgICBhZGRGbG9hdChvcDIsIGRl
c3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbG9hZEZsb2F0
KG9wMiwgZGVzdCk7CisgICAgICAgIGFkZEZsb2F0KG9wMSwgZGVzdCk7CisgICAgfQorCiAgICAg
dm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKQEAgLTExMTYsNiArMTIzMywyOCBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bHNkX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShBZGRyZXNzIG9wMSwgRlBS
ZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAg
ICBtdWxEb3VibGUob3AxLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBsb2FkRG91YmxlKG9wMSwgZGVzdCk7CisgICAgICAgIG11bERvdWJsZShvcDIsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEFkZHJl
c3Mgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQ
cmVzZW50KCkpOworICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKKyAgICAgICAgICAgIG11bERv
dWJsZShvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGxvYWREb3VibGUob3AyLCBkZXN0KTsKKyAgICAgICAgbXVsRG91YmxlKG9wMSwgZGVzdCk7Cisg
ICAgfQorCiAgICAgdm9pZCBtdWxGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpAQCAtMTEyOCwy
NyArMTI2NywxMDAgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBtdWxGbG9hdChGUFJl
Z2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBpZiAob3AxID09IGRl
c3QpCisgICAgICAgICAgICBtdWxGbG9hdChvcDIsIGRlc3QpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIG1vdmVEb3VibGUob3AyLCBkZXN0KTsKKyAgICAgICAgICAgIG11bEZsb2F0KG9w
MSwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIG11bEZsb2F0KEFkZHJlc3Mg
b3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBpZiAob3AyID09IGRlc3QpIHsKKyAg
ICAgICAgICAgIG11bEZsb2F0KG9wMSwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgbG9hZEZsb2F0KG9wMSwgZGVzdCk7CisgICAgICAgIG11bEZsb2F0KG9w
MiwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBtdWxGbG9hdChGUFJlZ2lzdGVySUQgb3AxLCBB
ZGRyZXNzIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNT
U0UyUHJlc2VudCgpKTsKKyAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7CisgICAgICAgICAgICBt
dWxGbG9hdChvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGxvYWRGbG9hdChvcDIsIGRlc3QpOworICAgICAgICBtdWxGbG9hdChvcDEsIGRlc3QpOwor
ICAgIH0KKwogICAgIHZvaWQgYW5kRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICAvLyBBTkRQUyBpcyBkZWZpbmVkIG9uIDEyOGJpdHMgYW5k
IGlzIHNob3J0ZXIgdGhhbiBBTkRQRC4KICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcHNfcnIoc3Jj
LCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMxLCBG
UFJlZ2lzdGVySUQgc3JjMiwgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGlmIChz
cmMxID09IGRzdCkKKyAgICAgICAgICAgIGFuZERvdWJsZShzcmMyLCBkc3QpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoc3JjMiwgZHN0KTsKKyAgICAgICAgICAgIGFu
ZERvdWJsZShzcmMxLCBkc3QpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBhbmRGbG9h
dChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuYW5kcHNfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kRmxvYXQo
RlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgaWYgKHNyYzEgPT0gZHN0KQorICAgICAgICAgICAgYW5kRmxvYXQoc3Jj
MiwgZHN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKHNyYzIsIGRz
dCk7CisgICAgICAgICAgICBhbmRGbG9hdChzcmMxLCBkc3QpOworICAgICAgICB9CisgICAgfQor
CiAgICAgdm9pZCB4b3JEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnBzX3JyKHNyYywgZHN0KTsKICAgICB9CiAK
KyAgICB2b2lkIHhvckRvdWJsZShGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIs
IEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMSA9PSBkc3QpCisgICAg
ICAgICAgICB4b3JEb3VibGUoc3JjMiwgZHN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlRG91YmxlKHNyYzIsIGRzdCk7CisgICAgICAgICAgICB4b3JEb3VibGUoc3JjMSwgZHN0
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgeG9yRmxvYXQoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnBzX3Jy
KHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIHhvckZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMx
LCBGUFJlZ2lzdGVySUQgc3JjMiwgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGlm
IChzcmMxID09IGRzdCkKKyAgICAgICAgICAgIHhvckZsb2F0KHNyYzIsIGRzdCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgbW92ZURvdWJsZShzcmMyLCBkc3QpOworICAgICAgICAgICAg
eG9yRmxvYXQoc3JjMSwgZHN0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29udmVy
dEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBAIC0xNzExLDYgKzE5MjMsMTggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgc3JjMSwgZGVzdCk7CiAg
ICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1vdmUoc3JjMiwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMx
LCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIHNyYzEsIEFkZHJlc3Mgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbW92ZShzcmMxLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMy
KGNvbmQsIHNyYzIsIGRlc3QpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5k
ZXggN2RkN2UxZWM2NDBhNzk3YjlmNjBmYzA2MDZmZDZmNGRiOTAyMjk2Ni4uMGMxNWQ3M2M5ZGRk
NmUyMTY4Mjk0NjgxM2RiMDYyYTM2ZDgzYWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMzQ5LDYgKzM0
OSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGFuZDY0KHNjcmF0Y2hSZWdpc3RlcigpLCBzcmNEZXN0
KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDY0KFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKG9wMSA9PSBvcDIgJiYgb3Ax
ICE9IGRlc3QgJiYgb3AyICE9IGRlc3QpCisgICAgICAgICAgICBtb3ZlKG9wMSwgZGVzdCk7Cisg
ICAgICAgIGVsc2UgaWYgKG9wMSA9PSBkZXN0KQorICAgICAgICAgICAgYW5kNjQob3AyLCBkZXN0
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKG9wMiwgZGVzdCk7CisgICAgICAg
ICAgICBhbmQ2NChvcDEsIGRlc3QpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBjb3Vu
dExlYWRpbmdaZXJvczY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIGlmIChzdXBwb3J0c0xaQ05UKCkpIHsKQEAgLTQzMCw2ICs0NDIsMTYgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuaW11bHFfcnIoc3JjLCBkZXN0KTsKICAgICB9
CisKKyAgICB2b2lkIG11bDY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMiA9PSBkZXN0KSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5pbXVscV9ycihzcmMxLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBtb3ZlKHNyYzEsIGRlc3QpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5pbXVscV9ycihzcmMyLCBkZXN0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCB4ODZDb252
ZXJ0VG9RdWFkV29yZDY0KCkKICAgICB7CkBAIC01NDEsNiArNTYzLDE4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcnIoc3JjLCBkZXN0KTsKICAgICB9CisKKyAg
ICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKG9wMSA9PSBvcDIpCisgICAgICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgZGVzdCk7CisgICAgICAgIGVsc2UgaWYgKG9wMSA9PSBkZXN0KQorICAg
ICAgICAgICAgeG9yNjQob3AyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBt
b3ZlKG9wMiwgZGVzdCk7CisgICAgICAgICAgICB4b3I2NChvcDEsIGRlc3QpOworICAgICAgICB9
CisgICAgfQogICAgIAogICAgIHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVz
dCkKICAgICB7CkBAIC04NjcsMTIgKzkwMSwzOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJl
Z2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYzEg
PT0gZGVzdCkKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hBZGQ2NChjb25kLCBzcmMyLCBkZXN0
KTsKKyAgICAgICAgbW92ZShzcmMyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDY0
KGNvbmQsIHNyYzEsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKHNyYzIsIGRlc3QpOworICAgICAgICByZXR1cm4g
YnJhbmNoQWRkNjQoY29uZCwgc3JjMSwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hB
ZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBBZGRyZXNzIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoc3JjMSwgZGVzdCk7CisgICAg
ICAgIHJldHVybiBicmFuY2hBZGQ2NChjb25kLCBzcmMyLCBkZXN0KTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRkNjQoc3JjLCBkZXN0KTsKICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0K
IAorICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBhZGQ2NChzcmMsIGRlc3QpOworICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7Cisg
ICAgfQorCiAgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG11bDY0KHNyYywgZGVz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApp
bmRleCAxMzFmMTM5OWE1M2ZiZTMzMmY5NDk5ZjdmZTkwZjFlZDRmMjg1ZTBhLi44NTdkMjJiYTYy
NDY0NzUxZmM1ZGJlODU4NzhmMTJmMmY2MDNmYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTI2Myw2ICsyNjMsOCBAQCBwcml2YXRl
OgogICAgICAgICBPUDJfTU9WU0RfV3NkVnNkICAgID0gMHgxMSwKICAgICAgICAgT1AyX01PVlNT
X1ZzZFdzZCAgICA9IDB4MTAsCiAgICAgICAgIE9QMl9NT1ZTU19Xc2RWc2QgICAgPSAweDExLAor
ICAgICAgICBPUDJfTU9WQVBEX1ZwZFdwZCAgID0gMHgyOCwKKyAgICAgICAgT1AyX01PVkFQU19W
cGRXcGQgICA9IDB4MjgsCiAgICAgICAgIE9QMl9DVlRTSTJTRF9Wc2RFZCAgPSAweDJBLAogICAg
ICAgICBPUDJfQ1ZUVFNEMlNJX0dkV3NkID0gMHgyQywKICAgICAgICAgT1AyX1VDT01JU0RfVnNk
V3NkICA9IDB4MkUsCkBAIC0yMjA5LDYgKzIyMTEsMTcgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCisgICAgdm9pZCBtb3ZhcGRfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVkFQRF9WcGRXcGQsIChSZWdpc3RlcklE
KWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdmFwc19ycihYTU1S
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3AoT1AyX01PVkFQU19WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lz
dGVySUQpc3JjKTsKKyAgICB9CisKICAgICB2b2lkIG1vdnNkX3JyKFhNTVJlZ2lzdGVySUQgc3Jj
LCBYTU1SZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfU1NFX0YyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNr
U3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3Bw
CmluZGV4IGM0YWExYThiOTAyMjk5ODQ2NGYyZDJjMzU5MWM5MjZkMTU3NTJiN2MuLjNjNTA5ZDBi
ZmZjNzIxMTAzYTk2ZGMwMDBhZWFiMTViNDdiZTY0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApAQCAtMTMwLDYgKzEzMCwxNSBAQCBib29sIENoZWNr
U3BlY2lhbDo6YWRtaXRzU3RhY2soSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCiAgICAg
cmV0dXJuIGFkbWl0c1N0YWNrSW1wbChudW1CM0FyZ3MoaW5zdCksIG1fbnVtQ2hlY2tBcmdzICsg
MSwgaW5zdCwgYXJnSW5kZXgpOwogfQogCitib29sIENoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxp
YXNpbmdEZWYoSW5zdCYgaW5zdCwgdW5zaWduZWQmIGRlZkluZGV4KQoreworICAgIGlmIChoaWRk
ZW5CcmFuY2goaW5zdCkuc2hvdWxkVHJ5QWxpYXNpbmdEZWYoZGVmSW5kZXgpKSB7CisgICAgICAg
IGRlZkluZGV4ICs9IDE7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIENDYWxsSGVscGVyczo6SnVtcCBDaGVja1NwZWNpYWw6OmdlbmVyYXRlKElu
c3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbCA9IGhpZGRlbkJyYW5jaChpbnN0KS5nZW5l
cmF0ZShqaXQsIGNvbnRleHQpOwpAQCAtMTU0LDcgKzE2Myw4IEBAIENDYWxsSGVscGVyczo6SnVt
cCBDaGVja1NwZWNpYWw6OmdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBH
ZW5lcmF0CiAgICAgICAgICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCB1bmRvIHRoZSBvcGVyYXRp
b24uCiAgICAgICAgICAgICAgICAgc3dpdGNoIChtX2NoZWNrT3Bjb2RlKSB7CiAgICAgICAgICAg
ICAgICAgY2FzZSBCcmFuY2hBZGQzMjoKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMV0g
PT0gYXJnc1syXSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKG1fbnVtQ2hlY2tBcmdzID09
IDQgJiYgYXJnc1sxXSA9PSBhcmdzWzJdICYmIGFyZ3NbMl0gPT0gYXJnc1szXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IChtX251bUNoZWNrQXJncyA9PSAzICYmIGFyZ3NbMV0gPT0gYXJn
c1syXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdWdseSwgYnV0IHRo
YXQncyBmaW5lIC0gd2Ugd29uJ3QgaGF2ZSB0byBkbyB0aGlzIHZlcnkgb2Z0ZW4uCiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoYXJnc1sxXS5pc0dQUigpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IGFyZ3NbMV0uZ3ByKCk7CkBAIC0xNjcsMTAgKzE3
NywxNyBAQCBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBp
bnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdAogICAgICAgICAgICAgICAgICAgICAgICAg
aml0LnBvcFRvUmVzdG9yZShzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIEluc3QoU3Vi
MzIsIG51bGxwdHIsIGFyZ3NbMV0sIGFyZ3NbMl0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChtX251bUNoZWNrQXJncyA9PSA0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYXJnc1sxXSA9PSBhcmdzWzNdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3QoU3ViMzIsIG51bGxwdHIsIGFyZ3NbMl0sIGFyZ3NbM10pLmdlbmVyYXRl
KGppdCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcmdzWzJd
ID09IGFyZ3NbM10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdChTdWIzMiwgbnVs
bHB0ciwgYXJnc1sxXSwgYXJnc1szXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX251bUNoZWNrQXJncyA9PSAzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zdChTdWIzMiwgbnVsbHB0ciwgYXJnc1sxXSwgYXJnc1syXSkuZ2VuZXJh
dGUoaml0LCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgY2FzZSBCcmFuY2hBZGQ2NDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMV0g
PT0gYXJnc1syXSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKG1fbnVtQ2hlY2tBcmdzID09
IDQgJiYgYXJnc1sxXSA9PSBhcmdzWzJdICYmIGFyZ3NbMl0gPT0gYXJnc1szXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IChtX251bUNoZWNrQXJncyA9PSAzICYmIGFyZ3NbMV0gPT0gYXJn
c1syXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdWdseSwgYnV0IHRo
YXQncyBmaW5lIC0gd2Ugd29uJ3QgaGF2ZSB0byBkbyB0aGlzIHZlcnkgb2Z0ZW4uCiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoYXJnc1sxXS5pc0dQUigpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IGFyZ3NbMV0uZ3ByKCk7CkBAIC0xODMsNyArMjAw
LDEzIEBAIENDYWxsSGVscGVyczo6SnVtcCBDaGVja1NwZWNpYWw6OmdlbmVyYXRlKEluc3QmIGlu
c3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgSW5zdChTdWI2
NCwgbnVsbHB0ciwgYXJnc1sxXSwgYXJnc1syXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fbnVtQ2hlY2tBcmdzID09IDQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChhcmdzWzFdID09IGFyZ3NbM10pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zdChTdWI2NCwgbnVsbHB0ciwgYXJnc1syXSwgYXJnc1szXSkuZ2VuZXJhdGUo
aml0LCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NbMl0g
PT0gYXJnc1szXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0KFN1YjY0LCBudWxs
cHRyLCBhcmdzWzFdLCBhcmdzWzNdKS5nZW5lcmF0ZShqaXQsIGNvbnRleHQpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKG1fbnVtQ2hlY2tBcmdzID09IDMpCisgICAgICAgICAgICAg
ICAgICAgICAgICBJbnN0KFN1YjY0LCBudWxscHRyLCBhcmdzWzFdLCBhcmdzWzJdKS5nZW5lcmF0
ZShqaXQsIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIEJyYW5jaFN1YjMyOgogICAgICAgICAgICAgICAgICAgICBJbnN0KEFkZDMyLCBu
dWxscHRyLCBhcmdzWzFdLCBhcmdzWzJdKS5nZW5lcmF0ZShqaXQsIGNvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaAppbmRleCA2MTE4NmJlMWI5YTU1YzQw
NjI0OGExMDNjYmUyZGZjYzhiZDY5NTZmLi5iNWUxNWRmZTY1YjA5M2VlODNkZmJkNzk2NTA0ODYz
MDJjZjlmOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1Nw
ZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaApA
QCAtMTI2LDYgKzEyNiw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZvckVhY2hBcmcoQWlyOjpJ
bnN0JiwgY29uc3QgU2NvcGVkTGFtYmRhPEFpcjo6SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYpIG92
ZXJyaWRlOwogICAgIGJvb2wgaXNWYWxpZChBaXI6Okluc3QmKSBvdmVycmlkZTsKICAgICBib29s
IGFkbWl0c1N0YWNrKEFpcjo6SW5zdCYsIHVuc2lnbmVkIGFyZ0luZGV4KSBvdmVycmlkZTsKKyAg
ICBib29sIHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6SW5zdCYsIHVuc2lnbmVkJiBkZWZJbmRl
eCkgb3ZlcnJpZGU7CiAKICAgICAvLyBOT1RFOiB0aGUgZ2VuZXJhdGUgbWV0aG9kIHdpbGwgZ2Vu
ZXJhdGUgdGhlIGhpZGRlbiBicmFuY2ggYW5kIHRoZW4gcmVnaXN0ZXIgYSBMYXRlUGF0aCB0aGF0
CiAgICAgLy8gZ2VuZXJhdGVzIHRoZSBzdGFja21hcC4gU3VwZXIgY3JhenkgZHVkZSEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggYjRhZjJkY2Q3NWFjMWIz
MDJiZmQxZWFmMTU1YzA2N2ZlMWRjOGY1OC4uNjM0MmM4NTUzNDQ2NDlmN2EyYzBiZmI3ZWNlMTFl
NzMzMTA2MjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
QEAgLTIxNDYsNyArMjE0NiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfSBlbHNlIGlmIChp
bW0ocmlnaHQpICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpSZXNDb25kLCBBcmc6OkltbSwg
QXJnOjpUbXApKSB7CiAgICAgICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoaW1tKHJpZ2h0KSk7
CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChsZWZ0KSwgcmVzdWx0KTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlJlc0NvbmQsIEFyZzo6
VG1wLCBBcmc6OlRtcCkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZEZvcm0ob3Bj
b2RlLCBBcmc6OlJlc0NvbmQsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAg
ICAgICAgICAgICAgc291cmNlcy5hcHBlbmQodG1wKGxlZnQpKTsKKyAgICAgICAgICAgICAgICBz
b3VyY2VzLmFwcGVuZCh0bXAocmlnaHQpKTsKKyAgICAgICAgICAgIH0gIGVsc2UgaWYgKGlzVmFs
aWRGb3JtKG9wY29kZSwgQXJnOjpSZXNDb25kLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGNvbW11dGF0aXZpdHkgPT0gQ29tbXV0YXRpdmUgJiYgcHJlZmVyUmln
aHRGb3JSZXN1bHQobGVmdCwgcmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMu
YXBwZW5kKHRtcChsZWZ0KSk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAo
cmlnaHQpLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgK
aW5kZXggZDdlOWM5YzZmNzk0MWE5NDYwMjYyYzA4NWFmMTQzM2Q4MjVjNTE2Ni4uMTIzNGQzOTU1
ZTg4YzcyYTM1NzUzMTI5NDkyNTc4ZGE1Zjg1NmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckN1c3RvbS5oCkBAIC04MCw2ICs4MCwxMSBAQCBzdHJ1Y3QgUGF0Y2hDdXN0b20g
ewogICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+YWRtaXRzU3RhY2soaW5z
dCwgYXJnSW5kZXgpOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHNob3VsZFRyeUFsaWFzaW5n
RGVmKEluc3QmIGluc3QsIHVuc2lnbmVkJiBkZWZJbmRleCkKKyAgICB7CisgICAgICAgIHJldHVy
biBpbnN0LmFyZ3NbMF0uc3BlY2lhbCgpLT5zaG91bGRUcnlBbGlhc2luZ0RlZihpbnN0LCBkZWZJ
bmRleCk7CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgaGFzTm9uQXJnTm9uQ29udHJvbEVmZmVj
dHMoSW5zdCYgaW5zdCkKICAgICB7CiAgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uc3BlY2lh
bCgpLT5oYXNOb25BcmdOb25Db250cm9sRWZmZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckluc3QuaAppbmRleCA3MTkwZWU4NjFjMjVjYjM1ODFjNWY5ZWFkNjQ1NzI5YzZlOWE3
NzBjLi4wNDZhODBlOWM2ZWJmZmYyM2VjYzMzMTVlM2ZmNTFhOTRmNDA1NDU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaApAQCAtMTgwLDYgKzE4MCwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gY2FzZSBiZWluZyBmYWxsLXRocm91Z2guIFRoaXMgZnVuY3Rpb24gaXMgYXV0by1n
ZW5lcmF0ZWQgYnkgb3Bjb2RlX2dlbmVyYXRvci5yYi4KICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiwgR2VuZXJhdGlvbkNvbnRleHQmKTsKIAorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIHNob3VsZCBhdHRlbXB0IHRvIGFs
aWFzIHRoZSBhcmd1bWVudHMgd2l0aCB0aGUgZGVzdGluYXRpb24KKyAgICAvLyBmb3IgdGhpcyBp
bnN0cnVjdGlvbi4KKyAgICAvLyBJZiB0aGUgbWV0aG9kIHJldHVybnMgdHJ1ZSwgZGVmSW5kZXgg
aXMgc2V0IHRvIHRoZSBpbmRleCBvZiB0aGUgZGVzdGluYXRpb24gYXJndW1lbnQuIFRoZSBpbmRp
Y2VzCisgICAgLy8gKGRlZkluZGV4IC0gMSkgYW5kIChkZWZJbmRleCAtIDIpIGFyZSB0aGUgb25l
IHRvIGFsaWFzIHRvIGRlZkluZGV4LgorICAgIGJvb2wgc2hvdWxkVHJ5QWxpYXNpbmdEZWYodW5z
aWduZWQmIGRlZkluZGV4KTsKKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CiAgICAgQXJnTGlzdCBhcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJbnN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0SW5saW5lcy5oCmluZGV4IDk1ZTY4YWU3ZmE4ZWYwNWVjYjY0Y2ZjMzRiZDg2ZWNkMGMxNmIw
NDkuLjc3OGE0ODE3NzBmOWI5NDA3NGYxMDE1MDJkNzcyMmU0NjI1ZjM4MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKQEAgLTE2NCw2ICsxNjQs
NTAgQEAgaW5saW5lIGJvb2wgSW5zdDo6YWRtaXRzU3RhY2soQXJnJiBhcmcpCiAgICAgcmV0dXJu
IGFkbWl0c1N0YWNrKCZhcmcgLSAmYXJnc1swXSk7CiB9CiAKK2lubGluZSBib29sIEluc3Q6OnNo
b3VsZFRyeUFsaWFzaW5nRGVmKHVuc2lnbmVkJiBkZWZJbmRleCkKK3sKKyAgICBpZiAoIWlzWDg2
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAob3Bjb2RlKSB7CisgICAg
Y2FzZSBBZGQzMjoKKyAgICBjYXNlIEFkZDY0OgorICAgIGNhc2UgQW5kMzI6CisgICAgY2FzZSBB
bmQ2NDoKKyAgICBjYXNlIE11bDMyOgorICAgIGNhc2UgTXVsNjQ6CisgICAgY2FzZSBPcjMyOgor
ICAgIGNhc2UgT3I2NDoKKyAgICBjYXNlIFhvcjMyOgorICAgIGNhc2UgWG9yNjQ6CisgICAgY2Fz
ZSBBZGREb3VibGU6CisgICAgY2FzZSBBZGRGbG9hdDoKKyAgICBjYXNlIEFuZEZsb2F0OgorICAg
IGNhc2UgQW5kRG91YmxlOgorICAgIGNhc2UgTXVsRG91YmxlOgorICAgIGNhc2UgTXVsRmxvYXQ6
CisgICAgY2FzZSBYb3JEb3VibGU6CisgICAgY2FzZSBYb3JGbG9hdDoKKyAgICAgICAgaWYgKGFy
Z3Muc2l6ZSgpID09IDMpIHsKKyAgICAgICAgICAgIGRlZkluZGV4ID0gMjsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQnJhbmNo
QWRkMzI6CisgICAgY2FzZSBCcmFuY2hBZGQ2NDoKKyAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID09
IDQpIHsKKyAgICAgICAgICAgIGRlZkluZGV4ID0gMzsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGF0Y2g6CisgICAgICAgIHJl
dHVybiBQYXRjaEN1c3RvbTo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKnRoaXMsIGRlZkluZGV4KTsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBpbmxpbmUgYm9vbCBpc1NoaWZ0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKIHsKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAppbmRleCA4
YmQwY2I4YzJkODU1OWZmYjQzM2YxYzVlMjMzOTA3ODkxODAzYmY4Li4xOTA4NDFiMGU3Mzg0MzNk
NTNhZWJlMTdhNTE3MDU3YzI5NzUxNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcApA
QCAtMTY5LDcgKzE2OSw5IEBAIHByb3RlY3RlZDoKIAogICAgICAgICAgICAgaWYgKHRyYWNlRGVi
dWcpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIENvYWxlc2NlZFxuIik7Ci0gICAgICAg
IH0gZWxzZSBpZiAoaXNQcmVjb2xvcmVkKHYpIHx8IG1faW50ZXJmZXJlbmNlRWRnZXMuY29udGFp
bnMoSW50ZXJmZXJlbmNlRWRnZSh1LCB2KSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc1ByZWNv
bG9yZWQodikKKyAgICAgICAgICAgIHx8IG1faW50ZXJmZXJlbmNlRWRnZXMuY29udGFpbnMoSW50
ZXJmZXJlbmNlRWRnZSh1LCB2KSkKKyAgICAgICAgICAgIHx8ICh1ID09IG1fZnJhbWVQb2ludGVy
SW5kZXggJiYgbV9pbnRlcmZlcmVzV2l0aEZyYW1lUG9pbnRlci5xdWlja0dldCh2KSkpIHsKICAg
ICAgICAgICAgIGFkZFdvcmtMaXN0KHUpOwogICAgICAgICAgICAgYWRkV29ya0xpc3Qodik7CiAK
QEAgLTM5OSw2ICs0MDEsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9KTsK
IAorICAgICAgICBpZiAobV9mcmFtZVBvaW50ZXJJbmRleCAmJiBtX2ludGVyZmVyZXNXaXRoRnJh
bWVQb2ludGVyLnF1aWNrR2V0KHYpKQorICAgICAgICAgICAgbV9pbnRlcmZlcmVzV2l0aEZyYW1l
UG9pbnRlci5xdWlja1NldCh1KTsKKwogICAgICAgICBpZiAobV9kZWdyZWVzW3VdID49IG1fcmVn
c0luUHJpb3JpdHlPcmRlci5zaXplKCkgJiYgbV9mcmVlemVXb3JrbGlzdC5yZW1vdmUodSkpCiAg
ICAgICAgICAgICBhZGRUb1NwaWxsKHUpOwogICAgIH0KQEAgLTU3NCwxOCArNTc5LDQ1IEBAIHBy
b3RlY3RlZDoKICAgICBCaXRWZWN0b3IgbV9pc09uU2VsZWN0U3RhY2s7CiAgICAgVmVjdG9yPElu
ZGV4VHlwZT4gbV9zZWxlY3RTdGFjazsKIAorICAgIEluZGV4VHlwZSBtX2ZyYW1lUG9pbnRlcklu
ZGV4IHsgMCB9OworICAgIEJpdFZlY3RvciBtX2ludGVyZmVyZXNXaXRoRnJhbWVQb2ludGVyOwor
CiAgICAgc3RydWN0IE9yZGVyZWRNb3ZlU2V0IHsKICAgICAgICAgdW5zaWduZWQgYWRkTW92ZSgp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1fbW92ZUxpc3Qu
c2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKG1fbG93UHJpb3JpdHlNb3ZlTGlzdC5pc0VtcHR5
KCkpOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZpcnN0TG93UHJpb3JpdHlNb3ZlSW5kZXgpOwor
CisgICAgICAgICAgICB1bnNpZ25lZCBuZXh0SW5kZXggPSBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdC5z
aXplKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IG1fbW92ZUxpc3Quc2l6ZSgp
OwogICAgICAgICAgICAgbV9tb3ZlTGlzdC5hcHBlbmQobmV4dEluZGV4KTsKLSAgICAgICAgICAg
IG1fcG9zaXRpb25Jbk1vdmVMaXN0LmFwcGVuZChuZXh0SW5kZXgpOworICAgICAgICAgICAgbV9w
b3NpdGlvbkluTW92ZUxpc3QuYXBwZW5kKHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBu
ZXh0SW5kZXg7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHN0YXJ0QWRkaW5nTG93UHJpb3Jp
dHlNb3ZlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xvd1ByaW9yaXR5TW92
ZUxpc3QuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIG1fZmlyc3RMb3dQcmlvcml0eU1vdmVJbmRl
eCA9IG1fbW92ZUxpc3Quc2l6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgYWRk
TG93UHJpb3JpdHlNb3ZlKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fZmlyc3RM
b3dQcmlvcml0eU1vdmVJbmRleCA9PSBtX21vdmVMaXN0LnNpemUoKSk7CisKKyAgICAgICAgICAg
IHVuc2lnbmVkIG5leHRJbmRleCA9IG1fcG9zaXRpb25Jbk1vdmVMaXN0LnNpemUoKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gbV9sb3dQcmlvcml0eU1vdmVMaXN0LnNpemUoKTsK
KyAgICAgICAgICAgIG1fbG93UHJpb3JpdHlNb3ZlTGlzdC5hcHBlbmQobmV4dEluZGV4KTsKKyAg
ICAgICAgICAgIG1fcG9zaXRpb25Jbk1vdmVMaXN0LmFwcGVuZChwb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIEFTU0VSVChuZXh0SW5kZXggPj0gbV9maXJzdExvd1ByaW9yaXR5TW92ZUluZGV4KTsK
KwogICAgICAgICAgICAgcmV0dXJuIG5leHRJbmRleDsKICAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX21vdmVM
aXN0LmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHJldHVybiBtX21vdmVMaXN0LmlzRW1wdHkoKSAm
JiBtX2xvd1ByaW9yaXR5TW92ZUxpc3QuaXNFbXB0eSgpOwogICAgICAgICB9CiAKICAgICAgICAg
Ym9vbCBjb250YWlucyh1bnNpZ25lZCBpbmRleCkKQEAgLTU5OSwxMSArNjMxLDE5IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgICAgIGlmIChwb3NpdGlvbkluTW92ZUxpc3QgPT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgQVNTRVJUKG1fbW92ZUxpc3RbcG9zaXRpb25Jbk1vdmVMaXN0XSA9PSBtb3ZlSW5k
ZXgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gbV9tb3ZlTGlzdC5sYXN0KCk7
Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdFtsYXN0SW5kZXhdID0gcG9zaXRpb25J
bk1vdmVMaXN0OwotICAgICAgICAgICAgbV9tb3ZlTGlzdFtwb3NpdGlvbkluTW92ZUxpc3RdID0g
bGFzdEluZGV4OwotICAgICAgICAgICAgbV9tb3ZlTGlzdC5yZW1vdmVMYXN0KCk7CisgICAgICAg
ICAgICBpZiAobW92ZUluZGV4IDwgbV9maXJzdExvd1ByaW9yaXR5TW92ZUluZGV4KSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fbW92ZUxpc3RbcG9zaXRpb25Jbk1vdmVMaXN0XSA9PSBtb3Zl
SW5kZXgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxhc3RJbmRleCA9IG1fbW92ZUxpc3Qu
bGFzdCgpOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb25Jbk1vdmVMaXN0W2xhc3RJbmRleF0g
PSBwb3NpdGlvbkluTW92ZUxpc3Q7CisgICAgICAgICAgICAgICAgbV9tb3ZlTGlzdFtwb3NpdGlv
bkluTW92ZUxpc3RdID0gbGFzdEluZGV4OworICAgICAgICAgICAgICAgIG1fbW92ZUxpc3QucmVt
b3ZlTGFzdCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
bV9sb3dQcmlvcml0eU1vdmVMaXN0W3Bvc2l0aW9uSW5Nb3ZlTGlzdF0gPT0gbW92ZUluZGV4KTsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXggPSBtX2xvd1ByaW9yaXR5TW92ZUxp
c3QubGFzdCgpOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb25Jbk1vdmVMaXN0W2xhc3RJbmRl
eF0gPSBwb3NpdGlvbkluTW92ZUxpc3Q7CisgICAgICAgICAgICAgICAgbV9sb3dQcmlvcml0eU1v
dmVMaXN0W3Bvc2l0aW9uSW5Nb3ZlTGlzdF0gPSBsYXN0SW5kZXg7CisgICAgICAgICAgICAgICAg
bV9sb3dQcmlvcml0eU1vdmVMaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgbV9wb3NpdGlvbkluTW92ZUxpc3RbbW92ZUluZGV4XSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKIApAQCAtNjE0LDggKzY1NCwxNCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKIAotICAgICAgICAg
ICAgdW5zaWduZWQgbGFzdEluZGV4ID0gbV9tb3ZlTGlzdC50YWtlTGFzdCgpOwotICAgICAgICAg
ICAgQVNTRVJUKG1fcG9zaXRpb25Jbk1vdmVMaXN0W2xhc3RJbmRleF0gPT0gbV9tb3ZlTGlzdC5z
aXplKCkpOworICAgICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4OworICAgICAgICAgICAgaWYg
KCFtX21vdmVMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG1f
bW92ZUxpc3QudGFrZUxhc3QoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9wb3NpdGlvbklu
TW92ZUxpc3RbbGFzdEluZGV4XSA9PSBtX21vdmVMaXN0LnNpemUoKSk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG1fbG93UHJpb3JpdHlNb3ZlTGlz
dC50YWtlTGFzdCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX3Bvc2l0aW9uSW5Nb3ZlTGlz
dFtsYXN0SW5kZXhdID09IG1fbG93UHJpb3JpdHlNb3ZlTGlzdC5zaXplKCkpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbV9wb3NpdGlvbkluTW92ZUxpc3RbbGFzdEluZGV4XSA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKIAogICAgICAgICAgICAgQVNTRVJUKCFj
b250YWlucyhsYXN0SW5kZXgpKTsKQEAgLTYyOSw5ICs2NzUsMTUgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgLy8gVmFsdWVzIHNob3VsZCBub3QgYmUgYWRkZWQgYmFjayBpZiB0aGV5IHdlcmUg
bmV2ZXIgdGFrZW4gb3V0IHdoZW4gYXR0ZW1wdGluZyBjb2FsZXNjaW5nLgogICAgICAgICAgICAg
QVNTRVJUKCFjb250YWlucyhpbmRleCkpOwogCi0gICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGlv
biA9IG1fbW92ZUxpc3Quc2l6ZSgpOwotICAgICAgICAgICAgbV9tb3ZlTGlzdC5hcHBlbmQoaW5k
ZXgpOwotICAgICAgICAgICAgbV9wb3NpdGlvbkluTW92ZUxpc3RbaW5kZXhdID0gcG9zaXRpb247
CisgICAgICAgICAgICBpZiAoaW5kZXggPCBtX2ZpcnN0TG93UHJpb3JpdHlNb3ZlSW5kZXgpIHsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IG1fbW92ZUxpc3Quc2l6ZSgpOwor
ICAgICAgICAgICAgICAgIG1fbW92ZUxpc3QuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdFtpbmRleF0gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX2xvd1ByaW9yaXR5
TW92ZUxpc3Quc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fbG93UHJpb3JpdHlNb3ZlTGlzdC5h
cHBlbmQoaW5kZXgpOworICAgICAgICAgICAgICAgIG1fcG9zaXRpb25Jbk1vdmVMaXN0W2luZGV4
XSA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBBU1NFUlQoY29udGFp
bnMoaW5kZXgpKTsKICAgICAgICAgfQpAQCAtNjQwLDExICs2OTIsMTQgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB7CiAgICAgICAgICAgICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdC5jbGVhcigpOwogICAg
ICAgICAgICAgbV9tb3ZlTGlzdC5jbGVhcigpOworICAgICAgICAgICAgbV9sb3dQcmlvcml0eU1v
dmVMaXN0LmNsZWFyKCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFZlY3Rv
cjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fcG9zaXRpb25Jbk1vdmVMaXN0
OwogICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX21v
dmVMaXN0OworICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93
PiBtX2xvd1ByaW9yaXR5TW92ZUxpc3Q7CisgICAgICAgIHVuc2lnbmVkIG1fZmlyc3RMb3dQcmlv
cml0eU1vdmVJbmRleCB7IDAgfTsKICAgICB9OwogCiAgICAgLy8gV29yayBsaXN0cy4KQEAgLTY3
OCw2ICs3MzMsMTEgQEAgcHVibGljOgogICAgICAgICAsIG1fdG1wV2lkdGgodG1wV2lkdGgpCiAg
ICAgICAgICwgbV91c2VDb3VudHModXNlQ291bnRzKQogICAgIHsKKyAgICAgICAgaWYgKHR5cGUg
PT0gQXJnOjpHUCkgeworICAgICAgICAgICAgbV9mcmFtZVBvaW50ZXJJbmRleCA9IEFic29sdXRl
VG1wTWFwcGVyPHR5cGU+OjphYnNvbHV0ZUluZGV4KFRtcChNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIG1faW50ZXJmZXJlc1dpdGhGcmFtZVBvaW50
ZXIuZW5zdXJlU2l6ZSh0bXBBcnJheVNpemUoY29kZSkpOworICAgICAgICB9CisKICAgICAgICAg
aW5pdGlhbGl6ZVByZWNvbG9yZWRUbXAoKTsKICAgICAgICAgYnVpbGQoKTsKICAgICAgICAgYWxs
b2NhdGUoKTsKQEAgLTgwMiw2ICs4NjIsNDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0K
IAorICAgIGJvb2wgbWF5QmVDb2FsZXNjZWQoQXJnIGxlZnQsIEFyZyByaWdodCkKKyAgICB7Cisg
ICAgICAgIGlmICghbGVmdC5pc1RtcCgpIHx8ICFyaWdodC5pc1RtcCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIFRtcCBsZWZ0VG1wID0gbGVmdC50bXAoKTsKKyAgICAg
ICAgVG1wIHJpZ2h0VG1wID0gcmlnaHQudG1wKCk7CisKKyAgICAgICAgaWYgKGxlZnRUbXAgPT0g
cmlnaHRUbXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGxlZnRU
bXAuaXNHUCgpICE9ICh0eXBlID09IEFyZzo6R1ApIHx8IHJpZ2h0VG1wLmlzR1AoKSAhPSAodHlw
ZSA9PSBBcmc6OkdQKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1bnNp
Z25lZCBsZWZ0SW5kZXggPSBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6YWJzb2x1dGVJbmRleChs
ZWZ0VG1wKTsKKyAgICAgICAgdW5zaWduZWQgcmlnaHRJbmRleCA9IEFic29sdXRlVG1wTWFwcGVy
PHR5cGU+OjphYnNvbHV0ZUluZGV4KHJpZ2h0VG1wKTsKKworICAgICAgICByZXR1cm4gIW1faW50
ZXJmZXJlbmNlRWRnZXMuY29udGFpbnMoSW50ZXJmZXJlbmNlRWRnZShsZWZ0SW5kZXgsIHJpZ2h0
SW5kZXgpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFRvTG93UHJpb3JpdHlDb2FsZXNjaW5nQ2Fu
ZGlkYXRlcyhBcmcgbGVmdCwgQXJnIHJpZ2h0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1heUJl
Q29hbGVzY2VkKGxlZnQsIHJpZ2h0KSk7CisgICAgICAgIFRtcCBsZWZ0VG1wID0gbGVmdC50bXAo
KTsKKyAgICAgICAgVG1wIHJpZ2h0VG1wID0gcmlnaHQudG1wKCk7CisKKyAgICAgICAgdW5zaWdu
ZWQgbGVmdEluZGV4ID0gQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29sdXRlSW5kZXgobGVm
dFRtcCk7CisgICAgICAgIHVuc2lnbmVkIHJpZ2h0SW5kZXggPSBBYnNvbHV0ZVRtcE1hcHBlcjx0
eXBlPjo6YWJzb2x1dGVJbmRleChyaWdodFRtcCk7CisKKyAgICAgICAgdW5zaWduZWQgbmV4dE1v
dmVJbmRleCA9IG1fY29hbGVzY2luZ0NhbmRpZGF0ZXMuc2l6ZSgpOworICAgICAgICBtX2NvYWxl
c2NpbmdDYW5kaWRhdGVzLmFwcGVuZCh7IGxlZnRJbmRleCwgcmlnaHRJbmRleCB9KTsKKworICAg
ICAgICB1bnNpZ25lZCBuZXdJbmRleEluV29ya2xpc3QgPSBtX3dvcmtsaXN0TW92ZXMuYWRkTG93
UHJpb3JpdHlNb3ZlKCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobmV3SW5kZXhJbldvcmtsaXN0
LCBuZXdJbmRleEluV29ya2xpc3QgPT0gbmV4dE1vdmVJbmRleCk7CisKKyAgICAgICAgQVNTRVJU
KG5leHRNb3ZlSW5kZXggPD0gbV9hY3RpdmVNb3Zlcy5zaXplKCkpOworICAgICAgICBtX2FjdGl2
ZU1vdmVzLmVuc3VyZVNpemUobmV4dE1vdmVJbmRleCArIDEpOworCisgICAgICAgIG1fbW92ZUxp
c3RbbGVmdEluZGV4XS5hZGQobmV4dE1vdmVJbmRleCk7CisgICAgICAgIG1fbW92ZUxpc3Rbcmln
aHRJbmRleF0uYWRkKG5leHRNb3ZlSW5kZXgpOworICAgIH0KKwogICAgIHZvaWQgYnVpbGQoKQog
ICAgIHsKICAgICAgICAgVG1wTGl2ZW5lc3M8dHlwZT4gbGl2ZW5lc3MobV9jb2RlKTsKQEAgLTgx
NSw2ICs5MTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnVpbGQo
bnVsbHB0ciwgJmJsb2NrLT5hdCgwKSwgbG9jYWxDYWxjKTsKICAgICAgICAgfQorICAgICAgICBi
dWlsZExvd1ByaW9yaXR5TW92ZUxpc3QoKTsKICAgICB9CiAKICAgICB2b2lkIGJ1aWxkKEluc3Qq
IHByZXZJbnN0LCBJbnN0KiBuZXh0SW5zdCwgY29uc3QgdHlwZW5hbWUgVG1wTGl2ZW5lc3M8dHlw
ZT46OkxvY2FsQ2FsYyYgbG9jYWxDYWxjKQpAQCAtODgxLDYgKzk4NCwzMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYWRkRWRnZXMocHJldkluc3QsIG5leHRJbnN0LCBsb2NhbENhbGMubGl2ZSgp
KTsKICAgICB9CiAKKyAgICB2b2lkIGJ1aWxkTG93UHJpb3JpdHlNb3ZlTGlzdCgpCisgICAgewor
ICAgICAgICBpZiAoIWlzWDg2KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV93
b3JrbGlzdE1vdmVzLnN0YXJ0QWRkaW5nTG93UHJpb3JpdHlNb3ZlcygpOworICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CisgICAgICAgICAgICBmb3IgKEluc3QmIGlu
c3QgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWZBcmdJbmRleCA9IDA7
CisgICAgICAgICAgICAgICAgaWYgKGluc3Quc2hvdWxkVHJ5QWxpYXNpbmdEZWYoZGVmQXJnSW5k
ZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIEFyZyBvcDEgPSBpbnN0LmFyZ3NbZGVmQXJnSW5k
ZXggLSAyXTsKKyAgICAgICAgICAgICAgICAgICAgQXJnIG9wMiA9IGluc3QuYXJnc1tkZWZBcmdJ
bmRleCAtIDFdOworICAgICAgICAgICAgICAgICAgICBBcmcgZGVzdCA9IGluc3QuYXJnc1tkZWZB
cmdJbmRleF07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0IHx8IG9wMiA9
PSBkZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1heUJlQ29hbGVzY2VkKG9wMSwgZGVzdCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRUb0xvd1ByaW9yaXR5Q29hbGVzY2luZ0NhbmRpZGF0ZXMob3AxLCBkZXN0KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG9wMSAhPSBvcDIgJiYgbWF5QmVDb2FsZXNjZWQob3Ay
LCBkZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvTG93UHJpb3JpdHlDb2FsZXNj
aW5nQ2FuZGlkYXRlcyhvcDIsIGRlc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgYWRkRWRnZXMoSW5zdCogcHJldkluc3Qs
IEluc3QqIG5leHRJbnN0LCB0eXBlbmFtZSBUbXBMaXZlbmVzczx0eXBlPjo6TG9jYWxDYWxjOjpJ
dGVyYWJsZSBsaXZlVG1wcykKICAgICB7CiAgICAgICAgIC8vIEFsbCB0aGUgRGVmKClzIGludGVy
ZmVyZSB3aXRoIGV2ZXJ0aGluZyBsaXZlLgpAQCAtODk1LDExICsxMDI0LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgYWRkRWRnZShhcmcsIGxpdmVUbXApOwogICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0eXBlID09IEFyZzo6R1AgJiYgIWFyZy5pc0dQ
UigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faW50ZXJmZXJlbmNlRWRnZXMuYWRkKEludGVy
ZmVyZW5jZUVkZ2UoCi0gICAgICAgICAgICAgICAgICAgICAgICBBYnNvbHV0ZVRtcE1hcHBlcjx0
eXBlPjo6YWJzb2x1dGVJbmRleChUbXAoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lz
dGVyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6
YWJzb2x1dGVJbmRleChhcmcpKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmICh0eXBlID09IEFyZzo6R1AgJiYgIWFyZy5pc0dQUigpKQorICAgICAgICAgICAgICAgICAg
ICBtX2ludGVyZmVyZXNXaXRoRnJhbWVQb2ludGVyLnF1aWNrU2V0KEFic29sdXRlVG1wTWFwcGVy
PHR5cGU+OjphYnNvbHV0ZUluZGV4KGFyZykpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogCkBA
IC0xMDMyLDYgKzExNTgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGRlYnVnKSB7CiAgICAg
ICAgICAgICBkYXRhTG9nKCJJbnRlcmZlcmVuY2U6ICIsIGxpc3REdW1wKG1faW50ZXJmZXJlbmNl
RWRnZXMpLCAiXG4iKTsKICAgICAgICAgICAgIGR1bXBJbnRlcmZlcmVuY2VHcmFwaEluRG90KFdU
Rjo6ZGF0YUZpbGUoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJDb2FsZXNjaW5nIGNhbmRpZGF0
ZXM6XG4iKTsKKyAgICAgICAgICAgIGZvciAoTW92ZU9wZXJhbmRzJiBtb3ZlT3AgOiBtX2NvYWxl
c2NpbmdDYW5kaWRhdGVzKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIEFic29s
dXRlVG1wTWFwcGVyPHR5cGU+Ojp0bXBGcm9tQWJzb2x1dGVJbmRleChtb3ZlT3Auc3JjSW5kZXgp
LAorICAgICAgICAgICAgICAgICAgICAiIC0+ICIsIEFic29sdXRlVG1wTWFwcGVyPHR5cGU+Ojp0
bXBGcm9tQWJzb2x1dGVJbmRleChtb3ZlT3AuZHN0SW5kZXgpLCAiXG4iKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGRhdGFMb2coIkluaXRpYWwgd29yayBsaXN0XG4iKTsKICAgICAgICAg
ICAgIGR1bXBXb3JrTGlzdHMoV1RGOjpkYXRhRmlsZSgpKTsKICAgICAgICAgfQpAQCAtMTEzMSw3
ICsxMjYyLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlwZT4KICAgICB2
b2lkIGl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nT25UeXBlKCkKICAgICB7Ci0gICAgICAgIEhh
c2hTZXQ8dW5zaWduZWQ+IHVuc3BpbGxhYmxlVG1wczsKKyAgICAgICAgSGFzaFNldDx1bnNpZ25l
ZD4gdW5zcGlsbGFibGVUbXBzID0gY29tcHV0ZVVuc3BpbGxhYmxlVG1wczx0eXBlPigpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBJZiBhIFRtcCBpcyB1c2VkIG9ubHkgZnJvbSBhIFNjcmF0Y2ggcm9s
ZSBhbmQgdGhhdCBhcmd1bWVudCBpcyAhYWRtaXRzU3RhY2ssIHRoZW4KICAgICAgICAgLy8gd2Ug
c2hvdWxkIGFkZCB0aGUgVG1wIHRvIHVuc3BpbGxhYmxlVG1wcy4gVGhhdCB3aWxsIGhlbHAgYXZv
aWQgcmVsb29waW5nIG9ubHkgdG8gdHVybiB0aGUKQEAgLTExNzIsNiArMTMwMyw3MiBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlPEFyZzo6VHlwZSB0eXBlPgorICAgIEhhc2hTZXQ8
dW5zaWduZWQ+IGNvbXB1dGVVbnNwaWxsYWJsZVRtcHMoKQorICAgIHsKKyAgICAgICAgSGFzaFNl
dDx1bnNpZ25lZD4gdW5zcGlsbGFibGVUbXBzOworCisgICAgICAgIHN0cnVjdCBSYW5nZSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBmaXJzdCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSB9OworICAgICAgICAgICAgdW5zaWduZWQgbGFzdCB7IDAgfTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNvdW50IHsgMCB9OworICAgICAgICAgICAgdW5zaWduZWQgYWRtaXRTdGFja0Nv
dW50IHsgMCB9OworICAgICAgICB9OworCisgICAgICAgIHVuc2lnbmVkIG51bVRtcHMgPSBtX2Nv
ZGUubnVtVG1wcyh0eXBlKTsKKyAgICAgICAgdW5zaWduZWQgYXJyYXlTaXplID0gQWJzb2x1dGVU
bXBNYXBwZXI8dHlwZT46OmFic29sdXRlSW5kZXgobnVtVG1wcyk7CisKKyAgICAgICAgVmVjdG9y
PFJhbmdlLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gcmFuZ2VzOworICAgICAgICByYW5nZXMu
ZmlsbChSYW5nZSgpLCBhcnJheVNpemUpOworCisgICAgICAgIHVuc2lnbmVkIGdsb2JhbEluZGV4
ID0gMDsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fY29kZSkgeworICAgICAg
ICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgaW5zdC5m
b3JFYWNoQXJnKFsmXSAoQXJnJiBhcmcsIEFyZzo6Um9sZSwgQXJnOjpUeXBlIGFyZ1R5cGUsIEFy
Zzo6V2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyZy5pc1RtcCgpICYmIGluc3Qu
YWRtaXRzU3RhY2soYXJnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ1R5cGUg
IT0gdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFRtcCB0bXAgPSBhcmcudG1wKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSYW5nZSYgcmFuZ2UgPSByYW5nZXNbQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29s
dXRlSW5kZXgodG1wKV07CisgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5jb3VudCsrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuYWRtaXRTdGFja0NvdW50Kys7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsSW5kZXggPCByYW5nZS5maXJzdCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmZpcnN0ID0gZ2xvYmFsSW5kZXg7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmFuZ2UubGFzdCA9IGdsb2JhbEluZGV4OworICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uu
bGFzdCA9IGdsb2JhbEluZGV4OworCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBhcmcuZm9yRWFjaFRt
cEZhc3QoWyZdIChUbXAmIHRtcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5p
c0dQKCkgIT0gKHR5cGUgPT0gQXJnOjpHUCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSYgcmFuZ2UgPSByYW5nZXNb
QWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29sdXRlSW5kZXgodG1wKV07CisgICAgICAgICAg
ICAgICAgICAgICAgICByYW5nZS5jb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGdsb2JhbEluZGV4IDwgcmFuZ2UuZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByYW5nZS5maXJzdCA9IGdsb2JhbEluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJhbmdlLmxhc3QgPSBnbG9iYWxJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhc3QgPSBnbG9iYWxJbmRleDsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICArK2dsb2JhbEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytnbG9i
YWxJbmRleDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBBYnNvbHV0ZVRt
cE1hcHBlcjx0eXBlPjo6bGFzdE1hY2hpbmVSZWdpc3RlckluZGV4KCkgKyAxOyBpIDwgcmFuZ2Vz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBSYW5nZSYgcmFuZ2UgPSByYW5nZXNbaV07Cisg
ICAgICAgICAgICBpZiAocmFuZ2UubGFzdCAtIHJhbmdlLmZpcnN0IDw9IDEgJiYgcmFuZ2UuY291
bnQgPiByYW5nZS5hZG1pdFN0YWNrQ291bnQpCisgICAgICAgICAgICAgICAgdW5zcGlsbGFibGVU
bXBzLmFkZChpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB1bnNwaWxsYWJsZVRtcHM7
CisgICAgfQorCisgICAgdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+CiAgICAgdm9pZCBhc3NpZ25S
ZWdpc3RlcnNUb1RtcChjb25zdCBDb2xvcmluZ0FsbG9jYXRvcjx0eXBlPiYgYWxsb2NhdG9yKQog
ICAgIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fY29kZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMWRiYjhk
Y2ZjNzU5OWQzYWRiYzJiNWVmNmRkZDVhMzM3NTI3NDM4Zi4uNGFkMThiNzk2YzA2OGVmNTNlNDY3
ZTZkY2QyYWE1M2MyOGI4Y2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCkBAIC0xMDcsNiArMTA3LDEwIEBACiAKIE5vcAogCitBZGQzMiBV
Okc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIEltbSwgVG1wLCBUbXAKKyAgICBUbXAsIFRtcCwg
VG1wCisKIEFkZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1t
LCBBZGRyCkBAIC0xMjgsMTAgKzEzMiw2IEBAIHg4NjogQWRkMTYgVTpHOjE2LCBVRDpHOjE2CiAg
ICAgVG1wLCBBZGRyCiAgICAgVG1wLCBJbmRleAogCi1BZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgotICAgIEltbSwgVG1wLCBUbXAKLSAgICBUbXAsIFRtcCwgVG1wCi0KIDY0OiBBZGQ2NCBV
Okc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCkBAIC0xNDMs
MTUgKzE0MywxOSBAQCBBZGQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAgIEltbSwgVG1w
LCBUbXAKICAgICBUbXAsIFRtcCwgVG1wCiAKLWFybTY0OiBBZGREb3VibGUgVTpGOjY0LCBVOkY6
NjQsIEQ6Rjo2NAorQWRkRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRt
cCwgVG1wCisgICAgeDg2OiBBZGRyLCBUbXAsIFRtcAorICAgIHg4NjogVG1wLCBBZGRyLCBUbXAK
IAogeDg2OiBBZGREb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICBBZGRy
LCBUbXAKIAotYXJtNjQ6IEFkZEZsb2F0IFU6RjozMiwgVTpGOjMyLCBEOkY6MzIKK0FkZEZsb2F0
IFU6RjozMiwgVTpGOjMyLCBEOkY6MzIKICAgICBUbXAsIFRtcCwgVG1wCisgICAgeDg2OiBBZGRy
LCBUbXAsIFRtcAorICAgIHg4NjogVG1wLCBBZGRyLCBUbXAKIAogeDg2OiBBZGRGbG9hdCBVOkY6
MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcApAQCAtMjAwLDEzICsyMDQsMTUgQEAgTXVsMzIgVTpH
OjMyLCBVWkQ6RzozMgogICAgIHg4NjogQWRkciwgVG1wCiAKIE11bDMyIFU6RzozMiwgVTpHOjMy
LCBaRDpHOjMyCi0gICAgYXJtNjQ6IFRtcCwgVG1wLCBUbXAKKyAgICBUbXAsIFRtcCwgVG1wCisg
ICAgeDg2OiBBZGRyLCBUbXAsIFRtcAorICAgIHg4NjogVG1wLCBBZGRyLCBUbXAKICAgICB4ODY6
IEltbSwgVG1wLCBUbXAKIAogNjQ6IE11bDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1w
CiAKLWFybTY0OiBNdWw2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CitNdWw2NCBVOkc6NjQsIFU6
Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogCiBhcm02NDogRGl2MzIgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKQEAgLTIxNSwxNSArMjIxLDE5IEBAIGFybTY0OiBEaXYzMiBVOkc6MzIs
IFU6RzozMiwgWkQ6RzozMgogYXJtNjQ6IERpdjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAg
ICBUbXAsIFRtcCwgVG1wCiAKLWFybTY0OiBNdWxEb3VibGUgVTpGOjY0LCBVOkY6NjQsIEQ6Rjo2
NAorTXVsRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcCwgVG1wCisg
ICAgeDg2OiBBZGRyLCBUbXAsIFRtcAorICAgIHg4NjogVG1wLCBBZGRyLCBUbXAKIAogeDg2OiBN
dWxEb3VibGUgVTpGOjY0LCBVRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAot
YXJtNjQ6IE11bEZsb2F0IFU6RjozMiwgVTpGOjMyLCBEOkY6MzIKK011bEZsb2F0IFU6RjozMiwg
VTpGOjMyLCBEOkY6MzIKICAgICBUbXAsIFRtcCwgVG1wCisgICAgeDg2OiBBZGRyLCBUbXAsIFRt
cAorICAgIHg4NjogVG1wLCBBZGRyLCBUbXAKIAogeDg2OiBNdWxGbG9hdCBVOkY6MzIsIFVEOkY6
MzIKICAgICBUbXAsIFRtcApAQCAtMjU4LDYgKzI2OCwxMSBAQCB4ODZfNjQ6IFg4NkRpdjY0IFVa
RDpHOjY0LCBVWkQ6Rzo2NCwgVTpHOjY0CiBMZWEgVUE6RzpQdHIsIEQ6RzpQdHIKICAgICBBZGRy
LCBUbXAKIAorQW5kMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIFRtcCwgVG1w
CisgICAgeDg2OiBUbXAsIEFkZHIsIFRtcAorICAgIHg4NjogQWRkciwgVG1wLCBUbXAKKwogQW5k
MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcApAQCAt
MjY1LDI1ICsyODAsMzQgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIHg4NjogQWRkciwg
VG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKIAotNjQ6IEFuZDY0IFU6Rzo2NCwgVUQ6Rzo2NAorNjQ6
IEFuZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKK3g4Nl82
NDogQW5kNjQgVTpHOjY0LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgVG1w
CiAKLWFybTY0OiBBbmREb3VibGUgVTpGOjY0LCBVOkY6NjQsIEQ6Rjo2NAorQW5kRG91YmxlIFU6
Rjo2NCwgVTpGOjY0LCBEOkY6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAKIHg4NjogQW5kRG91Ymxl
IFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAKLWFybTY0OiBBbmRGbG9hdCBVOkY6MzIs
IFU6RjozMiwgRDpGOjMyCitBbmRGbG9hdCBVOkY6MzIsIFU6RjozMiwgRDpGOjMyCiAgICAgVG1w
LCBUbXAsIFRtcAogCiB4ODY6IEFuZEZsb2F0IFU6RjozMiwgVUQ6RjozMgogICAgIFRtcCwgVG1w
CiAKK3g4NjogWG9yRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKKyAgICBUbXAsIFRtcCwg
VG1wCisKIHg4NjogWG9yRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAKK3g4
NjogWG9yRmxvYXQgVTpGOjMyLCBVOkY6MzIsIEQ6RjozMgorICAgIFRtcCwgVG1wLCBUbXAKKwog
eDg2OiBYb3JGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogCkBAIC0zMzUsNiAr
MzU5LDExIEBAIHg4Nl82NDogVXJzaGlmdDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCosIFRt
cAogICAgIEltbSwgVG1wCiAKK09yMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAs
IFRtcCwgVG1wCisgICAgeDg2OiBUbXAsIEFkZHIsIFRtcAorICAgIHg4NjogQWRkciwgVG1wLCBU
bXAKKwogT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwg
VG1wCkBAIC0zNDIsMTAgKzM3MSwxOCBAQCBPcjMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6
IEFkZHIsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAKKzY0OiBPcjY0IFU6Rzo2NCwgVTpHOjY0
LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKIDY0OiBPcjY0IFU6Rzo2NCwgVUQ6Rzo2NAog
ICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogCitYb3IzMiBVOkc6MzIsIFU6RzozMiwg
WkQ6RzozMgorICAgIFRtcCwgVG1wLCBUbXAKKyAgICB4ODY6IFRtcCwgQWRkciwgVG1wCisgICAg
eDg2OiBBZGRyLCBUbXAsIFRtcAorCiBYb3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBU
bXAKICAgICB4ODY6IEltbSwgVG1wCkBAIC0zNTMsNiArMzkwLDkgQEAgWG9yMzIgVTpHOjMyLCBV
WkQ6RzozMgogICAgIHg4NjogQWRkciwgVG1wCiAgICAgeDg2OiBJbW0sIEFkZHIKIAorNjQ6IFhv
cjY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKIDY0OiBYb3I2
NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogICAgIHg4NjogVG1wLCBBZGRyCkBAIC0z
ODYsMTEgKzQyNiwxMSBAQCBDZWlsRmxvYXQgVTpGOjMyLCBEOkY6MzIKICAgICBUbXAsIFRtcAog
ICAgIHg4NjogQWRkciwgVG1wCiAKLVNxcnREb3VibGUgVTpGOjY0LCBVRDpGOjY0CitTcXJ0RG91
YmxlIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEFkZHIsIFRtcAogCi1T
cXJ0RmxvYXQgVTpGOjMyLCBVRDpGOjMyCitTcXJ0RmxvYXQgVTpGOjMyLCBEOkY6MzIKICAgICBU
bXAsIFRtcAogICAgIHg4NjogQWRkciwgVG1wCiAKQEAgLTYwOSw2ICs2NDksMTEgQEAgQnJhbmNo
RG91YmxlIFU6RzozMiwgVTpGOjY0LCBVOkY6NjQgL2JyYW5jaAogQnJhbmNoRmxvYXQgVTpHOjMy
LCBVOkY6MzIsIFU6RjozMiAvYnJhbmNoCiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAKIAorQnJh
bmNoQWRkMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMiAvYnJhbmNoCisgICAgUmVz
Q29uZCwgVG1wLCBUbXAsIFRtcAorICAgIHg4NjpSZXNDb25kLCBUbXAsIEFkZHIsIFRtcAorICAg
IHg4NjpSZXNDb25kLCBBZGRyLCBUbXAsIFRtcAorCiBCcmFuY2hBZGQzMiBVOkc6MzIsIFU6Rzoz
MiwgVVpEOkc6MzIgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCiAgICAgUmVzQ29uZCwg
SW1tLCBUbXAKQEAgLTYxNiw5ICs2NjEsMTUgQEAgQnJhbmNoQWRkMzIgVTpHOjMyLCBVOkc6MzIs
IFVaRDpHOjMyIC9icmFuY2gKICAgICB4ODY6IFJlc0NvbmQsIFRtcCwgQWRkcgogICAgIHg4Njog
UmVzQ29uZCwgQWRkciwgVG1wCiAKK0JyYW5jaEFkZDY0IFU6RzozMiwgVTpHOjY0LCBVOkc6NjQs
IFpEOkc6NjQgL2JyYW5jaAorICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBUbXAKKyAgICB4ODY6UmVz
Q29uZCwgVG1wLCBBZGRyLCBUbXAKKyAgICB4ODY6UmVzQ29uZCwgQWRkciwgVG1wLCBUbXAKKwog
NjQ6IEJyYW5jaEFkZDY0IFU6RzozMiwgVTpHOjY0LCBVRDpHOjY0IC9icmFuY2gKICAgICBSZXND
b25kLCBJbW0sIFRtcAogICAgIFJlc0NvbmQsIFRtcCwgVG1wCisgICAgeDg2OlJlc0NvbmQsIEFk
ZHIsIFRtcAogCiB4ODY6IEJyYW5jaE11bDMyIFU6RzozMiwgVTpHOjMyLCBVWkQ6RzozMiAvYnJh
bmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwZWNpYWwuY3BwCmluZGV4IDBjNTM4YWFmYTNmOTRkZGUwNDMxNTc0NDExMWQyYzFkYmJi
Mzk0ZjkuLmUzMmIyNDFlMTEyMDA0NThjMzg2NzYyYTZkZjhhNWM4YzA4OGE2NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcApAQCAtNTAsNiArNTAsMTEg
QEAgQ1N0cmluZyBTcGVjaWFsOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gb3V0LnRvQ1N0cmlu
ZygpOwogfQogCitib29sIFNwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmLCB1bnNp
Z25lZCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFNwZWNpYWw6Omhhc05vbkFy
Z05vbkNvbnRyb2xFZmZlY3RzKCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmgKaW5kZXggZTVjYjVmMTgyY2I0NmU2OWFjZDY1OTcw
MWZmZDRmZjI1MDViZTllYy4uZGEwNTBmYTEzZTIyMzgwMGFjZWQxZDAzYjhkM2EyMTlkZDZkNTEz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmgKQEAgLTU2LDYg
KzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQXJnKEluc3QmLCBjb25z
dCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNWYWxpZChJbnN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhZG1pdHNTdGFjayhJ
bnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJ5
QWxpYXNpbmdEZWYoSW5zdCYsIHVuc2lnbmVkJiBkZWZJbmRleCk7CiAKICAgICAvLyBUaGlzIGdl
dHMgY2FsbGVkIG9uIGZvciBlYWNoIEluc3QgdGhhdCB1c2VzIHRoaXMgU3BlY2lhbC4gTm90ZSB0
aGF0IHRoZXJlIGlzIG5vIHdheSB0bwogICAgIC8vIGd1YXJhbnRlZSB0aGF0IGEgU3BlY2lhbCBn
ZXRzIHVzZWQgZnJvbSBqdXN0IG9uZSBJbnN0LCBiZWNhdXNlIEFpciBtaWdodCB0YWlsZHVwIGxh
dGUuIFNvLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCAzMGVhZjcwMGI0NTRh
NGZiYmEyZmQ0ZjQ5OTMwNGNjMWU3ZjJlZGQ4Li5kMzgzMWIzZTZmZWZjZjIzMTAwZjE5N2E3OGRm
YWExYzczZDFiYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtNzQ5Miw2
ICs3NDkyLDE0NiBAQCB2b2lkIHRlc3RDaGVja0FkZEZvbGRGYWlsKGludCBhLCBpbnQgYikKICAg
ICBDSEVDSyhpbnZva2U8aW50PigqY29kZSkgPT0gNDIpOwogfQogCit2b2lkIHRlc3RDaGVja0Fk
ZEFyZ3VtZW50QWxpYXNpbmc2NCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSog
YXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKworICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUg
YXJncy4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdXNlQXJncy0+YXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVz
ZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0
ZXIpKTsKKyAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKSk7CisgICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8v
IExhc3QgdXNlIG9mIGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCisgICAgQ2hlY2tWYWx1ZSogY2hl
Y2tBZGQxID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmln
aW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tBZGQxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29w
cygpOyB9KTsKKworICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzIpLgor
ICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihw
cm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZzMsIGFyZzIpOworICAgIGNoZWNrQWRkMi0+c2V0
R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsgaml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KKyAg
ICBQYXRjaHBvaW50VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBv
aW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBrZWVwQXJnMkxpdmUtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBr
ZWVwQXJnMkxpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBPbmx5IHVzZSBvZiBjaGVja0Fk
ZDEgYW5kIGNoZWNrQWRkMi4KKyAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDMgPSByb290LT5hcHBl
bmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBjaGVja0FkZDEsIGNo
ZWNrQWRkMik7CisgICAgY2hlY2tBZGQzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsK
KworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIGNoZWNrQWRkMyk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
IDEsIDIsIDMpID09IDgpOworfQorCit2b2lkIHRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmcz
MigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
YXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKworICAgIC8vIFByZXRlbmQgdG8gdXNl
IGFsbCB0aGUgYXJncy4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdXNlQXJn
cy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcikp
OworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpT
b21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcz
LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsm
XSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsK
KworICAgIC8vIExhc3QgdXNlIG9mIGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCisgICAgQ2hlY2tW
YWx1ZSogY2hlY2tBZGQxID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNr
QWRkLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tBZGQxLT5zZXRHZW5lcmF0b3Io
WyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
eyBqaXQub29wcygpOyB9KTsKKworICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUs
IGFyZzMpLgorICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVj
a1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZzIsIGFyZzMpOworICAgIGNoZWNr
QWRkMi0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBLZWVwIGFyZzMg
bGl2ZS4KKyAgICBQYXRjaHBvaW50VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBrZWVwQXJnMkxp
dmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIp
KTsKKyAgICBrZWVwQXJnMkxpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBPbmx5IHVzZSBv
ZiBjaGVja0FkZDEgYW5kIGNoZWNrQWRkMi4KKyAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDMgPSBy
b290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBjaGVj
a0FkZDEsIGNoZWNrQWRkMik7CisgICAgY2hlY2tBZGQzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29w
cygpOyB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIGNoZWNrQWRkMyk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIDEsIDIsIDMpID09IDgpOworfQorCit2b2lkIHRlc3RDaGVja0FkZFNlbGZPdmVy
ZmxvdzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
Q2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2tBZGQsIE9yaWdpbigpLCBhcmcsIGFyZyk7CisgICAgY2hlY2tBZGQtPmFwcGVuZChhcmcp
OworICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Cisg
ICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMF0uZ3ByKCksIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAg
ICAgaml0LnJldCgpOworICAgICAgICB9KTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJnIGlz
IG5vdCB0aGUgZGVzdGluYXRpb24gb2YgdGhlIG9wZXJhdGlvbi4KKyAgICBQYXRjaHBvaW50VmFs
dWUqIG9wYXF1ZVVzZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZv
aWQsIE9yaWdpbigpKTsKKyAgICBvcGFxdWVVc2UtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFy
ZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIG9wYXF1ZVVzZS0+c2V0R2VuZXJhdG9y
KFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGNoZWNrQWRkKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisKKyAg
ICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDBsbCkgPT0gMCk7CisgICAgQ0hFQ0soaW52
b2tlPGludDY0X3Q+KCpjb2RlLCAxbGwpID09IDIpOworICAgIENIRUNLKGludm9rZTxpbnQ2NF90
PigqY29kZSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tBZGRTZWxm
T3ZlcmZsb3czMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9vdC0+YXBwZW5kTmV3PENoZWNr
VmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnLCBhcmcpOworICAgIGNoZWNrQWRk
LT5hcHBlbmQoYXJnKTsKKyAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOworICAgICAgICAgICAgaml0Lm1vdmUocGFyYW1zWzBdLmdwcigpLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBNYWtlIHN1
cmUgdGhlIGFyZyBpcyBub3QgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBvcGVyYXRpb24uCisgICAg
UGF0Y2hwb2ludFZhbHVlKiBvcGFxdWVVc2UgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgb3BhcXVlVXNlLT5hcHBlbmQoQ29uc3Ry
YWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBvcGFxdWVVc2Ut
PnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYpIHsgfSk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBjaGVja0FkZCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxl
KHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAwbGwpID09IDApOwor
ICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgMWxsKSA9PSAyKTsKKyAgICBDSEVDSyhp
bnZva2U8aW50MzJfdD4oKmNvZGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Cit9CisKIHZvaWQgdGVz
dENoZWNrU3ViSW1tKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTc5NDMsNiArODA4Myw4
NiBAQCB2b2lkIHRlc3RDaGVja011bEZvbGRGYWlsKGludCBhLCBpbnQgYikKICAgICBDSEVDSyhp
bnZva2U8aW50PigqY29kZSkgPT0gNDIpOwogfQogCit2b2lkIHRlc3RDaGVja011bEFyZ3VtZW50
QWxpYXNpbmc2NCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBWYWx1ZSogYXJnMyA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKKworICAgIC8vIFByZXRlbmQgdG8gdXNlIGFsbCB0aGUgYXJncy4KKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFp
bmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAg
ICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmczLCBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyKSk7CisgICAgdXNlQXJncy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIExhc3QgdXNl
IG9mIGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwxID0g
cm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJn
MSwgYXJnMik7CisgICAgY2hlY2tNdWwxLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsK
KworICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcgKGhlcmUsIGFyZzIpLgorICAgIENoZWNr
VmFsdWUqIGNoZWNrTXVsMiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVj
a011bCwgT3JpZ2luKCksIGFyZzMsIGFyZzIpOworICAgIGNoZWNrTXVsMi0+c2V0R2VuZXJhdG9y
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYp
IHsgaml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBLZWVwIGFyZzMgbGl2ZS4KKyAgICBQYXRjaHBv
aW50VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBrZWVwQXJnMkxpdmUtPmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICBrZWVwQXJnMkxp
dmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBPbmx5IHVzZSBvZiBjaGVja011bDEgYW5kIGNo
ZWNrTXVsMi4KKyAgICBDaGVja1ZhbHVlKiBjaGVja011bDMgPSByb290LT5hcHBlbmROZXc8Q2hl
Y2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBjaGVja011bDEsIGNoZWNrTXVsMik7
CisgICAgY2hlY2tNdWwzLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNr
TXVsMyk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIDIsIDMsIDQp
ID09IDcyKTsKK30KKwordm9pZCB0ZXN0Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5nMzIoKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFs
dWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzMgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7CisKKyAgICAvLyBQcmV0ZW5kIHRvIHVzZSBhbGwgdGhl
IGFyZ3MuCisgICAgUGF0Y2hwb2ludFZhbHVlKiB1c2VBcmdzID0gcm9vdC0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIHVzZUFyZ3MtPmFwcGVu
ZChDb25zdHJhaW5lZFZhbHVlKGFyZzEsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1
c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lz
dGVyKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMywgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPnNldEdlbmVyYXRvcihbJl0gKENDYWxs
SGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAv
LyBMYXN0IHVzZSBvZiBmaXJzdCBhcmcgKGhlcmUsIGFyZzEpLgorICAgIENoZWNrVmFsdWUqIGNo
ZWNrTXVsMSA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3Jp
Z2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrTXVsMS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9v
cHMoKTsgfSk7CisKKyAgICAvLyBMYXN0IHVzZSBvZiBzZWNvbmQgYXJnIChoZXJlLCBhcmczKS4K
KyAgICBDaGVja1ZhbHVlKiBjaGVja011bDIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
cHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcyLCBhcmczKTsKKyAgICBjaGVja011bDItPnNl
dEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gS2VlcCBhcmczIGxpdmUuCisg
ICAgUGF0Y2hwb2ludFZhbHVlKiBrZWVwQXJnMkxpdmUgPSByb290LT5hcHBlbmROZXc8UGF0Y2hw
b2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAga2VlcEFyZzJMaXZlLT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAg
a2VlcEFyZzJMaXZlLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisgICAgLy8gT25seSB1c2Ugb2YgY2hlY2tN
dWwxIGFuZCBjaGVja011bDIuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwzID0gcm9vdC0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgY2hlY2tNdWwxLCBj
aGVja011bDIpOworICAgIGNoZWNrTXVsMy0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsgfSk7
CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBjaGVja011bDMpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCAyLCAzLCA0KSA9PSA3Mik7Cit9CisKIHZvaWQgdGVzdENoZWNrTXVsNjRTU2hyKCkKIHsKICAg
ICBQcm9jZWR1cmUgcHJvYzsKQEAgLTEwOTIwLDYgKzExMTQwLDEwIEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdENoZWNrQWRkNjQoKSk7CiAgICAgUlVOKHRlc3RD
aGVja0FkZEZvbGQoMTAwLCAyMDApKTsKICAgICBSVU4odGVzdENoZWNrQWRkRm9sZEZhaWwoMjE0
NzQ4MzY0NywgMTAwKSk7CisgICAgUlVOKHRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmc2NCgp
KTsKKyAgICBSVU4odGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzMyKCkpOworICAgIFJVTih0
ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCgpKTsKKyAgICBSVU4odGVzdENoZWNrQWRkU2VsZk92
ZXJmbG93MzIoKSk7CiAgICAgUlVOKHRlc3RDaGVja1N1YkltbSgpKTsKICAgICBSVU4odGVzdENo
ZWNrU3ViQmFkSW1tKCkpOwogICAgIFJVTih0ZXN0Q2hlY2tTdWIoKSk7CkBAIC0xMDkzNCw2ICsx
MTE1OCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdENoZWNr
TXVsNjQoKSk7CiAgICAgUlVOKHRlc3RDaGVja011bEZvbGQoMTAwLCAyMDApKTsKICAgICBSVU4o
dGVzdENoZWNrTXVsRm9sZEZhaWwoMjE0NzQ4MzY0NywgMTAwKSk7CisgICAgUlVOKHRlc3RDaGVj
a011bEFyZ3VtZW50QWxpYXNpbmc2NCgpKTsKKyAgICBSVU4odGVzdENoZWNrTXVsQXJndW1lbnRB
bGlhc2luZzMyKCkpOwogCiAgICAgUlVOKHRlc3RDb21wYXJlKEVxdWFsLCA0MiwgNDIpKTsKICAg
ICBSVU4odGVzdENvbXBhcmUoTm90RXF1YWwsIDQyLCA0MikpOwpAQCAtMTE0NjMsNiArMTE2ODks
NyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RTU2hyU2hsNjQo
LTQyMDAwMDAwMDAwLCA4LCA4KSk7CiAKICAgICBSVU4odGVzdENoZWNrTXVsNjRTU2hyKCkpOwor
CiAgICAgUlVOKHRlc3RDb21wdXRlRGl2aXNpb25NYWdpYzxpbnQzMl90PigyLCAtMjE0NzQ4MzY0
NywgMCkpOwogICAgIFJVTih0ZXN0VHJpdmlhbEluZmluaXRlTG9vcCgpKTsKICAgICBSVU4odGVz
dEZvbGRQYXRoRXF1YWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggZjcxNmU3NmY3NTc1Nzg1NjFkYTY2
M2RhNDVmYzdhMDlhM2M3NTVmNy4uMDBiYmU4YjRlNDVlMTVmZDNhYjk0Yzk1YjIwMDNmYzE2YTY0
Nzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgcmVpZnlJbmxpbmVk
Q2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAg
ICAgICAgIGppdC5lbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKAogICAgICAgICAgICAgYmFz
ZWxpbmVDb2RlQmxvY2ssCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLAotICAgICAgICAgICAgdHJ1ZUNhbGxlciA/
IEFzc2VtYmx5SGVscGVyczo6VXNlRXhpc3RpbmdUYWdSZWdpc3RlckNvbnRlbnRzIDogQXNzZW1i
bHlIZWxwZXJzOjpDb3B5U2F2ZWRUYWdSZWdpc3RlcnNGcm9tQmFzZUZyYW1lLAorICAgICAgICAg
ICAgdHJ1ZUNhbGxlciA/IEFzc2VtYmx5SGVscGVyczo6VXNlRXhpc3RpbmdUYWdSZWdpc3RlckNv
bnRlbnRzIDogQXNzZW1ibHlIZWxwZXJzOjpDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVy
c0Zyb21CYXNlRnJhbWUsCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMik7CiAKICAgICAgICAg
aWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNTRjOWFkYzhkN2QzMTczMmJhMWI2NGZkNGZi
MWVhODUxZmZiYjE1Zi4uNWE5ODExMmM2OTVkNTgxMDE5OTRkMDFlN2NjNTY2MjA1YmRjYjdiYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0yMTMs
NyArMjEzLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGVudW0gUmVz
dG9yZVRhZ1JlZ2lzdGVyTW9kZSB7IFVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cywgQ29w
eVNhdmVkVGFnUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSB9OworICAgIGVudW0gUmVzdG9yZVRhZ1Jl
Z2lzdGVyTW9kZSB7IFVzZUV4aXN0aW5nVGFnUmVnaXN0ZXJDb250ZW50cywgQ29weUJhc2VsaW5l
Q2FsbGVlU2F2ZWRSZWdpc3RlcnNGcm9tQmFzZUZyYW1lIH07CiAKICAgICB2b2lkIGVtaXRTYXZl
T3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZpcnR1YWxSZWdpc3Rl
ciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgdGFnUmVnaXN0
ZXJNb2RlLCBHUFJSZWcgdGVtcCkKICAgICB7CkBAIC0yMjIsNiArMjIyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0
ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVy
U2V0OjphbGxGUFJzKCkpOwogICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVl
U2F2ZXMtPnNpemUoKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIFJlZ2lzdGVyU2V0
IGJhc2VsaW5lQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyNlbmRpZgogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgewogICAgICAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKQEAgLTIzNCw4ICsyMzgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0odGFnUmVnaXN0ZXJNb2RlKTsKICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKICNlbHNlCi0gICAgICAgICAgICBpZiAodGFnUmVnaXN0
ZXJNb2RlID09IENvcHlTYXZlZFRhZ1JlZ2lzdGVyc0Zyb21CYXNlRnJhbWUKLSAgICAgICAgICAg
ICAgICAmJiAoZW50cnkucmVnKCkgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyIHx8
IGVudHJ5LnJlZygpID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpIHsKKyAgICAgICAgICAg
IGlmICh0YWdSZWdpc3Rlck1vZGUgPT0gQ29weUJhc2VsaW5lQ2FsbGVlU2F2ZWRSZWdpc3RlcnNG
cm9tQmFzZUZyYW1lICYmIGJhc2VsaW5lQ2FsbGVlU2F2ZXMuZ2V0KGVudHJ5LnJlZygpKSkgewog
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IHRlbXA7CiAgICAgICAgICAgICAgICAg
bG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIGVudHJ5Lm9mZnNldCgpKSwgcmVnaXN0ZXJUb1dyaXRlKTsKICAgICAgICAgICAgIH0gZWxz
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271130</attachid>
            <date>2016-02-11 20:55:19 -0800</date>
            <delta_ts>2016-02-12 14:32:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154151-20160211205458.patch</filename>
            <type>text/plain</type>
            <size>64825</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MGI3YmMzOGEyMDIyY2Y2M2UwZmYzY2Q3YzgxZGZkN2Y1NTQ1ODZkLi45YTNmZjlmODkyNDEzZGZh
M2FkNTBlY2JkZWE5N2Y1MjVhY2MyNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODcgQEAKKzIwMTYtMDItMTEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtKU0NdIE9uIHg4NiwgaW1wcm92ZSB0aGUgc2VsZWN0aW9uIG9m
IHdoaWNoIHZhbHVlIGFyZSBzZWxlY3RlZCBmb3IgdGhlIFVzZURlZiBwYXJ0IG9mIGNvbW11dGF0
aXZlIG9wZXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NDE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXZpb3VzbHksIHdoZW4gYW4gaW5zdHJ1Y3Rpb24gZGVzdHJveSBhbiBhcmd1bWVu
dCB3aXRoCisgICAgICAgIGEgVXNlRGVmIHVzZSwgd2Ugd291bGQgdHJ5IHRvIHBpY2sgYSBnb29k
IHRhcmdldCBmb3IgdGhlIFVzZURlZgorICAgICAgICB3aGlsZSBkb2luZyBpbnN0cnVjdGlvbiBz
ZWxlY3Rpb24uCisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICBAeCA9IEFkZChA
MSwgQDIpCisKKyAgICAgICAgY2FuIGJlIGxvd2VyZWQgdG86CisgICAgICAgICAgICBNb3ZlIEAx
IFRtcDMKKyAgICAgICAgICAgIEFkZCBAMiBUbXAzCisgICAgICAgIG9yCisgICAgICAgICAgICBN
b3ZlIEAyIFRtcDMKKyAgICAgICAgICAgIEFkZCBAMSBUbXAzCisKKyAgICAgICAgVGhlIGNob2lj
ZSBvZiB3aGljaCB2YWx1ZSBlbmRzIHVwIGNvcGllZCBpcyBkb25lIGJ5IHByZWZlclJpZ2h0Rm9y
UmVzdWx0KCkKKyAgICAgICAgYXQgbG93ZXJpbmcgdGltZS4KKworICAgICAgICBUaGVyZSBhcmUg
dHdvIGNvbW1vbiBwcm9ibGVtcyB3aXRoIHRoZSBjb2RlIHdlIGdlbmVyYXRlOgorICAgICAgICAx
KSBJdCBpcyBiYXNlZCBvbiBVc2VDb3VudC4gSWYgYSB2YWx1ZSBpcyBhdCBpdHMgbGFzdCB1c2Us
CisgICAgICAgICAgIGl0IGlzIGEgZ29vZCB0YXJnZXQgZm9yIGNvYWxlc2NpbmcgZXZlbiB3aXRo
IGEgdXNlLWNvdW50ID4gMS4KKyAgICAgICAgMikgV2hlbiBib3RoIHZhbHVlcyBhcmUgYXQgdGhl
aXIgbGFzdCB1c2UsIHRoZSBiZXN0IGNob2ljZQorICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSBy
ZWdpc3RlciBwcmVzc3VyZSBvZiBlYWNoLiBXZSBkb24ndCBoYXZlIHRoYXQgaW5mb3JtYXRpb24K
KyAgICAgICAgICAgdW50aWwgd2UgZG8gcmVnaXN0ZXIgYWxsb2NhdGlvbi4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcGxlbWVudHMgYSBzaW1wbGUgaWRlYSB0byBtaW5pbWl6ZSBob3cgbWFueSBv
ZiB0aG9zZSBNb3ZlcyBhcmUgbmVlZGVkLgorICAgICAgICBFYWNoIGNvbW11dGF0aXZlIG9wZXJh
dGlvbiBnZXRzIGEgMyBvcCB2YXJpYW50LiBUaGUgcmVnaXN0ZXIgYWxsb2NhdG9yIHRoZW4gYXR0
ZW1wdHMKKyAgICAgICAgdG8gYWxpYXMgKmJvdGgqIG9mIHRoZW0gdG8gdGhlIGRlc3RpbmF0aW9u
LgorICAgICAgICBTaW5jZSBvdXIgYWxpYXNpbmcgaXMgY29uc2VydmF0aXZlLCBpdCByZW1vdmVz
IGFzIG1hbnkgY29weSBhcyBwb3NzaWJsZSB3aXRob3V0IGNhdXNpbmcKKyAgICAgICAgc3BpbGxp
bmcuCisKKyAgICAgICAgVGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgY29vbCBpbXBvdmVtZW50IHRv
by4gSWYgeW91IGhhdmU6CisgICAgICAgICAgICBNb3ZlIFRtcDEsIFRtcDIKKyAgICAgICAgICAg
IEJyYW5jaEFkZDMyIFRtcDMsIFRtcDIKKyAgICAgICAgd2Ugd291bGQgcHJldmlvdXNseSByZXN0
b3JlIFRtcDIgYnkgc3Vic3RyYWN0aW5nIFRtcDMgZnJvbSB0aGUgcmVzdWx0LgorICAgICAgICBX
ZSBjYW4gbm93IGp1c3QgdXNlIFRtcDEuIFRoYXQgcmVtb3ZlcyBxdWl0ZSBhIGZldyBTdWIgZnJv
bSB0aGUgc2xvdyBwYXRocy4KKworICAgICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHNpbXBsZSBp
ZGVhIHVuY292ZXJyZWQgYSBidW5jaCBvZiBpc3N1ZXMgdGhhdCBoYWQgdG8gYmUgZml4ZWQgdG9v
LgorICAgICAgICBJIGRldGFpbCB0aGVtIGlubGluZSBiZWxvdy4KKworICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmFuZDY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaDoKKyAgICAgICAgTW9zdCBhZGRpdGlvbiBhcmUgYWRkaW5nIGFuIEFkZHJlc3MgdmVyc2lv
biBvZiB0aGUgMyBvcGVyYW5kcyBvcGNvZGVzLgorICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlz
IGlzIGFsbG93IHRoZSBjb21wbGV4IGFkZHJlc3NpbmcgZm9ybXMgb2YgaW5zdHJ1Y3Rpb25zCisg
ICAgICAgIHdoZW4gc3BpbGxpbmcuCisKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om11
bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om9yMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZURvdWJsZSk6CisgICAgICAgIFRoaXMgd2Fz
IGFuIHVuZXhwZWN0ZWQgZGlzY292ZXJ5OiByZW1vdmluZyB0b25zIG9mIE1vdmUzMiBtYWRlIGZs
b2F0aW5nLXBvaW50IGhlYXZ5CisgICAgICAgIGNvZGUgbXVjaCBzbG93ZXIuCisKKyAgICAgICAg
SXQgdHVybnMgb3V0IHRoZSBNb3ZlRG91YmxlIHdlIHdlcmUgdXNpbmcgaGFzIHBhcnRpYWwgcmVn
aXN0ZXIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgIFRoZSB4ODYgb3B0aW1pemF0aW9uIG1hbnVh
bCwgQ2hhcHRlciAzLCBzZWN0aW9uIDMuNC4xLjEzIGxpc3RzIHRoZSBtb3ZlIGluc3RydWN0aW9u
cyBleGVjdXRlZAorICAgICAgICBkaXJlY3RseSBvbiB0aGUgZnJvbnRlbmQuIFRoYXQncyB3aGF0
IHdlIHVzZSBub3cuCisKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFk
ZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphZGRGbG9h
dCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptdWxEb3VibGUpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsRmxvYXQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFuZEZsb2F0KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnhvckRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjp4b3JGbG9hdCk6CisgICAgICAgIElmIHRoZSBkZXN0aW5hdGlvbiBp
cyBub3QgYWxpYXNlZCwgdGhlIHZlcnNpb24gdGFraW5nIGFuIGFkZHJlc3MKKyAgICAgICAgdXNl
IExvYWRGbG9hdC9Mb2FkRG91YmxlIGluc3RlYWQgb2YgZGlyZWN0IGFkZHJlc3NpbmcuCisKKyAg
ICAgICAgVGhhdCBpcyBiZWNhdXNlIHRoaXM6CisgICAgICAgICAgICBNb3ZlIFRtcDEsIFRtcDIK
KyAgICAgICAgICAgIE9wIFtUbXAzXSwgVG1wMgorICAgICAgICBpcyBzbG93ZXIgdGhhbgorICAg
ICAgICAgICAgTW92ZSBbVG1wM10gVG1wMgorICAgICAgICAgICAgT3AgVG1wMSwgVG1wMgorICAg
ICAgICAoc29tZXRpbWVzIHNpZ25pZmljYW50bHkpLgorCisgICAgICAgIEkgYW0gbm90IGV4YWN0
bHkgc3VyZSB3aHkuCisKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaEFkZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmFuZDY0KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjphbmQ2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphbmQzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptdWwzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnhvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YWRkRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmFkZEZsb2F0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om11
bERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptdWxGbG9h
dCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphbmREb3VibGUpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRmxvYXQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6eG9yRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhvckZsb2F0KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEFkZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6OmFuZDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om11bDY0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnhvcjY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaEFkZDY0KToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92YXBkX3Jy
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZhcHNfcnIpOgorICAgICAgICAqIGIz
L0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6c2hv
dWxkVHJ5QWxpYXNpbmdEZWYpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpnZW5l
cmF0ZSk6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNpYWwuaDoKKyAgICAgICAgKiBiMy9CM0xv
d2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6
CisgICAgICAgICogYjMvYWlyL0FpckN1c3RvbS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpQ
YXRjaEN1c3RvbTo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAgICAgICAqIGIzL2Fpci9BaXJJ
bnN0Lmg6CisgICAgICAgICogYjMvYWlyL0Fpckluc3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okluc3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIv
QWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwOgorICAgICAgICBBbGlhc2luZyB0aGUg
b3BlcmFuZHMgaXMgZG9uZSB0aGUgc2FtZSB3YXkgYXMgYW55IGNvYWxlc2NpbmcuCisKKyAgICAg
ICAgVGhlcmUgd2VyZSBwcm9ibGVtIHdpdGggY29uc2lkZXJpbmcgYWxsIHRob3NlIGNvYWxlc2Np
bmcKKyAgICAgICAgYXMgZXF1aXZhbGVudCBmb3IgdGhlIHJlc3VsdC4KKworICAgICAgICBNb3Zl
cyBhcmUgbW9zdGx5IGdlbmVyYXRlZCBmb3IgVXBzaWxvbi1QaGlzLiBHZXR0aW5nIHJpZCBvZgor
ICAgICAgICB0aG9zZSB0ZW5kcyB0byBnaXZlIGJldHRlciBsb29wcy4KKworICAgICAgICBTb21l
dGltZXMsIGJsb2NrcyBoYXZlIG9ubHkgUGhpcyBhbmQgYSBKdW1wLiBDb2FsZXNjaW5nCisgICAg
ICAgIHRob3NlIG1vdmVzIGdldHMgcmlkcyBvZiB0aGUgYmxvY2sgZW50aXJlbHkuCisKKyAgICAg
ICAgV2hlcmUgaXQgZ28gaW50ZXJlc3Rpbmcgd2FzIHRoYXQgc29tZXRoaW5nIGxpa2U6CisgICAg
ICAgICAgICBNb3ZlIFRtcDEsIFRtcDIKKyAgICAgICAgICAgIE9wIFRtcDMsIFRtcDIKKyAgICAg
ICAgd2FzIHNpZ25pZmljYW50bHkgYmV0dGVyIHRoYW46CisgICAgICAgICAgICBPcCBUbXAxLCBU
bXAzCisgICAgICAgICAgICBNb3ZlIFRtcDEsIFRtcDQKKyAgICAgICAgZXZlbiBpbiB0aGUgc2Ft
ZSBiYXNpYyBibG9jay4KKworICAgICAgICBUbyBnZXQgYmFjayB0byB0aGUgc2FtZSBwZXJmb3Jt
YW5jZSB3aGVuLCBJIGhhZCB0byBwcmlvcml0aXplCisgICAgICAgIHJlZ3VsYXIgTW92ZXMgb3Bl
cmF0aW9ucyBvdmVyIGFyZ3VtZW50IGNvYWxlc2NpbmcuCisKKyAgICAgICAgQW5vdGhlciBhcmd1
bWVudCBmb3IgZG9pbmcgdGhpcyBpcyB0aGF0IHRoZSBhbGlhcyBoYXMgYSBzaG9ydGVyCisgICAg
ICAgIGxpZmUgaW4gdGhlIGhhcmR3YXJlIGJlY2F1c2UgdGhlIG9wZXJhdGlvbiBpdHNlbGYgZ2V0
cyBhIG5ldworICAgICAgICB2aXJ0dWFsIHJlZ2lzdGVyIGZyb20gdGhlIGJhbmsuCisKKyAgICAg
ICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICogYjMvYWlyL0FpclNwZWNp
YWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2lu
Z0RlZik6CisgICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja0FkZEFyZ3VtZW50QWxpYXNpbmczMik6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3c2NCk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMik6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0Q2hlY2tNdWxBcmd1bWVudEFsaWFzaW5nNjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENo
ZWNrTXVsQXJndW1lbnRBbGlhc2luZzMyKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlDYWxs
ZWVTYXZlc0Zvcik6CisgICAgICAgIFRoaXMgcnVpbmVkIG15IHdlZWsuCisKKyAgICAgICAgV2hl
biByZWdlbmVyYXRpbmcgdGhlIGZyYW1lIG9mIGFuIGlubGluZWQgZnVuY3Rpb24gdGhhdAorICAg
ICAgICB3YXMgY2FsbGVkIHRocm91Z2ggYSB0YWlsIGNhbGwsIHdlIHdlcmUgaWdub3JpbmcgcjEz
IGZvciBzb21lIHJlYXNvbi4KKworICAgICAgICBTaW5jZSB0aGlzIHBhdGNoIG1ha2VzIGl0IG1v
cmUgbGlrZWx5IHRvIGluY3JlYXNlIHRoZSBkZWdyZWUKKyAgICAgICAgb2YgZWFjaCBUbXAsIHRo
ZSBudW1iZXIgb2YgcmVnaXN0ZXIgdXNlZCBpbmNyZWFzZWQgYW5kIHIxMyB3YXMgbW9yZQorICAg
ICAgICBjb21tb25seSB1c2VkLgorCisgICAgICAgIFdoZW4gZ2V0dGluZyBvdXQgb2YgT1NSRXhp
dCwgd2Ugd291bGQgaGF2ZSB0aGF0IHZhbHVlIHRyYXNoZWQgOigKKworICAgICAgICBUaGUgZml4
IGlzIHNpbXBseSB0byByZXN0b3JlIGl0IGxpa2UgdGhlIG90aGVyIHR3byBCYXNlbGluZSBjYWxs
ZWUgc2F2ZWQKKyAgICAgICAgcmVnaXN0ZXIuCisKIDIwMTYtMDItMTEgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3RlSW5zcGVjdG9y
J3MgbGlzdGluZ3Mgc2hvdWxkIGluY2x1ZGUgd2hldGhlciBhbiBBdXRvbWF0aW9uVGFyZ2V0IGlz
IHBhaXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAppbmRleCA2OWNiMTNlNDYyYWFkZjI4YzcwYTMzZWZjZjlhMGUyYzAx
YWFjMDhhLi42MzdlNWFlYjlkZTc2ZWU4ZDgyNWVkYTMyYzQ0YzBjZjI2YWU1ZjYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaApAQCAtMzYyLDYgKzM2MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGFuZDMyKGRhdGFUZW1w
UmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZF88NjQ+KGRlc3QsIHNyYzEsIHNyYzIpOworICAgIH0KKwogICAgIHZvaWQgYW5k
NjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZF88NjQ+KGRlc3QsIGRlc3QsIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXgg
ODA2YzMxNzVmY2I2OTNmYWYzYzI1Njg5MmM0YzNiMmZjZTZmNmI0Zi4uNjI0NjhmZjg4NTM1MWZi
ZjA5YjliMWFiODdlZGQxZThkYmJkOGRjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjY3LDYg
KzI2NywxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKEFk
ZHJlc3Mgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShvcDIsIGRlc3QpOworICAgICAgICBhbmQzMihvcDEsIGRlc3QpOworICAgIH0KKwor
ICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIEFkZHJlc3Mgb3AyLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtb3ZlKG9wMSwgZGVzdCk7CisgICAgICAgIGFuZDMyKG9wMiwg
ZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShzcmMsIGRlc3Qp
OwpAQCAtMzM0LDEwICszNDYsMzIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
bF9ycihzcmMsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChz
cmMyID09IGRlc3QpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmltdWxsX3JyKHNyYzEsIGRl
c3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1vdmUoc3JjMSwg
ZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmltdWxsX3JyKHNyYzIsIGRlc3QpOworICAgIH0K
KwogICAgIHZvaWQgbXVsMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmltdWxsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsK
ICAgICB9CisKKyAgICB2b2lkIG11bDMyKEFkZHJlc3Mgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKHNyYzIsIGRlc3QpOworICAgICAg
ICBtdWwzMihzcmMxLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQg
c3JjMSwgQWRkcmVzcyBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3Zl
KHNyYzEsIGRlc3QpOworICAgICAgICBtdWwzMihzcmMyLCBkZXN0KTsKKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKQEAgLTQxNSw2ICs0NDksMTggQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCisgICAgdm9pZCBvcjMyKEFkZHJlc3Mgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShvcDIsIGRlc3QpOworICAgICAgICBvcjMy
KG9wMSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBBZGRy
ZXNzIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShvcDEsIGRlc3Qp
OworICAgICAgICBvcjMyKG9wMiwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtb3ZlKHNyYywgZGVzdCk7CkBAIC01NjYsNiArNjEyLDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoQWRkcmVzcyBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKG9wMiwgZGVzdCk7CisgICAg
ICAgIHhvcjMyKG9wMSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklE
IG9wMSwgQWRkcmVzcyBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUo
b3AxLCBkZXN0KTsKKyAgICAgICAgeG9yMzIob3AyLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CkBAIC05MDUsNyArOTYzLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIGlm
IChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNkX3JyKHNyYywgZGVz
dCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZhcHNfcnIoc3JjLCBkZXN0KTsKICAgICB9
CiAKICAgICB2b2lkIGxvYWREb3VibGUoVHJ1c3RlZEltbVB0ciBhZGRyZXNzLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKQEAgLTEwMTQsNiArMTA3MiwzMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZHNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2
b2lkIGFkZERvdWJsZShBZGRyZXNzIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAg
aWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAgICBhZGREb3VibGUob3AxLCBkZXN0KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWREb3VibGUob3AxLCBk
ZXN0KTsKKyAgICAgICAgYWRkRG91YmxlKG9wMiwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBh
ZGREb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgQWRkcmVzcyBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIGlmIChv
cDEgPT0gZGVzdCkgeworICAgICAgICAgICAgYWRkRG91YmxlKG9wMiwgZGVzdCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsb2FkRG91YmxlKG9wMiwgZGVzdCk7
CisgICAgICAgIGFkZERvdWJsZShvcDEsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRkRmxv
YXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBB
U1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKQEAgLTEwMjYsNiArMTEwOCw0MSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHNzX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFkZEZsb2F0KEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJ
RCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlBy
ZXNlbnQoKSk7CisgICAgICAgIGlmIChvcDEgPT0gZGVzdCkKKyAgICAgICAgICAgIGFkZEZsb2F0
KG9wMiwgZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZURvdWJsZShvcDIs
IGRlc3QpOworICAgICAgICAgICAgYWRkRmxvYXQob3AxLCBkZXN0KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHZvaWQgYWRkRmxvYXQoQWRkcmVzcyBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7
CisgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgYWRkRmxvYXQob3AxLCBk
ZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRGbG9h
dChvcDEsIGRlc3QpOworICAgICAgICBhZGRGbG9hdChvcDIsIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIG9wMSwgQWRkcmVzcyBvcDIsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAg
IGlmIChvcDEgPT0gZGVzdCkgeworICAgICAgICAgICAgYWRkRmxvYXQob3AyLCBkZXN0KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRGbG9hdChvcDIsIGRl
c3QpOworICAgICAgICBhZGRGbG9hdChvcDEsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgZGl2
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBAIC0xMTE1LDYgKzEyMzIsMjggQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVz
dCk7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoQWRkcmVzcyBvcDEsIEZQUmVnaXN0ZXJJ
RCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlBy
ZXNlbnQoKSk7CisgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgbXVsRG91
YmxlKG9wMSwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bG9hZERvdWJsZShvcDEsIGRlc3QpOworICAgICAgICBtdWxEb3VibGUob3AyLCBkZXN0KTsKKyAg
ICB9CisKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKKyAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7CisgICAgICAgICAgICBtdWxEb3VibGUob3Ay
LCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkRG91
YmxlKG9wMiwgZGVzdCk7CisgICAgICAgIG11bERvdWJsZShvcDEsIGRlc3QpOworICAgIH0KKwog
ICAgIHZvaWQgbXVsRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKQEAgLTExMjcsMjcgKzEyNjYs
MTAwIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsc3NfbXIoc3JjLm9mZnNldCwg
c3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRmxvYXQoRlBSZWdpc3RlcklE
IG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgaWYgKG9wMSA9PSBkZXN0KQorICAg
ICAgICAgICAgbXVsRmxvYXQob3AyLCBkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlRG91YmxlKG9wMiwgZGVzdCk7CisgICAgICAgICAgICBtdWxGbG9hdChvcDEsIGRlc3Qp
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBtdWxGbG9hdChBZGRyZXNzIG9wMSwgRlBS
ZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7CisgICAgICAgICAg
ICBtdWxGbG9hdChvcDEsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGxvYWRGbG9hdChvcDEsIGRlc3QpOworICAgICAgICBtdWxGbG9hdChvcDIsIGRlc3Qp
OworICAgIH0KKworICAgIHZvaWQgbXVsRmxvYXQoRlBSZWdpc3RlcklEIG9wMSwgQWRkcmVzcyBv
cDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNl
bnQoKSk7CisgICAgICAgIGlmIChvcDEgPT0gZGVzdCkgeworICAgICAgICAgICAgbXVsRmxvYXQo
b3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2Fk
RmxvYXQob3AyLCBkZXN0KTsKKyAgICAgICAgbXVsRmxvYXQob3AxLCBkZXN0KTsKKyAgICB9CisK
ICAgICB2b2lkIGFuZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgLy8gQU5EUFMgaXMgZGVmaW5lZCBvbiAxMjhiaXRzIGFuZCBpcyBzaG9y
dGVyIHRoYW4gQU5EUEQuCiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHBzX3JyKHNyYywgZHN0KTsK
ICAgICB9CiAKKyAgICB2b2lkIGFuZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3Rl
cklEIHNyYzIsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMSA9PSBk
c3QpCisgICAgICAgICAgICBhbmREb3VibGUoc3JjMiwgZHN0KTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBtb3ZlRG91YmxlKHNyYzIsIGRzdCk7CisgICAgICAgICAgICBhbmREb3VibGUo
c3JjMSwgZHN0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgYW5kRmxvYXQoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFuZHBzX3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZEZsb2F0KEZQUmVnaXN0
ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3JjMiwgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIGlmIChzcmMxID09IGRzdCkKKyAgICAgICAgICAgIGFuZEZsb2F0KHNyYzIsIGRzdCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZURvdWJsZShzcmMyLCBkc3QpOworICAg
ICAgICAgICAgYW5kRmxvYXQoc3JjMSwgZHN0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZv
aWQgeG9yRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci54b3Jwc19ycihzcmMsIGRzdCk7CiAgICAgfQogCisgICAgdm9p
ZCB4b3JEb3VibGUoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYzEgPT0gZHN0KQorICAgICAgICAgICAg
eG9yRG91YmxlKHNyYzIsIGRzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZURv
dWJsZShzcmMyLCBkc3QpOworICAgICAgICAgICAgeG9yRG91YmxlKHNyYzEsIGRzdCk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICB2b2lkIHhvckZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci54b3Jwc19ycihzcmMsIGRz
dCk7CiAgICAgfQogCisgICAgdm9pZCB4b3JGbG9hdChGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdp
c3RlcklEIHNyYzIsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBpZiAoc3JjMSA9
PSBkc3QpCisgICAgICAgICAgICB4b3JGbG9hdChzcmMyLCBkc3QpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG1vdmVEb3VibGUoc3JjMiwgZHN0KTsKKyAgICAgICAgICAgIHhvckZsb2F0
KHNyYzEsIGRzdCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRv
RG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpAQCAtMTcxMCw2ICsxOTIyLDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIHNyYzEsIGRlc3QpOwogICAgIH0KIAor
ICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKHNy
YzIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgc3JjMSwgZGVzdCk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBzcmMxLCBBZGRyZXNzIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1vdmUoc3JjMSwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBz
cmMyLCBkZXN0KTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDlkYjNh
YTNmYTM1ZGNjYjczN2YzNTdkM2VhNDJmN2VjNzk4ZWM5OTMuLmU3NzExNzMzMTU4ZDcwZGU4NzU0
NWMwZDgwMzBiYTAyNTI3Y2ZkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTM0OSw2ICszNDksMTggQEAg
cHVibGljOgogICAgICAgICBhbmQ2NChzY3JhdGNoUmVnaXN0ZXIoKSwgc3JjRGVzdCk7CiAgICAg
fQogCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChvcDEgPT0gb3AyICYmIG9wMSAhPSBkZXN0
ICYmIG9wMiAhPSBkZXN0KQorICAgICAgICAgICAgbW92ZShvcDEsIGRlc3QpOworICAgICAgICBl
bHNlIGlmIChvcDEgPT0gZGVzdCkKKyAgICAgICAgICAgIGFuZDY0KG9wMiwgZGVzdCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShvcDIsIGRlc3QpOworICAgICAgICAgICAgYW5k
NjQob3AxLCBkZXN0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY291bnRMZWFkaW5n
WmVyb3M2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBp
ZiAoc3VwcG9ydHNMWkNOVCgpKSB7CkBAIC00MzAsNiArNDQyLDE2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7CiAgICAgfQorCisgICAg
dm9pZCBtdWw2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYzIgPT0gZGVzdCkgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuaW11bHFfcnIoc3JjMSwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgbW92ZShzcmMxLCBkZXN0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaW11
bHFfcnIoc3JjMiwgZGVzdCk7CisgICAgfQogICAgIAogICAgIHZvaWQgeDg2Q29udmVydFRvUXVh
ZFdvcmQ2NCgpCiAgICAgewpAQCAtNTQxLDYgKzU2MywxOCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci54b3JxX3JyKHNyYywgZGVzdCk7CiAgICAgfQorCisgICAgdm9pZCB4
b3I2NChSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChvcDEgPT0gb3AyKQorICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIoMCksIGRlc3QpOworICAgICAgICBlbHNlIGlmIChvcDEgPT0gZGVzdCkKKyAgICAgICAgICAg
IHhvcjY0KG9wMiwgZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShvcDIs
IGRlc3QpOworICAgICAgICAgICAgeG9yNjQob3AxLCBkZXN0KTsKKyAgICAgICAgfQorICAgIH0K
ICAgICAKICAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCiAgICAg
ewpAQCAtODY3LDEyICs5MDEsMzggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFu
Y2hBZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMxID09IGRlc3Qp
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwgc3JjMiwgZGVzdCk7CisgICAg
ICAgIG1vdmUoc3JjMiwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQ2NChjb25kLCBz
cmMxLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbW92ZShzcmMyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFk
ZDY0KGNvbmQsIHNyYzEsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgQWRkcmVzcyBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKHNyYzEsIGRlc3QpOworICAgICAgICByZXR1
cm4gYnJhbmNoQWRkNjQoY29uZCwgc3JjMiwgZGVzdCk7CisgICAgfQorCiAgICAgSnVtcCBicmFu
Y2hBZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDY0KHNyYywgZGVzdCk7CiAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgYWRkNjQoc3JjLCBkZXN0KTsKKyAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwog
ICAgIEp1bXAgYnJhbmNoTXVsNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtdWw2NChzcmMsIGRlc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggMTMx
ZjEzOTlhNTNmYmUzMzJmOTQ5OWY3ZmU5MGYxZWQ0ZjI4NWUwYS4uODU3ZDIyYmE2MjQ2NDc1MWZj
NWRiZTg1ODc4ZjEyZjJmNjAzZmE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yNjMsNiArMjYzLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgT1AyX01PVlNEX1dzZFZzZCAgICA9IDB4MTEsCiAgICAgICAgIE9QMl9NT1ZTU19Wc2RXc2Qg
ICAgPSAweDEwLAogICAgICAgICBPUDJfTU9WU1NfV3NkVnNkICAgID0gMHgxMSwKKyAgICAgICAg
T1AyX01PVkFQRF9WcGRXcGQgICA9IDB4MjgsCisgICAgICAgIE9QMl9NT1ZBUFNfVnBkV3BkICAg
PSAweDI4LAogICAgICAgICBPUDJfQ1ZUU0kyU0RfVnNkRWQgID0gMHgyQSwKICAgICAgICAgT1Ay
X0NWVFRTRDJTSV9HZFdzZCA9IDB4MkMsCiAgICAgICAgIE9QMl9VQ09NSVNEX1ZzZFdzZCAgPSAw
eDJFLApAQCAtMjIwOSw2ICsyMjExLDE3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAg
IHZvaWQgbW92YXBkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZBUERfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3QsIChS
ZWdpc3RlcklEKXNyYyk7CisgICAgfQorCisgICAgdm9pZCBtb3ZhcHNfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9NT1ZBUFNfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNy
Yyk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZzZF9ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9G
Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAppbmRleCBj
NGFhMWE4YjkwMjI5OTg0NjRmMmQyYzM1OTFjOTI2ZDE1NzUyYjdjLi4zYzUwOWQwYmZmYzcyMTEw
M2E5NmRjMDAwYWVhYjE1YjQ3YmU2NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NoZWNrU3BlY2lhbC5jcHAKQEAgLTEzMCw2ICsxMzAsMTUgQEAgYm9vbCBDaGVja1NwZWNpYWw6
OmFkbWl0c1N0YWNrKEluc3QmIGluc3QsIHVuc2lnbmVkIGFyZ0luZGV4KQogICAgIHJldHVybiBh
ZG1pdHNTdGFja0ltcGwobnVtQjNBcmdzKGluc3QpLCBtX251bUNoZWNrQXJncyArIDEsIGluc3Qs
IGFyZ0luZGV4KTsKIH0KIAorYm9vbCBDaGVja1NwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVm
KEluc3QmIGluc3QsIHVuc2lnbmVkJiBkZWZJbmRleCkKK3sKKyAgICBpZiAoaGlkZGVuQnJhbmNo
KGluc3QpLnNob3VsZFRyeUFsaWFzaW5nRGVmKGRlZkluZGV4KSkgeworICAgICAgICBkZWZJbmRl
eCArPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0
LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGZhaWwgPSBoaWRkZW5CcmFuY2goaW5zdCkuZ2VuZXJhdGUoaml0
LCBjb250ZXh0KTsKQEAgLTE1NCw3ICsxNjMsOCBAQCBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tT
cGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdAog
ICAgICAgICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgdW5kbyB0aGUgb3BlcmF0aW9uLgogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobV9jaGVja09wY29kZSkgewogICAgICAgICAgICAgICAgIGNh
c2UgQnJhbmNoQWRkMzI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzWzFdID09IGFyZ3Nb
Ml0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChtX251bUNoZWNrQXJncyA9PSA0ICYmIGFy
Z3NbMV0gPT0gYXJnc1syXSAmJiBhcmdzWzJdID09IGFyZ3NbM10pCisgICAgICAgICAgICAgICAg
ICAgICAgICB8fCAobV9udW1DaGVja0FyZ3MgPT0gMyAmJiBhcmdzWzFdID09IGFyZ3NbMl0pKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVnbHksIGJ1dCB0aGF0J3MgZmlu
ZSAtIHdlIHdvbid0IGhhdmUgdG8gZG8gdGhpcyB2ZXJ5IG9mdGVuLgogICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGFyZ3NbMV0uaXNHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJSZWcgdmFsdWVHUFIgPSBhcmdzWzFdLmdwcigpOwpAQCAtMTY3LDEwICsxNzcsMTcgQEAg
Q0NhbGxIZWxwZXJzOjpKdW1wIENoZWNrU3BlY2lhbDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0Nh
bGxIZWxwZXJzJiBqaXQsIEdlbmVyYXQKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5wb3BU
b1Jlc3RvcmUoc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBJbnN0KFN1YjMyLCBudWxs
cHRyLCBhcmdzWzFdLCBhcmdzWzJdKS5nZW5lcmF0ZShqaXQsIGNvbnRleHQpOworICAgICAgICAg
ICAgICAgICAgICBpZiAobV9udW1DaGVja0FyZ3MgPT0gNCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGFyZ3NbMV0gPT0gYXJnc1szXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnN0KFN1YjMyLCBudWxscHRyLCBhcmdzWzJdLCBhcmdzWzNdKS5nZW5lcmF0ZShqaXQsIGNv
bnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1syXSA9PSBhcmdz
WzNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3QoU3ViMzIsIG51bGxwdHIsIGFy
Z3NbMV0sIGFyZ3NbM10pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAobV9udW1DaGVja0FyZ3MgPT0gMykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3QoU3ViMzIsIG51bGxwdHIsIGFyZ3NbMV0sIGFyZ3NbMl0pLmdlbmVyYXRlKGppdCwg
Y29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNh
c2UgQnJhbmNoQWRkNjQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzWzFdID09IGFyZ3Nb
Ml0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChtX251bUNoZWNrQXJncyA9PSA0ICYmIGFy
Z3NbMV0gPT0gYXJnc1syXSAmJiBhcmdzWzJdID09IGFyZ3NbM10pCisgICAgICAgICAgICAgICAg
ICAgICAgICB8fCAobV9udW1DaGVja0FyZ3MgPT0gMyAmJiBhcmdzWzFdID09IGFyZ3NbMl0pKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVnbHksIGJ1dCB0aGF0J3MgZmlu
ZSAtIHdlIHdvbid0IGhhdmUgdG8gZG8gdGhpcyB2ZXJ5IG9mdGVuLgogICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGFyZ3NbMV0uaXNHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJSZWcgdmFsdWVHUFIgPSBhcmdzWzFdLmdwcigpOwpAQCAtMTgzLDcgKzIwMCwxMyBAQCBD
Q2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2Fs
bEhlbHBlcnMmIGppdCwgR2VuZXJhdAogICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRv
UmVzdG9yZShzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIEluc3QoU3ViNjQsIG51bGxw
dHIsIGFyZ3NbMV0sIGFyZ3NbMl0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX251bUNoZWNrQXJncyA9PSA0KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXJnc1sxXSA9PSBhcmdzWzNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluc3QoU3ViNjQsIG51bGxwdHIsIGFyZ3NbMl0sIGFyZ3NbM10pLmdlbmVyYXRlKGppdCwgY29u
dGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcmdzWzJdID09IGFyZ3Nb
M10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdChTdWI2NCwgbnVsbHB0ciwgYXJn
c1sxXSwgYXJnc1szXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChtX251bUNoZWNrQXJncyA9PSAzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zdChTdWI2NCwgbnVsbHB0ciwgYXJnc1sxXSwgYXJnc1syXSkuZ2VuZXJhdGUoaml0LCBj
b250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2Fz
ZSBCcmFuY2hTdWIzMjoKICAgICAgICAgICAgICAgICAgICAgSW5zdChBZGQzMiwgbnVsbHB0ciwg
YXJnc1sxXSwgYXJnc1syXSkuZ2VuZXJhdGUoaml0LCBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKaW5kZXggNjExODZiZTFiOWE1NWM0MDYyNDhhMTAz
Y2JlMmRmY2M4YmQ2OTU2Zi4uYjVlMTVkZmU2NWIwOTNlZTgzZGZiZDc5NjUwNDg2MzAyY2Y5Zjk4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKQEAgLTEyNiw2
ICsxMjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmb3JFYWNoQXJnKEFpcjo6SW5zdCYsIGNv
bnN0IFNjb3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mKSBvdmVycmlkZTsK
ICAgICBib29sIGlzVmFsaWQoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhZG1pdHNT
dGFjayhBaXI6Okluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgb3ZlcnJpZGU7CisgICAgYm9vbCBz
aG91bGRUcnlBbGlhc2luZ0RlZihBaXI6Okluc3QmLCB1bnNpZ25lZCYgZGVmSW5kZXgpIG92ZXJy
aWRlOwogCiAgICAgLy8gTk9URTogdGhlIGdlbmVyYXRlIG1ldGhvZCB3aWxsIGdlbmVyYXRlIHRo
ZSBoaWRkZW4gYnJhbmNoIGFuZCB0aGVuIHJlZ2lzdGVyIGEgTGF0ZVBhdGggdGhhdAogICAgIC8v
IGdlbmVyYXRlcyB0aGUgc3RhY2ttYXAuIFN1cGVyIGNyYXp5IGR1ZGUhCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGI0YWYyZGNkNzVhYzFiMzAyYmZkMWVh
ZjE1NWMwNjdmZTFkYzhmNTguLjYzNDJjODU1MzQ0NjQ5ZjdhMmMwYmZiN2VjZTExZTczMzEwNjIy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yMTQ2
LDcgKzIxNDYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW1tKHJpZ2h0
KSAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6UmVzQ29uZCwgQXJnOjpJbW0sIEFyZzo6VG1w
KSkgewogICAgICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKGltbShyaWdodCkpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobGVmdCksIHJlc3VsdCk7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpSZXNDb25kLCBBcmc6OlRtcCwgQXJn
OjpUbXApKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWRGb3JtKG9wY29kZSwgQXJn
OjpSZXNDb25kLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgeworICAgICAgICAgICAg
ICAgIHNvdXJjZXMuYXBwZW5kKHRtcChsZWZ0KSk7CisgICAgICAgICAgICAgICAgc291cmNlcy5h
cHBlbmQodG1wKHJpZ2h0KSk7CisgICAgICAgICAgICB9ICBlbHNlIGlmIChpc1ZhbGlkRm9ybShv
cGNvZGUsIEFyZzo6UmVzQ29uZCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewogICAgICAgICAgICAg
ICAgIGlmIChjb21tdXRhdGl2aXR5ID09IENvbW11dGF0aXZlICYmIHByZWZlclJpZ2h0Rm9yUmVz
dWx0KGxlZnQsIHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLmFwcGVuZCh0
bXAobGVmdCkpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKHJpZ2h0KSwg
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3Vz
dG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCmluZGV4IGQ3
ZTljOWM2Zjc5NDFhOTQ2MDI2MmMwODVhZjE0MzNkODI1YzUxNjYuLjEyMzRkMzk1NWU4OGM3MmEz
NTc1MzEyOTQ5MjU3OGRhNWY4NTZlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ3VzdG9tLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDdXN0b20uaApAQCAtODAsNiArODAsMTEgQEAgc3RydWN0IFBhdGNoQ3VzdG9tIHsKICAgICAg
ICAgcmV0dXJuIGluc3QuYXJnc1swXS5zcGVjaWFsKCktPmFkbWl0c1N0YWNrKGluc3QsIGFyZ0lu
ZGV4KTsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0
JiBpbnN0LCB1bnNpZ25lZCYgZGVmSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gaW5zdC5h
cmdzWzBdLnNwZWNpYWwoKS0+c2hvdWxkVHJ5QWxpYXNpbmdEZWYoaW5zdCwgZGVmSW5kZXgpOwor
ICAgIH0KKwogICAgIHN0YXRpYyBib29sIGhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3RzKEluc3Qm
IGluc3QpCiAgICAgewogICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+aGFz
Tm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlySW5zdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0LmgKaW5kZXggNzE5MGVlODYxYzI1Y2IzNTgxYzVmOWVhZDY0NTcyOWM2ZTlhNzcwYy4uMDQ2
YTgwZTljNmViZmZmMjNlY2MzMzE1ZTNmZjUxYTk0ZjQwNTQ1NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0LmgKQEAgLTE4MCw2ICsxODAsMTIgQEAgcHVibGljOgogICAgIC8v
IGNhc2UgYmVpbmcgZmFsbC10aHJvdWdoLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG8tZ2VuZXJhdGVk
IGJ5IG9wY29kZV9nZW5lcmF0b3IucmIuCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRl
KENDYWxsSGVscGVycyYsIEdlbmVyYXRpb25Db250ZXh0Jik7CiAKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvciBzaG91bGQgYXR0ZW1wdCB0byBhbGlhcyB0aGUg
YXJndW1lbnRzIHdpdGggdGhlIGRlc3RpbmF0aW9uCisgICAgLy8gZm9yIHRoaXMgaW5zdHJ1Y3Rp
b24uCisgICAgLy8gSWYgdGhlIG1ldGhvZCByZXR1cm5zIHRydWUsIGRlZkluZGV4IGlzIHNldCB0
byB0aGUgaW5kZXggb2YgdGhlIGRlc3RpbmF0aW9uIGFyZ3VtZW50LiBUaGUgaW5kaWNlcworICAg
IC8vIChkZWZJbmRleCAtIDEpIGFuZCAoZGVmSW5kZXggLSAyKSBhcmUgdGhlIG9uZSB0byBhbGlh
cyB0byBkZWZJbmRleC4KKyAgICBib29sIHNob3VsZFRyeUFsaWFzaW5nRGVmKHVuc2lnbmVkJiBk
ZWZJbmRleCk7CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAgIEFy
Z0xpc3QgYXJnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
SW5zdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGlu
ZXMuaAppbmRleCA5NWU2OGFlN2ZhOGVmMDVlY2I2NGNmYzM0YmQ4NmVjZDBjMTZiMDQ5Li43Nzhh
NDgxNzcwZjliOTQwNzRmMTAxNTAyZDc3MjJlNDYyNWYzODAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC0xNjQsNiArMTY0LDUwIEBAIGlu
bGluZSBib29sIEluc3Q6OmFkbWl0c1N0YWNrKEFyZyYgYXJnKQogICAgIHJldHVybiBhZG1pdHNT
dGFjaygmYXJnIC0gJmFyZ3NbMF0pOwogfQogCitpbmxpbmUgYm9vbCBJbnN0OjpzaG91bGRUcnlB
bGlhc2luZ0RlZih1bnNpZ25lZCYgZGVmSW5kZXgpCit7CisgICAgaWYgKCFpc1g4NigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgQWRk
MzI6CisgICAgY2FzZSBBZGQ2NDoKKyAgICBjYXNlIEFuZDMyOgorICAgIGNhc2UgQW5kNjQ6Cisg
ICAgY2FzZSBNdWwzMjoKKyAgICBjYXNlIE11bDY0OgorICAgIGNhc2UgT3IzMjoKKyAgICBjYXNl
IE9yNjQ6CisgICAgY2FzZSBYb3IzMjoKKyAgICBjYXNlIFhvcjY0OgorICAgIGNhc2UgQWRkRG91
YmxlOgorICAgIGNhc2UgQWRkRmxvYXQ6CisgICAgY2FzZSBBbmRGbG9hdDoKKyAgICBjYXNlIEFu
ZERvdWJsZToKKyAgICBjYXNlIE11bERvdWJsZToKKyAgICBjYXNlIE11bEZsb2F0OgorICAgIGNh
c2UgWG9yRG91YmxlOgorICAgIGNhc2UgWG9yRmxvYXQ6CisgICAgICAgIGlmIChhcmdzLnNpemUo
KSA9PSAzKSB7CisgICAgICAgICAgICBkZWZJbmRleCA9IDI7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEJyYW5jaEFkZDMyOgor
ICAgIGNhc2UgQnJhbmNoQWRkNjQ6CisgICAgICAgIGlmIChhcmdzLnNpemUoKSA9PSA0KSB7Cisg
ICAgICAgICAgICBkZWZJbmRleCA9IDM7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhdGNoOgorICAgICAgICByZXR1cm4gUGF0
Y2hDdXN0b206OnNob3VsZFRyeUFsaWFzaW5nRGVmKCp0aGlzLCBkZWZJbmRleCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogaW5s
aW5lIGJvb2wgaXNTaGlmdFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCiB7CiAjaWYgQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKaW5kZXggOGJkMGNiOGMy
ZDg1NTlmZmI0MzNmMWM1ZTIzMzkwNzg5MTgwM2JmOC4uMTkwODQxYjBlNzM4NDMzZDUzYWViZTE3
YTUxNzA1N2MyOTc1MTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKQEAgLTE2OSw3
ICsxNjksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgICAgIGlmICh0cmFjZURlYnVnKQogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBDb2FsZXNjZWRcbiIpOwotICAgICAgICB9IGVsc2Ug
aWYgKGlzUHJlY29sb3JlZCh2KSB8fCBtX2ludGVyZmVyZW5jZUVkZ2VzLmNvbnRhaW5zKEludGVy
ZmVyZW5jZUVkZ2UodSwgdikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNQcmVjb2xvcmVkKHYp
CisgICAgICAgICAgICB8fCBtX2ludGVyZmVyZW5jZUVkZ2VzLmNvbnRhaW5zKEludGVyZmVyZW5j
ZUVkZ2UodSwgdikpCisgICAgICAgICAgICB8fCAodSA9PSBtX2ZyYW1lUG9pbnRlckluZGV4ICYm
IG1faW50ZXJmZXJlc1dpdGhGcmFtZVBvaW50ZXIucXVpY2tHZXQodikpKSB7CiAgICAgICAgICAg
ICBhZGRXb3JrTGlzdCh1KTsKICAgICAgICAgICAgIGFkZFdvcmtMaXN0KHYpOwogCkBAIC0zOTks
NiArNDAxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAKKyAgICAg
ICAgaWYgKG1fZnJhbWVQb2ludGVySW5kZXggJiYgbV9pbnRlcmZlcmVzV2l0aEZyYW1lUG9pbnRl
ci5xdWlja0dldCh2KSkKKyAgICAgICAgICAgIG1faW50ZXJmZXJlc1dpdGhGcmFtZVBvaW50ZXIu
cXVpY2tTZXQodSk7CisKICAgICAgICAgaWYgKG1fZGVncmVlc1t1XSA+PSBtX3JlZ3NJblByaW9y
aXR5T3JkZXIuc2l6ZSgpICYmIG1fZnJlZXplV29ya2xpc3QucmVtb3ZlKHUpKQogICAgICAgICAg
ICAgYWRkVG9TcGlsbCh1KTsKICAgICB9CkBAIC01NzQsMTggKzU3OSw0NSBAQCBwcm90ZWN0ZWQ6
CiAgICAgQml0VmVjdG9yIG1faXNPblNlbGVjdFN0YWNrOwogICAgIFZlY3RvcjxJbmRleFR5cGU+
IG1fc2VsZWN0U3RhY2s7CiAKKyAgICBJbmRleFR5cGUgbV9mcmFtZVBvaW50ZXJJbmRleCB7IDAg
fTsKKyAgICBCaXRWZWN0b3IgbV9pbnRlcmZlcmVzV2l0aEZyYW1lUG9pbnRlcjsKKwogICAgIHN0
cnVjdCBPcmRlcmVkTW92ZVNldCB7CiAgICAgICAgIHVuc2lnbmVkIGFkZE1vdmUoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXh0SW5kZXggPSBtX21vdmVMaXN0LnNpemUoKTsK
KyAgICAgICAgICAgIEFTU0VSVChtX2xvd1ByaW9yaXR5TW92ZUxpc3QuaXNFbXB0eSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9maXJzdExvd1ByaW9yaXR5TW92ZUluZGV4KTsKKworICAgICAg
ICAgICAgdW5zaWduZWQgbmV4dEluZGV4ID0gbV9wb3NpdGlvbkluTW92ZUxpc3Quc2l6ZSgpOwor
ICAgICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX21vdmVMaXN0LnNpemUoKTsKICAgICAg
ICAgICAgIG1fbW92ZUxpc3QuYXBwZW5kKG5leHRJbmRleCk7Ci0gICAgICAgICAgICBtX3Bvc2l0
aW9uSW5Nb3ZlTGlzdC5hcHBlbmQobmV4dEluZGV4KTsKKyAgICAgICAgICAgIG1fcG9zaXRpb25J
bk1vdmVMaXN0LmFwcGVuZChwb3NpdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV4dEluZGV4
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzdGFydEFkZGluZ0xvd1ByaW9yaXR5TW92ZXMo
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9sb3dQcmlvcml0eU1vdmVMaXN0Lmlz
RW1wdHkoKSk7CisgICAgICAgICAgICBtX2ZpcnN0TG93UHJpb3JpdHlNb3ZlSW5kZXggPSBtX21v
dmVMaXN0LnNpemUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGFkZExvd1ByaW9y
aXR5TW92ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2ZpcnN0TG93UHJpb3Jp
dHlNb3ZlSW5kZXggPT0gbV9tb3ZlTGlzdC5zaXplKCkpOworCisgICAgICAgICAgICB1bnNpZ25l
ZCBuZXh0SW5kZXggPSBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdC5zaXplKCk7CisgICAgICAgICAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IG1fbG93UHJpb3JpdHlNb3ZlTGlzdC5zaXplKCk7CisgICAgICAg
ICAgICBtX2xvd1ByaW9yaXR5TW92ZUxpc3QuYXBwZW5kKG5leHRJbmRleCk7CisgICAgICAgICAg
ICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdC5hcHBlbmQocG9zaXRpb24pOworCisgICAgICAgICAgICBB
U1NFUlQobmV4dEluZGV4ID49IG1fZmlyc3RMb3dQcmlvcml0eU1vdmVJbmRleCk7CisKICAgICAg
ICAgICAgIHJldHVybiBuZXh0SW5kZXg7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9tb3ZlTGlzdC5pc0Vt
cHR5KCk7CisgICAgICAgICAgICByZXR1cm4gbV9tb3ZlTGlzdC5pc0VtcHR5KCkgJiYgbV9sb3dQ
cmlvcml0eU1vdmVMaXN0LmlzRW1wdHkoKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgY29u
dGFpbnModW5zaWduZWQgaW5kZXgpCkBAIC01OTksMTEgKzYzMSwxOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgICAgICBpZiAocG9zaXRpb25Jbk1vdmVMaXN0ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IEFTU0VSVChtX21vdmVMaXN0W3Bvc2l0aW9uSW5Nb3ZlTGlzdF0gPT0gbW92ZUluZGV4KTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxhc3RJbmRleCA9IG1fbW92ZUxpc3QubGFzdCgpOwotICAgICAg
ICAgICAgbV9wb3NpdGlvbkluTW92ZUxpc3RbbGFzdEluZGV4XSA9IHBvc2l0aW9uSW5Nb3ZlTGlz
dDsKLSAgICAgICAgICAgIG1fbW92ZUxpc3RbcG9zaXRpb25Jbk1vdmVMaXN0XSA9IGxhc3RJbmRl
eDsKLSAgICAgICAgICAgIG1fbW92ZUxpc3QucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgaWYg
KG1vdmVJbmRleCA8IG1fZmlyc3RMb3dQcmlvcml0eU1vdmVJbmRleCkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChtX21vdmVMaXN0W3Bvc2l0aW9uSW5Nb3ZlTGlzdF0gPT0gbW92ZUluZGV4KTsK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0SW5kZXggPSBtX21vdmVMaXN0Lmxhc3QoKTsK
KyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdFtsYXN0SW5kZXhdID0gcG9zaXRp
b25Jbk1vdmVMaXN0OworICAgICAgICAgICAgICAgIG1fbW92ZUxpc3RbcG9zaXRpb25Jbk1vdmVM
aXN0XSA9IGxhc3RJbmRleDsKKyAgICAgICAgICAgICAgICBtX21vdmVMaXN0LnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fbG93UHJp
b3JpdHlNb3ZlTGlzdFtwb3NpdGlvbkluTW92ZUxpc3RdID09IG1vdmVJbmRleCk7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gbV9sb3dQcmlvcml0eU1vdmVMaXN0Lmxhc3Qo
KTsKKyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdFtsYXN0SW5kZXhdID0gcG9z
aXRpb25Jbk1vdmVMaXN0OworICAgICAgICAgICAgICAgIG1fbG93UHJpb3JpdHlNb3ZlTGlzdFtw
b3NpdGlvbkluTW92ZUxpc3RdID0gbGFzdEluZGV4OworICAgICAgICAgICAgICAgIG1fbG93UHJp
b3JpdHlNb3ZlTGlzdC5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IG1fcG9zaXRpb25Jbk1vdmVMaXN0W21vdmVJbmRleF0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCk7CiAKQEAgLTYxNCw4ICs2NTQsMTQgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAKLSAgICAgICAgICAgIHVuc2ln
bmVkIGxhc3RJbmRleCA9IG1fbW92ZUxpc3QudGFrZUxhc3QoKTsKLSAgICAgICAgICAgIEFTU0VS
VChtX3Bvc2l0aW9uSW5Nb3ZlTGlzdFtsYXN0SW5kZXhdID09IG1fbW92ZUxpc3Quc2l6ZSgpKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKKyAgICAgICAgICAgIGlmICghbV9tb3Zl
TGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBtX21vdmVMaXN0
LnRha2VMYXN0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fcG9zaXRpb25Jbk1vdmVMaXN0
W2xhc3RJbmRleF0gPT0gbV9tb3ZlTGlzdC5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBtX2xvd1ByaW9yaXR5TW92ZUxpc3QudGFrZUxh
c3QoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9wb3NpdGlvbkluTW92ZUxpc3RbbGFzdElu
ZGV4XSA9PSBtX2xvd1ByaW9yaXR5TW92ZUxpc3Quc2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG1fcG9zaXRpb25Jbk1vdmVMaXN0W2xhc3RJbmRleF0gPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAKICAgICAgICAgICAgIEFTU0VSVCghY29udGFpbnMo
bGFzdEluZGV4KSk7CkBAIC02MjksOSArNjc1LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAg
IC8vIFZhbHVlcyBzaG91bGQgbm90IGJlIGFkZGVkIGJhY2sgaWYgdGhleSB3ZXJlIG5ldmVyIHRh
a2VuIG91dCB3aGVuIGF0dGVtcHRpbmcgY29hbGVzY2luZy4KICAgICAgICAgICAgIEFTU0VSVCgh
Y29udGFpbnMoaW5kZXgpKTsKIAotICAgICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX21v
dmVMaXN0LnNpemUoKTsKLSAgICAgICAgICAgIG1fbW92ZUxpc3QuYXBwZW5kKGluZGV4KTsKLSAg
ICAgICAgICAgIG1fcG9zaXRpb25Jbk1vdmVMaXN0W2luZGV4XSA9IHBvc2l0aW9uOworICAgICAg
ICAgICAgaWYgKGluZGV4IDwgbV9maXJzdExvd1ByaW9yaXR5TW92ZUluZGV4KSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBtX21vdmVMaXN0LnNpemUoKTsKKyAgICAgICAg
ICAgICAgICBtX21vdmVMaXN0LmFwcGVuZChpbmRleCk7CisgICAgICAgICAgICAgICAgbV9wb3Np
dGlvbkluTW92ZUxpc3RbaW5kZXhdID0gcG9zaXRpb247CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gbV9sb3dQcmlvcml0eU1vdmVMaXN0
LnNpemUoKTsKKyAgICAgICAgICAgICAgICBtX2xvd1ByaW9yaXR5TW92ZUxpc3QuYXBwZW5kKGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdFtpbmRleF0gPSBwb3Np
dGlvbjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQVNTRVJUKGNvbnRhaW5zKGluZGV4
KSk7CiAgICAgICAgIH0KQEAgLTY0MCwxMSArNjkyLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ewogICAgICAgICAgICAgbV9wb3NpdGlvbkluTW92ZUxpc3QuY2xlYXIoKTsKICAgICAgICAgICAg
IG1fbW92ZUxpc3QuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fbG93UHJpb3JpdHlNb3ZlTGlzdC5j
bGVhcigpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3Bvc2l0aW9uSW5Nb3ZlTGlzdDsKICAgICAg
ICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9tb3ZlTGlzdDsK
KyAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9sb3dQ
cmlvcml0eU1vdmVMaXN0OworICAgICAgICB1bnNpZ25lZCBtX2ZpcnN0TG93UHJpb3JpdHlNb3Zl
SW5kZXggeyAwIH07CiAgICAgfTsKIAogICAgIC8vIFdvcmsgbGlzdHMuCkBAIC02NzgsNiArNzMz
LDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3RtcFdpZHRoKHRtcFdpZHRoKQogICAgICAgICAs
IG1fdXNlQ291bnRzKHVzZUNvdW50cykKICAgICB7CisgICAgICAgIGlmICh0eXBlID09IEFyZzo6
R1ApIHsKKyAgICAgICAgICAgIG1fZnJhbWVQb2ludGVySW5kZXggPSBBYnNvbHV0ZVRtcE1hcHBl
cjx0eXBlPjo6YWJzb2x1dGVJbmRleChUbXAoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyKSk7CisgICAgICAgICAgICBtX2ludGVyZmVyZXNXaXRoRnJhbWVQb2ludGVyLmVuc3Vy
ZVNpemUodG1wQXJyYXlTaXplKGNvZGUpKTsKKyAgICAgICAgfQorCiAgICAgICAgIGluaXRpYWxp
emVQcmVjb2xvcmVkVG1wKCk7CiAgICAgICAgIGJ1aWxkKCk7CiAgICAgICAgIGFsbG9jYXRlKCk7
CkBAIC04MDIsNiArODYyLDQ4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIG1heUJlQ29hbGVzY2VkKEFyZyBsZWZ0LCBBcmcgcmlnaHQpCisgICAgeworICAgICAgICBp
ZiAoIWxlZnQuaXNUbXAoKSB8fCAhcmlnaHQuaXNUbXAoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBUbXAgbGVmdFRtcCA9IGxlZnQudG1wKCk7CisgICAgICAgIFRtcCBy
aWdodFRtcCA9IHJpZ2h0LnRtcCgpOworCisgICAgICAgIGlmIChsZWZ0VG1wID09IHJpZ2h0VG1w
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChsZWZ0VG1wLmlzR1Ao
KSAhPSAodHlwZSA9PSBBcmc6OkdQKSB8fCByaWdodFRtcC5pc0dQKCkgIT0gKHR5cGUgPT0gQXJn
OjpHUCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdW5zaWduZWQgbGVm
dEluZGV4ID0gQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29sdXRlSW5kZXgobGVmdFRtcCk7
CisgICAgICAgIHVuc2lnbmVkIHJpZ2h0SW5kZXggPSBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6
YWJzb2x1dGVJbmRleChyaWdodFRtcCk7CisKKyAgICAgICAgcmV0dXJuICFtX2ludGVyZmVyZW5j
ZUVkZ2VzLmNvbnRhaW5zKEludGVyZmVyZW5jZUVkZ2UobGVmdEluZGV4LCByaWdodEluZGV4KSk7
CisgICAgfQorCisgICAgdm9pZCBhZGRUb0xvd1ByaW9yaXR5Q29hbGVzY2luZ0NhbmRpZGF0ZXMo
QXJnIGxlZnQsIEFyZyByaWdodCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtYXlCZUNvYWxlc2Nl
ZChsZWZ0LCByaWdodCkpOworICAgICAgICBUbXAgbGVmdFRtcCA9IGxlZnQudG1wKCk7CisgICAg
ICAgIFRtcCByaWdodFRtcCA9IHJpZ2h0LnRtcCgpOworCisgICAgICAgIHVuc2lnbmVkIGxlZnRJ
bmRleCA9IEFic29sdXRlVG1wTWFwcGVyPHR5cGU+OjphYnNvbHV0ZUluZGV4KGxlZnRUbXApOwor
ICAgICAgICB1bnNpZ25lZCByaWdodEluZGV4ID0gQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFi
c29sdXRlSW5kZXgocmlnaHRUbXApOworCisgICAgICAgIHVuc2lnbmVkIG5leHRNb3ZlSW5kZXgg
PSBtX2NvYWxlc2NpbmdDYW5kaWRhdGVzLnNpemUoKTsKKyAgICAgICAgbV9jb2FsZXNjaW5nQ2Fu
ZGlkYXRlcy5hcHBlbmQoeyBsZWZ0SW5kZXgsIHJpZ2h0SW5kZXggfSk7CisKKyAgICAgICAgdW5z
aWduZWQgbmV3SW5kZXhJbldvcmtsaXN0ID0gbV93b3JrbGlzdE1vdmVzLmFkZExvd1ByaW9yaXR5
TW92ZSgpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG5ld0luZGV4SW5Xb3JrbGlzdCwgbmV3SW5k
ZXhJbldvcmtsaXN0ID09IG5leHRNb3ZlSW5kZXgpOworCisgICAgICAgIEFTU0VSVChuZXh0TW92
ZUluZGV4IDw9IG1fYWN0aXZlTW92ZXMuc2l6ZSgpKTsKKyAgICAgICAgbV9hY3RpdmVNb3Zlcy5l
bnN1cmVTaXplKG5leHRNb3ZlSW5kZXggKyAxKTsKKworICAgICAgICBtX21vdmVMaXN0W2xlZnRJ
bmRleF0uYWRkKG5leHRNb3ZlSW5kZXgpOworICAgICAgICBtX21vdmVMaXN0W3JpZ2h0SW5kZXhd
LmFkZChuZXh0TW92ZUluZGV4KTsKKyAgICB9CisKICAgICB2b2lkIGJ1aWxkKCkKICAgICB7CiAg
ICAgICAgIFRtcExpdmVuZXNzPHR5cGU+IGxpdmVuZXNzKG1fY29kZSk7CkBAIC04MTUsNiArOTE3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJ1aWxkKG51bGxwdHIs
ICZibG9jay0+YXQoMCksIGxvY2FsQ2FsYyk7CiAgICAgICAgIH0KKyAgICAgICAgYnVpbGRMb3dQ
cmlvcml0eU1vdmVMaXN0KCk7CiAgICAgfQogCiAgICAgdm9pZCBidWlsZChJbnN0KiBwcmV2SW5z
dCwgSW5zdCogbmV4dEluc3QsIGNvbnN0IHR5cGVuYW1lIFRtcExpdmVuZXNzPHR5cGU+OjpMb2Nh
bENhbGMmIGxvY2FsQ2FsYykKQEAgLTg4MSw2ICs5ODQsMzIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGFkZEVkZ2VzKHByZXZJbnN0LCBuZXh0SW5zdCwgbG9jYWxDYWxjLmxpdmUoKSk7CiAgICAg
fQogCisgICAgdm9pZCBidWlsZExvd1ByaW9yaXR5TW92ZUxpc3QoKQorICAgIHsKKyAgICAgICAg
aWYgKCFpc1g4NigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fd29ya2xpc3RN
b3Zlcy5zdGFydEFkZGluZ0xvd1ByaW9yaXR5TW92ZXMoKTsKKyAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fY29kZSkgeworICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJs
b2NrKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVmQXJnSW5kZXggPSAwOworICAgICAg
ICAgICAgICAgIGlmIChpbnN0LnNob3VsZFRyeUFsaWFzaW5nRGVmKGRlZkFyZ0luZGV4KSkgewor
ICAgICAgICAgICAgICAgICAgICBBcmcgb3AxID0gaW5zdC5hcmdzW2RlZkFyZ0luZGV4IC0gMl07
CisgICAgICAgICAgICAgICAgICAgIEFyZyBvcDIgPSBpbnN0LmFyZ3NbZGVmQXJnSW5kZXggLSAx
XTsKKyAgICAgICAgICAgICAgICAgICAgQXJnIGRlc3QgPSBpbnN0LmFyZ3NbZGVmQXJnSW5kZXhd
OworCisgICAgICAgICAgICAgICAgICAgIGlmIChvcDEgPT0gZGVzdCB8fCBvcDIgPT0gZGVzdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAg
IGlmIChtYXlCZUNvYWxlc2NlZChvcDEsIGRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9Mb3dQcmlvcml0eUNvYWxlc2NpbmdDYW5kaWRhdGVzKG9wMSwgZGVzdCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChvcDEgIT0gb3AyICYmIG1heUJlQ29hbGVzY2VkKG9wMiwgZGVzdCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0xvd1ByaW9yaXR5Q29hbGVzY2luZ0NhbmRp
ZGF0ZXMob3AyLCBkZXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKICAgICB2b2lkIGFkZEVkZ2VzKEluc3QqIHByZXZJbnN0LCBJbnN0KiBu
ZXh0SW5zdCwgdHlwZW5hbWUgVG1wTGl2ZW5lc3M8dHlwZT46OkxvY2FsQ2FsYzo6SXRlcmFibGUg
bGl2ZVRtcHMpCiAgICAgewogICAgICAgICAvLyBBbGwgdGhlIERlZigpcyBpbnRlcmZlcmUgd2l0
aCBldmVydGhpbmcgbGl2ZS4KQEAgLTg5NSwxMSArMTAyNCw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIGFkZEVkZ2UoYXJnLCBsaXZlVG1wKTsKICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBBcmc6OkdQICYmICFhcmcuaXNHUFIoKSkgewot
ICAgICAgICAgICAgICAgICAgICBtX2ludGVyZmVyZW5jZUVkZ2VzLmFkZChJbnRlcmZlcmVuY2VF
ZGdlKAotICAgICAgICAgICAgICAgICAgICAgICAgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFi
c29sdXRlSW5kZXgoVG1wKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlcikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46OmFic29sdXRl
SW5kZXgoYXJnKSkpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBBcmc6OkdQICYmICFhcmcuaXNHUFIoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9pbnRl
cmZlcmVzV2l0aEZyYW1lUG9pbnRlci5xdWlja1NldChBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6
YWJzb2x1dGVJbmRleChhcmcpKTsKICAgICAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMTAzMiw2
ICsxMTU4LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChkZWJ1ZykgewogICAgICAgICAgICAg
ZGF0YUxvZygiSW50ZXJmZXJlbmNlOiAiLCBsaXN0RHVtcChtX2ludGVyZmVyZW5jZUVkZ2VzKSwg
IlxuIik7CiAgICAgICAgICAgICBkdW1wSW50ZXJmZXJlbmNlR3JhcGhJbkRvdChXVEY6OmRhdGFG
aWxlKCkpOworICAgICAgICAgICAgZGF0YUxvZygiQ29hbGVzY2luZyBjYW5kaWRhdGVzOlxuIik7
CisgICAgICAgICAgICBmb3IgKE1vdmVPcGVyYW5kcyYgbW92ZU9wIDogbV9jb2FsZXNjaW5nQ2Fu
ZGlkYXRlcykgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBBYnNvbHV0ZVRtcE1h
cHBlcjx0eXBlPjo6dG1wRnJvbUFic29sdXRlSW5kZXgobW92ZU9wLnNyY0luZGV4KSwKKyAgICAg
ICAgICAgICAgICAgICAgIiAtPiAiLCBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6dG1wRnJvbUFi
c29sdXRlSW5kZXgobW92ZU9wLmRzdEluZGV4KSwgIlxuIik7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBkYXRhTG9nKCJJbml0aWFsIHdvcmsgbGlzdFxuIik7CiAgICAgICAgICAgICBkdW1w
V29ya0xpc3RzKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIH0KQEAgLTExMzEsNyArMTI2Miw3
IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+CiAgICAgdm9pZCBpdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZ09uVHlwZSgpCiAgICAgewotICAgICAgICBIYXNoU2V0PHVu
c2lnbmVkPiB1bnNwaWxsYWJsZVRtcHM7CisgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQ+IHVuc3Bp
bGxhYmxlVG1wcyA9IGNvbXB1dGVVbnNwaWxsYWJsZVRtcHM8dHlwZT4oKTsKIAogICAgICAgICAv
LyBGSVhNRTogSWYgYSBUbXAgaXMgdXNlZCBvbmx5IGZyb20gYSBTY3JhdGNoIHJvbGUgYW5kIHRo
YXQgYXJndW1lbnQgaXMgIWFkbWl0c1N0YWNrLCB0aGVuCiAgICAgICAgIC8vIHdlIHNob3VsZCBh
ZGQgdGhlIFRtcCB0byB1bnNwaWxsYWJsZVRtcHMuIFRoYXQgd2lsbCBoZWxwIGF2b2lkIHJlbG9v
cGluZyBvbmx5IHRvIHR1cm4gdGhlCkBAIC0xMTcyLDYgKzEzMDMsNzIgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlwZT4KKyAgICBIYXNoU2V0PHVuc2lnbmVk
PiBjb21wdXRlVW5zcGlsbGFibGVUbXBzKCkKKyAgICB7CisgICAgICAgIEhhc2hTZXQ8dW5zaWdu
ZWQ+IHVuc3BpbGxhYmxlVG1wczsKKworICAgICAgICBzdHJ1Y3QgUmFuZ2UgeworICAgICAgICAg
ICAgdW5zaWduZWQgZmlyc3QgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
fTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxhc3QgeyAwIH07CisgICAgICAgICAgICB1bnNpZ25l
ZCBjb3VudCB7IDAgfTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGFkbWl0U3RhY2tDb3VudCB7IDAg
fTsKKyAgICAgICAgfTsKKworICAgICAgICB1bnNpZ25lZCBudW1UbXBzID0gbV9jb2RlLm51bVRt
cHModHlwZSk7CisgICAgICAgIHVuc2lnbmVkIGFycmF5U2l6ZSA9IEFic29sdXRlVG1wTWFwcGVy
PHR5cGU+OjphYnNvbHV0ZUluZGV4KG51bVRtcHMpOworCisgICAgICAgIFZlY3RvcjxSYW5nZSwg
MCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHJhbmdlczsKKyAgICAgICAgcmFuZ2VzLmZpbGwoUmFu
Z2UoKSwgYXJyYXlTaXplKTsKKworICAgICAgICB1bnNpZ25lZCBnbG9iYWxJbmRleCA9IDA7Cisg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKKyAgICAgICAgICAgIGZv
ciAoSW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAgICAgICAgIGluc3QuZm9yRWFjaEFy
ZyhbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUsIEFyZzo6VHlwZSBhcmdUeXBlLCBBcmc6OldpZHRo
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhcmcuaXNUbXAoKSAmJiBpbnN0LmFkbWl0c1N0
YWNrKGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdUeXBlICE9IHR5cGUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBUbXAgdG1wID0gYXJnLnRtcCgpOworICAgICAgICAgICAgICAgICAgICAgICAgUmFu
Z2UmIHJhbmdlID0gcmFuZ2VzW0Fic29sdXRlVG1wTWFwcGVyPHR5cGU+OjphYnNvbHV0ZUluZGV4
KHRtcCldOworICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuY291bnQrKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJhbmdlLmFkbWl0U3RhY2tDb3VudCsrOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGdsb2JhbEluZGV4IDwgcmFuZ2UuZmlyc3QpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByYW5nZS5maXJzdCA9IGdsb2JhbEluZGV4OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLmxhc3QgPSBnbG9iYWxJbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmxhc3QgPSBn
bG9iYWxJbmRleDsKKworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYXJnLmZvckVhY2hUbXBGYXN0KFsm
XSAoVG1wJiB0bXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNHUCgpICE9
ICh0eXBlID09IEFyZzo6R1ApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UmIHJhbmdlID0gcmFuZ2VzW0Fic29sdXRl
VG1wTWFwcGVyPHR5cGU+OjphYnNvbHV0ZUluZGV4KHRtcCldOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmFuZ2UuY291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxJ
bmRleCA8IHJhbmdlLmZpcnN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uu
Zmlyc3QgPSBnbG9iYWxJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5s
YXN0ID0gZ2xvYmFsSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5sYXN0ID0gZ2xvYmFsSW5kZXg7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg
KytnbG9iYWxJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrZ2xvYmFsSW5kZXg7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQWJzb2x1dGVUbXBNYXBwZXI8
dHlwZT46Omxhc3RNYWNoaW5lUmVnaXN0ZXJJbmRleCgpICsgMTsgaSA8IHJhbmdlcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgUmFuZ2UmIHJhbmdlID0gcmFuZ2VzW2ldOworICAgICAgICAg
ICAgaWYgKHJhbmdlLmxhc3QgLSByYW5nZS5maXJzdCA8PSAxICYmIHJhbmdlLmNvdW50ID4gcmFu
Z2UuYWRtaXRTdGFja0NvdW50KQorICAgICAgICAgICAgICAgIHVuc3BpbGxhYmxlVG1wcy5hZGQo
aSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdW5zcGlsbGFibGVUbXBzOworICAgIH0K
KworICAgIHRlbXBsYXRlPEFyZzo6VHlwZSB0eXBlPgogICAgIHZvaWQgYXNzaWduUmVnaXN0ZXJz
VG9UbXAoY29uc3QgQ29sb3JpbmdBbGxvY2F0b3I8dHlwZT4mIGFsbG9jYXRvcikKICAgICB7CiAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDRlZDQ4ZjIyMTFkNWI1
ZDA3ZTJkZDhiMjBhMGNmNDNlYjhjNjE4OWYuLjRhZDE4Yjc5NmMwNjhlZjUzZTQ2N2U2ZGNkMmFh
NTNjMjhiOGNmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcwpAQCAtMTA3LDYgKzEwNywxMCBAQAogCiBOb3AKIAorQWRkMzIgVTpHOjMyLCBV
Okc6MzIsIFpEOkc6MzIKKyAgICBJbW0sIFRtcCwgVG1wCisgICAgVG1wLCBUbXAsIFRtcAorCiBB
ZGQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgpA
QCAtMTI4LDEwICsxMzIsNiBAQCB4ODY6IEFkZDE2IFU6RzoxNiwgVUQ6RzoxNgogICAgIFRtcCwg
QWRkcgogICAgIFRtcCwgSW5kZXgKIAotQWRkMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKLSAg
ICBJbW0sIFRtcCwgVG1wCi0gICAgVG1wLCBUbXAsIFRtcAotCiA2NDogQWRkNjQgVTpHOjY0LCBV
RDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IEltbSwgQWRkcgpAQCAtMTQzLDE1ICsxNDMs
MTkgQEAgQWRkMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBJbW0sIFRtcCwgVG1wCiAg
ICAgVG1wLCBUbXAsIFRtcAogCi1hcm02NDogQWRkRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6
NjQKK0FkZERvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcAor
ICAgIHg4NjogQWRkciwgVG1wLCBUbXAKKyAgICB4ODY6IFRtcCwgQWRkciwgVG1wCiAKIHg4Njog
QWRkRG91YmxlIFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAK
LWFybTY0OiBBZGRGbG9hdCBVOkY6MzIsIFU6RjozMiwgRDpGOjMyCitBZGRGbG9hdCBVOkY6MzIs
IFU6RjozMiwgRDpGOjMyCiAgICAgVG1wLCBUbXAsIFRtcAorICAgIHg4NjogQWRkciwgVG1wLCBU
bXAKKyAgICB4ODY6IFRtcCwgQWRkciwgVG1wCiAKIHg4NjogQWRkRmxvYXQgVTpGOjMyLCBVRDpG
OjMyCiAgICAgVG1wLCBUbXAKQEAgLTIwMCwxMyArMjA0LDE1IEBAIE11bDMyIFU6RzozMiwgVVpE
Okc6MzIKICAgICB4ODY6IEFkZHIsIFRtcAogCiBNdWwzMiBVOkc6MzIsIFU6RzozMiwgWkQ6Rzoz
MgotICAgIGFybTY0OiBUbXAsIFRtcCwgVG1wCisgICAgVG1wLCBUbXAsIFRtcAorICAgIHg4Njog
QWRkciwgVG1wLCBUbXAKKyAgICB4ODY6IFRtcCwgQWRkciwgVG1wCiAgICAgeDg2OiBJbW0sIFRt
cCwgVG1wCiAKIDY0OiBNdWw2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAsIFRtcAogCi1hcm02
NDogTXVsNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorTXVsNjQgVTpHOjY0LCBVOkc6NjQsIEQ6
Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKIAogYXJtNjQ6IERpdjMyIFU6RzozMiwgVTpHOjMyLCBa
RDpHOjMyCkBAIC0yMTUsMTUgKzIyMSwxOSBAQCBhcm02NDogRGl2MzIgVTpHOjMyLCBVOkc6MzIs
IFpEOkc6MzIKIGFybTY0OiBEaXY2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBU
bXAsIFRtcAogCi1hcm02NDogTXVsRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKK011bERv
dWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcAorICAgIHg4Njog
QWRkciwgVG1wLCBUbXAKKyAgICB4ODY6IFRtcCwgQWRkciwgVG1wCiAKIHg4NjogTXVsRG91Ymxl
IFU6Rjo2NCwgVUQ6Rjo2NAogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKLWFybTY0OiBN
dWxGbG9hdCBVOkY6MzIsIFU6RjozMiwgRDpGOjMyCitNdWxGbG9hdCBVOkY6MzIsIFU6RjozMiwg
RDpGOjMyCiAgICAgVG1wLCBUbXAsIFRtcAorICAgIHg4NjogQWRkciwgVG1wLCBUbXAKKyAgICB4
ODY6IFRtcCwgQWRkciwgVG1wCiAKIHg4NjogTXVsRmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAg
VG1wLCBUbXAKQEAgLTI1OCw2ICsyNjgsMTEgQEAgeDg2XzY0OiBYODZEaXY2NCBVWkQ6Rzo2NCwg
VVpEOkc6NjQsIFU6Rzo2NAogTGVhIFVBOkc6UHRyLCBEOkc6UHRyCiAgICAgQWRkciwgVG1wCiAK
K0FuZDMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIFRtcAorICAgIHg4
NjogVG1wLCBBZGRyLCBUbXAKKyAgICB4ODY6IEFkZHIsIFRtcCwgVG1wCisKIEFuZDMyIFU6Rzoz
MiwgVVpEOkc6MzIKICAgICBUbXAsIFRtcAogICAgIHg4NjogSW1tLCBUbXAKQEAgLTI2NSwyNSAr
MjgwLDM0IEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEFkZHIsIFRtcAogICAg
IHg4NjogSW1tLCBBZGRyCiAKLTY0OiBBbmQ2NCBVOkc6NjQsIFVEOkc6NjQKKzY0OiBBbmQ2NCBV
Okc6NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCit4ODZfNjQ6IEFuZDY0
IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcAogCi1hcm02
NDogQW5kRG91YmxlIFU6Rjo2NCwgVTpGOjY0LCBEOkY6NjQKK0FuZERvdWJsZSBVOkY6NjQsIFU6
Rjo2NCwgRDpGOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogCiB4ODY6IEFuZERvdWJsZSBVOkY6NjQs
IFVEOkY6NjQKICAgICBUbXAsIFRtcAogCi1hcm02NDogQW5kRmxvYXQgVTpGOjMyLCBVOkY6MzIs
IEQ6RjozMgorQW5kRmxvYXQgVTpGOjMyLCBVOkY6MzIsIEQ6RjozMgogICAgIFRtcCwgVG1wLCBU
bXAKIAogeDg2OiBBbmRGbG9hdCBVOkY6MzIsIFVEOkY6MzIKICAgICBUbXAsIFRtcAogCit4ODY6
IFhvckRvdWJsZSBVOkY6NjQsIFU6Rjo2NCwgRDpGOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCiB4
ODY6IFhvckRvdWJsZSBVOkY6NjQsIFVEOkY6NjQKICAgICBUbXAsIFRtcAogCit4ODY6IFhvckZs
b2F0IFU6RjozMiwgVTpGOjMyLCBEOkY6MzIKKyAgICBUbXAsIFRtcCwgVG1wCisKIHg4NjogWG9y
RmxvYXQgVTpGOjMyLCBVRDpGOjMyCiAgICAgVG1wLCBUbXAKIApAQCAtMzM1LDYgKzM1OSwxMSBA
QCB4ODZfNjQ6IFVyc2hpZnQ2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAqLCBUbXAKICAgICBJ
bW0sIFRtcAogCitPcjMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBUbXAsIFRt
cAorICAgIHg4NjogVG1wLCBBZGRyLCBUbXAKKyAgICB4ODY6IEFkZHIsIFRtcCwgVG1wCisKIE9y
MzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAgeDg2OiBJbW0sIFRtcApAQCAt
MzQyLDEwICszNzEsMTggQEAgT3IzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgeDg2OiBBZGRyLCBU
bXAKICAgICB4ODY6IEltbSwgQWRkcgogCis2NDogT3I2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0
CisgICAgVG1wLCBUbXAsIFRtcAorCiA2NDogT3I2NCBVOkc6NjQsIFVEOkc6NjQKICAgICBUbXAs
IFRtcAogICAgIHg4NjogSW1tLCBUbXAKIAorWG9yMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
KyAgICBUbXAsIFRtcCwgVG1wCisgICAgeDg2OiBUbXAsIEFkZHIsIFRtcAorICAgIHg4NjogQWRk
ciwgVG1wLCBUbXAKKwogWG9yMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIFRtcCwgVG1wCiAgICAg
eDg2OiBJbW0sIFRtcApAQCAtMzUzLDYgKzM5MCw5IEBAIFhvcjMyIFU6RzozMiwgVVpEOkc6MzIK
ICAgICB4ODY6IEFkZHIsIFRtcAogICAgIHg4NjogSW1tLCBBZGRyCiAKKzY0OiBYb3I2NCBVOkc6
NjQsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcAorCiA2NDogWG9yNjQgVTpHOjY0
LCBVRDpHOjY0CiAgICAgVG1wLCBUbXAKICAgICB4ODY6IFRtcCwgQWRkcgpAQCAtNjA5LDYgKzY0
OSwxMSBAQCBCcmFuY2hEb3VibGUgVTpHOjMyLCBVOkY6NjQsIFU6Rjo2NCAvYnJhbmNoCiBCcmFu
Y2hGbG9hdCBVOkc6MzIsIFU6RjozMiwgVTpGOjMyIC9icmFuY2gKICAgICBEb3VibGVDb25kLCBU
bXAsIFRtcAogCitCcmFuY2hBZGQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyIC9i
cmFuY2gKKyAgICBSZXNDb25kLCBUbXAsIFRtcCwgVG1wCisgICAgeDg2OlJlc0NvbmQsIFRtcCwg
QWRkciwgVG1wCisgICAgeDg2OlJlc0NvbmQsIEFkZHIsIFRtcCwgVG1wCisKIEJyYW5jaEFkZDMy
IFU6RzozMiwgVTpHOjMyLCBVWkQ6RzozMiAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAK
ICAgICBSZXNDb25kLCBJbW0sIFRtcApAQCAtNjE2LDkgKzY2MSwxNSBAQCBCcmFuY2hBZGQzMiBV
Okc6MzIsIFU6RzozMiwgVVpEOkc6MzIgL2JyYW5jaAogICAgIHg4NjogUmVzQ29uZCwgVG1wLCBB
ZGRyCiAgICAgeDg2OiBSZXNDb25kLCBBZGRyLCBUbXAKIAorQnJhbmNoQWRkNjQgVTpHOjMyLCBV
Okc6NjQsIFU6Rzo2NCwgWkQ6Rzo2NCAvYnJhbmNoCisgICAgUmVzQ29uZCwgVG1wLCBUbXAsIFRt
cAorICAgIHg4NjpSZXNDb25kLCBUbXAsIEFkZHIsIFRtcAorICAgIHg4NjpSZXNDb25kLCBBZGRy
LCBUbXAsIFRtcAorCiA2NDogQnJhbmNoQWRkNjQgVTpHOjMyLCBVOkc6NjQsIFVEOkc6NjQgL2Jy
YW5jaAogICAgIFJlc0NvbmQsIEltbSwgVG1wCiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKKyAgICB4
ODY6UmVzQ29uZCwgQWRkciwgVG1wCiAKIHg4NjogQnJhbmNoTXVsMzIgVTpHOjMyLCBVOkc6MzIs
IFVaRDpHOjMyIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKaW5kZXggMGM1MzhhYWZhM2Y5NGRkZTA0MzE1
NzQ0MTExZDJjMWRiYmIzOTRmOS4uZTMyYjI0MWUxMTIwMDQ1OGMzODY3NjJhNmRmOGE1YzhjMDg4
YTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCkBA
IC01MCw2ICs1MCwxMSBAQCBDU3RyaW5nIFNwZWNpYWw6Om5hbWUoKSBjb25zdAogICAgIHJldHVy
biBvdXQudG9DU3RyaW5nKCk7CiB9CiAKK2Jvb2wgU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdE
ZWYoSW5zdCYsIHVuc2lnbmVkJikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgU3Bl
Y2lhbDo6aGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKQogewogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAppbmRleCBlNWNiNWYxODJj
YjQ2ZTY5YWNkNjU5NzAxZmZkNGZmMjUwNWJlOWVjLi5kYTA1MGZhMTNlMjIzODAwYWNlZDFkMDNi
OGQzYTIxOWRkNmQ1MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNp
YWwuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvckVhY2hB
cmcoSW5zdCYsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKEluc3QmKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGFkbWl0c1N0YWNrKEluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiwgdW5zaWduZWQmIGRlZkluZGV4KTsKIAog
ICAgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgb24gZm9yIGVhY2ggSW5zdCB0aGF0IHVzZXMgdGhpcyBT
cGVjaWFsLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRvCiAgICAgLy8gZ3VhcmFudGVlIHRo
YXQgYSBTcGVjaWFsIGdldHMgdXNlZCBmcm9tIGp1c3Qgb25lIEluc3QsIGJlY2F1c2UgQWlyIG1p
Z2h0IHRhaWxkdXAgbGF0ZS4gU28sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4
IGY3OTJjMDBiMGY1NmE5ZWY3MTZiZmJjMTkyOTMxMDJkNTQ4ZjdhMDQuLmE5YmUwNjM3MzA4N2Jk
YWQzMTViOGEzNDA5YmVlNmY5MDI3NDlkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCkBAIC03NDkyLDYgKzc0OTIsMTQ2IEBAIHZvaWQgdGVzdENoZWNrQWRkRm9sZEZhaWwoaW50
IGEsIGludCBiKQogICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7CiB9CiAKK3Zv
aWQgdGVzdENoZWNrQWRkQXJndW1lbnRBbGlhc2luZzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworCisgICAgLy8gUHJldGVuZCB0
byB1c2UgYWxsIHRoZSBhcmdzLgorICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJncyA9IHJvb3Qt
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICB1
c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lz
dGVyKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVl
KGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5zZXRHZW5lcmF0
b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcxKS4KKyAgICBD
aGVja1ZhbHVlKiBjaGVja0FkZDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywg
Q2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZDEtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2Ygc2Vjb25kIGFyZyAo
aGVyZSwgYXJnMikuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQyID0gcm9vdC0+YXBwZW5kTmV3
PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMywgYXJnMik7CisgICAg
Y2hlY2tBZGQyLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIC8vIEtlZXAg
YXJnMyBsaXZlLgorICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0gcm9vdC0+YXBw
ZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIGtlZXBB
cmcyTGl2ZS0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOworICAgIGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJz
JiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIE9ubHkg
dXNlIG9mIGNoZWNrQWRkMSBhbmQgY2hlY2tBZGQyLgorICAgIENoZWNrVmFsdWUqIGNoZWNrQWRk
MyA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCks
IGNoZWNrQWRkMSwgY2hlY2tBZGQyKTsKKyAgICBjaGVja0FkZDMtPnNldEdlbmVyYXRvcihbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGpp
dC5vb3BzKCk7IH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQzKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYywgMSwgMiwgMykgPT0gOCk7Cit9CisKK3ZvaWQgdGVzdENoZWNrQWRkQXJn
dW1lbnRBbGlhc2luZzMyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgIFZhbHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMikpOworCisgICAgLy8g
UHJldGVuZCB0byB1c2UgYWxsIHRoZSBhcmdzLgorICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJn
cyA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigp
KTsKKyAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKSk7CisgICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJn
MiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGFyZzMsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5z
ZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmKSB7IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcx
KS4KKyAgICBDaGVja1ZhbHVlKiBjaGVja0FkZDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZDEt
PnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2Ygc2Vj
b25kIGFyZyAoaGVyZSwgYXJnMykuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQyID0gcm9vdC0+
YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMiwgYXJn
Myk7CisgICAgY2hlY2tBZGQyLT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAg
IC8vIEtlZXAgYXJnMyBsaXZlLgorICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0g
cm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOwor
ICAgIGtlZXBBcmcyTGl2ZS0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6
OlNvbWVSZWdpc3RlcikpOworICAgIGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0Nh
bGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAg
IC8vIE9ubHkgdXNlIG9mIGNoZWNrQWRkMSBhbmQgY2hlY2tBZGQyLgorICAgIENoZWNrVmFsdWUq
IGNoZWNrQWRkMyA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwg
T3JpZ2luKCksIGNoZWNrQWRkMSwgY2hlY2tBZGQyKTsKKyAgICBjaGVja0FkZDMtPnNldEdlbmVy
YXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmKSB7IGppdC5vb3BzKCk7IH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQzKTsKKworICAgIENIRUNLKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgMSwgMiwgMykgPT0gOCk7Cit9CisKK3ZvaWQgdGVzdENo
ZWNrQWRkU2VsZk92ZXJmbG93NjQoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVj
a1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFyZywgYXJnKTsKKyAgICBjaGVja0Fk
ZC0+YXBwZW5kKGFyZyk7CisgICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1swXS5ncHIoKSwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3Vl
KCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworCisgICAgLy8gTWFrZSBz
dXJlIHRoZSBhcmcgaXMgbm90IHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgb3BlcmF0aW9uLgorICAg
IFBhdGNocG9pbnRWYWx1ZSogb3BhcXVlVXNlID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIG9wYXF1ZVVzZS0+YXBwZW5kKENvbnN0
cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgb3BhcXVlVXNl
LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7IH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2tBZGQpOworCisgICAgYXV0byBjb2RlID0gY29tcGls
ZShwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgMGxsKSA9PSAwKTsK
KyAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIDFsbCkgPT0gMik7CisgICAgQ0hFQ0so
aW52b2tlPGludDY0X3Q+KCpjb2RlLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgo
KSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpOworfQorCit2b2lkIHRl
c3RDaGVja0FkZFNlbGZPdmVyZmxvdzMyKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5h
cHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcsIGFyZyk7
CisgICAgY2hlY2tBZGQtPmFwcGVuZChhcmcpOworICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3Io
CisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMF0u
Z3ByKCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKwor
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJnIGlzIG5vdCB0aGUgZGVzdGluYXRpb24gb2YgdGhlIG9w
ZXJhdGlvbi4KKyAgICBQYXRjaHBvaW50VmFsdWUqIG9wYXF1ZVVzZSA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBvcGFxdWVVc2Ut
PmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwor
ICAgIG9wYXF1ZVVzZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrQWRkKTsKKworICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGUocHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUs
IDBsbCkgPT0gMCk7CisgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCAxbGwpID09IDIp
OworICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsK
K30KKwogdm9pZCB0ZXN0Q2hlY2tTdWJJbW0oKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAt
Nzk0Myw2ICs4MDgzLDg2IEBAIHZvaWQgdGVzdENoZWNrTXVsRm9sZEZhaWwoaW50IGEsIGludCBi
KQogICAgIENIRUNLKGludm9rZTxpbnQ+KCpjb2RlKSA9PSA0Mik7CiB9CiAKK3ZvaWQgdGVzdENo
ZWNrTXVsQXJndW1lbnRBbGlhc2luZzY0KCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIFZh
bHVlKiBhcmczID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworCisgICAgLy8gUHJldGVuZCB0byB1c2UgYWxs
IHRoZSBhcmdzLgorICAgIFBhdGNocG9pbnRWYWx1ZSogdXNlQXJncyA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICB1c2VBcmdzLT5h
cHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcxLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Cisg
ICAgdXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3RlcikpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzMsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5zZXRHZW5lcmF0b3IoWyZdIChD
Q2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworCisg
ICAgLy8gTGFzdCB1c2Ugb2YgZmlyc3QgYXJnIChoZXJlLCBhcmcxKS4KKyAgICBDaGVja1ZhbHVl
KiBjaGVja011bDEgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWws
IE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja011bDEtPnNldEdlbmVyYXRvcihbJl0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGpp
dC5vb3BzKCk7IH0pOworCisgICAgLy8gTGFzdCB1c2Ugb2Ygc2Vjb25kIGFyZyAoaGVyZSwgYXJn
MikuCisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwyID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFs
dWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMywgYXJnMik7CisgICAgY2hlY2tNdWwy
LT5zZXRHZW5lcmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIC8vIEtlZXAgYXJnMyBsaXZl
LgorICAgIFBhdGNocG9pbnRWYWx1ZSoga2VlcEFyZzJMaXZlID0gcm9vdC0+YXBwZW5kTmV3PFBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgVm9pZCwgT3JpZ2luKCkpOworICAgIGtlZXBBcmcyTGl2ZS0+
YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMiwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwor
ICAgIGtlZXBBcmcyTGl2ZS0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKworICAgIC8vIE9ubHkgdXNlIG9mIGNo
ZWNrTXVsMSBhbmQgY2hlY2tNdWwyLgorICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsMyA9IHJvb3Qt
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGNoZWNrTXVs
MSwgY2hlY2tNdWwyKTsKKyAgICBjaGVja011bDMtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IGppdC5vb3BzKCk7
IH0pOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgY2hlY2tNdWwzKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4o
cHJvYywgMiwgMywgNCkgPT0gNzIpOworfQorCit2b2lkIHRlc3RDaGVja011bEFyZ3VtZW50QWxp
YXNpbmczMigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBW
YWx1ZSogYXJnMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKKworICAgIC8vIFByZXRlbmQg
dG8gdXNlIGFsbCB0aGUgYXJncy4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHVzZUFyZ3MgPSByb290
LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAg
dXNlQXJncy0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlcikpOworICAgIHVzZUFyZ3MtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICB1c2VBcmdzLT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShhcmczLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgdXNlQXJncy0+c2V0R2VuZXJh
dG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
eyB9KTsKKworICAgIC8vIExhc3QgdXNlIG9mIGZpcnN0IGFyZyAoaGVyZSwgYXJnMSkuCisgICAg
Q2hlY2tWYWx1ZSogY2hlY2tNdWwxID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2Ms
IENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tNdWwxLT5zZXRHZW5l
cmF0b3IoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgeyBqaXQub29wcygpOyB9KTsKKworICAgIC8vIExhc3QgdXNlIG9mIHNlY29uZCBhcmcg
KGhlcmUsIGFyZzMpLgorICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsMiA9IHJvb3QtPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGFyZzIsIGFyZzMpOworICAg
IGNoZWNrTXVsMi0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgaml0Lm9vcHMoKTsgfSk7CisKKyAgICAvLyBLZWVw
IGFyZzMgbGl2ZS4KKyAgICBQYXRjaHBvaW50VmFsdWUqIGtlZXBBcmcyTGl2ZSA9IHJvb3QtPmFw
cGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICBrZWVw
QXJnMkxpdmUtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpTb21lUmVn
aXN0ZXIpKTsKKyAgICBrZWVwQXJnMkxpdmUtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVy
cyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisKKyAgICAvLyBPbmx5
IHVzZSBvZiBjaGVja011bDEgYW5kIGNoZWNrTXVsMi4KKyAgICBDaGVja1ZhbHVlKiBjaGVja011
bDMgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigp
LCBjaGVja011bDEsIGNoZWNrTXVsMik7CisgICAgY2hlY2tNdWwzLT5zZXRHZW5lcmF0b3IoWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyBq
aXQub29wcygpOyB9KTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGNoZWNrTXVsMyk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIDIsIDMsIDQpID09IDcyKTsKK30KKwogdm9pZCB0ZXN0Q2hlY2tNdWw2
NFNTaHIoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTEwNjEsNiArMTEyODEsMTAgQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2hlY2tBZGQ2NCgpKTsK
ICAgICBSVU4odGVzdENoZWNrQWRkRm9sZCgxMDAsIDIwMCkpOwogICAgIFJVTih0ZXN0Q2hlY2tB
ZGRGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAxMDApKTsKKyAgICBSVU4odGVzdENoZWNrQWRkQXJndW1l
bnRBbGlhc2luZzY0KCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGRBcmd1bWVudEFsaWFzaW5nMzIo
KSk7CisgICAgUlVOKHRlc3RDaGVja0FkZFNlbGZPdmVyZmxvdzY0KCkpOworICAgIFJVTih0ZXN0
Q2hlY2tBZGRTZWxmT3ZlcmZsb3czMigpKTsKICAgICBSVU4odGVzdENoZWNrU3ViSW1tKCkpOwog
ICAgIFJVTih0ZXN0Q2hlY2tTdWJCYWRJbW0oKSk7CiAgICAgUlVOKHRlc3RDaGVja1N1YigpKTsK
QEAgLTExMDc1LDYgKzExMjk5LDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAg
IFJVTih0ZXN0Q2hlY2tNdWw2NCgpKTsKICAgICBSVU4odGVzdENoZWNrTXVsRm9sZCgxMDAsIDIw
MCkpOwogICAgIFJVTih0ZXN0Q2hlY2tNdWxGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAxMDApKTsKKyAg
ICBSVU4odGVzdENoZWNrTXVsQXJndW1lbnRBbGlhc2luZzY0KCkpOworICAgIFJVTih0ZXN0Q2hl
Y2tNdWxBcmd1bWVudEFsaWFzaW5nMzIoKSk7CiAKICAgICBSVU4odGVzdENvbXBhcmUoRXF1YWws
IDQyLCA0MikpOwogICAgIFJVTih0ZXN0Q29tcGFyZShOb3RFcXVhbCwgNDIsIDQyKSk7CkBAIC0x
MTYwNCw2ICsxMTgzMCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdFNTaHJTaGw2NCgtNDIwMDAwMDAwMDAsIDgsIDgpKTsKIAogICAgIFJVTih0ZXN0Q2hlY2tN
dWw2NFNTaHIoKSk7CisKICAgICBSVU4odGVzdENvbXB1dGVEaXZpc2lvbk1hZ2ljPGludDMyX3Q+
KDIsIC0yMTQ3NDgzNjQ3LCAwKSk7CiAgICAgUlVOKHRlc3RUcml2aWFsSW5maW5pdGVMb29wKCkp
OwogICAgIFJVTih0ZXN0Rm9sZFBhdGhFcXVhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRleCBmNzE2ZTc2
Zjc1NzU3ODU2MWRhNjYzZGE0NWZjN2EwOWEzYzc1NWY3Li4wMGJiZThiNGU0NWUxNWZkM2FiOTRj
OTViMjAwM2ZjMTZhNjQ3NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0
QmFzZSYgZXhpdCkKICAgICAgICAgaml0LmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoCiAg
ICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9jaywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksCi0gICAgICAgICAg
ICB0cnVlQ2FsbGVyID8gQXNzZW1ibHlIZWxwZXJzOjpVc2VFeGlzdGluZ1RhZ1JlZ2lzdGVyQ29u
dGVudHMgOiBBc3NlbWJseUhlbHBlcnM6OkNvcHlTYXZlZFRhZ1JlZ2lzdGVyc0Zyb21CYXNlRnJh
bWUsCisgICAgICAgICAgICB0cnVlQ2FsbGVyID8gQXNzZW1ibHlIZWxwZXJzOjpVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMgOiBBc3NlbWJseUhlbHBlcnM6OkNvcHlCYXNlbGluZUNhbGxl
ZVNhdmVkUmVnaXN0ZXJzRnJvbUJhc2VGcmFtZSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qy
KTsKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1NGM5YWRjOGQ3ZDMx
NzMyYmExYjY0ZmQ0ZmIxZWE4NTFmZmJiMTVmLi41YTk4MTEyYzY5NWQ1ODEwMTk5NGQwMWU3Y2M1
NjYyMDViZGNiN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgZW51bSBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHsgVXNlRXhpc3RpbmdUYWdSZWdpc3Rl
ckNvbnRlbnRzLCBDb3B5U2F2ZWRUYWdSZWdpc3RlcnNGcm9tQmFzZUZyYW1lIH07CisgICAgZW51
bSBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHsgVXNlRXhpc3RpbmdUYWdSZWdpc3RlckNvbnRlbnRz
LCBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUgfTsKIAogICAg
IHZvaWQgZW1pdFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgUmVzdG9yZVRhZ1JlZ2lzdGVy
TW9kZSB0YWdSZWdpc3Rlck1vZGUsIEdQUlJlZyB0ZW1wKQogICAgIHsKQEAgLTIyMiw2ICsyMjIs
MTAgQEAgcHVibGljOgogICAgICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMg
PSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICAgICAgUmVnaXN0ZXJTZXQg
ZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3Rl
cnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVy
Q291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOwpAQCAtMjM0LDgg
KzIzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0YWdSZWdpc3Rlck1v
ZGUpOwogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRlbXApOwogI2Vsc2UKLSAgICAgICAgICAg
IGlmICh0YWdSZWdpc3Rlck1vZGUgPT0gQ29weVNhdmVkVGFnUmVnaXN0ZXJzRnJvbUJhc2VGcmFt
ZQotICAgICAgICAgICAgICAgICYmIChlbnRyeS5yZWcoKSA9PSBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIgfHwgZW50cnkucmVnKCkgPT0gR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSkg
eworICAgICAgICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVT
YXZlZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50
cnkucmVnKCkpKSB7CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJUb1dyaXRlID0gdGVtcDsKICAg
ICAgICAgICAgICAgICBsb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCByZWdpc3RlclRvV3JpdGUpOwogICAg
ICAgICAgICAgfSBlbHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>