<?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>71744</bug_id>
          
          <creation_ts>2011-11-07 16:22:11 -0800</creation_ts>
          <short_desc>DFG OSR exit code should be lazily generated</short_desc>
          <delta_ts>2011-11-09 17:09:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71746</dependson>
    
    <dependson>71787</dependson>
    
    <dependson>71861</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497572</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-07 16:22:11 -0800</bug_when>
    <thetext>For now, this is an umbrella bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497574</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-07 16:23:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/10196854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499336</commentid>
    <comment_count>2</comment_count>
      <attachid>114364</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-09 14:02:25 -0800</bug_when>
    <thetext>Created attachment 114364
the patch

It&apos;s starting to pass tests and such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499338</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 14:05:30 -0800</bug_when>
    <thetext>Attachment 114364 did not pass style-queue:

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

Source/JavaScriptCore/assembler/X86Assembler.h:1285:  jmp_m is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGCorrectableJumpPoint.h:85:  The parameter name &quot;codeBlock&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 26 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>499370</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-09 14:44:32 -0800</bug_when>
    <thetext>As expected, this is a win.



Benchmark report for SunSpider, V8, and Kraken on nitroflex.local (MacBookPro8,2).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r99757)
&quot;LazyOSR&quot; at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc (r99757)

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

                                            TipOfTree                LazyOSR                                     
SunSpider:
   3d-cube                                7.4039+-0.2357          7.2712+-0.1936         might be 1.0182x faster
   3d-morph                               7.5516+-0.1231    ?     7.6506+-0.1527       ? might be 1.0131x slower
   3d-raytrace                            7.8940+-0.2523          7.5361+-0.1823         might be 1.0475x faster
   access-binary-trees                    1.6714+-0.0507          1.6292+-0.0871         might be 1.0259x faster
   access-fannkuch                        6.3974+-0.0695    ?     6.4574+-0.1132       ?
   access-nbody                           3.7455+-0.0874    ?     3.7595+-0.1336       ?
   access-nsieve                          2.5637+-0.0989    ?     2.6492+-0.0942       ? might be 1.0334x slower
   bitops-3bit-bits-in-byte               1.3409+-0.0080    ^     1.3064+-0.0147       ^ definitely 1.0264x faster
   bitops-bits-in-byte                    2.4244+-0.0562          2.4159+-0.0480       
   bitops-bitwise-and                     3.2958+-0.0671          3.2085+-0.0563         might be 1.0272x faster
   bitops-nsieve-bits                     5.4042+-0.1188    ?     5.6059+-0.5231       ? might be 1.0373x slower
   controlflow-recursive                  2.1181+-0.0356    ?     2.1296+-0.0512       ?
   crypto-aes                             8.1533+-0.2277    ^     7.5888+-0.2208       ^ definitely 1.0744x faster
   crypto-md5                             2.6565+-0.0620          2.6105+-0.0666         might be 1.0176x faster
   crypto-sha1                            2.4210+-0.0481    ?     2.4340+-0.0748       ?
   date-format-tofte                     10.2298+-0.2496          9.9921+-0.2409         might be 1.0238x faster
   date-format-xparb                      9.5717+-0.3785          9.2057+-0.1458         might be 1.0398x faster
   math-cordic                            6.5370+-0.1350    ?     6.6721+-0.0984       ? might be 1.0207x slower
   math-partial-sums                      7.6998+-0.1983          7.6932+-0.1252       
   math-spectral-norm                     2.6174+-0.0768          2.5152+-0.0752         might be 1.0406x faster
   regexp-dna                            11.7320+-0.2553         11.7292+-0.1894       
   string-base64                          4.1655+-0.1884          4.0047+-0.0911         might be 1.0402x faster
   string-fasta                           6.5371+-0.2103          6.3637+-0.1357         might be 1.0272x faster
   string-tagcloud                       12.0853+-0.2860    ?    12.3296+-0.3158       ? might be 1.0202x slower
   string-unpack-code                    20.9880+-0.5240         20.7760+-0.2546         might be 1.0102x faster
   string-validate-input                  5.3511+-0.1325    ?     5.3943+-0.1754       ?

   &lt;arithmetic&gt; *                         6.2522+-0.0350    ^     6.1896+-0.0263       ^ definitely 1.0101x faster
   &lt;geometric&gt;                            5.0135+-0.0284    ^     4.9623+-0.0219       ^ definitely 1.0103x faster
   &lt;harmonic&gt;                             3.9951+-0.0313          3.9487+-0.0195         might be 1.0118x faster

                                            TipOfTree                LazyOSR                                     
V8:
   crypto                                73.9210+-0.8420         73.6162+-0.7927       
   deltablue                            166.8321+-1.1465    ^   162.1572+-0.7648       ^ definitely 1.0288x faster
   earley-boyer                          88.1840+-1.1171    ?    89.3607+-0.8217       ? might be 1.0133x slower
   raytrace                              63.7292+-0.8924    ^    60.4194+-0.6861       ^ definitely 1.0548x faster
   regexp                               106.5850+-0.7235        105.9525+-0.7361       
   richards                             126.0230+-0.7675        125.5216+-1.3910       
   splay                                 74.5909+-1.8894         74.3575+-1.3547       

   &lt;arithmetic&gt;                          99.9808+-0.3554    ^    98.7693+-0.3677       ^ definitely 1.0123x faster
   &lt;geometric&gt; *                         94.9067+-0.4588    ^    93.7567+-0.3445       ^ definitely 1.0123x faster
   &lt;harmonic&gt;                            90.5483+-0.5460    ^    89.3230+-0.3464       ^ definitely 1.0137x faster

                                            TipOfTree                LazyOSR                                     
Kraken:
   ai-astar                             493.4284+-2.5022    ?   496.5512+-4.1676       ?
   audio-beat-detection                 191.1934+-1.7556    ?   192.5436+-2.1138       ?
   audio-dft                            274.8294+-4.9026    ?   284.7294+-11.4481      ? might be 1.0360x slower
   audio-fft                            126.3960+-0.9793        125.4717+-1.4082       
   audio-oscillator                     255.5759+-2.8552        251.8229+-1.1014         might be 1.0149x faster
   imaging-darkroom                     308.8041+-5.8610        305.0695+-5.8926         might be 1.0122x faster
   imaging-desaturate                   227.0093+-1.4694    ?   228.5401+-2.2932       ?
   imaging-gaussian-blur                552.9345+-1.6357    !   559.1411+-3.6287       ! definitely 1.0112x slower
   json-parse-financial                  57.4925+-0.4791    ?    57.9051+-0.5979       ?
   json-stringify-tinderbox              70.9923+-1.2122         69.6746+-0.7876         might be 1.0189x faster
   stanford-crypto-aes                   96.1689+-0.4846    ?    97.5074+-1.4020       ? might be 1.0139x slower
   stanford-crypto-ccm                  101.0021+-0.9532    ?   101.7126+-0.7810       ?
   stanford-crypto-pbkdf2               197.1552+-2.7374        194.6595+-2.0428         might be 1.0128x faster
   stanford-crypto-sha256-iterative      81.2450+-0.5573    ?    81.9975+-0.7264       ?

   &lt;arithmetic&gt; *                       216.7305+-0.9645    ?   217.6661+-1.1812       ?
   &lt;geometric&gt;                          172.4557+-0.7543    ?   172.9061+-0.7622       ?
   &lt;harmonic&gt;                           138.1289+-0.5490    ?   138.3680+-0.5031       ?

                                            TipOfTree                LazyOSR                                     
All benchmarks:
   &lt;arithmetic&gt;                          82.9074+-0.2807    ?    82.9711+-0.3648       ?
   &lt;geometric&gt;                           22.2865+-0.0826         22.1373+-0.0688       
   &lt;harmonic&gt;                             7.0289+-0.0540          6.9485+-0.0334         might be 1.0116x faster

                                            TipOfTree                LazyOSR                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                       50.4747+-0.1371    ^    50.1739+-0.1420       ^ definitely 1.0060x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499372</commentid>
    <comment_count>5</comment_count>
      <attachid>114364</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-09 14:46:25 -0800</bug_when>
    <thetext>Comment on attachment 114364
the patch

Attachment 114364 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10404087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499381</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-09 14:57:22 -0800</bug_when>
    <thetext>Confirmed results from another machine…


Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r99757)
&quot;LazyOSR&quot; at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc (r99757)

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

                                            TipOfTree                LazyOSR                                     
SunSpider:
   3d-cube                                9.3118+-0.0392    ^     9.1952+-0.0456       ^ definitely 1.0127x faster
   3d-morph                              10.2346+-0.1446         10.0995+-0.0314         might be 1.0134x faster
   3d-raytrace                            9.8547+-0.0569    ^     9.6235+-0.0570       ^ definitely 1.0240x faster
   access-binary-trees                    2.0201+-0.0106    ^     1.9793+-0.0091       ^ definitely 1.0206x faster
   access-fannkuch                        9.4425+-0.0129    ^     9.3486+-0.0238       ^ definitely 1.0100x faster
   access-nbody                           5.4399+-0.0059    ^     5.2808+-0.0128       ^ definitely 1.0301x faster
   access-nsieve                          3.7853+-0.0104          3.7724+-0.0066       
   bitops-3bit-bits-in-byte               1.5597+-0.0256    ?     1.5895+-0.0286       ? might be 1.0191x slower
   bitops-bits-in-byte                    5.9901+-0.0060    !     6.1675+-0.0336       ! definitely 1.0296x slower
   bitops-bitwise-and                     3.9995+-0.0069          3.9900+-0.0035       
   bitops-nsieve-bits                     6.9906+-0.1455          6.9032+-0.0840         might be 1.0127x faster
   controlflow-recursive                  2.8440+-0.0394    ?     2.8646+-0.0400       ?
   crypto-aes                             9.7651+-0.0724    ^     9.3164+-0.0642       ^ definitely 1.0482x faster
   crypto-md5                             3.3641+-0.0102    ^     3.3036+-0.0232       ^ definitely 1.0183x faster
   crypto-sha1                            3.1559+-0.0459    ^     3.0009+-0.0202       ^ definitely 1.0516x faster
   date-format-tofte                     13.2834+-0.1559    ^    13.0351+-0.0751       ^ definitely 1.0190x faster
   date-format-xparb                     12.7551+-0.1480    ^    11.5270+-0.0932       ^ definitely 1.1065x faster
   math-cordic                            8.7817+-0.1024    ?     9.1984+-0.3764       ? might be 1.0475x slower
   math-partial-sums                     12.6786+-0.0406    ?    12.7408+-0.0450       ?
   math-spectral-norm                     3.4554+-0.0073    ^     3.3180+-0.0036       ^ definitely 1.0414x faster
   regexp-dna                            16.6182+-0.2134         16.4619+-0.1279       
   string-base64                          5.1089+-0.0440    ?     5.1959+-0.1666       ? might be 1.0170x slower
   string-fasta                           8.6025+-0.0370    ?     8.6237+-0.0115       ?
   string-tagcloud                       16.6954+-0.3969         16.6808+-0.1369       
   string-unpack-code                    28.3529+-0.1188    ?    28.4580+-0.1054       ?
   string-validate-input                  6.8744+-0.0452          6.8162+-0.0482       

   &lt;arithmetic&gt; *                         8.4986+-0.0377    ^     8.4035+-0.0354       ^ definitely 1.0113x faster
   &lt;geometric&gt;                            6.7983+-0.0255    ^     6.7217+-0.0276       ^ definitely 1.0114x faster
   &lt;harmonic&gt;                             5.3340+-0.0232    ^     5.2825+-0.0240       ^ definitely 1.0098x faster

                                            TipOfTree                LazyOSR                                     
V8:
   crypto                                97.6795+-0.2221    ^    96.5580+-0.3200       ^ definitely 1.0116x faster
   deltablue                            220.9538+-1.7913    ^   217.4101+-0.5540       ^ definitely 1.0163x faster
   earley-boyer                         130.9992+-1.5499        130.9933+-0.9396       
   raytrace                              83.5364+-0.2738    ^    79.9438+-0.3360       ^ definitely 1.0449x faster
   regexp                               149.8602+-0.5903    ^   148.8902+-0.2403       ^ definitely 1.0065x faster
   richards                             171.5156+-0.3911    ^   169.7018+-0.1642       ^ definitely 1.0107x faster
   splay                                108.6413+-1.1656        108.4810+-1.4079       

   &lt;arithmetic&gt;                         137.5980+-0.4077    ^   135.9969+-0.2684       ^ definitely 1.0118x faster
   &lt;geometric&gt; *                        130.9221+-0.3932    ^   129.2452+-0.2975       ^ definitely 1.0130x faster
   &lt;harmonic&gt;                           124.8203+-0.3930    ^   122.9570+-0.3130       ^ definitely 1.0152x faster

                                            TipOfTree                LazyOSR                                     
Kraken:
   ai-astar                             896.3311+-0.5234    ?   897.3885+-1.0888       ?
   audio-beat-detection                 255.2577+-1.0697    ?   256.8485+-1.0682       ?
   audio-dft                            315.6081+-2.8663        315.5922+-3.1477       
   audio-fft                            166.7750+-0.1788    ?   167.2417+-0.7851       ?
   audio-oscillator                     354.2109+-1.7018    ^   350.9050+-0.7410       ^ definitely 1.0094x faster
   imaging-darkroom                     404.0041+-5.4998        403.4374+-5.8335       
   imaging-desaturate                   291.5013+-0.2275        291.2697+-0.0755       
   imaging-gaussian-blur                754.4036+-3.5127        751.7568+-1.7243       
   json-parse-financial                  87.4539+-0.1942    ^    86.7862+-0.2007       ^ definitely 1.0077x faster
   json-stringify-tinderbox              96.1448+-0.7505         95.8490+-0.4159       
   stanford-crypto-aes                  139.1117+-0.4486    !   141.0177+-0.8612       ! definitely 1.0137x slower
   stanford-crypto-ccm                  136.7368+-0.8909    ?   137.3705+-0.9244       ?
   stanford-crypto-pbkdf2               287.2300+-2.6423    ^   281.3833+-2.1771       ^ definitely 1.0208x faster
   stanford-crypto-sha256-iterative     117.9661+-0.2010    !   118.8349+-0.3378       ! definitely 1.0074x slower

   &lt;arithmetic&gt; *                       307.3382+-0.6416        306.8344+-0.5357       
   &lt;geometric&gt;                          239.5804+-0.4489        239.3972+-0.3551       
   &lt;harmonic&gt;                           192.9624+-0.2992    ?   192.9762+-0.2265       ?

                                            TipOfTree                LazyOSR                                     
All benchmarks:
   &lt;arithmetic&gt;                         116.7422+-0.2207    ^   116.3011+-0.1469       ^ definitely 1.0038x faster
   &lt;geometric&gt;                           30.5175+-0.0792    ^    30.2615+-0.0699       ^ definitely 1.0085x faster
   &lt;harmonic&gt;                             9.3943+-0.0402    ^     9.3043+-0.0413       ^ definitely 1.0097x faster

                                            TipOfTree                LazyOSR                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                       69.9290+-0.1705    ^    69.3302+-0.1019       ^ definitely 1.0086x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499390</commentid>
    <comment_count>7</comment_count>
      <attachid>114374</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-09 15:13:10 -0800</bug_when>
    <thetext>Created attachment 114374
the patch

It works and it&apos;s ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499396</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 15:15:34 -0800</bug_when>
    <thetext>Attachment 114374 did not pass style-queue:

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

Source/JavaScriptCore/assembler/X86Assembler.h:1285:  jmp_m is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 29 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>499404</commentid>
    <comment_count>9</comment_count>
      <attachid>114374</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-09 15:26:29 -0800</bug_when>
    <thetext>Comment on attachment 114374
the patch

Attachment 114374 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10401098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499413</commentid>
    <comment_count>10</comment_count>
      <attachid>114378</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-09 15:29:31 -0800</bug_when>
    <thetext>Created attachment 114378
the patch

Trying to fix Qt and 32_64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499415</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 15:31:32 -0800</bug_when>
    <thetext>Attachment 114378 did not pass style-queue:

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

Source/JavaScriptCore/assembler/X86Assembler.h:1285:  jmp_m is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 29 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>499482</commentid>
    <comment_count>12</comment_count>
      <attachid>114378</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-11-09 16:51:16 -0800</bug_when>
    <thetext>Comment on attachment 114378
the patch

r+ with comments in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499504</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-09 17:09:32 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/99787</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114364</attachid>
            <date>2011-11-09 14:02:25 -0800</date>
            <delta_ts>2011-11-09 15:13:10 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyosrexit_patch_1.diff</filename>
            <type>text/plain</type>
            <size>52844</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzMgQEAK
KzIwMTEtMTEtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgT1NSIGV4aXQgY29kZSBzaG91bGQgYmUgbGF6aWx5IGdlbmVyYXRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jl
c3MuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2OjpqdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Omp1bXApOgorICAgICAg
ICAqIGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmptcF9tKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVE
RkdEYXRhSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZERGR09T
UkVudHJ5RGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZERkdPU1JFbnRy
aWVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZmdPU1JFbnRyeURhdGEpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmRmZ09TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bWJlck9mT1NSRXhpdHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9m
U3BlY3VsYXRpb25SZWNvdmVyaWVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvc3JFeGl0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzcGVjdWxhdGlvblJlY292ZXJ5KToKKyAgICAg
ICAgKiBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1i
bHlIZWxwZXJzOjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQ
b2ludC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50
Ojpjb2RlTG9jYXRpb25Gb3JSZXBhdGNoKToKKyAgICAgICAgKiBkZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9p
bnQ6OkNvcnJlY3RhYmxlSnVtcFBvaW50KToKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJs
ZUp1bXBQb2ludDo6c3dpdGNoVG9MYXRlSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29ycmVj
dGFibGVKdW1wUG9pbnQ6OmNvcnJlY3RJbml0aWFsSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmNvcnJlY3RMYXRlSnVtcCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmluaXRpYWxKdW1wKToKKyAgICAgICAgKEpTQzo6REZH
OjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6bGF0ZUp1bXApOgorICAgICAgICAoSlNDOjpERkc6OkNv
cnJlY3RhYmxlSnVtcFBvaW50Ojpjb3JyZWN0SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29y
cmVjdGFibGVKdW1wUG9pbnQ6OmdldEp1bXApOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6Y29tcGlsZUJvZHkpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
OjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6Ok9TUkV4
aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmR1bXApOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Lmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA6IEFkZGVk
LgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaDoKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2spOgorICAgICAgICAq
IGRmZy9ERkdUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmg6IEFkZGVk
LgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmRhdGFB
ZGRyZXNzQXRPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisKIDIw
MTEtMTEtMDkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEZS12aXJ0dWFsaXplIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5OTY2MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMiBAQAogCQkwRkMwOTc3MTE0NjkzQUY1MDBD
RjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc2RjE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5Nzcw
MTQ2OTNBRUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgKi87IH07CiAJCTBG
QzA5Nzc2MTQ2OTQzQjAwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3NTE0Njk0
M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwICovOyB9OworCQkwRkMw
OTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc4RTE0NkE2RjYzMDBDRjI0NDIgLyog
REZHT1NSRXhpdC5jcHAgKi87IH07CisJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5j
cHAgKi87IH07CisJCTBGQzA5NzlDMTQ2QTc3MjUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDMDk3OUUx
NDZCMjcyMTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlEMTQ2QjI3MUUwMENG
MjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgKi87IH07CisJCTBGQzA5N0ExMTQ2
QjI4Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5r
cy5jcHAgKi87IH07CisJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5N0EwMTQ2
QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVC
YXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUw
QjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0MDQzQkNBMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTBGQzgxNTE1MTQwNTExOUIw
MENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0
cnVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTg0NSw2ICs4NTEsMTIgQEAKIAkJMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlcjY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R09TUkV4aXRDb21waWxlcjY0LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA7IHBhdGggPSBkZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0NvbW1vbi5oOyBwYXRoID0gZGZnL0RGR0NvbW1vbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTc4RTE0NkE2RjYzMDBDRjI0NDIgLyogREZH
T1NSRXhpdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JF
eGl0LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGls
ZXIuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQzA5NzlBMTQ2QTc3MjAwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb3JyZWN0
YWJsZUp1bXBQb2ludC5oOyBwYXRoID0gZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzA5NzlEMTQ2QjI3MUUwMENGMjQ0MiAvKiBE
RkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHA7IHBhdGggPSBkZmcvREZHQ29ycmVj
dGFibGVKdW1wUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTc5
RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1RodW5rcy5jcHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3Mu
aDsgcGF0aCA9IGRmZy9ERkdUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAv
KiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdyaXRlQmFycmllclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZD
ODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZUYWJsZVNwZWN0cnVtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMDUsNiArMjMxNywxMiBAQAogCQk4NkVDOURCMzEzMjhERjQ0
MDAyQjJBRDcgLyogZGZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLywKKwkJ
CQkwRkMwOTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8sCisJCQkJMEZDMDk3
OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLywKKwkJ
CQkwRkMwOTc5QTE0NkE3NzIwMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCAq
LywKKwkJCQkwRkMwOTc4RTE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgKi8sCisJ
CQkJMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgKi8s
CiAJCQkJMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcCAqLywKIAkJCQkwRkMwOTc2RjE0NjkzQUVGMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBp
bGVyLmggKi8sCiAJCQkJMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlcjY0LmNwcCAqLywKQEAgLTI5MjMsNiArMjk0MSw4IEBACiAJCQkJMEZDMDk3NkExNDY4QTZG
NzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZEMTQ2
OEFCNEUwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGQzA5NzlDMTQ2QTc3MjUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1
bXBQb2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNDU2LDYgKzM0NzYsMTAgQEAKIAkJCQkw
RkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGls
ZXI2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyog
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDMDk3OTEx
NDZBNkY3MTAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZD
MDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkMwOTc5RTE0NkIyNzIxMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1w
UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDMDk3QTExNDZCMjhDQTAwQ0YyNDQyIC8q
IERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiA5OTY2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBMaW5rQnVmZmVyOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKK25hbWVz
cGFjZSBERkcgeworY2xhc3MgQ29ycmVjdGFibGVKdW1wUG9pbnQ7Cit9CiAKIHRlbXBsYXRlIDxj
bGFzcyBBc3NlbWJsZXJUeXBlPgogY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciB7CkBAIC0y
NTcsNiArMjYwLDcgQEAgcHVibGljOgogICAgIGNsYXNzIExhYmVsIHsKICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgogICAgICAgICBmcmllbmQgY2xhc3MgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIERGRzo6Q29ycmVjdGFi
bGVKdW1wUG9pbnQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKdW1wOwogICAgICAgICBmcmllbmQg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1
ZmZlcjsKQEAgLTQwNSw2ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHRlbXBsYXRlPGNsYXNz
IFRlbXBsYXRlQXNzZW1ibGVyVHlwZT4KICAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWxsOworICAgICAgICBmcmllbmQg
Y2xhc3MgREZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDsKICAgICAgICAgZnJpZW5kIGNsYXNzIExp
bmtCdWZmZXI7CiAgICAgcHVibGljOgogICAgICAgICBKdW1wKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlz
aW9uIDk5NjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmUzMjsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmNhbGw7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Omp1bXA7CiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFkZERvdWJsZTsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6c3RvcmVEb3VibGU7CkBAIC0xNTIsNiArMTUzLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuY2FsbCgpLCBDYWxsOjpMaW5rYWJsZSk7
CiAgICAgfQogCisgICAgLy8gQWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5n
IHRoZSBhZGRyZXNzIHRvIGp1bXAgdG8KKyAgICB2b2lkIGp1bXAodm9pZCogYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmptcF9tKGFkZHJlc3MpOworICAgIH0KKwogICAgIENh
bGwgdGFpbFJlY3Vyc2l2ZUNhbGwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIENhbGw6OmZyb21U
YWlsSnVtcChqdW1wKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gOTk2NjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OnN0b3JlMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGw7Cisg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Omp1bXA7CiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmFkZERvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bG9hZERvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
Y29udmVydEludDMyVG9Eb3VibGU7CkBAIC0xMTksNiArMTIwLDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxv
Y2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bworICAgIHZvaWQganVtcCh2
b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mp
LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBqdW1wKEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVy
KSk7CisgICAgfQorCiAgICAgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCiAgICAgewogICAgICAg
ICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIoMCksIHNj
cmF0Y2hSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Jl
cGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWFrZVdyaXRh
YmxlKG1fc3RhcnQsIG1fc2l6ZSk7CiAgICAgfQotCisgICAgCiAgICAgflJlcGF0Y2hCdWZmZXIo
KQogICAgIHsKICAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWFrZUV4ZWN1dGFibGUobV9z
dGFydCwgbV9zaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgwLDYgKzEy
ODAsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQNV9FdiwgR1JPVVA1X09QX0pNUE4sIGJhc2UsIG9mZnNldCk7CiAgICAgfQorICAgIAor
I2lmICFDUFUoWDg2XzY0KQorICAgIHZvaWQgam1wX20odm9pZCogYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDVfRXYsIEdST1VQNV9PUF9KTVBO
LCBhZGRyZXNzKTsKKyAgICB9CisjZW5kaWYKIAogICAgIEFzc2VtYmxlckxhYmVsIGpuZSgpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiQ29tcGFjdEpJVENvZGVNYXAuaCIKICNpbmNsdWRlICJERkdPU1JF
bnRyeS5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hl
LmgiCiAjaW5jbHVkZSAiSGV1cmlzdGljcy5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCkBA
IC0zNjEsMTkgKzM2Miw2OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBt
X2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHZvaWQgY3Jl
YXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCEhbV9k
ZmdEYXRhKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgbV9kZmdEYXRhID0gYWRvcHRQdHIobmV3IERGR0RhdGEpOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBERkc6Ok9TUkVudHJ5RGF0YSogYXBwZW5kREZHT1NSRW50cnlEYXRhKHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0KQogICAgICAgICB7
CisgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIERG
Rzo6T1NSRW50cnlEYXRhIGVudHJ5OwogICAgICAgICAgICAgZW50cnkubV9ieXRlY29kZUluZGV4
ID0gYnl0ZWNvZGVJbmRleDsKICAgICAgICAgICAgIGVudHJ5Lm1fbWFjaGluZUNvZGVPZmZzZXQg
PSBtYWNoaW5lQ29kZU9mZnNldDsKLSAgICAgICAgICAgIG1fZGZnT1NSRW50cnkuYXBwZW5kKGVu
dHJ5KTsKLSAgICAgICAgICAgIHJldHVybiAmbV9kZmdPU1JFbnRyeS5sYXN0KCk7CisgICAgICAg
ICAgICBtX2RmZ0RhdGEtPm9zckVudHJ5LmFwcGVuZChlbnRyeSk7CisgICAgICAgICAgICByZXR1
cm4gJm1fZGZnRGF0YS0+b3NyRW50cnkubGFzdCgpOwogICAgICAgICB9Ci0gICAgICAgIHVuc2ln
bmVkIG51bWJlck9mREZHT1NSRW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZGZnT1NSRW50cnku
c2l6ZSgpOyB9Ci0gICAgICAgIERGRzo6T1NSRW50cnlEYXRhKiBkZmdPU1JFbnRyeURhdGEodW5z
aWduZWQgaSkgeyByZXR1cm4gJm1fZGZnT1NSRW50cnlbaV07IH0KKyAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZERkdPU1JFbnRyaWVzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbV9kZmdEYXRhLT5vc3JFbnRyeS5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgREZHOjpP
U1JFbnRyeURhdGEqIGRmZ09TUkVudHJ5RGF0YSh1bnNpZ25lZCBpKSB7IHJldHVybiAmbV9kZmdE
YXRhLT5vc3JFbnRyeVtpXTsgfQogICAgICAgICBERkc6Ok9TUkVudHJ5RGF0YSogZGZnT1NSRW50
cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPERGRzo6T1NSRW50cnlEYXRhLCB1bnNp
Z25lZCwgREZHOjpnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4PihtX2RmZ09TUkVudHJ5LmJl
Z2luKCksIG1fZGZnT1NSRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAg
IHJldHVybiBiaW5hcnlTZWFyY2g8REZHOjpPU1JFbnRyeURhdGEsIHVuc2lnbmVkLCBERkc6Omdl
dE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXg+KG1fZGZnRGF0YS0+b3NyRW50cnkuYmVnaW4oKSwg
bV9kZmdEYXRhLT5vc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGFwcGVuZE9TUkV4aXQoY29uc3QgREZHOjpPU1JFeGl0JiBv
c3JFeGl0KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3Nhcnko
KTsKKyAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRXhpdC5hcHBlbmQob3NyRXhpdCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgYXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShj
b25zdCBERkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnkmIHJlY292ZXJ5KQorICAgICAgICB7CisgICAg
ICAgICAgICBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIG1fZGZnRGF0
YS0+c3BlY3VsYXRpb25SZWNvdmVyeS5hcHBlbmQocmVjb3ZlcnkpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZk9TUkV4aXRzKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5vc3JFeGl0LnNpemUoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZTcGVjdWxhdGlvblJlY292ZXJpZXMoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVjb3Zl
cnkuc2l6ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBERkc6Ok9TUkV4aXQmIG9z
ckV4aXQodW5zaWduZWQgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Rm
Z0RhdGEtPm9zckV4aXRbaW5kZXhdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBERkc6
OlNwZWN1bGF0aW9uUmVjb3ZlcnkmIHNwZWN1bGF0aW9uUmVjb3ZlcnkodW5zaWduZWQgaW5kZXgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPnNwZWN1bGF0aW9uUmVj
b3ZlcnlbaW5kZXhdOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtOTk2LDcgKzEwNDcsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgT3du
UHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIFZlY3RvcjxERkc6
Ok9TUkVudHJ5RGF0YT4gbV9kZmdPU1JFbnRyeTsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCBE
RkdEYXRhIHsKKyAgICAgICAgICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YSwgND4gb3NyRW50
cnk7CisgICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCAxNj4gb3NyRXhp
dDsKKyAgICAgICAgICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnksIDQ+IHNwZWN1
bGF0aW9uUmVjb3Zlcnk7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBPd25QdHI8REZH
RGF0YT4gbV9kZmdEYXRhOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxlLCA4PiBtX3ZhbHVlUHJvZmlsZXM7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJ
KHJldmlzaW9uIDk5NjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTIgQEAgcHVibGljOgog
ICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwuIFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9uIEpJVCBj
b2RlIGV4ZWN1dGlvbiBzdGF0ZS4KICAgICB2b2lkIGRlYnVnQ2FsbChWX0RGR0RlYnVnT3BlcmF0
aW9uX0VQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKICAgICB7CisgICAgICAgIEVuY29kZWRK
U1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KG1fZ2xvYmFsRGF0
YS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKSkpOworICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzOyArK2kpCi0gICAgICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjp0b1JlZ2lzdGVy
KGkpLCBtX2dsb2JhbERhdGEtPmRlYnVnRGF0YUJ1ZmZlciArIGkpOworICAgICAgICAgICAgc3Rv
cmVQdHIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0g
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5kZWJ1Z0RhdGFCdWZm
ZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgc3RvcmVEb3VibGUo
RlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICB9CiAjaWYg
Q1BVKFg4Nl82NCkKQEAgLTE1MiwxMSArMTU0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIEdQUkluZm86
OnJlZ1QwKTsKICAgICAgICAgY2FsbChHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5kZWJ1Z0RhdGFCdWZmZXIg
KyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgbG9hZERvdWJsZShHUFJJ
bmZvOjpyZWdUMCwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CiAgICAgICAgIH0KICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kp
Ci0gICAgICAgICAgICBsb2FkUHRyKG1fZ2xvYmFsRGF0YS0+ZGVidWdEYXRhQnVmZmVyICsgaSwg
R1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CisgICAgICAgICAgICBsb2FkUHRyKGJ1ZmZlciArIGks
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwogICAgIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oIgorCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworQ29kZUxvY2F0aW9u
SnVtcCBDb3JyZWN0YWJsZUp1bXBQb2ludDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxv
Y2sqIGNvZGVCbG9jaykgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IENvcnJlY3RlZEp1
bXApOworICAgIHJldHVybiBDb2RlTG9jYXRpb25KdW1wKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgp
LmRhdGFBZGRyZXNzQXRPZmZzZXQobV9jb2RlT2Zmc2V0KSk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgREZHQ29ycmVjdGFibGVKdW1wUG9pbnRfaAorI2RlZmluZSBERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludF9oCisKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBD
b3JyZWN0YWJsZUp1bXBQb2ludCB7CitwdWJsaWM6CisgICAgQ29ycmVjdGFibGVKdW1wUG9pbnQo
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2spCisgICAgICAgIDogbV9jb2RlT2Zmc2V0KGNoZWNr
Lm1fbGFiZWwubV9vZmZzZXQpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fbW9kZShJbml0
aWFsSnVtcCkKKyNlbmRpZgorICAgIHsKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgQVNT
RVJUKGNoZWNrLm1fdHlwZSA9PSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uRml4ZWRT
aXplKTsKKyAgICAgICAgQVNTRVJUKGNoZWNrLm1fY29uZGl0aW9uID09IEFSTXY3QXNzZW1ibGVy
OjpKdW1wTm9Db25kaXRpb24pOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQgc3dpdGNo
VG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaykKKyAgICB7CisjaWZuZGVmIE5E
RUJVRworICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRpYWxKdW1wKTsKKyAgICAgICAgbV9t
b2RlID0gTGF0ZUp1bXA7CisjZW5kaWYKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgQVNT
RVJUKGNoZWNrLm1fdHlwZSA9PSBBUk12N0Fzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uRml4ZWRT
aXplKTsKKyAgICAgICAgQVNTRVJUKGNoZWNrLm1fY29uZGl0aW9uID09IEFSTXY3QXNzZW1ibGVy
OjpKdW1wTm9Db25kaXRpb24pOworI2VuZGlmCisgICAgICAgIG1fY29kZU9mZnNldCA9IGNoZWNr
Lm1fbGFiZWwubV9vZmZzZXQ7CisgICAgfQorICAgIAorICAgIHZvaWQgY29ycmVjdEluaXRpYWxK
dW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV9tb2Rl
ID09IEluaXRpYWxKdW1wKTsKKyAgICAgICAgY29ycmVjdEp1bXAobGlua0J1ZmZlcik7CisgICAg
fQorICAgIAorICAgIHZvaWQgY29ycmVjdExhdGVKdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
CisgICAgeworICAgICAgICBBU1NFUlQobV9tb2RlID09IExhdGVKdW1wKTsKKyAgICAgICAgY29y
cmVjdEp1bXAobGlua0J1ZmZlcik7CisgICAgfQorICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGluaXRpYWxKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21vZGUgPT0g
SW5pdGlhbEp1bXApOworICAgICAgICByZXR1cm4gZ2V0SnVtcCgpOworICAgIH0KKyAgICAKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBsYXRlSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9tb2RlID09IExhdGVKdW1wKTsKKyAgICAgICAgcmV0dXJuIGdldEp1bXAoKTsKKyAg
ICB9CisgICAgCisgICAgQ29kZUxvY2F0aW9uSnVtcCBjb2RlTG9jYXRpb25Gb3JSZXBhdGNoKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBjb3Jy
ZWN0SnVtcChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIG1fbW9kZSA9IENvcnJlY3RlZEp1bXA7CisjZW5kaWYKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIGxhYmVsOworICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9j
b2RlT2Zmc2V0OworICAgICAgICBtX2NvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxh
YmVsKTsKKyAgICB9CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZ2V0SnVtcCgpIGNv
bnN0CisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wOworICAgICAgICBq
dW1wLm1fbGFiZWwubV9vZmZzZXQgPSBtX2NvZGVPZmZzZXQ7CisjaWYgQ1BVKEFSTV9USFVNQjIp
CisgICAgICAgIGp1bXAubV90eXBlID0gQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlvbkZp
eGVkU2l6ZTsKKyAgICAgICAganVtcC5tX2NvbmRpdGlvbiA9IEFSTXY3QXNzZW1ibGVyOjpKdW1w
Tm9Db25kaXRpb247CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGp1bXA7CisgICAgfQorICAgIAor
ICAgIHVuc2lnbmVkIG1fY29kZU9mZnNldDsKKworI2lmbmRlZiBOREVCVUcKKyAgICBlbnVtIE1v
ZGUgeworICAgICAgICBJbml0aWFsSnVtcCwKKyAgICAgICAgTGF0ZUp1bXAsCisgICAgICAgIENv
cnJlY3RlZEp1bXAKKyAgICB9OworCisgICAgTW9kZSBtX21vZGU7CisjZW5kaWYKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIERGR0NvcnJlY3RhYmxlSnVtcFBv
aW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5oCShyZXZpc2lvbiA5OTY2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI4LDcgKzExMjgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKICAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KGFyZzUpOwogICAgIH0KLSNlbHNlCisjZWxzZSAvLyBDUFUoWDg2KSAtPiBz
byB0aGlzIGlzIHRoZSBDUFUoWDg2XzY0KSBjYXNlCiAgICAgdGVtcGxhdGU8R1BSUmVnIGRlc3RB
LCBHUFJSZWcgZGVzdEI+CiAgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEdQUlJlZyBzcmNBLCBH
UFJSZWcgc3JjQikKICAgICB7CkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIG1faml0Lm1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICAgICAgbV9q
aXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBDUFUoWDg2KQogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgYnJvYWRseSB2YWx1ZSByZXByZXNlbnRhdGlvbiBzcGVjaWZpYyAoaS5lLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlz
aW9uIDk5NjYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwxOSBAQAogI2luY2x1ZGUgIkRGR09wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKICNpbmNsdWRlICJERkdTcGVj
dWxhdGl2ZUpJVC5oIgorI2luY2x1ZGUgIkRGR1RodW5rcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
RGF0YS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCi12b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoU3BlY3VsYXRpdmVK
SVQmIHNwZWN1bGF0aXZlKQordm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIHsKLSAg
ICBPU1JFeGl0Q29tcGlsZXIgb3NyRXhpdENvbXBpbGVyKCp0aGlzKTsKLSAgICAKLSAgICBPU1JF
eGl0VmVjdG9yOjpJdGVyYXRvciBleGl0c0l0ZXIgPSBzcGVjdWxhdGl2ZS5vc3JFeGl0cygpLmJl
Z2luKCk7Ci0gICAgT1NSRXhpdFZlY3Rvcjo6SXRlcmF0b3IgZXhpdHNFbmQgPSBzcGVjdWxhdGl2
ZS5vc3JFeGl0cygpLmVuZCgpOwotICAgIAotICAgIHdoaWxlIChleGl0c0l0ZXIgIT0gZXhpdHNF
bmQpIHsKLSAgICAgICAgY29uc3QgT1NSRXhpdCYgZXhpdCA9ICpleGl0c0l0ZXI7Ci0gICAgICAg
IG9zckV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCBzcGVjdWxhdGl2ZS5zcGVjdWxhdGlv
blJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4KSk7Ci0gICAgICAgICsrZXhpdHNJdGVyOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0
cygpOyArK2kpIHsKKyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0
KGkpOworICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMpOworICAg
ICAgICBzdG9yZTMyKEltbTMyKGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgpOworICAg
ICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVtcChqdW1wKCkpOwogICAgIH0KIH0KIApA
QCAtODEsNyArNzgsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keShTcGVjdWxhdGl2
CiAgICAgYm9vbCBjb21waWxlZFNwZWN1bGF0aXZlID0gc3BlY3VsYXRpdmUuY29tcGlsZSgpOwog
ICAgIEFTU0VSVF9VTlVTRUQoY29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVjdWxhdGl2
ZSk7CiAKLSAgICBsaW5rT1NSRXhpdHMoc3BlY3VsYXRpdmUpOworICAgIGxpbmtPU1JFeGl0cygp
OwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBtX2NhbGxzIHZlY3RvciwgY2hlY2tpbmcgZm9y
IGp1bXBzIHRvIGxpbmsuCiAgICAgYm9vbCBkaWRMaW5rRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsK
QEAgLTE5Nyw2ICsxOTQsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBs
aW5rQgogICAgICAgICBpbmZvLmNhY2hlZFByb3RvdHlwZS5zZXRMb2NhdGlvbihsaW5rQnVmZmVy
LmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fcHJvdG9PYmopKTsKICAgICAgICAgaW5mby5j
YWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ld
Lm1fc2xvd0NhbGwpOwogICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3Ny
RXhpdFRodW5rID0gZ2xvYmFsRGF0YSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOworICAgIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdldCA9IENvZGVMb2NhdGlv
bkxhYmVsKG9zckV4aXRUaHVuay5jb2RlKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKKyAgICAgICAgT1NSRXhp
dCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOworICAgICAgICBsaW5rQnVmZmVyLmxp
bmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CisgICAgICAgIGV4aXQubV9jaGVj
ay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7CisgICAgfQogfQogCiB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEzICs1
NCw2IEBAIGNsYXNzIFNwZWN1bGF0aW9uUmVjb3Zlcnk7CiBzdHJ1Y3QgRW50cnlMb2NhdGlvbjsK
IHN0cnVjdCBPU1JFeGl0OwogCi0jaWYgREZHX0VOQUJMRShWRVJCT1NFX1NQRUNVTEFUSU9OX0ZB
SUxVUkUpCi1zdHJ1Y3QgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvIHsKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jazsKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldDsKLX07Ci0jZW5kaWYKLQog
Ly8gPT09IENhbGxMaW5rUmVjb3JkID09PQogLy8KIC8vIEEgcmVjb3JkIG9mIGEgY2FsbCBvdXQg
ZnJvbSBKSVQgY29kZSB0aGF0IG5lZWRzIGxpbmtpbmcgdG8gYSBoZWxwZXIgZnVuY3Rpb24uCkBA
IC0zMDMsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxpbmsoTGlua0J1ZmZlciYpOwog
CiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBTcGVjdWxh
dGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBsaW5rT1NSRXhpdHMoU3BlY3VsYXRpdmVKSVQmKTsK
KyAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIFRoZSBkYXRhZmxvdyBncmFw
aCBjdXJyZW50bHkgYmVpbmcgZ2VuZXJhdGVkLgogICAgIEdyYXBoJiBtX2dyYXBoOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgorCisjaWYg
RU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK09TUkV4aXQ6Ok9TUkV4aXQoSlNWYWx1ZVNv
dXJjZSBqc1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHJlY292ZXJ5
SW5kZXgpCisgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKKyAgICAsIG1fdmFs
dWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKKyAgICAsIG1fY2hlY2soY2hlY2spCisgICAgLCBtX25v
ZGVJbmRleChqaXQtPm1fY29tcGlsZUluZGV4KQorICAgICwgbV9jb2RlT3JpZ2luKGppdC0+bV9j
b2RlT3JpZ2luRm9yT1NSKQorICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisg
ICAgLCBtX2FyZ3VtZW50cyhqaXQtPm1fYXJndW1lbnRzLnNpemUoKSkKKyAgICAsIG1fdmFyaWFi
bGVzKGppdC0+bV92YXJpYWJsZXMuc2l6ZSgpKQorICAgICwgbV9sYXN0U2V0T3BlcmFuZChqaXQt
Pm1fbGFzdFNldE9wZXJhbmQpCit7CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbi5pc1NldCgpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX2FyZ3VtZW50cy5z
aXplKCk7ICsrYXJndW1lbnQpCisgICAgICAgIG1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IGppdC0+
Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3Ioaml0LT5tX2FyZ3VtZW50c1thcmd1bWVudF0pOworICAg
IGZvciAodW5zaWduZWQgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVzLnNpemUo
KTsgKyt2YXJpYWJsZSkKKyAgICAgICAgbV92YXJpYWJsZXNbdmFyaWFibGVdID0gaml0LT5jb21w
dXRlVmFsdWVSZWNvdmVyeUZvcihqaXQtPm1fdmFyaWFibGVzW3ZhcmlhYmxlXSk7Cit9CisKKyNp
Zm5kZWYgTkRFQlVHCit2b2lkIE9TUkV4aXQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAoreworICAg
IGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fYXJndW1lbnRzLnNpemUo
KTsgKythcmd1bWVudCkKKyAgICAgICAgbV9hcmd1bWVudHNbYXJndW1lbnRdLmR1bXAob3V0KTsK
KyAgICBmcHJpbnRmKG91dCwgIiA6ICIpOworICAgIGZvciAodW5zaWduZWQgdmFyaWFibGUgPSAw
OyB2YXJpYWJsZSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKyt2YXJpYWJsZSkKKyAgICAgICAgbV92
YXJpYWJsZXNbdmFyaWFibGVdLmR1bXAob3V0KTsKK30KKyNlbmRpZgorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiA5OTY2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCAr
MzAsMTMgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5o
IgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxlSnVtcFBv
aW50LmgiCiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
LmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewpAQCAtNzksMTAgKzgyLDEyIEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCB7CiAgICAg
T1NSRXhpdChKU1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CiAgICAgCisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICAKICAgICBKU1ZhbHVlU291cmNl
IG1fanNWYWx1ZVNvdXJjZTsKICAgICBWYWx1ZVByb2ZpbGUqIG1fdmFsdWVQcm9maWxlOwogICAg
IAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fY2hlY2s7CisgICAgQ29ycmVjdGFibGVKdW1w
UG9pbnQgbV9jaGVjazsKICAgICBOb2RlSW5kZXggbV9ub2RlSW5kZXg7CiAgICAgQ29kZU9yaWdp
biBtX2NvZGVPcmlnaW47CiAgICAgCkBAIC0xMjYsNyArMTMxLDEzIEBAIHN0cnVjdCBPU1JFeGl0
IHsKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeSwgMD4gbV92YXJpYWJsZXM7CiAgICAgaW50IG1f
bGFzdFNldE9wZXJhbmQ7CiB9OwotdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8T1NSRXhpdCwgMTY+
IE9TUkV4aXRWZWN0b3I7CisKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJ
TFVSRSkKK3N0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8geworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrOworICAgIE5vZGVJbmRleCBub2RlSW5kZXg7Cit9OworI2VuZGlmCiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDk5NjYz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShERkdfSklU
KSAmJiBVU0UoSlNWQUxVRTMyXzY0KQogCisjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgorCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNv
dmVyeSkKQEAgLTQ5LDcgKzUxLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFKQogICAg
IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0aW9u
RmFpbHVyZURlYnVnSW5mbzsKICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IG1faml0LmNvZGVC
bG9jaygpOwotICAgIGRlYnVnSW5mby0+ZGVidWdPZmZzZXQgPSBtX2ppdC5kZWJ1Z09mZnNldCgp
OworICAgIGRlYnVnSW5mby0+bm9kZUluZGV4ID0gZXhpdC5tX25vZGVJbmRleDsKICAgICAKICAg
ICBtX2ppdC5kZWJ1Z0NhbGwoZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSwg
ZGVidWdJbmZvKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDk5NjYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpICYmIFVTRShKU1ZB
TFVFNjQpCiAKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIC8v
IDEpIFByby1mb3JtYSBzdHVmZi4KLSAgICBleGl0Lm1fY2hlY2subGluaygmbV9qaXQpOwotCiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGZwcmludGYoc3RkZXJyLCAiT1NSIGV4
aXQgZm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOwogICAgIGZvciAoQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IDsgY29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKQEAgLTQzLDEzICs0MywxMyBAQCB2
b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgLT4gJXAgIiwgY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAgIH0KLSAgICBmcHJpbnRmKHN0ZGVyciwg
IikgYXQgSklUIG9mZnNldCAweCV4ICAiLCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIikgICIpOwogICAgIGV4aXQuZHVtcChzdGRlcnIpOwogI2VuZGlmCiAjaWYg
REZHX0VOQUJMRShWRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCiAgICAgU3BlY3VsYXRpb25G
YWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJ
bmZvOwogICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gbV9qaXQuY29kZUJsb2NrKCk7Ci0gICAg
ZGVidWdJbmZvLT5kZWJ1Z09mZnNldCA9IG1faml0LmRlYnVnT2Zmc2V0KCk7CisgICAgZGVidWdJ
bmZvLT5ub2RlSW5kZXggPSBleGl0Lm1fbm9kZUluZGV4OwogICAgIAogICAgIG1faml0LmRlYnVn
Q2FsbChkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0luZm8pOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXIuaCIKKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgor
I2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgeworCitleHRlcm4gIkMiIHsKKwordm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAor
ICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKKyAgICBP
U1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CisgICAgCisgICAg
U3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOworICAgIGlmIChleGl0Lm1fcmVjb3Zl
cnlJbmRleCkKKyAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292
ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CisKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCisgICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSBmb3Ig
Y29kZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgY29kZUJsb2NrKTsKKyNlbmRpZgorCisgICAg
eworICAgICAgICBBc3NlbWJseUhlbHBlcnMgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7Cisg
ICAgICAgIE9TUkV4aXRDb21waWxlciBleGl0Q29tcGlsZXIoaml0KTsKKyAgICAgICAgCisgICAg
ICAgIGV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCByZWNvdmVyeSk7CisgICAgICAgIAor
ICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICAg
ICAgZXhpdC5tX2NvZGUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICB9CisgICAg
CisgICAgeworICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsK
KyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoZXhpdC5tX2NoZWNrLmNvZGVMb2NhdGlvbkZv
clJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICB9CisgICAgCisgICAgZ2xvYmFsRGF0YS0+b3Ny
RXhpdEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOworfQorCit9IC8vIGV4dGVybiAiQyIKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwor
CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHJldmlzaW9uIDk5NjYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNs
dWRlICJERkdPU1JFeGl0LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CisKK25hbWVzcGFjZSBERkcgewogCiBj
bGFzcyBPU1JFeGl0Q29tcGlsZXIgewogcHVibGljOgpAQCAtNDgsNiArNTIsMTAgQEAgcHJpdmF0
ZToKICAgICBBc3NlbWJseUhlbHBlcnMmIG1faml0OwogfTsKIAorZXh0ZXJuICJDIiB7Cit2b2lk
IGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSopOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgogI2lu
Y2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03ODMsNyAr
Nzg0LDcgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIFNw
ZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3Vs
YXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRp
dmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgcHJpbnRmKCJTcGVjdWxhdGlvbiBm
YWlsdXJlIGluICVwIGF0IDB4JXggd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgc3Vj
Y2Vzcy9mYWlsICV1LyV1XG4iLCBjb2RlQmxvY2ssIGRlYnVnSW5mby0+ZGVidWdPZmZzZXQsIGFs
dGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPmV4ZWN1dGVDb3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2
ZSA/IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIDogMCwgYWx0ZXJu
YXRpdmUgPyBhbHRlcm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkgOiAwLCBjb2Rl
QmxvY2stPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5zcGVjdWxhdGl2
ZUZhaWxDb3VudGVyKCkpOworICAgIHByaW50ZigiU3BlY3VsYXRpb24gZmFpbHVyZSBpbiAlcCBh
dCBAJXUgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRl
ciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgc3VjY2Vzcy9mYWlsICV1LyV1
XG4iLCBjb2RlQmxvY2ssIGRlYnVnSW5mby0+bm9kZUluZGV4LCBhbHRlcm5hdGl2ZSA/IGFsdGVy
bmF0aXZlLT5leGVjdXRlQ291bnRlcigpIDogMCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSA6IDAsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRp
dmUtPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpIDogMCwgY29kZUJsb2NrLT5zcGVjdWxhdGl2
ZVN1Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsK
IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMzUgKzYy
LDYgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiB9CiAjZW5kaWYK
IAotT1NSRXhpdDo6T1NSRXhpdChKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIFZhbHVlUHJv
ZmlsZSogdmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaywgU3BlY3VsYXRp
dmVKSVQqIGppdCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKLSAgICA6IG1fanNWYWx1ZVNvdXJj
ZShqc1ZhbHVlU291cmNlKQotICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQotICAg
ICwgbV9jaGVjayhjaGVjaykKLSAgICAsIG1fbm9kZUluZGV4KGppdC0+bV9jb21waWxlSW5kZXgp
Ci0gICAgLCBtX2NvZGVPcmlnaW4oaml0LT5tX2NvZGVPcmlnaW5Gb3JPU1IpCi0gICAgLCBtX3Jl
Y292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKLSAgICAsIG1fYXJndW1lbnRzKGppdC0+bV9hcmd1
bWVudHMuc2l6ZSgpKQotICAgICwgbV92YXJpYWJsZXMoaml0LT5tX3ZhcmlhYmxlcy5zaXplKCkp
Ci0gICAgLCBtX2xhc3RTZXRPcGVyYW5kKGppdC0+bV9sYXN0U2V0T3BlcmFuZCkKLXsKLSAgICBB
U1NFUlQobV9jb2RlT3JpZ2luLmlzU2V0KCkpOwotICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSAwOyBhcmd1bWVudCA8IG1fYXJndW1lbnRzLnNpemUoKTsgKythcmd1bWVudCkKLSAgICAgICAg
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gaml0LT5jb21wdXRlVmFsdWVSZWNvdmVyeUZvcihqaXQt
Pm1fYXJndW1lbnRzW2FyZ3VtZW50XSk7Ci0gICAgZm9yICh1bnNpZ25lZCB2YXJpYWJsZSA9IDA7
IHZhcmlhYmxlIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK3ZhcmlhYmxlKQotICAgICAgICBtX3Zh
cmlhYmxlc1t2YXJpYWJsZV0gPSBqaXQtPmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGppdC0+bV92
YXJpYWJsZXNbdmFyaWFibGVdKTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLXZvaWQgT1NSRXhpdDo6
ZHVtcChGSUxFKiBvdXQpIGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2FyZ3VtZW50KQotICAgICAgICBtX2Fy
Z3VtZW50c1thcmd1bWVudF0uZHVtcChvdXQpOwotICAgIGZwcmludGYob3V0LCAiIDogIik7Ci0g
ICAgZm9yICh1bnNpZ25lZCB2YXJpYWJsZSA9IDA7IHZhcmlhYmxlIDwgbV92YXJpYWJsZXMuc2l6
ZSgpOyArK3ZhcmlhYmxlKQotICAgICAgICBtX3ZhcmlhYmxlc1t2YXJpYWJsZV0uZHVtcChvdXQp
OwotfQotI2VuZGlmCi0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZURvdWJs
ZUJyYW5jaChOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxl
cjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKICAgICBOb2RlJiBicmFuY2hOb2RlID0g
YXQoYnJhbmNoTm9kZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDk5NjYzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTkg
KzEzMyw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGUoKTsKICAgICB2b2lkIGxpbmtPU1JF
bnRyaWVzKExpbmtCdWZmZXImKTsKIAotICAgIC8vIFJldHJpZXZlIHRoZSBsaXN0IG9mIGJhaWwt
b3V0cyBmcm9tIHRoZSBzcGVjdWxhdGl2ZSBwYXRoLAotICAgIC8vIGFuZCBhZGRpdGlvbmFsIHJl
Y292ZXJ5IGluZm9ybWF0aW9uLgotICAgIE9TUkV4aXRWZWN0b3ImIG9zckV4aXRzKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX29zckV4aXRzOwotICAgIH0KLSAgICBTcGVjdWxhdGlvblJlY292
ZXJ5KiBzcGVjdWxhdGlvblJlY292ZXJ5KHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIC8v
IE9TUkV4aXQ6Om1fcmVjb3ZlcnlJbmRleCBpcyBvZmZzZXQgYnkgMSwKLSAgICAgICAgLy8gMCBt
ZWFucyBubyByZWNvdmVyeS4KLSAgICAgICAgcmV0dXJuIGluZGV4ID8gJm1fc3BlY3VsYXRpb25S
ZWNvdmVyeUxpc3RbaW5kZXggLSAxXSA6IDA7Ci0gICAgfQotCiAgICAgLy8gQ2FsbGVkIGJ5IHRo
ZSBzcGVjdWxhdGl2ZSBvcGVyYW5kIHR5cGVzLCBiZWxvdywgdG8gZmlsbCBvcGVyYW5kIHRvCiAg
ICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxhdGlv
biBjaGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50KE5vZGVJbmRl
eCwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKQEAgLTIzOSwxNSArMjI2LDE1IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG1fb3NyRXhpdHMuYXBwZW5kKE9TUkV4aXQoanNWYWx1ZVNvdXJjZSwgbV9q
aXQudmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMpKTsKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChqc1ZhbHVlU291cmNl
LCBtX2ppdC52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOwog
ICAgIH0KICAgICAvLyBBZGQgYSBzcGVjdWxhdGlvbiBjaGVjayB3aXRoIGFkZGl0aW9uYWwgcmVj
b3ZlcnkuCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2UganNWYWx1ZVNv
dXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFp
bCwgY29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgewogICAgICAgICBp
ZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3BlY3Vs
YXRpb25SZWNvdmVyeUxpc3QuYXBwZW5kKHJlY292ZXJ5KTsKLSAgICAgICAgbV9vc3JFeGl0cy5h
cHBlbmQoT1NSRXhpdChqc1ZhbHVlU291cmNlLCBtX2ppdC52YWx1ZVByb2ZpbGVGb3Iobm9kZUlu
ZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9zcGVjdWxhdGlvblJlY292ZXJ5TGlzdC5zaXplKCkp
KTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVjb3Zlcnko
cmVjb3ZlcnkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JF
eGl0KGpzVmFsdWVTb3VyY2UsIG1faml0LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBqdW1w
VG9GYWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlvblJlY292
ZXJpZXMoKSkpOwogICAgIH0KIAogICAgIC8vIENhbGxlZCB3aGVuIHdlIHN0YXRpY2FsbHkgZGV0
ZXJtaW5lIHRoYXQgYSBzcGVjdWxhdGlvbiB3aWxsIGZhaWwuCkBAIC0yNzAsMTIgKzI1Nyw2IEBA
IHByaXZhdGU6CiAgICAgLy8gd2lsbCBtYWtlIGNvbmZsaWN0aW5nIHNwZWN1bGF0aW9ucyBhYm91
dCB0aGUgc2FtZSBvcGVyYW5kKS4gSW4gc3VjaCBjYXNlcyB0aGlzCiAgICAgLy8gZmxhZyBpcyBj
bGVhcmVkLCBpbmRpY2F0aW5nIG5vIGZ1cnRoZXIgY29kZSBnZW5lcmF0aW9uIHNob3VsZCB0YWtl
IHBsYWNlLgogICAgIGJvb2wgbV9jb21waWxlT2theTsKLSAgICAvLyBUaGlzIHZlY3RvciB0cmFj
a3MgYmFpbC1vdXRzIGZyb20gdGhlIHNwZWN1bGF0aXZlIHBhdGggdG8gdGhlIG9sZCBKSVQuCi0g
ICAgT1NSRXhpdFZlY3RvciBtX29zckV4aXRzOwotICAgIC8vIFNvbWUgYmFpbC1vdXRzIG5lZWQg
dG8gcmVjb3JkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVjb3JkaW5nIHNwZWNpZmljIHJlY292
ZXJ5Ci0gICAgLy8gdG8gYmUgcGVyZm9ybWVkIChmb3IgZXhhbXBsZSwgb24gZGV0ZWN0ZWQgb3Zl
cmZsb3cgZnJvbSBhbiBhZGQsIHdlIG1heSBuZWVkIHRvCi0gICAgLy8gcmV2ZXJzZSB0aGUgYWRk
aXRpb24gaWYgYW4gb3BlcmFuZCBpcyBiZWluZyBvdmVyd3JpdHRlbikuCi0gICAgVmVjdG9yPFNw
ZWN1bGF0aW9uUmVjb3ZlcnksIDE2PiBtX3NwZWN1bGF0aW9uUmVjb3ZlcnlMaXN0OwogICAgIAog
ICAgIC8vIFRyYWNraW5nIGZvciB3aGljaCBub2RlcyBhcmUgY3VycmVudGx5IGhvbGRpbmcgdGhl
IHZhbHVlcyBvZiBhcmd1bWVudHMgYW5kIGJ5dGVjb2RlCiAgICAgLy8gb3BlcmFuZC1pbmRleGVk
IHZhcmlhYmxlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR1Ro
dW5rcy5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdGUFJJbmZvLmgi
CisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlci5o
IgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIE1hY3JvQXNzZW1ibGVy
IGppdDsKKyAgICAKKyAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihnbG9iYWxEYXRhLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5j
b2RlZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnMpKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGppdC5zdG9yZVB0cihHUFJJ
bmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5zdG9yZURvdWJs
ZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgfQorICAgIAor
ICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCisjaWYgQ1BVKFg4NikKKyAgICBqaXQucG9rZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CisjZWxzZQorICAgIGppdC5tb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2VuZGlmCisg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoKTsK
KyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM7ICsraSkgeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgIGppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGppdC5sb2FkUHRyKGJ1ZmZlciAr
IGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgIAorICAgIGppdC5qdW1wKCZnbG9iYWxE
YXRhLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICAKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1
bmN0aW9uQ2FsbCwgY29tcGlsZU9TUkV4aXQpOworICAgIAorICAgIHJldHVybiBwYXRjaEJ1ZmZl
ci5maW5hbGl6ZUNvZGUoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHVGh1bmtzX2gKKyNkZWZpbmUgREZH
VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19K
SVQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIERGRyB7CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKKworI2VuZGlmIC8vIERGR1RodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuaAkocmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc2l6ZSgpKTsKICAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkgKyBvZmZzZXQ7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQqIGRhdGFB
ZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKG9mZnNldCA8IHNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbigpKSArIG9mZnNldDsKKyAg
ICAgICAgfQogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgb2Zmc2V0IGlu
IGJ5dGVzIG9mICdwb2ludGVySW50b0NvZGUnIGludG8KICAgICAgICAgLy8gdGhpcyBibG9jayBv
ZiBjb2RlLiAgVGhlIHBvaW50ZXIgcHJvdmlkZWQgbXVzdCBiZSBhIHBvaW50ZXIgaW50byB0aGlz
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
cmV2aXNpb24gOTk2NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDEwICsyNDAsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxv
Y2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7Ci0jaWZuZGVmIE5E
RUJVRwotICAgICAgICBpbnQ2NF90IGRlYnVnRGF0YUJ1ZmZlcls2NF07Ci0jZW5kaWYKICNpZiBF
TkFCTEUoREZHX0pJVCkKKyAgICAgICAgdWludDMyX3Qgb3NyRXhpdEluZGV4OworICAgICAgICB2
b2lkKiBvc3JFeGl0SnVtcERlc3RpbmF0aW9uOwogICAgICAgICBWZWN0b3I8dm9pZCo+IHNjcmF0
Y2hCdWZmZXJzOwogICAgICAgICBzaXplX3Qgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXI7CiAgICAg
ICAgIAo=
</data>
<flag name="commit-queue"
          id="112993"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114374</attachid>
            <date>2011-11-09 15:13:10 -0800</date>
            <delta_ts>2011-11-09 15:29:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyosrexit_patch_2.diff</filename>
            <type>text/plain</type>
            <size>58151</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTk3NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAK
KzIwMTEtMTEtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgT1NSIGV4aXQgY29kZSBzaG91bGQgYmUgbGF6aWx5IGdlbmVyYXRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBPU1IgZXhpdCBj
b2RlIGlzIG5vdyBnZW5lcmF0ZWQgdGhlIGZpcnN0IHRpbWUgaXQgaXMgZXhlY3V0ZWQsCisgICAg
ICAgIHJhdGhlciB0aGFuIHJpZ2h0IGFmdGVyIHNwZWN1bGF0aXZlIGNvbXBpbGF0aW9uLiBCZWNh
dXNlIG1vc3QgT1NSCisgICAgICAgIGV4aXRzIGFyZSBuZXZlciB0YWtlbiwgdGhpcyBzaG91bGQg
Z3JlYXRseSByZWR1Y2UgYm90aCBjb2RlIHNpemUKKyAgICAgICAgYW5kIGNvbXBpbGF0aW9uIHRp
bWUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6anVtcCk6CisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2XzY0OjpqdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpqbXBfbSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Y3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjphcHBlbmRERkdPU1JFbnRyeURhdGEpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bWJlck9mREZHT1NSRW50cmllcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZGZnT1NSRW50cnlEYXRhKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZmdPU1JFbnRy
eURhdGFGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRP
U1JFeGl0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292
ZXJ5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZk9TUkV4aXRzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlNwZWN1bGF0aW9uUmVjb3Zlcmllcyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6b3NyRXhpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c3BlY3VsYXRpb25SZWNvdmVyeSk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAg
ICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaCk6Cisg
ICAgICAgICogZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50OjpDb3JyZWN0YWJsZUp1bXBQb2ludCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OnN3aXRjaFRvTGF0ZUp1bXAp
OgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojpjb3JyZWN0SW5pdGlh
bEp1bXApOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojpjb3JyZWN0
TGF0ZUp1bXApOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojppbml0
aWFsSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmxhdGVK
dW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6Y29ycmVjdEp1
bXApOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50OjpnZXRKdW1wKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JF
eGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JF
eGl0OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENv
bXBpbGVyLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoSlNDOjpKSVRDb2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorCiAyMDExLTExLTA5ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0c0VmbC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHNFZmwudHh0CShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzRWZsLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBMSVNUKEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5j
cHAKICAgICBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCiAgICAgZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKKyAgICBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwCiAgICAgZGZnL0RGR0Ry
aXZlci5jcHAKICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0pJVENvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zNCw2ICszNSw4IEBAIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwCiAgICAgZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CiAgICAgZGZnL0RGR09TUkVudHJ5LmNwcAorICAgIGRmZy9ERkdPU1JFeGl0LmNwcAorICAgIGRm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCiAgICAgZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cAogICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKICAgICBkZmcvREZHUHJvcGFn
YXRvci5jcHAKQEAgLTQxLDQgKzQ0LDUgQEAgTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKyAgICBkZmcv
REZHVGh1bmtzLmNwcAogKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsOCBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZQUkluZm8uaCBcCkBAIC0xMzgsOCArMTQwLDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaCBcCkBAIC0xNTEsNiArMTU1LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1
cmVTZXQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2
aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmNwcCBcCiAgICAgZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBcCiAgICAgZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgXAorICAgIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5j
cHAgXAogICAgIGRmZy9ERkdEcml2ZXIuY3BwIFwKICAgICBkZmcvREZHR3JhcGguY3BwIFwKICAg
ICBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAgXApAQCAtOTQsNiArOTUsOCBAQCBTT1VSQ0VT
ICs9IFwKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwIFwKICAgICBkZmcvREZHT3BlcmF0aW9u
cy5jcHAgXAogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0LmNw
cCBcCisgICAgZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAgXAogICAgIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAgXAogICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgXAog
ICAgIGRmZy9ERkdQcm9wYWdhdG9yLmNwcCBcCkBAIC0xMDEsNiArMTA0LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBcCiAgICAgZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIFwKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgXAorICAg
IGRmZy9ERkdUaHVua3MuY3BwIFwKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIFwKICAg
ICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk5
NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEyIEBACiAJCTBGQzA5
NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkMwOTc3MjE0NjkzQUY5MDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNw
cCAqLzsgfTsKIAkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAg
Ki87IH07CisJCTBGQzA5NzkxMTQ2QTZGNzEwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzhFMTQ2QTZG
NjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCAqLzsgfTsKKwkJMEZDMDk3OTIxNDZBNkY3MzAw
Q0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NS
RXhpdENvbXBpbGVyLmNwcCAqLzsgfTsKKwkJMEZDMDk3OUMxNDZBNzcyNTAwQ0YyNDQyIC8qIERG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc5QTE0NkE3NzIwMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkMwOTc5RTE0NkIyNzIxMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3
OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLzsgfTsK
KwkJMEZDMDk3QTExNDZCMjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc5RjE0NkIyOEM3MDBDRjI0
NDIgLyogREZHVGh1bmtzLmNwcCAqLzsgfTsKKwkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzgxNTBBMTQwNDNCRjUwMENG
QTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA4
MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLzsgfTsKIAkJMEZD
ODE1MTUxNDA1MTE5QjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMg
LyogVlRhYmxlU3BlY3RydW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODQ1LDYgKzg1MSwxMiBAQAogCQkwRkMwOTc3MDE0NjkzQUVGMDBDRjI0
NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NzUx
NDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDsg
cGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29tbW9uLmg7IHBhdGggPSBkZmcvREZH
Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzA5NzhFMTQ2QTZGNjMw
MENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR09TUkV4aXQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NS
RXhpdENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R09TUkV4aXRDb21waWxlci5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8q
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg7IHBhdGggPSBkZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3OUQxNDZCMjcx
RTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcDsgcGF0aCA9
IGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVGh1bmtzLmNwcDsgcGF0aCA9IGRmZy9E
RkdUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTdBMDE0NkIy
OEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1RodW5rcy5oOyBwYXRoID0gZGZnL0RGR1RodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3Vw
cG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJp
ZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDODE1MDkxNDA0
M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVlRhYmxlU3BlY3RydW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMwNSw2ICsyMzE3LDEyIEBACiAJCTg2
RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVu
a3MuY3BwICovLAorCQkJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAq
LywKKwkJCQkwRkMwOTc5RDE0NkIyNzFFMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9p
bnQuY3BwICovLAorCQkJCTBGQzA5NzlBMTQ2QTc3MjAwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5oICovLAorCQkJCTBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JF
eGl0LmNwcCAqLywKKwkJCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCAqLywKIAkJCQkwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyMzJfNjQuY3BwICovLAogCQkJCTBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuaCAqLywKIAkJCQkwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyog
REZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovLApAQCAtMjkyMyw2ICsyOTQxLDggQEAKIAkJCQkw
RkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDMDk3NkQxNDY4QUI0RTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMDk3OUMxNDZBNzcyNTAwQ0YyNDQyIC8qIERG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMwOTdBMjE0NkIy
OENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM0NTYsNiArMzQ3
NiwxMCBAQAogCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5Nzc2MTQ2OTQz
QjAwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkMwOTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzA5NzlFMTQ2QjI3MjEwMENGMjQ0MiAvKiBERkdD
b3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkMwOTdBMTE0NkIy
OENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNo
QnVmZmVyOworbmFtZXNwYWNlIERGRyB7CitjbGFzcyBDb3JyZWN0YWJsZUp1bXBQb2ludDsKK30K
IAogdGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGU+CiBjbGFzcyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyIHsKQEAgLTI1Nyw2ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgTGFiZWwgewog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3Mg
REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXA7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBMaW5rQnVmZmVyOwpAQCAtNDA1LDYgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgogICAgICAgICBmcmllbmQgY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhbGw7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50OwogICAgICAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBwdWJsaWM6CiAgICAgICAgIEp1bXAoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZTMyOwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2gzMjsKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6Y2FsbDsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6anVtcDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkRG91Ymxl
OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKQEAgLTE0Nyw2ICsxNDgs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5jYWxsKCksIENh
bGw6OkxpbmthYmxlKTsKICAgICB9CiAKKyAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0
aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bworICAgIHZvaWQganVtcCh2b2lk
KiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuam1wX20oYWRkcmVzcyk7Cisg
ICAgfQorCiAgICAgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCiAgICAgewogICAgICAgICByZXR1
cm4gQ2FsbDo6ZnJvbVRhaWxKdW1wKGp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lv
biA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmUzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6Y2FsbDsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6anVtcDsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkRG91YmxlOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpjb252ZXJ0SW50MzJUb0RvdWJsZTsKQEAgLTExOSw2ICsxMjAsMTMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIC8vIEFkZHJlc3Mg
aXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCisg
ICAgdm9pZCBqdW1wKHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIGp1bXAoQWRkcmVzcyhz
Y3JhdGNoUmVnaXN0ZXIpKTsKKyAgICB9CisKICAgICBDYWxsIHRhaWxSZWN1cnNpdmVDYWxsKCkK
ICAgICB7CiAgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3Rl
ZEltbVB0cigwKSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjptYWtlV3JpdGFibGUobV9zdGFydCwgbV9zaXplKTsKICAgICB9Ci0KKyAgICAKICAgICB+
UmVwYXRjaEJ1ZmZlcigpCiAgICAgewogICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtl
RXhlY3V0YWJsZShtX3N0YXJ0LCBtX3NpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyODAsNiArMTI4MCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVA1X0V2LCBHUk9VUDVfT1BfSk1QTiwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisgICAgCisjaWYgIUNQVShYODZfNjQpCisgICAgdm9pZCBqbXBfbSh2b2lkKiBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQNV9Fdiwg
R1JPVVA1X09QX0pNUE4sIGFkZHJlc3MpOworICAgIH0KKyNlbmRpZgogCiAgICAgQXNzZW1ibGVy
TGFiZWwgam5lKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgogI2lu
Y2x1ZGUgIkRGR09TUkVudHJ5LmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUg
IkV2YWxDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1Y3Rpb24uaCIKQEAgLTM2MSwxOSArMzYyLDY5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoISFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2RmZ0RhdGEgPSBhZG9wdFB0cihuZXcgREZHRGF0YSk7CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRW50cnlEYXRhKiBhcHBlbmRERkdPU1JF
bnRyeURhdGEodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZz
ZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwog
ICAgICAgICAgICAgREZHOjpPU1JFbnRyeURhdGEgZW50cnk7CiAgICAgICAgICAgICBlbnRyeS5t
X2J5dGVjb2RlSW5kZXggPSBieXRlY29kZUluZGV4OwogICAgICAgICAgICAgZW50cnkubV9tYWNo
aW5lQ29kZU9mZnNldCA9IG1hY2hpbmVDb2RlT2Zmc2V0OwotICAgICAgICAgICAgbV9kZmdPU1JF
bnRyeS5hcHBlbmQoZW50cnkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2RmZ09TUkVudHJ5Lmxh
c3QoKTsKKyAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRW50cnkuYXBwZW5kKGVudHJ5KTsKKyAg
ICAgICAgICAgIHJldHVybiAmbV9kZmdEYXRhLT5vc3JFbnRyeS5sYXN0KCk7CiAgICAgICAgIH0K
LSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZERkdPU1JFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4g
bV9kZmdPU1JFbnRyeS5zaXplKCk7IH0KLSAgICAgICAgREZHOjpPU1JFbnRyeURhdGEqIGRmZ09T
UkVudHJ5RGF0YSh1bnNpZ25lZCBpKSB7IHJldHVybiAmbV9kZmdPU1JFbnRyeVtpXTsgfQorICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkRGR09TUkVudHJpZXMoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckVudHJ5LnNpemUoKTsKKyAgICAgICAgfQor
ICAgICAgICBERkc6Ok9TUkVudHJ5RGF0YSogZGZnT1NSRW50cnlEYXRhKHVuc2lnbmVkIGkpIHsg
cmV0dXJuICZtX2RmZ0RhdGEtPm9zckVudHJ5W2ldOyB9CiAgICAgICAgIERGRzo6T1NSRW50cnlE
YXRhKiBkZmdPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiaW5hcnlTZWFyY2g8REZHOjpPU1JF
bnRyeURhdGEsIHVuc2lnbmVkLCBERkc6OmdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXg+KG1f
ZGZnT1NSRW50cnkuYmVnaW4oKSwgbV9kZmdPU1JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgp
OworICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxERkc6Ok9TUkVudHJ5RGF0YSwgdW5z
aWduZWQsIERGRzo6Z2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleD4obV9kZmdEYXRhLT5vc3JF
bnRyeS5iZWdpbigpLCBtX2RmZ0RhdGEtPm9zckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgYXBwZW5kT1NSRXhpdChjb25zdCBE
Rkc6Ok9TUkV4aXQmIG9zckV4aXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0Rh
dGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChv
c3JFeGl0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxh
dGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAg
ICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LmFwcGVuZChyZWNvdmVyeSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlNwZWN1bGF0aW9u
UmVjb3ZlcmllcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+c3Bl
Y3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIERG
Rzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgc3BlY3VsYXRpb25SZWNvdmVyeSh1
bnNpZ25lZCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+
c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC05OTYs
NyArMTA0NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklU
KQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAg
ICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBtX2RmZ09TUkVudHJ5OworICAgICAgICAKKyAg
ICAgICAgc3RydWN0IERGR0RhdGEgeworICAgICAgICAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlE
YXRhLCA0PiBvc3JFbnRyeTsKKyAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4
aXQsIDE2PiBvc3JFeGl0OworICAgICAgICAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNv
dmVyeSwgND4gc3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAg
ICAgIE93blB0cjxERkdEYXRhPiBtX2RmZ0RhdGE7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxWYWx1ZVByb2ZpbGUsIDg+IG1fdmFs
dWVQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwx
MiBAQCBwdWJsaWM6CiAgICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBl
ZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgogICAgIHZvaWQgZGVidWdDYWxsKFZf
REZHRGVidWdPcGVyYXRpb25fRVAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQogICAgIHsKKyAg
ICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVl
Kj4obV9nbG9iYWxEYXRhLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFs
dWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMpKSk7CisgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkKLSAgICAgICAgICAgIHN0b3JlUHRyKEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIG1fZ2xvYmFsRGF0YS0+ZGVidWdEYXRhQnVmZmVyICsgaSk7Cisg
ICAgICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzOyArK2kpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEt
PmRlYnVnRGF0YUJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAg
ICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgICAgIH0KICNpZiBDUFUoWDg2XzY0KQpAQCAtMTUyLDExICsxNTQsMTEgQEAgcHVibGljOgog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rp
b24pKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBjYWxsKEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmRl
YnVnRGF0YUJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBs
b2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkKLSAgICAgICAgICAgIGxvYWRQdHIobV9nbG9iYWxEYXRhLT5kZWJ1Z0Rh
dGFCdWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgICAgIGxvYWRQ
dHIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CiAgICAgfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgiCisKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewor
CitDb2RlTG9jYXRpb25KdW1wIENvcnJlY3RhYmxlSnVtcFBvaW50Ojpjb2RlTG9jYXRpb25Gb3JS
ZXBhdGNoKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAoreworICAgIEFTU0VSVChtX21vZGUg
PT0gQ29ycmVjdGVkSnVtcCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoY29kZUJsb2Nr
LT5nZXRKSVRDb2RlKCkuZGF0YUFkZHJlc3NBdE9mZnNldChtX2NvZGVPZmZzZXQpKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludF9oCisjZGVmaW5l
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50X2gKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CisKKy8vIFRoaXMgaXMgYSB0eXBlLXNhZmUgdW5pb24gb2YgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgYW5kIENvZGVMb2NhdGlvbkp1bXAuCisvLyBGdXJ0aGVybW9yZSwgaXQgc3VwcG9ydHMgdGhl
IG5vdGlvbiBvZiBicmFuY2hpbmcgKHBvc3NpYmx5IGNvbmRpdGlvbmFsbHksIGJ1dAorLy8gYWxz
byBwb3NzaWJseSBqdW1waW5nIHVuY29uZGl0aW9uYWxseSkgdG8gYW4gb3V0LW9mLWxpbmUgcGF0
Y2hhYmxlIGp1bXAuCisvLyBUaHVzIGl0IGdvZXMgdGhyb3VnaCB0aHJlZSBzdGF0ZXM6CisvLwor
Ly8gMSkgTGFiZWwgb2YgdW5wYXRjaGFibGUgYnJhbmNoIG9yIGp1bXAgKGkuZS4gTWFjcm9Bc3Nl
bWJsZXI6Okp1bXApLgorLy8gMikgTGFiZWwgb2YgcGF0Y2hhYmxlIGp1bXAgKGkuZS4gTWFjcm9B
c3NlbWJsZXI6Okp1bXApLgorLy8gMykgQ29ycmVjdGVkIHBvc3QtbGlua2luZyBsYWJlbCBvZiBw
YXRjaGFibGUganVtcCAoaS5lLiBDb2RlTG9jYXRpb25KdW1wKS4KKy8vCisvLyBUaGUgc2V0dGlu
ZyBvZiBzdGF0ZSAoMSkgY29ycmVzcG9uZHMgdG8gcGxhbnRpbmcgdGhlIGluLWxpbmUgdW5wYXRj
aGFibGUKKy8vIGJyYW5jaCBvciBqdW1wLiBUaGUgc3RhdGUgdHJhbnNpdGlvbiAoMSktPigyKSBj
b3JyZXNwb25kcyB0byBsaW5raW5nIHRoZQorLy8gaW4tbGluZSBicmFuY2ggb3IganVtcCB0byB0
aGUgb3V0LW9mLWxpbmUgcGF0Y2hhYmxlIGp1bXAsIGFuZCByZWNvcmRpbmcKKy8vIHRoZSBsYXR0
ZXIncyBsYWJlbC4gVGhlIHN0YXRlIHRyYW5zaXRpb24gKDIpLT4oMykgY29ycmVzcG9uZHMgdG8g
cmVjb3JkaW5nCisvLyB0aGUgb3V0LW9mLWxpbmUgcGF0Y2hhYmxlIGp1bXAncyBsb2NhdGlvbiBh
ZnRlciBicmFuY2ggY29tcGFjdGlvbiBoYXMKKy8vIGNvbXBsZXRlZC4KKy8vCisvLyBZb3UgY2Fu
IGFsc28gZ28gZGlyZWN0bHkgZnJvbSB0aGUgZmlyc3Qgc3RhdGUgdG8gdGhlIHRoaXJkIHN0YXRl
LCBpZiB5b3UKKy8vIHdpc2ggdG8gdXNlIHRoaXMgY2xhc3MgZm9yIGluLWxpbmUgcGF0Y2hhYmxl
IGp1bXBzLgorCitjbGFzcyBDb3JyZWN0YWJsZUp1bXBQb2ludCB7CitwdWJsaWM6CisgICAgQ29y
cmVjdGFibGVKdW1wUG9pbnQoTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2spCisgICAgICAgIDog
bV9jb2RlT2Zmc2V0KGNoZWNrLm1fbGFiZWwubV9vZmZzZXQpCisjaWZuZGVmIE5ERUJVRworICAg
ICAgICAsIG1fbW9kZShJbml0aWFsSnVtcCkKKyNlbmRpZgorICAgIHsKKyNpZiBDUFUoQVJNX1RI
VU1CMikKKyAgICAgICAgbV90eXBlID0gY2hlY2subV90eXBlOworICAgICAgICBtX2NvbmRpdGlv
biA9IGNoZWNrLm1fY29uZGl0aW9uOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQgc3dp
dGNoVG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaykKKyAgICB7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRpYWxKdW1wKTsKKyAgICAgICAg
bV9tb2RlID0gTGF0ZUp1bXA7CisjZW5kaWYKKyAgICAgICAgLy8gTGF0ZSBqdW1wcyBzaG91bGQg
b25seSBldmVyIGJlIHJlYWwganVtcHMuCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIEFT
U0VSVChjaGVjay5tX3R5cGUgPT0gQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlvbkZpeGVk
U2l6ZSk7CisgICAgICAgIEFTU0VSVChjaGVjay5tX2NvbmRpdGlvbiA9PSBBUk12N0Fzc2VtYmxl
cjo6Q29uZGl0aW9uSW52YWxpZCk7CisjZW5kaWYKKyAgICAgICAgbV9jb2RlT2Zmc2V0ID0gY2hl
Y2subV9sYWJlbC5tX29mZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0SW5pdGlh
bEp1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21v
ZGUgPT0gSW5pdGlhbEp1bXApOworI2lmIENQVShBUk1fVEhVTUIyKQorICAgICAgICBBU1NFUlQo
bV90eXBlID09IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUpOworICAg
ICAgICBBU1NFUlQobV9jb25kaXRpb24gPT0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkludmFs
aWQpOworI2VuZGlmCisgICAgICAgIGNvcnJlY3RKdW1wKGxpbmtCdWZmZXIpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNvcnJlY3RMYXRlSnVtcChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBMYXRlSnVtcCk7CisgICAgICAgIGNvcnJlY3RK
dW1wKGxpbmtCdWZmZXIpOworICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBp
bml0aWFsSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRp
YWxKdW1wKTsKKyAgICAgICAgcmV0dXJuIGdldEp1bXAoKTsKKyAgICB9CisgICAgCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgbGF0ZUp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fbW9kZSA9PSBMYXRlSnVtcCk7CisgICAgICAgIHJldHVybiBnZXRKdW1wKCk7CisgICAgfQor
ICAgIAorICAgIENvZGVMb2NhdGlvbkp1bXAgY29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxv
Y2sqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBjb3JyZWN0SnVtcChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fbW9kZSA9
IENvcnJlY3RlZEp1bXA7CisjZW5kaWYKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxh
YmVsOworICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9jb2RlT2Zmc2V0OworICAg
ICAgICBtX2NvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxhYmVsKTsKKyAgICB9Cisg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZ2V0SnVtcCgpIGNvbnN0CisgICAgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wOworICAgICAgICBqdW1wLm1fbGFiZWwubV9v
ZmZzZXQgPSBtX2NvZGVPZmZzZXQ7CisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIGp1bXAu
bV90eXBlID0gbV9tb2RlID09IEluaXRpYWxKdW1wID8gbV90eXBlIDogQVJNdjdBc3NlbWJsZXI6
Okp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZTsKKyAgICAgICAganVtcC5tX2NvbmRpdGlvbiA9IG1f
bW9kZSA9PSBJbml0aWFsSnVtcCA/IG1fY29uZGl0aW9uIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBO
b0NvbmRpdGlvbjsKKyNlbmRpZgorICAgICAgICByZXR1cm4ganVtcDsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgbV9jb2RlT2Zmc2V0OworCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgQVJN
djdBc3NlbWJsZXI6Okp1bXBUeXBlIG1fdHlwZSA6IDg7CisgICAgQVJNdjdBc3NlbWJsZXI6OkNv
bmRpdGlvbiBtX2NvbmRpdGlvbiA6IDg7CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICBl
bnVtIE1vZGUgeworICAgICAgICBJbml0aWFsSnVtcCwKKyAgICAgICAgTGF0ZUp1bXAsCisgICAg
ICAgIENvcnJlY3RlZEp1bXAKKyAgICB9OworCisgICAgTW9kZSBtX21vZGU7CisjZW5kaWYKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIERGR0NvcnJlY3RhYmxl
SnVtcFBvaW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI4LDcgKzEx
MjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKICAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwogICAgIH0KLSNlbHNlCisjZWxzZSAvLyBDUFUoWDg2
KSAtPiBzbyB0aGlzIGlzIHRoZSBDUFUoWDg2XzY0KSBjYXNlCiAgICAgdGVtcGxhdGU8R1BSUmVn
IGRlc3RBLCBHUFJSZWcgZGVzdEI+CiAgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEdQUlJlZyBz
cmNBLCBHUFJSZWcgc3JjQikKICAgICB7CkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIG1faml0Lm1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICAg
ICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBDUFUoWDg2KQogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgYnJvYWRseSB2YWx1ZSByZXByZXNlbnRhdGlvbiBzcGVjaWZpYyAoaS5l
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwxOSBAQAogI2luY2x1ZGUgIkRG
R09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKICNpbmNsdWRlICJE
RkdTcGVjdWxhdGl2ZUpJVC5oIgorI2luY2x1ZGUgIkRGR1RodW5rcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCi12b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoU3BlY3Vs
YXRpdmVKSVQmIHNwZWN1bGF0aXZlKQordm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkK
IHsKLSAgICBPU1JFeGl0Q29tcGlsZXIgb3NyRXhpdENvbXBpbGVyKCp0aGlzKTsKLSAgICAKLSAg
ICBPU1JFeGl0VmVjdG9yOjpJdGVyYXRvciBleGl0c0l0ZXIgPSBzcGVjdWxhdGl2ZS5vc3JFeGl0
cygpLmJlZ2luKCk7Ci0gICAgT1NSRXhpdFZlY3Rvcjo6SXRlcmF0b3IgZXhpdHNFbmQgPSBzcGVj
dWxhdGl2ZS5vc3JFeGl0cygpLmVuZCgpOwotICAgIAotICAgIHdoaWxlIChleGl0c0l0ZXIgIT0g
ZXhpdHNFbmQpIHsKLSAgICAgICAgY29uc3QgT1NSRXhpdCYgZXhpdCA9ICpleGl0c0l0ZXI7Ci0g
ICAgICAgIG9zckV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCBzcGVjdWxhdGl2ZS5zcGVj
dWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4KSk7Ci0gICAgICAgICsrZXhpdHNJ
dGVyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZP
U1JFeGl0cygpOyArK2kpIHsKKyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5v
c3JFeGl0KGkpOworICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMp
OworICAgICAgICBzdG9yZTMyKEltbTMyKGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgp
OworICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVtcChqdW1wKCkpOwogICAgIH0K
IH0KIApAQCAtODEsNyArNzgsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keShTcGVj
dWxhdGl2CiAgICAgYm9vbCBjb21waWxlZFNwZWN1bGF0aXZlID0gc3BlY3VsYXRpdmUuY29tcGls
ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQoY29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVj
dWxhdGl2ZSk7CiAKLSAgICBsaW5rT1NSRXhpdHMoc3BlY3VsYXRpdmUpOworICAgIGxpbmtPU1JF
eGl0cygpOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBtX2NhbGxzIHZlY3RvciwgY2hlY2tp
bmcgZm9yIGp1bXBzIHRvIGxpbmsuCiAgICAgYm9vbCBkaWRMaW5rRXhjZXB0aW9uQ2hlY2sgPSBm
YWxzZTsKQEAgLTE5Nyw2ICsxOTQsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQgogICAgICAgICBpbmZvLmNhY2hlZFByb3RvdHlwZS5zZXRMb2NhdGlvbihsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fcHJvdG9PYmopKTsKICAgICAgICAg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RH
ZXRzW2ldLm1fc2xvd0NhbGwpOwogICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgb3NyRXhpdFRodW5rID0gZ2xvYmFsRGF0YSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0
aW9uVGh1bmtHZW5lcmF0b3IpOworICAgIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsKG9zckV4aXRUaHVuay5jb2RlKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKKyAgICAgICAg
T1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOworICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CisgICAgICAgIGV4aXQu
bV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7CisgICAgfQogfQogCiB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDEzICs1NCw2IEBAIGNsYXNzIFNwZWN1bGF0aW9uUmVjb3Zlcnk7CiBzdHJ1Y3QgRW50cnlMb2Nh
dGlvbjsKIHN0cnVjdCBPU1JFeGl0OwogCi0jaWYgREZHX0VOQUJMRShWRVJCT1NFX1NQRUNVTEFU
SU9OX0ZBSUxVUkUpCi1zdHJ1Y3QgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvIHsKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jazsKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldDsKLX07Ci0jZW5k
aWYKLQogLy8gPT09IENhbGxMaW5rUmVjb3JkID09PQogLy8KIC8vIEEgcmVjb3JkIG9mIGEgY2Fs
bCBvdXQgZnJvbSBKSVQgY29kZSB0aGF0IG5lZWRzIGxpbmtpbmcgdG8gYSBoZWxwZXIgZnVuY3Rp
b24uCkBAIC0zMDMsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxpbmsoTGlua0J1ZmZl
ciYpOwogCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBsaW5rT1NSRXhpdHMoU3BlY3VsYXRpdmVK
SVQmKTsKKyAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIFRoZSBkYXRhZmxv
dyBncmFwaCBjdXJyZW50bHkgYmVpbmcgZ2VuZXJhdGVkLgogICAgIEdyYXBoJiBtX2dyYXBoOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgor
CisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK09TUkV4aXQ6Ok9TUkV4aXQoSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHJl
Y292ZXJ5SW5kZXgpCisgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKKyAgICAs
IG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKKyAgICAsIG1fY2hlY2soY2hlY2spCisgICAg
LCBtX25vZGVJbmRleChqaXQtPm1fY29tcGlsZUluZGV4KQorICAgICwgbV9jb2RlT3JpZ2luKGpp
dC0+bV9jb2RlT3JpZ2luRm9yT1NSKQorICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5k
ZXgpCisgICAgLCBtX2FyZ3VtZW50cyhqaXQtPm1fYXJndW1lbnRzLnNpemUoKSkKKyAgICAsIG1f
dmFyaWFibGVzKGppdC0+bV92YXJpYWJsZXMuc2l6ZSgpKQorICAgICwgbV9sYXN0U2V0T3BlcmFu
ZChqaXQtPm1fbGFzdFNldE9wZXJhbmQpCit7CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbi5pc1Nl
dCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX2FyZ3Vt
ZW50cy5zaXplKCk7ICsrYXJndW1lbnQpCisgICAgICAgIG1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IGppdC0+Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3Ioaml0LT5tX2FyZ3VtZW50c1thcmd1bWVudF0p
OworICAgIGZvciAodW5zaWduZWQgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVz
LnNpemUoKTsgKyt2YXJpYWJsZSkKKyAgICAgICAgbV92YXJpYWJsZXNbdmFyaWFibGVdID0gaml0
LT5jb21wdXRlVmFsdWVSZWNvdmVyeUZvcihqaXQtPm1fdmFyaWFibGVzW3ZhcmlhYmxlXSk7Cit9
CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIE9TUkV4aXQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAor
eworICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fYXJndW1lbnRz
LnNpemUoKTsgKythcmd1bWVudCkKKyAgICAgICAgbV9hcmd1bWVudHNbYXJndW1lbnRdLmR1bXAo
b3V0KTsKKyAgICBmcHJpbnRmKG91dCwgIiA6ICIpOworICAgIGZvciAodW5zaWduZWQgdmFyaWFi
bGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKyt2YXJpYWJsZSkKKyAgICAg
ICAgbV92YXJpYWJsZXNbdmFyaWFibGVdLmR1bXAob3V0KTsKK30KKyNlbmRpZgorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxMCArMzAsMTMgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxl
SnVtcFBvaW50LmgiCiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNv
dmVyeS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewpAQCAtNzksMTAgKzgyLDEyIEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCB7
CiAgICAgT1NSRXhpdChKU1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CiAg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICAKICAgICBKU1ZhbHVl
U291cmNlIG1fanNWYWx1ZVNvdXJjZTsKICAgICBWYWx1ZVByb2ZpbGUqIG1fdmFsdWVQcm9maWxl
OwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fY2hlY2s7CisgICAgQ29ycmVjdGFi
bGVKdW1wUG9pbnQgbV9jaGVjazsKICAgICBOb2RlSW5kZXggbV9ub2RlSW5kZXg7CiAgICAgQ29k
ZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgCkBAIC0xMjYsNyArMTMxLDEzIEBAIHN0cnVjdCBP
U1JFeGl0IHsKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeSwgMD4gbV92YXJpYWJsZXM7CiAgICAg
aW50IG1fbGFzdFNldE9wZXJhbmQ7CiB9OwotdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8T1NSRXhp
dCwgMTY+IE9TUkV4aXRWZWN0b3I7CisKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJ
T05fRkFJTFVSRSkKK3N0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8geworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrOworICAgIE5vZGVJbmRleCBub2RlSW5kZXg7Cit9OworI2VuZGlm
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9u
IDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQogCisjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5o
IgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5
KiByZWNvdmVyeSkKQEAgLTQ5LDcgKzUxLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IAogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJF
KQogICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1
bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IG1faml0
LmNvZGVCbG9jaygpOwotICAgIGRlYnVnSW5mby0+ZGVidWdPZmZzZXQgPSBtX2ppdC5kZWJ1Z09m
ZnNldCgpOworICAgIGRlYnVnSW5mby0+bm9kZUluZGV4ID0gZXhpdC5tX25vZGVJbmRleDsKICAg
ICAKICAgICBtX2ppdC5kZWJ1Z0NhbGwoZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFp
bHVyZSwgZGVidWdJbmZvKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDk5NzU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpICYmIFVT
RShKU1ZBTFVFNjQpCiAKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewog
ICAgIC8vIDEpIFByby1mb3JtYSBzdHVmZi4KLSAgICBleGl0Lm1fY2hlY2subGluaygmbV9qaXQp
OwotCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGZwcmludGYoc3RkZXJyLCAi
T1NSIGV4aXQgZm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOwogICAgIGZv
ciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IDsgY29kZU9yaWdp
biA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKQEAgLTQzLDEzICs0Mywx
MyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgLT4gJXAgIiwgY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAgIH0KLSAgICBmcHJpbnRmKHN0
ZGVyciwgIikgYXQgSklUIG9mZnNldCAweCV4ICAiLCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgIikgICIpOwogICAgIGV4aXQuZHVtcChzdGRlcnIpOwogI2VuZGlm
CiAjaWYgREZHX0VOQUJMRShWRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCiAgICAgU3BlY3Vs
YXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJl
RGVidWdJbmZvOwogICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gbV9qaXQuY29kZUJsb2NrKCk7
Ci0gICAgZGVidWdJbmZvLT5kZWJ1Z09mZnNldCA9IG1faml0LmRlYnVnT2Zmc2V0KCk7CisgICAg
ZGVidWdJbmZvLT5ub2RlSW5kZXggPSBleGl0Lm1fbm9kZUluZGV4OwogICAgIAogICAgIG1faml0
LmRlYnVnQ2FsbChkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0lu
Zm8pOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXIuaCIKKworI2lmIEVOQUJM
RShERkdfSklUKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgorI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgeworCitleHRlcm4gIkMiIHsKKwordm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
ICAgIAorICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsK
KyAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CisgICAg
CisgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOworICAgIGlmIChleGl0Lm1f
cmVjb3ZlcnlJbmRleCkKKyAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlv
blJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CisKKyNpZiBERkdfRU5BQkxFKERF
QlVHX1ZFUkJPU0UpCisgICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0aW5nIE9TUiBleGl0ICMl
dSBmb3IgY29kZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgY29kZUJsb2NrKTsKKyNlbmRpZgor
CisgICAgeworICAgICAgICBBc3NlbWJseUhlbHBlcnMgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9j
ayk7CisgICAgICAgIE9TUkV4aXRDb21waWxlciBleGl0Q29tcGlsZXIoaml0KTsKKyAgICAgICAg
CisgICAgICAgIGV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCByZWNvdmVyeSk7CisgICAg
ICAgIAorICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsK
KyAgICAgICAgZXhpdC5tX2NvZGUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICB9
CisgICAgCisgICAgeworICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoZXhpdC5tX2NoZWNrLmNvZGVMb2Nh
dGlvbkZvclJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUu
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICB9CisgICAgCisgICAgZ2xvYmFsRGF0
YS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpOworfQorCit9IC8vIGV4dGVybiAiQyIKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHJldmlzaW9uIDk5NzU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsMTEgQEAKICNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIK
ICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CisKK25hbWVzcGFjZSBERkcg
ewogCiBjbGFzcyBPU1JFeGl0Q29tcGlsZXIgewogcHVibGljOgpAQCAtNDgsNiArNTIsMTAgQEAg
cHJpdmF0ZToKICAgICBBc3NlbWJseUhlbHBlcnMmIG1faml0OwogfTsKIAorZXh0ZXJuICJDIiB7
Cit2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSopOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTk3NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5o
IgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03
ODMsNyArNzg0LDcgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAog
ICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8
U3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogYWx0
ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgcHJpbnRmKCJTcGVjdWxh
dGlvbiBmYWlsdXJlIGluICVwIGF0IDB4JXggd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9w
dGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAl
dSwgc3VjY2Vzcy9mYWlsICV1LyV1XG4iLCBjb2RlQmxvY2ssIGRlYnVnSW5mby0+ZGVidWdPZmZz
ZXQsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPmV4ZWN1dGVDb3VudGVyKCkgOiAwLCBhbHRl
cm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIDogMCwg
YWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkgOiAw
LCBjb2RlQmxvY2stPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5zcGVj
dWxhdGl2ZUZhaWxDb3VudGVyKCkpOworICAgIHByaW50ZigiU3BlY3VsYXRpb24gZmFpbHVyZSBp
biAlcCBhdCBAJXUgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgc3VjY2Vzcy9mYWls
ICV1LyV1XG4iLCBjb2RlQmxvY2ssIGRlYnVnSW5mby0+bm9kZUluZGV4LCBhbHRlcm5hdGl2ZSA/
IGFsdGVybmF0aXZlLT5leGVjdXRlQ291bnRlcigpIDogMCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5h
dGl2ZS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSA6IDAsIGFsdGVybmF0aXZlID8gYWx0
ZXJuYXRpdmUtPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpIDogMCwgY29kZUJsb2NrLT5zcGVj
dWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVGYWlsQ291bnRl
cigpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
MzUgKzYyLDYgQEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiB9CiAj
ZW5kaWYKIAotT1NSRXhpdDo6T1NSRXhpdChKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIFZh
bHVlUHJvZmlsZSogdmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaywgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKLSAgICA6IG1fanNWYWx1
ZVNvdXJjZShqc1ZhbHVlU291cmNlKQotICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxl
KQotICAgICwgbV9jaGVjayhjaGVjaykKLSAgICAsIG1fbm9kZUluZGV4KGppdC0+bV9jb21waWxl
SW5kZXgpCi0gICAgLCBtX2NvZGVPcmlnaW4oaml0LT5tX2NvZGVPcmlnaW5Gb3JPU1IpCi0gICAg
LCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKLSAgICAsIG1fYXJndW1lbnRzKGppdC0+
bV9hcmd1bWVudHMuc2l6ZSgpKQotICAgICwgbV92YXJpYWJsZXMoaml0LT5tX3ZhcmlhYmxlcy5z
aXplKCkpCi0gICAgLCBtX2xhc3RTZXRPcGVyYW5kKGppdC0+bV9sYXN0U2V0T3BlcmFuZCkKLXsK
LSAgICBBU1NFUlQobV9jb2RlT3JpZ2luLmlzU2V0KCkpOwotICAgIGZvciAodW5zaWduZWQgYXJn
dW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fYXJndW1lbnRzLnNpemUoKTsgKythcmd1bWVudCkKLSAg
ICAgICAgbV9hcmd1bWVudHNbYXJndW1lbnRdID0gaml0LT5jb21wdXRlVmFsdWVSZWNvdmVyeUZv
cihqaXQtPm1fYXJndW1lbnRzW2FyZ3VtZW50XSk7Ci0gICAgZm9yICh1bnNpZ25lZCB2YXJpYWJs
ZSA9IDA7IHZhcmlhYmxlIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK3ZhcmlhYmxlKQotICAgICAg
ICBtX3ZhcmlhYmxlc1t2YXJpYWJsZV0gPSBqaXQtPmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGpp
dC0+bV92YXJpYWJsZXNbdmFyaWFibGVdKTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLXZvaWQgT1NS
RXhpdDo6ZHVtcChGSUxFKiBvdXQpIGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBhcmd1bWVu
dCA9IDA7IGFyZ3VtZW50IDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2FyZ3VtZW50KQotICAgICAg
ICBtX2FyZ3VtZW50c1thcmd1bWVudF0uZHVtcChvdXQpOwotICAgIGZwcmludGYob3V0LCAiIDog
Iik7Ci0gICAgZm9yICh1bnNpZ25lZCB2YXJpYWJsZSA9IDA7IHZhcmlhYmxlIDwgbV92YXJpYWJs
ZXMuc2l6ZSgpOyArK3ZhcmlhYmxlKQotICAgICAgICBtX3ZhcmlhYmxlc1t2YXJpYWJsZV0uZHVt
cChvdXQpOwotfQotI2VuZGlmCi0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZURvdWJsZUJyYW5jaChOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRD
b21waWxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKICAgICBOb2RlJiBicmFuY2hO
b2RlID0gYXQoYnJhbmNoTm9kZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzMsMTkgKzEzMyw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGUoKTsKICAgICB2b2lkIGxp
bmtPU1JFbnRyaWVzKExpbmtCdWZmZXImKTsKIAotICAgIC8vIFJldHJpZXZlIHRoZSBsaXN0IG9m
IGJhaWwtb3V0cyBmcm9tIHRoZSBzcGVjdWxhdGl2ZSBwYXRoLAotICAgIC8vIGFuZCBhZGRpdGlv
bmFsIHJlY292ZXJ5IGluZm9ybWF0aW9uLgotICAgIE9TUkV4aXRWZWN0b3ImIG9zckV4aXRzKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX29zckV4aXRzOwotICAgIH0KLSAgICBTcGVjdWxhdGlv
blJlY292ZXJ5KiBzcGVjdWxhdGlvblJlY292ZXJ5KHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAg
ICAgIC8vIE9TUkV4aXQ6Om1fcmVjb3ZlcnlJbmRleCBpcyBvZmZzZXQgYnkgMSwKLSAgICAgICAg
Ly8gMCBtZWFucyBubyByZWNvdmVyeS4KLSAgICAgICAgcmV0dXJuIGluZGV4ID8gJm1fc3BlY3Vs
YXRpb25SZWNvdmVyeUxpc3RbaW5kZXggLSAxXSA6IDA7Ci0gICAgfQotCiAgICAgLy8gQ2FsbGVk
IGJ5IHRoZSBzcGVjdWxhdGl2ZSBvcGVyYW5kIHR5cGVzLCBiZWxvdywgdG8gZmlsbCBvcGVyYW5k
IHRvCiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVj
dWxhdGlvbiBjaGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50KE5v
ZGVJbmRleCwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKQEAgLTIzOSwxNSArMjI2LDE1IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fb3NyRXhpdHMuYXBwZW5kKE9TUkV4aXQoanNWYWx1ZVNvdXJj
ZSwgbV9qaXQudmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMpKTsK
KyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChqc1ZhbHVl
U291cmNlLCBtX2ppdC52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhp
cykpOwogICAgIH0KICAgICAvLyBBZGQgYSBzcGVjdWxhdGlvbiBjaGVjayB3aXRoIGFkZGl0aW9u
YWwgcmVjb3ZlcnkuCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2UganNW
YWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVt
cFRvRmFpbCwgY29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgewogICAg
ICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
c3BlY3VsYXRpb25SZWNvdmVyeUxpc3QuYXBwZW5kKHJlY292ZXJ5KTsKLSAgICAgICAgbV9vc3JF
eGl0cy5hcHBlbmQoT1NSRXhpdChqc1ZhbHVlU291cmNlLCBtX2ppdC52YWx1ZVByb2ZpbGVGb3Io
bm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9zcGVjdWxhdGlvblJlY292ZXJ5TGlzdC5z
aXplKCkpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVj
b3ZlcnkocmVjb3ZlcnkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhp
dChPU1JFeGl0KGpzVmFsdWVTb3VyY2UsIG1faml0LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgp
LCBqdW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlv
blJlY292ZXJpZXMoKSkpOwogICAgIH0KIAogICAgIC8vIENhbGxlZCB3aGVuIHdlIHN0YXRpY2Fs
bHkgZGV0ZXJtaW5lIHRoYXQgYSBzcGVjdWxhdGlvbiB3aWxsIGZhaWwuCkBAIC0yNzAsMTIgKzI1
Nyw2IEBAIHByaXZhdGU6CiAgICAgLy8gd2lsbCBtYWtlIGNvbmZsaWN0aW5nIHNwZWN1bGF0aW9u
cyBhYm91dCB0aGUgc2FtZSBvcGVyYW5kKS4gSW4gc3VjaCBjYXNlcyB0aGlzCiAgICAgLy8gZmxh
ZyBpcyBjbGVhcmVkLCBpbmRpY2F0aW5nIG5vIGZ1cnRoZXIgY29kZSBnZW5lcmF0aW9uIHNob3Vs
ZCB0YWtlIHBsYWNlLgogICAgIGJvb2wgbV9jb21waWxlT2theTsKLSAgICAvLyBUaGlzIHZlY3Rv
ciB0cmFja3MgYmFpbC1vdXRzIGZyb20gdGhlIHNwZWN1bGF0aXZlIHBhdGggdG8gdGhlIG9sZCBK
SVQuCi0gICAgT1NSRXhpdFZlY3RvciBtX29zckV4aXRzOwotICAgIC8vIFNvbWUgYmFpbC1vdXRz
IG5lZWQgdG8gcmVjb3JkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVjb3JkaW5nIHNwZWNpZmlj
IHJlY292ZXJ5Ci0gICAgLy8gdG8gYmUgcGVyZm9ybWVkIChmb3IgZXhhbXBsZSwgb24gZGV0ZWN0
ZWQgb3ZlcmZsb3cgZnJvbSBhbiBhZGQsIHdlIG1heSBuZWVkIHRvCi0gICAgLy8gcmV2ZXJzZSB0
aGUgYWRkaXRpb24gaWYgYW4gb3BlcmFuZCBpcyBiZWluZyBvdmVyd3JpdHRlbikuCi0gICAgVmVj
dG9yPFNwZWN1bGF0aW9uUmVjb3ZlcnksIDE2PiBtX3NwZWN1bGF0aW9uUmVjb3ZlcnlMaXN0Owog
ICAgIAogICAgIC8vIFRyYWNraW5nIGZvciB3aGljaCBub2RlcyBhcmUgY3VycmVudGx5IGhvbGRp
bmcgdGhlIHZhbHVlcyBvZiBhcmd1bWVudHMgYW5kIGJ5dGVjb2RlCiAgICAgLy8gb3BlcmFuZC1p
bmRleGVkIHZhcmlhYmxlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRGR1RodW5rcy5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdGUFJJ
bmZvLmgiCisjaW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXRDb21w
aWxlci5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIE1hY3JvQXNz
ZW1ibGVyIGppdDsKKyAgICAKKyAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8RW5jb2RlZEpTVmFsdWUqPihnbG9iYWxEYXRhLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnMpKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5zdG9y
ZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgfQor
ICAgIAorICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCisjaWYgQ1BVKFg4NikKKyAgICBqaXQu
cG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CisjZWxzZQorICAgIGppdC5tb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2Vu
ZGlmCisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNh
bGwoKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJ
bmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJ
bmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGppdC5sb2FkUHRyKGJ1
ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgIAorICAgIGppdC5qdW1wKCZn
bG9iYWxEYXRhLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKTsKKyAgICAKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICAKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGZ1bmN0aW9uQ2FsbCwgY29tcGlsZU9TUkV4aXQpOworICAgIAorICAgIHJldHVybiBwYXRj
aEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwor
CisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHVGh1bmtzX2gKKyNkZWZp
bmUgREZHVGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KERGR19KSVQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIERGRyB7CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1RodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc2l6ZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQq
IGRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dDsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgb2Zm
c2V0IGluIGJ5dGVzIG9mICdwb2ludGVySW50b0NvZGUnIGludG8KICAgICAgICAgLy8gdGhpcyBi
bG9jayBvZiBjb2RlLiAgVGhlIHBvaW50ZXIgcHJvdmlkZWQgbXVzdCBiZSBhIHBvaW50ZXIgaW50
byB0aGlzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDEwICsyNDAsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2Vw
dGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICBpbnQ2NF90IGRlYnVnRGF0YUJ1ZmZlcls2NF07Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgdWludDMyX3Qgb3NyRXhpdEluZGV4OworICAg
ICAgICB2b2lkKiBvc3JFeGl0SnVtcERlc3RpbmF0aW9uOwogICAgICAgICBWZWN0b3I8dm9pZCo+
IHNjcmF0Y2hCdWZmZXJzOwogICAgICAgICBzaXplX3Qgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXI7
CiAgICAgICAgIAo=
</data>
<flag name="commit-queue"
          id="113000"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114378</attachid>
            <date>2011-11-09 15:29:31 -0800</date>
            <delta_ts>2011-11-09 16:51:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>lazyosrexit_patch_3.diff</filename>
            <type>text/plain</type>
            <size>58427</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTk3NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAK
KzIwMTEtMTEtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgT1NSIGV4aXQgY29kZSBzaG91bGQgYmUgbGF6aWx5IGdlbmVyYXRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBPU1IgZXhpdCBj
b2RlIGlzIG5vdyBnZW5lcmF0ZWQgdGhlIGZpcnN0IHRpbWUgaXQgaXMgZXhlY3V0ZWQsCisgICAg
ICAgIHJhdGhlciB0aGFuIHJpZ2h0IGFmdGVyIHNwZWN1bGF0aXZlIGNvbXBpbGF0aW9uLiBCZWNh
dXNlIG1vc3QgT1NSCisgICAgICAgIGV4aXRzIGFyZSBuZXZlciB0YWtlbiwgdGhpcyBzaG91bGQg
Z3JlYXRseSByZWR1Y2UgYm90aCBjb2RlIHNpemUKKyAgICAgICAgYW5kIGNvbXBpbGF0aW9uIHRp
bWUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6anVtcCk6CisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2XzY0OjpqdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5o
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpqbXBfbSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Y3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjphcHBlbmRERkdPU1JFbnRyeURhdGEpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Om51bWJlck9mREZHT1NSRW50cmllcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZGZnT1NSRW50cnlEYXRhKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZmdPU1JFbnRy
eURhdGFGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRP
U1JFeGl0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphcHBlbmRTcGVjdWxhdGlvblJlY292
ZXJ5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZk9TUkV4aXRzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlNwZWN1bGF0aW9uUmVjb3Zlcmllcyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6b3NyRXhpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c3BlY3VsYXRpb25SZWNvdmVyeSk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAg
ICAgKiBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6Y29kZUxvY2F0aW9uRm9yUmVwYXRjaCk6Cisg
ICAgICAgICogZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50OjpDb3JyZWN0YWJsZUp1bXBQb2ludCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OnN3aXRjaFRvTGF0ZUp1bXAp
OgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojpjb3JyZWN0SW5pdGlh
bEp1bXApOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojpjb3JyZWN0
TGF0ZUp1bXApOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50Ojppbml0
aWFsSnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29ycmVjdGFibGVKdW1wUG9pbnQ6OmxhdGVK
dW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDo6Y29ycmVjdEp1
bXApOgorICAgICAgICAoSlNDOjpERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50OjpnZXRKdW1wKToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JF
eGl0cyk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JF
eGl0OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENv
bXBpbGVyLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoSlNDOjpKSVRDb2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorCiAyMDExLTExLTA5ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0c0VmbC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHNFZmwudHh0CShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzRWZsLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBMSVNUKEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5j
cHAKICAgICBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCiAgICAgZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKKyAgICBkZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuY3BwCiAgICAgZGZnL0RGR0Ry
aXZlci5jcHAKICAgICBkZmcvREZHR3JhcGguY3BwCiAgICAgZGZnL0RGR0pJVENvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zNCw2ICszNSw4IEBAIExJU1QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwCiAgICAgZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CiAgICAgZGZnL0RGR09TUkVudHJ5LmNwcAorICAgIGRmZy9ERkdPU1JFeGl0LmNwcAorICAgIGRm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCiAgICAgZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cAogICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKICAgICBkZmcvREZHUHJvcGFn
YXRvci5jcHAKQEAgLTQxLDQgKzQ0LDUgQEAgTElTVChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKyAgICBkZmcv
REZHVGh1bmtzLmNwcAogKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsOCBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZQUkluZm8uaCBcCkBAIC0xMzgsOCArMTQwLDEwIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsuaCBcCkBAIC0xNTEsNiArMTU1LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1
cmVTZXQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2
aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmNwcCBcCiAgICAgZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBcCiAgICAgZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAgXAorICAgIGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5j
cHAgXAogICAgIGRmZy9ERkdEcml2ZXIuY3BwIFwKICAgICBkZmcvREZHR3JhcGguY3BwIFwKICAg
ICBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAgXApAQCAtOTQsNiArOTUsOCBAQCBTT1VSQ0VT
ICs9IFwKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwIFwKICAgICBkZmcvREZHT3BlcmF0aW9u
cy5jcHAgXAogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0LmNw
cCBcCisgICAgZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAgXAogICAgIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAgXAogICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgXAog
ICAgIGRmZy9ERkdQcm9wYWdhdG9yLmNwcCBcCkBAIC0xMDEsNiArMTA0LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBcCiAgICAgZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIFwKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgXAorICAg
IGRmZy9ERkdUaHVua3MuY3BwIFwKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIFwKICAg
ICBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgXAogICAgIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk5
NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEyIEBACiAJCTBGQzA5
NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkMwOTc3MjE0NjkzQUY5MDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDMDk3NzAxNDY5M0FFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNw
cCAqLzsgfTsKIAkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzA5Nzc1MTQ2OTQzQUQwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAg
Ki87IH07CisJCTBGQzA5NzkxMTQ2QTZGNzEwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzhFMTQ2QTZG
NjMwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCAqLzsgfTsKKwkJMEZDMDk3OTIxNDZBNkY3MzAw
Q0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NS
RXhpdENvbXBpbGVyLmNwcCAqLzsgfTsKKwkJMEZDMDk3OUMxNDZBNzcyNTAwQ0YyNDQyIC8qIERG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc5QTE0NkE3NzIwMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRkMwOTc5RTE0NkIyNzIxMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3
OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLzsgfTsK
KwkJMEZDMDk3QTExNDZCMjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc5RjE0NkIyOEM3MDBDRjI0
NDIgLyogREZHVGh1bmtzLmNwcCAqLzsgfTsKKwkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzgxNTBBMTQwNDNCRjUwMENG
QTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA4
MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLzsgfTsKIAkJMEZD
ODE1MTUxNDA1MTE5QjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUxNDE0MDUxMThEMDBDRkE2MDMg
LyogVlRhYmxlU3BlY3RydW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODQ1LDYgKzg1MSwxMiBAQAogCQkwRkMwOTc3MDE0NjkzQUVGMDBDRjI0
NDIgLyogREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NzUx
NDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDsg
cGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29tbW9uLmg7IHBhdGggPSBkZmcvREZH
Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzA5NzhFMTQ2QTZGNjMw
MENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR09TUkV4aXQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NS
RXhpdENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R09TUkV4aXRDb21waWxlci5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8q
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50Lmg7IHBhdGggPSBkZmcvREZHQ29ycmVjdGFibGVK
dW1wUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3OUQxNDZCMjcx
RTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcDsgcGF0aCA9
IGRmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVGh1bmtzLmNwcDsgcGF0aCA9IGRmZy9E
RkdUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMwOTdBMDE0NkIy
OEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1RodW5rcy5oOyBwYXRoID0gZGZnL0RGR1RodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3Vw
cG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJp
ZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDODE1MDkxNDA0
M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVlRhYmxlU3BlY3RydW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMwNSw2ICsyMzE3LDEyIEBACiAJCTg2
RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVu
a3MuY3BwICovLAorCQkJCTBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuaCAq
LywKKwkJCQkwRkMwOTc5RDE0NkIyNzFFMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9p
bnQuY3BwICovLAorCQkJCTBGQzA5NzlBMTQ2QTc3MjAwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5oICovLAorCQkJCTBGQzA5NzhFMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdPU1JF
eGl0LmNwcCAqLywKKwkJCQkwRkMwOTc4RjE0NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdENv
bXBpbGVyLmNwcCAqLywKIAkJCQkwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyMzJfNjQuY3BwICovLAogCQkJCTBGQzA5NzZGMTQ2OTNBRUYwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuaCAqLywKIAkJCQkwRkMwOTc3MDE0NjkzQUVGMDBDRjI0NDIgLyog
REZHT1NSRXhpdENvbXBpbGVyNjQuY3BwICovLApAQCAtMjkyMyw2ICsyOTQxLDggQEAKIAkJCQkw
RkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDMDk3NkQxNDY4QUI0RTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21w
aWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMDk3OUMxNDZBNzcyNTAwQ0YyNDQyIC8qIERG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMwOTdBMjE0NkIy
OENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM0NTYsNiArMzQ3
NiwxMCBAQAogCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5Nzc2MTQ2OTQz
QjAwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkMwOTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRkMwOTc5MjE0NkE2RjczMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzA5NzlFMTQ2QjI3MjEwMENGMjQ0MiAvKiBERkdD
b3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkMwOTdBMTE0NkIy
OENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExpbmtCdWZmZXI7CiBjbGFzcyBSZXBhdGNo
QnVmZmVyOworbmFtZXNwYWNlIERGRyB7CitjbGFzcyBDb3JyZWN0YWJsZUp1bXBQb2ludDsKK30K
IAogdGVtcGxhdGUgPGNsYXNzIEFzc2VtYmxlclR5cGU+CiBjbGFzcyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyIHsKQEAgLTI1Nyw2ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgTGFiZWwgewog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOworICAgICAgICBmcmllbmQgY2xhc3Mg
REZHOjpDb3JyZWN0YWJsZUp1bXBQb2ludDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEp1bXA7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBMaW5rQnVmZmVyOwpAQCAtNDA1LDYgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgogICAgICAgICBmcmllbmQgY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhbGw7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBERkc6OkNvcnJlY3RhYmxlSnVtcFBvaW50OwogICAgICAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAgICBwdWJsaWM6CiAgICAgICAgIEp1bXAoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODYuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZTMyOwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2gzMjsKICAgICB1c2luZyBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6Y2FsbDsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6anVtcDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkRG91Ymxl
OwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdG9yZURvdWJsZTsKQEAgLTE0Nyw2ICsxNDgs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5jYWxsKCksIENh
bGw6OkxpbmthYmxlKTsKICAgICB9CiAKKyAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0
aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bworICAgIHZvaWQganVtcCh2b2lk
KiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuam1wX20oYWRkcmVzcyk7Cisg
ICAgfQorCiAgICAgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCiAgICAgewogICAgICAgICByZXR1
cm4gQ2FsbDo6ZnJvbVRhaWxKdW1wKGp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lv
biA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsKICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6c3RvcmUzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6Y2FsbDsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6anVtcDsKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkRG91YmxlOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlOwogICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpjb252ZXJ0SW50MzJUb0RvdWJsZTsKQEAgLTExOSw2ICsxMjAsMTMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIC8vIEFkZHJlc3Mg
aXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCisg
ICAgdm9pZCBqdW1wKHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIGp1bXAoQWRkcmVzcyhz
Y3JhdGNoUmVnaXN0ZXIpKTsKKyAgICB9CisKICAgICBDYWxsIHRhaWxSZWN1cnNpdmVDYWxsKCkK
ICAgICB7CiAgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3Rl
ZEltbVB0cigwKSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjptYWtlV3JpdGFibGUobV9zdGFydCwgbV9zaXplKTsKICAgICB9Ci0KKyAgICAKICAgICB+
UmVwYXRjaEJ1ZmZlcigpCiAgICAgewogICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtl
RXhlY3V0YWJsZShtX3N0YXJ0LCBtX3NpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyODAsNiArMTI4MCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVA1X0V2LCBHUk9VUDVfT1BfSk1QTiwgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9CisgICAgCisjaWYgIUNQVShYODZfNjQpCisgICAgdm9pZCBqbXBfbSh2b2lkKiBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQNV9Fdiwg
R1JPVVA1X09QX0pNUE4sIGFkZHJlc3MpOworICAgIH0KKyNlbmRpZgogCiAgICAgQXNzZW1ibGVy
TGFiZWwgam5lKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgogI2lu
Y2x1ZGUgIkRGR09TUkVudHJ5LmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUg
IkV2YWxDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1Y3Rpb24uaCIKQEAgLTM2MSwxOSArMzYyLDY5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoISFtX2RmZ0RhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2RmZ0RhdGEgPSBhZG9wdFB0cihuZXcgREZHRGF0YSk7CisgICAg
ICAgIH0KKyAgICAgICAgCiAgICAgICAgIERGRzo6T1NSRW50cnlEYXRhKiBhcHBlbmRERkdPU1JF
bnRyeURhdGEodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZz
ZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOwog
ICAgICAgICAgICAgREZHOjpPU1JFbnRyeURhdGEgZW50cnk7CiAgICAgICAgICAgICBlbnRyeS5t
X2J5dGVjb2RlSW5kZXggPSBieXRlY29kZUluZGV4OwogICAgICAgICAgICAgZW50cnkubV9tYWNo
aW5lQ29kZU9mZnNldCA9IG1hY2hpbmVDb2RlT2Zmc2V0OwotICAgICAgICAgICAgbV9kZmdPU1JF
bnRyeS5hcHBlbmQoZW50cnkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2RmZ09TUkVudHJ5Lmxh
c3QoKTsKKyAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRW50cnkuYXBwZW5kKGVudHJ5KTsKKyAg
ICAgICAgICAgIHJldHVybiAmbV9kZmdEYXRhLT5vc3JFbnRyeS5sYXN0KCk7CiAgICAgICAgIH0K
LSAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZERkdPU1JFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4g
bV9kZmdPU1JFbnRyeS5zaXplKCk7IH0KLSAgICAgICAgREZHOjpPU1JFbnRyeURhdGEqIGRmZ09T
UkVudHJ5RGF0YSh1bnNpZ25lZCBpKSB7IHJldHVybiAmbV9kZmdPU1JFbnRyeVtpXTsgfQorICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkRGR09TUkVudHJpZXMoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckVudHJ5LnNpemUoKTsKKyAgICAgICAgfQor
ICAgICAgICBERkc6Ok9TUkVudHJ5RGF0YSogZGZnT1NSRW50cnlEYXRhKHVuc2lnbmVkIGkpIHsg
cmV0dXJuICZtX2RmZ0RhdGEtPm9zckVudHJ5W2ldOyB9CiAgICAgICAgIERGRzo6T1NSRW50cnlE
YXRhKiBkZmdPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBiaW5hcnlTZWFyY2g8REZHOjpPU1JF
bnRyeURhdGEsIHVuc2lnbmVkLCBERkc6OmdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXg+KG1f
ZGZnT1NSRW50cnkuYmVnaW4oKSwgbV9kZmdPU1JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgp
OworICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxERkc6Ok9TUkVudHJ5RGF0YSwgdW5z
aWduZWQsIERGRzo6Z2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleD4obV9kZmdEYXRhLT5vc3JF
bnRyeS5iZWdpbigpLCBtX2RmZ0RhdGEtPm9zckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgYXBwZW5kT1NSRXhpdChjb25zdCBE
Rkc6Ok9TUkV4aXQmIG9zckV4aXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0Rh
dGFJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgbV9kZmdEYXRhLT5vc3JFeGl0LmFwcGVuZChv
c3JFeGl0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBhcHBlbmRTcGVjdWxh
dGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpOworICAgICAg
ICAgICAgbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5LmFwcGVuZChyZWNvdmVyeSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT1NSRXhpdHMoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBtX2RmZ0RhdGEtPm9zckV4aXQuc2l6ZSgpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlNwZWN1bGF0aW9u
UmVjb3ZlcmllcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9kZmdEYXRhKQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+c3Bl
Y3VsYXRpb25SZWNvdmVyeS5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIERG
Rzo6T1NSRXhpdCYgb3NyRXhpdCh1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1fZGZnRGF0YS0+b3NyRXhpdFtpbmRleF07CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgc3BlY3VsYXRpb25SZWNvdmVyeSh1
bnNpZ25lZCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZGZnRGF0YS0+
c3BlY3VsYXRpb25SZWNvdmVyeVtpbmRleF07CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC05OTYs
NyArMTA0NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklU
KQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAg
ICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBtX2RmZ09TUkVudHJ5OworICAgICAgICAKKyAg
ICAgICAgc3RydWN0IERGR0RhdGEgeworICAgICAgICAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlE
YXRhLCA0PiBvc3JFbnRyeTsKKyAgICAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4
aXQsIDE2PiBvc3JFeGl0OworICAgICAgICAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNv
dmVyeSwgND4gc3BlY3VsYXRpb25SZWNvdmVyeTsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAg
ICAgIE93blB0cjxERkdEYXRhPiBtX2RmZ0RhdGE7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxWYWx1ZVByb2ZpbGUsIDg+IG1fdmFs
dWVQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwx
MiBAQCBwdWJsaWM6CiAgICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBl
ZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgogICAgIHZvaWQgZGVidWdDYWxsKFZf
REZHRGVidWdPcGVyYXRpb25fRVAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQogICAgIHsKKyAg
ICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVl
Kj4obV9nbG9iYWxEYXRhLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFs
dWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMpKSk7CisgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkKLSAgICAgICAgICAgIHN0b3JlUHRyKEdQUklu
Zm86OnRvUmVnaXN0ZXIoaSksIG1fZ2xvYmFsRGF0YS0+ZGVidWdEYXRhQnVmZmVyICsgaSk7Cisg
ICAgICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzOyArK2kpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEt
PmRlYnVnRGF0YUJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAg
ICBzdG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgICAgIH0KICNpZiBDUFUoWDg2XzY0KQpAQCAtMTUyLDExICsxNTQsMTEgQEAgcHVibGljOgog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rp
b24pKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBjYWxsKEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmRl
YnVnRGF0YUJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBs
b2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkKLSAgICAgICAgICAgIGxvYWRQdHIobV9nbG9iYWxEYXRhLT5kZWJ1Z0Rh
dGFCdWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgICAgIGxvYWRQ
dHIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CiAgICAgfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmgiCisKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewor
CitDb2RlTG9jYXRpb25KdW1wIENvcnJlY3RhYmxlSnVtcFBvaW50Ojpjb2RlTG9jYXRpb25Gb3JS
ZXBhdGNoKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAoreworICAgIEFTU0VSVChtX21vZGUg
PT0gQ29ycmVjdGVkSnVtcCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoY29kZUJsb2Nr
LT5nZXRKSVRDb2RlKCkuZGF0YUFkZHJlc3NBdE9mZnNldChtX2NvZGVPZmZzZXQpKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludF9oCisjZGVmaW5l
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50X2gKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CisKKy8vIFRoaXMgaXMgYSB0eXBlLXNhZmUgdW5pb24gb2YgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgYW5kIENvZGVMb2NhdGlvbkp1bXAuCisvLyBGdXJ0aGVybW9yZSwgaXQgc3VwcG9ydHMgdGhl
IG5vdGlvbiBvZiBicmFuY2hpbmcgKHBvc3NpYmx5IGNvbmRpdGlvbmFsbHksIGJ1dAorLy8gYWxz
byBwb3NzaWJseSBqdW1waW5nIHVuY29uZGl0aW9uYWxseSkgdG8gYW4gb3V0LW9mLWxpbmUgcGF0
Y2hhYmxlIGp1bXAuCisvLyBUaHVzIGl0IGdvZXMgdGhyb3VnaCB0aHJlZSBzdGF0ZXM6CisvLwor
Ly8gMSkgTGFiZWwgb2YgdW5wYXRjaGFibGUgYnJhbmNoIG9yIGp1bXAgKGkuZS4gTWFjcm9Bc3Nl
bWJsZXI6Okp1bXApLgorLy8gMikgTGFiZWwgb2YgcGF0Y2hhYmxlIGp1bXAgKGkuZS4gTWFjcm9B
c3NlbWJsZXI6Okp1bXApLgorLy8gMykgQ29ycmVjdGVkIHBvc3QtbGlua2luZyBsYWJlbCBvZiBw
YXRjaGFibGUganVtcCAoaS5lLiBDb2RlTG9jYXRpb25KdW1wKS4KKy8vCisvLyBUaGUgc2V0dGlu
ZyBvZiBzdGF0ZSAoMSkgY29ycmVzcG9uZHMgdG8gcGxhbnRpbmcgdGhlIGluLWxpbmUgdW5wYXRj
aGFibGUKKy8vIGJyYW5jaCBvciBqdW1wLiBUaGUgc3RhdGUgdHJhbnNpdGlvbiAoMSktPigyKSBj
b3JyZXNwb25kcyB0byBsaW5raW5nIHRoZQorLy8gaW4tbGluZSBicmFuY2ggb3IganVtcCB0byB0
aGUgb3V0LW9mLWxpbmUgcGF0Y2hhYmxlIGp1bXAsIGFuZCByZWNvcmRpbmcKKy8vIHRoZSBsYXR0
ZXIncyBsYWJlbC4gVGhlIHN0YXRlIHRyYW5zaXRpb24gKDIpLT4oMykgY29ycmVzcG9uZHMgdG8g
cmVjb3JkaW5nCisvLyB0aGUgb3V0LW9mLWxpbmUgcGF0Y2hhYmxlIGp1bXAncyBsb2NhdGlvbiBh
ZnRlciBicmFuY2ggY29tcGFjdGlvbiBoYXMKKy8vIGNvbXBsZXRlZC4KKy8vCisvLyBZb3UgY2Fu
IGFsc28gZ28gZGlyZWN0bHkgZnJvbSB0aGUgZmlyc3Qgc3RhdGUgdG8gdGhlIHRoaXJkIHN0YXRl
LCBpZiB5b3UKKy8vIHdpc2ggdG8gdXNlIHRoaXMgY2xhc3MgZm9yIGluLWxpbmUgcGF0Y2hhYmxl
IGp1bXBzLgorCitjbGFzcyBDb3JyZWN0YWJsZUp1bXBQb2ludCB7CitwdWJsaWM6CisgICAgQ29y
cmVjdGFibGVKdW1wUG9pbnQoTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2spCisgICAgICAgIDog
bV9jb2RlT2Zmc2V0KGNoZWNrLm1fbGFiZWwubV9vZmZzZXQpCisjaWZuZGVmIE5ERUJVRworICAg
ICAgICAsIG1fbW9kZShJbml0aWFsSnVtcCkKKyNlbmRpZgorICAgIHsKKyNpZiBDUFUoQVJNX1RI
VU1CMikKKyAgICAgICAgbV90eXBlID0gY2hlY2subV90eXBlOworICAgICAgICBtX2NvbmRpdGlv
biA9IGNoZWNrLm1fY29uZGl0aW9uOworI2VuZGlmCisgICAgfQorICAgIAorICAgIHZvaWQgc3dp
dGNoVG9MYXRlSnVtcChNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaykKKyAgICB7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRpYWxKdW1wKTsKKyAgICAgICAg
bV9tb2RlID0gTGF0ZUp1bXA7CisjZW5kaWYKKyAgICAgICAgLy8gTGF0ZSBqdW1wcyBzaG91bGQg
b25seSBldmVyIGJlIHJlYWwganVtcHMuCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIEFT
U0VSVChjaGVjay5tX3R5cGUgPT0gQVJNdjdBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlvbkZpeGVk
U2l6ZSk7CisgICAgICAgIEFTU0VSVChjaGVjay5tX2NvbmRpdGlvbiA9PSBBUk12N0Fzc2VtYmxl
cjo6Q29uZGl0aW9uSW52YWxpZCk7CisjZW5kaWYKKyAgICAgICAgbV9jb2RlT2Zmc2V0ID0gY2hl
Y2subV9sYWJlbC5tX29mZnNldDsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb3JyZWN0SW5pdGlh
bEp1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21v
ZGUgPT0gSW5pdGlhbEp1bXApOworI2lmIENQVShBUk1fVEhVTUIyKQorICAgICAgICBBU1NFUlQo
bV90eXBlID09IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25GaXhlZFNpemUpOworICAg
ICAgICBBU1NFUlQobV9jb25kaXRpb24gPT0gQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbkludmFs
aWQpOworI2VuZGlmCisgICAgICAgIGNvcnJlY3RKdW1wKGxpbmtCdWZmZXIpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNvcnJlY3RMYXRlSnVtcChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fbW9kZSA9PSBMYXRlSnVtcCk7CisgICAgICAgIGNvcnJlY3RK
dW1wKGxpbmtCdWZmZXIpOworICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBp
bml0aWFsSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9tb2RlID09IEluaXRp
YWxKdW1wKTsKKyAgICAgICAgcmV0dXJuIGdldEp1bXAoKTsKKyAgICB9CisgICAgCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgbGF0ZUp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fbW9kZSA9PSBMYXRlSnVtcCk7CisgICAgICAgIHJldHVybiBnZXRKdW1wKCk7CisgICAgfQor
ICAgIAorICAgIENvZGVMb2NhdGlvbkp1bXAgY29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxv
Y2sqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBjb3JyZWN0SnVtcChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQorICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fbW9kZSA9
IENvcnJlY3RlZEp1bXA7CisjZW5kaWYKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxh
YmVsOworICAgICAgICBsYWJlbC5tX2xhYmVsLm1fb2Zmc2V0ID0gbV9jb2RlT2Zmc2V0OworICAg
ICAgICBtX2NvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxhYmVsKTsKKyAgICB9Cisg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZ2V0SnVtcCgpIGNvbnN0CisgICAgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wOworICAgICAgICBqdW1wLm1fbGFiZWwubV9v
ZmZzZXQgPSBtX2NvZGVPZmZzZXQ7CisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIGp1bXAu
bV90eXBlID0gbV9tb2RlID09IEluaXRpYWxKdW1wID8gbV90eXBlIDogQVJNdjdBc3NlbWJsZXI6
Okp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZTsKKyAgICAgICAganVtcC5tX2NvbmRpdGlvbiA9IG1f
bW9kZSA9PSBJbml0aWFsSnVtcCA/IG1fY29uZGl0aW9uIDogQVJNdjdBc3NlbWJsZXI6Okp1bXBO
b0NvbmRpdGlvbjsKKyNlbmRpZgorICAgICAgICByZXR1cm4ganVtcDsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgbV9jb2RlT2Zmc2V0OworCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgQVJN
djdBc3NlbWJsZXI6Okp1bXBUeXBlIG1fdHlwZSA6IDg7CisgICAgQVJNdjdBc3NlbWJsZXI6OkNv
bmRpdGlvbiBtX2NvbmRpdGlvbiA6IDg7CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICBl
bnVtIE1vZGUgeworICAgICAgICBJbml0aWFsSnVtcCwKKyAgICAgICAgTGF0ZUp1bXAsCisgICAg
ICAgIENvcnJlY3RlZEp1bXAKKyAgICB9OworCisgICAgTW9kZSBtX21vZGU7CisjZW5kaWYKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIERGR0NvcnJlY3RhYmxl
SnVtcFBvaW50X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI4LDcgKzEx
MjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKICAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwogICAgIH0KLSNlbHNlCisjZWxzZSAvLyBDUFUoWDg2
KSAtPiBzbyB0aGlzIGlzIHRoZSBDUFUoWDg2XzY0KSBjYXNlCiAgICAgdGVtcGxhdGU8R1BSUmVn
IGRlc3RBLCBHUFJSZWcgZGVzdEI+CiAgICAgdm9pZCBzZXR1cFR3b1N0dWJBcmdzKEdQUlJlZyBz
cmNBLCBHUFJSZWcgc3JjQikKICAgICB7CkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIG1faml0Lm1vdmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICAg
ICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBDUFUoWDg2KQogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhZGQgY2FsbHMgdG8gQysrIGhlbHBlciBmdW5jdGlvbnMuCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgYnJvYWRseSB2YWx1ZSByZXByZXNlbnRhdGlvbiBzcGVjaWZpYyAoaS5l
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwxOSBAQAogI2luY2x1ZGUgIkRG
R09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdSZWdpc3RlckJhbmsuaCIKICNpbmNsdWRlICJE
RkdTcGVjdWxhdGl2ZUpJVC5oIgorI2luY2x1ZGUgIkRGR1RodW5rcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCi12b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoU3BlY3Vs
YXRpdmVKSVQmIHNwZWN1bGF0aXZlKQordm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkK
IHsKLSAgICBPU1JFeGl0Q29tcGlsZXIgb3NyRXhpdENvbXBpbGVyKCp0aGlzKTsKLSAgICAKLSAg
ICBPU1JFeGl0VmVjdG9yOjpJdGVyYXRvciBleGl0c0l0ZXIgPSBzcGVjdWxhdGl2ZS5vc3JFeGl0
cygpLmJlZ2luKCk7Ci0gICAgT1NSRXhpdFZlY3Rvcjo6SXRlcmF0b3IgZXhpdHNFbmQgPSBzcGVj
dWxhdGl2ZS5vc3JFeGl0cygpLmVuZCgpOwotICAgIAotICAgIHdoaWxlIChleGl0c0l0ZXIgIT0g
ZXhpdHNFbmQpIHsKLSAgICAgICAgY29uc3QgT1NSRXhpdCYgZXhpdCA9ICpleGl0c0l0ZXI7Ci0g
ICAgICAgIG9zckV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCBzcGVjdWxhdGl2ZS5zcGVj
dWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4KSk7Ci0gICAgICAgICsrZXhpdHNJ
dGVyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZP
U1JFeGl0cygpOyArK2kpIHsKKyAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5v
c3JFeGl0KGkpOworICAgICAgICBleGl0Lm1fY2hlY2suaW5pdGlhbEp1bXAoKS5saW5rKHRoaXMp
OworICAgICAgICBzdG9yZTMyKEltbTMyKGkpLCAmZ2xvYmFsRGF0YSgpLT5vc3JFeGl0SW5kZXgp
OworICAgICAgICBleGl0Lm1fY2hlY2suc3dpdGNoVG9MYXRlSnVtcChqdW1wKCkpOwogICAgIH0K
IH0KIApAQCAtODEsNyArNzgsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keShTcGVj
dWxhdGl2CiAgICAgYm9vbCBjb21waWxlZFNwZWN1bGF0aXZlID0gc3BlY3VsYXRpdmUuY29tcGls
ZSgpOwogICAgIEFTU0VSVF9VTlVTRUQoY29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVj
dWxhdGl2ZSk7CiAKLSAgICBsaW5rT1NSRXhpdHMoc3BlY3VsYXRpdmUpOworICAgIGxpbmtPU1JF
eGl0cygpOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBtX2NhbGxzIHZlY3RvciwgY2hlY2tp
bmcgZm9yIGp1bXBzIHRvIGxpbmsuCiAgICAgYm9vbCBkaWRMaW5rRXhjZXB0aW9uQ2hlY2sgPSBm
YWxzZTsKQEAgLTE5Nyw2ICsxOTQsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVm
ZmVyJiBsaW5rQgogICAgICAgICBpbmZvLmNhY2hlZFByb3RvdHlwZS5zZXRMb2NhdGlvbihsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fcHJvdG9PYmopKTsKICAgICAgICAg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RH
ZXRzW2ldLm1fc2xvd0NhbGwpOwogICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgb3NyRXhpdFRodW5rID0gZ2xvYmFsRGF0YSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0
aW9uVGh1bmtHZW5lcmF0b3IpOworICAgIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsKG9zckV4aXRUaHVuay5jb2RlKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb2RlQmxvY2soKS0+bnVtYmVyT2ZPU1JFeGl0cygpOyArK2kpIHsKKyAgICAgICAg
T1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOworICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CisgICAgICAgIGV4aXQu
bV9jaGVjay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7CisgICAgfQogfQogCiB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlKEpJVENvZGUmIGVudHJ5KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDEzICs1NCw2IEBAIGNsYXNzIFNwZWN1bGF0aW9uUmVjb3Zlcnk7CiBzdHJ1Y3QgRW50cnlMb2Nh
dGlvbjsKIHN0cnVjdCBPU1JFeGl0OwogCi0jaWYgREZHX0VOQUJMRShWRVJCT1NFX1NQRUNVTEFU
SU9OX0ZBSUxVUkUpCi1zdHJ1Y3QgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvIHsKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jazsKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldDsKLX07Ci0jZW5k
aWYKLQogLy8gPT09IENhbGxMaW5rUmVjb3JkID09PQogLy8KIC8vIEEgcmVjb3JkIG9mIGEgY2Fs
bCBvdXQgZnJvbSBKSVQgY29kZSB0aGF0IG5lZWRzIGxpbmtpbmcgdG8gYSBoZWxwZXIgZnVuY3Rp
b24uCkBAIC0zMDMsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxpbmsoTGlua0J1ZmZl
ciYpOwogCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBsaW5rT1NSRXhpdHMoU3BlY3VsYXRpdmVK
SVQmKTsKKyAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIFRoZSBkYXRhZmxv
dyBncmFwaCBjdXJyZW50bHkgYmVpbmcgZ2VuZXJhdGVkLgogICAgIEdyYXBoJiBtX2dyYXBoOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgor
CisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK09TUkV4aXQ6Ok9TUkV4aXQoSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHJl
Y292ZXJ5SW5kZXgpCisgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKKyAgICAs
IG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKKyAgICAsIG1fY2hlY2soY2hlY2spCisgICAg
LCBtX25vZGVJbmRleChqaXQtPm1fY29tcGlsZUluZGV4KQorICAgICwgbV9jb2RlT3JpZ2luKGpp
dC0+bV9jb2RlT3JpZ2luRm9yT1NSKQorICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5k
ZXgpCisgICAgLCBtX2FyZ3VtZW50cyhqaXQtPm1fYXJndW1lbnRzLnNpemUoKSkKKyAgICAsIG1f
dmFyaWFibGVzKGppdC0+bV92YXJpYWJsZXMuc2l6ZSgpKQorICAgICwgbV9sYXN0U2V0T3BlcmFu
ZChqaXQtPm1fbGFzdFNldE9wZXJhbmQpCit7CisgICAgQVNTRVJUKG1fY29kZU9yaWdpbi5pc1Nl
dCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX2FyZ3Vt
ZW50cy5zaXplKCk7ICsrYXJndW1lbnQpCisgICAgICAgIG1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IGppdC0+Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3Ioaml0LT5tX2FyZ3VtZW50c1thcmd1bWVudF0p
OworICAgIGZvciAodW5zaWduZWQgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVz
LnNpemUoKTsgKyt2YXJpYWJsZSkKKyAgICAgICAgbV92YXJpYWJsZXNbdmFyaWFibGVdID0gaml0
LT5jb21wdXRlVmFsdWVSZWNvdmVyeUZvcihqaXQtPm1fdmFyaWFibGVzW3ZhcmlhYmxlXSk7Cit9
CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIE9TUkV4aXQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAor
eworICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fYXJndW1lbnRz
LnNpemUoKTsgKythcmd1bWVudCkKKyAgICAgICAgbV9hcmd1bWVudHNbYXJndW1lbnRdLmR1bXAo
b3V0KTsKKyAgICBmcHJpbnRmKG91dCwgIiA6ICIpOworICAgIGZvciAodW5zaWduZWQgdmFyaWFi
bGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKyt2YXJpYWJsZSkKKyAgICAg
ICAgbV92YXJpYWJsZXNbdmFyaWFibGVdLmR1bXAob3V0KTsKK30KKyNlbmRpZgorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiA5OTc1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxMCArMzAsMTMgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkRGR0NvcnJlY3RhYmxl
SnVtcFBvaW50LmgiCiAjaW5jbHVkZSAiREZHR1BSSW5mby5oIgogI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSAiVmFsdWVSZWNv
dmVyeS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewpAQCAtNzksMTAgKzgyLDEyIEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCB7
CiAgICAgT1NSRXhpdChKU1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CiAg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICAKICAgICBKU1ZhbHVl
U291cmNlIG1fanNWYWx1ZVNvdXJjZTsKICAgICBWYWx1ZVByb2ZpbGUqIG1fdmFsdWVQcm9maWxl
OwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fY2hlY2s7CisgICAgQ29ycmVjdGFi
bGVKdW1wUG9pbnQgbV9jaGVjazsKICAgICBOb2RlSW5kZXggbV9ub2RlSW5kZXg7CiAgICAgQ29k
ZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgCkBAIC0xMjYsNyArMTMxLDEzIEBAIHN0cnVjdCBP
U1JFeGl0IHsKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeSwgMD4gbV92YXJpYWJsZXM7CiAgICAg
aW50IG1fbGFzdFNldE9wZXJhbmQ7CiB9OwotdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8T1NSRXhp
dCwgMTY+IE9TUkV4aXRWZWN0b3I7CisKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJ
T05fRkFJTFVSRSkKK3N0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8geworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrOworICAgIE5vZGVJbmRleCBub2RlSW5kZXg7Cit9OworI2VuZGlm
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9u
IDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxF
KERGR19KSVQpICYmIFVTRShKU1ZBTFVFMzJfNjQpCiAKKyNpbmNsdWRlICJERkdPcGVyYXRpb25z
LmgiCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3Zl
cnkqIHJlY292ZXJ5KQogewogICAgIC8vIDEpIFByby1mb3JtYSBzdHVmZi4KLSAgICBleGl0Lm1f
Y2hlY2subGluaygmbV9qaXQpOwotCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAg
IGZwcmludGYoc3RkZXJyLCAiT1NSIGV4aXQgZm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9u
b2RlSW5kZXgpOwogICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVP
cmlnaW47IDsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIp
IHsKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNv
bnN0IAogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFKQogICAgIFNw
ZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0aW9uRmFp
bHVyZURlYnVnSW5mbzsKICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IG1faml0LmNvZGVCbG9j
aygpOwotICAgIGRlYnVnSW5mby0+ZGVidWdPZmZzZXQgPSBtX2ppdC5kZWJ1Z09mZnNldCgpOwor
ICAgIGRlYnVnSW5mby0+bm9kZUluZGV4ID0gZXhpdC5tX25vZGVJbmRleDsKICAgICAKICAgICBt
X2ppdC5kZWJ1Z0NhbGwoZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVi
dWdJbmZvKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpICYmIFVTRShKU1ZBTFVF
NjQpCiAKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9T
UkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIC8vIDEp
IFByby1mb3JtYSBzdHVmZi4KLSAgICBleGl0Lm1fY2hlY2subGluaygmbV9qaXQpOwotCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGZwcmludGYoc3RkZXJyLCAiT1NSIGV4aXQg
Zm9yIE5vZGUgQCVkICgiLCAoaW50KWV4aXQubV9ub2RlSW5kZXgpOwogICAgIGZvciAoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IDsgY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKQEAgLTQzLDEzICs0MywxMyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgLT4gJXAgIiwgY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwogICAgIH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIikg
YXQgSklUIG9mZnNldCAweCV4ICAiLCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIikgICIpOwogICAgIGV4aXQuZHVtcChzdGRlcnIpOwogI2VuZGlmCiAjaWYgREZH
X0VOQUJMRShWRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCiAgICAgU3BlY3VsYXRpb25GYWls
dXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZv
OwogICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gbV9qaXQuY29kZUJsb2NrKCk7Ci0gICAgZGVi
dWdJbmZvLT5kZWJ1Z09mZnNldCA9IG1faml0LmRlYnVnT2Zmc2V0KCk7CisgICAgZGVidWdJbmZv
LT5ub2RlSW5kZXggPSBleGl0Lm1fbm9kZUluZGV4OwogICAgIAogICAgIG1faml0LmRlYnVnQ2Fs
bChkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0luZm8pOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXIuaCIKKworI2lmIEVOQUJMRShERkdfSklU
KQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2lu
Y2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCitleHRlcm4gIkMiIHsKKwordm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAg
IHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKKyAgICBPU1JF
eGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CisgICAgCisgICAgU3Bl
Y3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOworICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJ
bmRleCkKKyAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5
KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CisKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCisgICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSBmb3IgY29k
ZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgY29kZUJsb2NrKTsKKyNlbmRpZgorCisgICAgewor
ICAgICAgICBBc3NlbWJseUhlbHBlcnMgaml0KGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CisgICAg
ICAgIE9TUkV4aXRDb21waWxlciBleGl0Q29tcGlsZXIoaml0KTsKKyAgICAgICAgCisgICAgICAg
IGV4aXRDb21waWxlci5jb21waWxlRXhpdChleGl0LCByZWNvdmVyeSk7CisgICAgICAgIAorICAg
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICAgICAg
ZXhpdC5tX2NvZGUgPSBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKKyAgICB9CisgICAgCisg
ICAgeworICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKKyAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoZXhpdC5tX2NoZWNrLmNvZGVMb2NhdGlvbkZvclJl
cGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICB9CisgICAgCisgICAgZ2xvYmFsRGF0YS0+b3NyRXhp
dEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OworfQorCit9IC8vIGV4dGVybiAiQyIKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmgJKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsMTEgQEAKICNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRl
ICJERkdPU1JFeGl0LmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CisKK25hbWVzcGFjZSBERkcgewogCiBjbGFz
cyBPU1JFeGl0Q29tcGlsZXIgewogcHVibGljOgpAQCAtNDgsNiArNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICBBc3NlbWJseUhlbHBlcnMmIG1faml0OwogfTsKIAorZXh0ZXJuICJDIiB7Cit2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSopOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgogI2luY2x1
ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03ODMsNyArNzg0
LDcgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIFNwZWN1
bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRp
b25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUg
PSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgcHJpbnRmKCJTcGVjdWxhdGlvbiBmYWls
dXJlIGluICVwIGF0IDB4JXggd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgc3VjY2Vz
cy9mYWlsICV1LyV1XG4iLCBjb2RlQmxvY2ssIGRlYnVnSW5mby0+ZGVidWdPZmZzZXQsIGFsdGVy
bmF0aXZlID8gYWx0ZXJuYXRpdmUtPmV4ZWN1dGVDb3VudGVyKCkgOiAwLCBhbHRlcm5hdGl2ZSA/
IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIDogMCwgYWx0ZXJuYXRp
dmUgPyBhbHRlcm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkgOiAwLCBjb2RlQmxv
Y2stPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5zcGVjdWxhdGl2ZUZh
aWxDb3VudGVyKCkpOworICAgIHByaW50ZigiU3BlY3VsYXRpb24gZmFpbHVyZSBpbiAlcCBhdCBA
JXUgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9
ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgc3VjY2Vzcy9mYWlsICV1LyV1XG4i
LCBjb2RlQmxvY2ssIGRlYnVnSW5mby0+bm9kZUluZGV4LCBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0
aXZlLT5leGVjdXRlQ291bnRlcigpIDogMCwgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSA6IDAsIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUt
Pm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpIDogMCwgY29kZUJsb2NrLT5zcGVjdWxhdGl2ZVN1
Y2Nlc3NDb3VudGVyKCksIGNvZGVCbG9jay0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMzUgKzYyLDYg
QEAgdm9pZCBWYWx1ZVNvdXJjZTo6ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiB9CiAjZW5kaWYKIAot
T1NSRXhpdDo6T1NSRXhpdChKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIFZhbHVlUHJvZmls
ZSogdmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaywgU3BlY3VsYXRpdmVK
SVQqIGppdCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKLSAgICA6IG1fanNWYWx1ZVNvdXJjZShq
c1ZhbHVlU291cmNlKQotICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQotICAgICwg
bV9jaGVjayhjaGVjaykKLSAgICAsIG1fbm9kZUluZGV4KGppdC0+bV9jb21waWxlSW5kZXgpCi0g
ICAgLCBtX2NvZGVPcmlnaW4oaml0LT5tX2NvZGVPcmlnaW5Gb3JPU1IpCi0gICAgLCBtX3JlY292
ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKLSAgICAsIG1fYXJndW1lbnRzKGppdC0+bV9hcmd1bWVu
dHMuc2l6ZSgpKQotICAgICwgbV92YXJpYWJsZXMoaml0LT5tX3ZhcmlhYmxlcy5zaXplKCkpCi0g
ICAgLCBtX2xhc3RTZXRPcGVyYW5kKGppdC0+bV9sYXN0U2V0T3BlcmFuZCkKLXsKLSAgICBBU1NF
UlQobV9jb2RlT3JpZ2luLmlzU2V0KCkpOwotICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAw
OyBhcmd1bWVudCA8IG1fYXJndW1lbnRzLnNpemUoKTsgKythcmd1bWVudCkKLSAgICAgICAgbV9h
cmd1bWVudHNbYXJndW1lbnRdID0gaml0LT5jb21wdXRlVmFsdWVSZWNvdmVyeUZvcihqaXQtPm1f
YXJndW1lbnRzW2FyZ3VtZW50XSk7Ci0gICAgZm9yICh1bnNpZ25lZCB2YXJpYWJsZSA9IDA7IHZh
cmlhYmxlIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK3ZhcmlhYmxlKQotICAgICAgICBtX3Zhcmlh
Ymxlc1t2YXJpYWJsZV0gPSBqaXQtPmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGppdC0+bV92YXJp
YWJsZXNbdmFyaWFibGVdKTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLXZvaWQgT1NSRXhpdDo6ZHVt
cChGSUxFKiBvdXQpIGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2FyZ3VtZW50KQotICAgICAgICBtX2FyZ3Vt
ZW50c1thcmd1bWVudF0uZHVtcChvdXQpOwotICAgIGZwcmludGYob3V0LCAiIDogIik7Ci0gICAg
Zm9yICh1bnNpZ25lZCB2YXJpYWJsZSA9IDA7IHZhcmlhYmxlIDwgbV92YXJpYWJsZXMuc2l6ZSgp
OyArK3ZhcmlhYmxlKQotICAgICAgICBtX3ZhcmlhYmxlc1t2YXJpYWJsZV0uZHVtcChvdXQpOwot
fQotI2VuZGlmCi0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZURvdWJsZUJy
YW5jaChOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6
RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKICAgICBOb2RlJiBicmFuY2hOb2RlID0gYXQo
YnJhbmNoTm9kZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDk5NzU3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTkgKzEz
Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGUoKTsKICAgICB2b2lkIGxpbmtPU1JFbnRy
aWVzKExpbmtCdWZmZXImKTsKIAotICAgIC8vIFJldHJpZXZlIHRoZSBsaXN0IG9mIGJhaWwtb3V0
cyBmcm9tIHRoZSBzcGVjdWxhdGl2ZSBwYXRoLAotICAgIC8vIGFuZCBhZGRpdGlvbmFsIHJlY292
ZXJ5IGluZm9ybWF0aW9uLgotICAgIE9TUkV4aXRWZWN0b3ImIG9zckV4aXRzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX29zckV4aXRzOwotICAgIH0KLSAgICBTcGVjdWxhdGlvblJlY292ZXJ5
KiBzcGVjdWxhdGlvblJlY292ZXJ5KHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIC8vIE9T
UkV4aXQ6Om1fcmVjb3ZlcnlJbmRleCBpcyBvZmZzZXQgYnkgMSwKLSAgICAgICAgLy8gMCBtZWFu
cyBubyByZWNvdmVyeS4KLSAgICAgICAgcmV0dXJuIGluZGV4ID8gJm1fc3BlY3VsYXRpb25SZWNv
dmVyeUxpc3RbaW5kZXggLSAxXSA6IDA7Ci0gICAgfQotCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBz
cGVjdWxhdGl2ZSBvcGVyYW5kIHR5cGVzLCBiZWxvdywgdG8gZmlsbCBvcGVyYW5kIHRvCiAgICAg
Ly8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxhdGlvbiBj
aGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50KE5vZGVJbmRleCwg
RGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKQEAgLTIzOSwxNSArMjI2LDE1IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fb3NyRXhpdHMuYXBwZW5kKE9TUkV4aXQoanNWYWx1ZVNvdXJjZSwgbV9qaXQu
dmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMpKTsKKyAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChqc1ZhbHVlU291cmNlLCBt
X2ppdC52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOwogICAg
IH0KICAgICAvLyBBZGQgYSBzcGVjdWxhdGlvbiBjaGVjayB3aXRoIGFkZGl0aW9uYWwgcmVjb3Zl
cnkuCiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJj
ZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwg
Y29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYgcmVjb3ZlcnkpCiAgICAgewogICAgICAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3BlY3VsYXRp
b25SZWNvdmVyeUxpc3QuYXBwZW5kKHJlY292ZXJ5KTsKLSAgICAgICAgbV9vc3JFeGl0cy5hcHBl
bmQoT1NSRXhpdChqc1ZhbHVlU291cmNlLCBtX2ppdC52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4
KSwganVtcFRvRmFpbCwgdGhpcywgbV9zcGVjdWxhdGlvblJlY292ZXJ5TGlzdC5zaXplKCkpKTsK
KyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkocmVj
b3ZlcnkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0
KGpzVmFsdWVTb3VyY2UsIG1faml0LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBqdW1wVG9G
YWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlvblJlY292ZXJp
ZXMoKSkpOwogICAgIH0KIAogICAgIC8vIENhbGxlZCB3aGVuIHdlIHN0YXRpY2FsbHkgZGV0ZXJt
aW5lIHRoYXQgYSBzcGVjdWxhdGlvbiB3aWxsIGZhaWwuCkBAIC0yNzAsMTIgKzI1Nyw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gd2lsbCBtYWtlIGNvbmZsaWN0aW5nIHNwZWN1bGF0aW9ucyBhYm91dCB0
aGUgc2FtZSBvcGVyYW5kKS4gSW4gc3VjaCBjYXNlcyB0aGlzCiAgICAgLy8gZmxhZyBpcyBjbGVh
cmVkLCBpbmRpY2F0aW5nIG5vIGZ1cnRoZXIgY29kZSBnZW5lcmF0aW9uIHNob3VsZCB0YWtlIHBs
YWNlLgogICAgIGJvb2wgbV9jb21waWxlT2theTsKLSAgICAvLyBUaGlzIHZlY3RvciB0cmFja3Mg
YmFpbC1vdXRzIGZyb20gdGhlIHNwZWN1bGF0aXZlIHBhdGggdG8gdGhlIG9sZCBKSVQuCi0gICAg
T1NSRXhpdFZlY3RvciBtX29zckV4aXRzOwotICAgIC8vIFNvbWUgYmFpbC1vdXRzIG5lZWQgdG8g
cmVjb3JkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVjb3JkaW5nIHNwZWNpZmljIHJlY292ZXJ5
Ci0gICAgLy8gdG8gYmUgcGVyZm9ybWVkIChmb3IgZXhhbXBsZSwgb24gZGV0ZWN0ZWQgb3ZlcmZs
b3cgZnJvbSBhbiBhZGQsIHdlIG1heSBuZWVkIHRvCi0gICAgLy8gcmV2ZXJzZSB0aGUgYWRkaXRp
b24gaWYgYW4gb3BlcmFuZCBpcyBiZWluZyBvdmVyd3JpdHRlbikuCi0gICAgVmVjdG9yPFNwZWN1
bGF0aW9uUmVjb3ZlcnksIDE2PiBtX3NwZWN1bGF0aW9uUmVjb3ZlcnlMaXN0OwogICAgIAogICAg
IC8vIFRyYWNraW5nIGZvciB3aGljaCBub2RlcyBhcmUgY3VycmVudGx5IGhvbGRpbmcgdGhlIHZh
bHVlcyBvZiBhcmd1bWVudHMgYW5kIGJ5dGVjb2RlCiAgICAgLy8gb3BlcmFuZC1pbmRleGVkIHZh
cmlhYmxlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR1RodW5r
cy5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdGUFJJbmZvLmgiCisj
aW5jbHVkZSAiREZHR1BSSW5mby5oIgorI2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlci5oIgor
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIE1hY3JvQXNzZW1ibGVyIGpp
dDsKKyAgICAKKyAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2Rl
ZEpTVmFsdWUqPihnbG9iYWxEYXRhLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnMpKSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5zdG9yZURvdWJsZShG
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgfQorICAgIAorICAg
IC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCisjaWYgQ1BVKFg4NikKKyAgICBqaXQucG9rZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CisjZWxzZQorICAgIGppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2VuZGlmCisgICAg
CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoKTsKKyAg
ICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM7ICsraSkgeworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgIGppdC5sb2FkRG91YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpCisgICAgICAgIGppdC5sb2FkUHRyKGJ1ZmZlciArIGks
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOworICAgIAorICAgIGppdC5qdW1wKCZnbG9iYWxEYXRh
LT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICAKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0
aW9uQ2FsbCwgY29tcGlsZU9TUkV4aXQpOworICAgIAorICAgIHJldHVybiBwYXRjaEJ1ZmZlci5m
aW5hbGl6ZUNvZGUoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHVGh1bmtzX2gKKyNkZWZpbmUgREZHVGh1
bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQp
CisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIERGRyB7CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKKworI2VuZGlmIC8vIERGR1RodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAkocmV2aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkgKyBvZmZzZXQ7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQqIGRhdGFBZGRy
ZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKG9mZnNldCA8IHNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbigpKSArIG9mZnNldDsKKyAgICAg
ICAgfQogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgb2Zmc2V0IGluIGJ5
dGVzIG9mICdwb2ludGVySW50b0NvZGUnIGludG8KICAgICAgICAgLy8gdGhpcyBibG9jayBvZiBj
b2RlLiAgVGhlIHBvaW50ZXIgcHJvdmlkZWQgbXVzdCBiZSBhIHBvaW50ZXIgaW50byB0aGlzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gOTk3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDEwICsyNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0
aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7Ci0jaWZuZGVmIE5ERUJV
RwotICAgICAgICBpbnQ2NF90IGRlYnVnRGF0YUJ1ZmZlcls2NF07Ci0jZW5kaWYKICNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICAgICAgdWludDMyX3Qgb3NyRXhpdEluZGV4OworICAgICAgICB2b2lk
KiBvc3JFeGl0SnVtcERlc3RpbmF0aW9uOwogICAgICAgICBWZWN0b3I8dm9pZCo+IHNjcmF0Y2hC
dWZmZXJzOwogICAgICAgICBzaXplX3Qgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXI7CiAgICAgICAg
IAo=
</data>
<flag name="review"
          id="113002"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>