<?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>90053</bug_id>
          
          <creation_ts>2012-06-27 00:44:26 -0700</creation_ts>
          <short_desc>Javascript SHA-512 gives wrong hash on second and subsequent runs unless Web Inspector Javascript Debugging is on</short_desc>
          <delta_ts>2012-06-27 22:16:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.7</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="C Dan">bi5FiEJOYWtA</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658423</commentid>
    <comment_count>0</comment_count>
      <attachid>149698</attachid>
    <who name="C Dan">bi5FiEJOYWtA</who>
    <bug_when>2012-06-27 00:44:26 -0700</bug_when>
    <thetext>Created attachment 149698
Peasy test code and two Javasc SHA-512 implems

(Test file enc.)

If I run Javasc SHA-512 twice or more on a Webkit browser, only the first hash is correct. Ironically, this means the usual hash method of an initial test won&apos;t work because that passes but the real one then mismatches.

The test file runs two different SHA-512 implems, hashing the word &quot;test&quot; separately eight times for each. On non-Webk browsers (eg, Firefox) all 16 hashes are identical and match the expected result. On Webk browsers (eg, iCab) the first in each set are correct, but the remaining 14 are wrong -- but match each other.

Tiny Webkit (eg, Mobile Safari) is fine.

The beardy-weirdy thing is that I discovered by chance the tests work if you switch on Javasc Debugging in the Web Inspector. (My wild guess is that the non-debug Javasc is optimised to the point of reusing some info it should have cleared instead. This would explain why it&apos;s the same incorrect hash each time rather than random results.)

If the test file doesn&apos;t work, you can also see the effect at http://jssha.sourceforge.net/ -- input &quot;test&quot; in the Hashing Demo section and select SHA-512. Now delete and retype &quot;test&quot; and the hash changes. Switch on Javasc Debugging and try again and the hash is solid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658843</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 13:49:37 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Created an attachment (id=149698) [details]
&gt; Peasy test code and two Javasc SHA-512 implems
&gt; 
&gt; (Test file enc.)
&gt; 
&gt; If I run Javasc SHA-512 twice or more on a Webkit browser, only the first hash is correct. Ironically, this means the usual hash method of an initial test won&apos;t work because that passes but the real one then mismatches.
&gt; 
&gt; The test file runs two different SHA-512 implems, hashing the word &quot;test&quot; separately eight times for each. On non-Webk browsers (eg, Firefox) all 16 hashes are identical and match the expected result. On Webk browsers (eg, iCab) the first in each set are correct, but the remaining 14 are wrong -- but match each other.
&gt; 
&gt; Tiny Webkit (eg, Mobile Safari) is fine.
&gt; 
&gt; The beardy-weirdy thing is that I discovered by chance the tests work if you switch on Javasc Debugging in the Web Inspector. (My wild guess is that the non-debug Javasc is optimised to the point of reusing some info it should have cleared instead. This would explain why it&apos;s the same incorrect hash each time rather than random results.)
&gt; 
&gt; If the test file doesn&apos;t work, you can also see the effect at http://jssha.sourceforge.net/ -- input &quot;test&quot; in the Hashing Demo section and select SHA-512. Now delete and retype &quot;test&quot; and the hash changes. Switch on Javasc Debugging and try again and the hash is solid.

Thanks for finding this!

JavaScriptCore has roughly speaking two ways of executing JS code: the baseline way (unoptimized) and the DFG way (DFG = Data Flow Graph JIT, i.e. optimized).  We switch between baseline and DFG on the fly.  They are *supposed* to execute code identically modulo that DFG is faster.  What you found is almost certainly a DFG bug - it is failing to obey correct JS semantics, and hence appears to execute code differently than baseline.

Because the DFG kicks in only after your code has executed for some time, it is often the case that the first execution will run in baseline and subsequent executions run in DFG.  Hence your observation that the first run is right but the others are wrong.

Currently, turning on the debugger turns off the DFG.  Hence your observation that turning on the debugger &quot;fixes&quot; the problem.

I&apos;ll try to fix this ASAP.  And again, thanks for the detailed bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658950</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 16:17:49 -0700</bug_when>
    <thetext>Found the problem: it appears that our logic for recovering unsigned 32-bit integers on OSR exit is totally broken. :-/  I&apos;m in the process of testing a patch to unbreak it, and return it to its former glory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658956</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 16:33:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/11764613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658962</commentid>
    <comment_count>4</comment_count>
      <attachid>149818</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 16:41:25 -0700</bug_when>
    <thetext>Created attachment 149818
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658973</commentid>
    <comment_count>5</comment_count>
      <attachid>149818</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-27 16:52:26 -0700</bug_when>
    <thetext>Comment on attachment 149818
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659020</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 17:51:53 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/121391</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659189</commentid>
    <comment_count>7</comment_count>
    <who name="C Dan">bi5FiEJOYWtA</who>
    <bug_when>2012-06-27 22:16:07 -0700</bug_when>
    <thetext>Hurrah! Trem exc. Thanks for the fix and the interesting explan.

(By coincidence the Blowfish Javasc I was playing with alongside SHA-512 turned out to have a slight bug in the implem -- nothing to do with Webk -- so neither popular well-established lib worked and I thought I&apos;d gone bonkers.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>149698</attachid>
            <date>2012-06-27 00:44:26 -0700</date>
            <delta_ts>2012-06-27 00:44:26 -0700</delta_ts>
            <desc>Peasy test code and two Javasc SHA-512 implems</desc>
            <filename>sha512_test.html</filename>
            <type>text/html</type>
            <size>25068</size>
            <attacher name="C Dan">bi5FiEJOYWtA</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPgo8aGVh
ZD4KPHRpdGxlPnNoYTUxMiB0ZXN0PC90aXRsZT4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij48IS0tCgpmdW5jdGlvbiB0ZXN0X2pzc2hhKCkKewovLyBzZXQKdmFyIGY7CnZhciB0ZXN0
X3RleHQgPSAidGVzdCI7CnZhciB0ZXN0X2tub3duID0gImVlMjZiMGRkNGFmN2U3NDlhYTFhOGVl
M2MxMGFlOTkyM2Y2MTg5ODA3NzJlNDczZjg4MTlhNWQ0OTQwZTBkYjI3YWMxODVmOGEwZTFkNWY4
NGY4OGJjODg3ZmQ2N2IxNDM3MzJjMzA0Y2M1ZmE5YWQ4ZTZmNTdmNTAwMjhhOGZmIjsKCi8vIHJ1
biAoYnQgdmVyc2lvbikKZm9yIChmID0gMDsgZiA8IDg7IGYgKyspCnsKLy8gc2V0CnRlc3RfYnQg
PSBuZXcganNTSEEodGVzdF90ZXh0LCAiQVNDSUkiKS5nZXRIYXNoKCJTSEEtNTEyIiwgIkhFWCIp
OwoKLy8gY29tcAppZiAodGVzdF9idCA9PSB0ZXN0X2tub3duKSB7IGRvY3VtZW50LndyaXRlKCI8
cD48dHQ+IiArIGYgKyAiIChCVCk6IHBhc3MgLS0gIiArIHRlc3RfYnQgKyAiPC90dD48L3A+Iik7
IH0gZWxzZSB7IGRvY3VtZW50LndyaXRlbG4oIjxwPjx0dD4iICsgZiArICIgKEJUKTogRkFJTCAt
LSAiICsgdGVzdF9idCArICI8L3R0PjwvcD4iKTsgfQp9CgovLyBydW4gKHBhaiB2ZXJzaW9uKQpm
b3IgKGYgPSAwOyBmIDwgODsgZiArKykKewovLyBzZXQKdGVzdF9wYWogPSBoZXhfc2hhNTEyKHRl
c3RfdGV4dCk7CgovLyBjb21wCmlmICh0ZXN0X3BhaiA9PSB0ZXN0X2tub3duKSB7IGRvY3VtZW50
LndyaXRlKCI8cD48dHQ+IiArIGYgKyAiIChQSik6IHBhc3MgLS0gIiArIHRlc3RfcGFqICsgIjwv
dHQ+PC9wPiIpOyB9IGVsc2UgeyBkb2N1bWVudC53cml0ZWxuKCI8cD48dHQ+IiArIGYgKyAiIChQ
Sik6IEZBSUwgLS0gIiArIHRlc3RfcGFqICsgIjwvdHQ+PC9wPiIpOyB9Cn0KCi8vIGVuZApkb2N1
bWVudC53cml0ZWxuKCI8cD50ZXN0IGZpbmlzaGVkPC9wPiIpOwp9CgovLyBTSEEtNTEyIChCVCB2
ZXJzaW9uKQoKLyogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTSEEgZmFtaWx5
IG9mIGhhc2hlcywgYXMgZGVmaW5lZCBpbiBGSVBTCiAqIFBVQiAxODAtMiBhcyB3ZWxsIGFzIHRo
ZSBjb3JyZXNwb25kaW5nIEhNQUMgaW1wbGVtZW50YXRpb24gYXMgZGVmaW5lZCBpbgogKiBGSVBT
IFBVQiAxOThhCiAqCiAqIFZlcnNpb24gMS4zIENvcHlyaWdodCBCcmlhbiBUdXJlayAyMDA4LTIw
MTAKICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlCiAqIFNlZSBodHRwOi8vanNz
aGEuc291cmNlZm9yZ2UubmV0LyBmb3IgbW9yZSBpbmZvcm1hdGlvbgogKgogKiBTZXZlcmFsIGZ1
bmN0aW9ucyB0YWtlbiBmcm9tIFBhdWwgSm9obnNvbgogKi8KKGZ1bmN0aW9uKCl7dmFyIGNoYXJT
aXplPTgsYjY0cGFkPSIiLGhleENhc2U9MCxJbnRfNjQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmhpZ2hP
cmRlcj1hO3RoaXMubG93T3JkZXI9Yn0sc3RyMmJpbmI9ZnVuY3Rpb24oYSl7dmFyIGI9W10sbWFz
az0oMTw8Y2hhclNpemUpLTEsbGVuZ3RoPWEubGVuZ3RoKmNoYXJTaXplLGk7Zm9yKGk9MDtpPGxl
bmd0aDtpKz1jaGFyU2l6ZSl7YltpPj41XXw9KGEuY2hhckNvZGVBdChpL2NoYXJTaXplKSZtYXNr
KTw8KDMyLWNoYXJTaXplLShpJTMyKSl9cmV0dXJuIGJ9LGhleDJiaW5iPWZ1bmN0aW9uKGEpe3Zh
ciBiPVtdLGxlbmd0aD1hLmxlbmd0aCxpLG51bTtmb3IoaT0wO2k8bGVuZ3RoO2krPTIpe251bT1w
YXJzZUludChhLnN1YnN0cihpLDIpLDE2KTtpZighaXNOYU4obnVtKSl7YltpPj4zXXw9bnVtPDwo
MjQtKDQqKGklOCkpKX1lbHNle3JldHVybiJJTlZBTElEIEhFWCBTVFJJTkcifX1yZXR1cm4gYn0s
YmluYjJoZXg9ZnVuY3Rpb24oYSl7dmFyIGI9KGhleENhc2UpPyIwMTIzNDU2Nzg5QUJDREVGIjoi
MDEyMzQ1Njc4OWFiY2RlZiIsc3RyPSIiLGxlbmd0aD1hLmxlbmd0aCo0LGksc3JjQnl0ZTtmb3Io
aT0wO2k8bGVuZ3RoO2krPTEpe3NyY0J5dGU9YVtpPj4yXT4+KCgzLShpJTQpKSo4KTtzdHIrPWIu
Y2hhckF0KChzcmNCeXRlPj40KSYweEYpK2IuY2hhckF0KHNyY0J5dGUmMHhGKX1yZXR1cm4gc3Ry
fSxiaW5iMmI2ND1mdW5jdGlvbihhKXt2YXIgYj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVph
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIrIjAxMjM0NTY3ODkrLyIsc3RyPSIiLGxlbmd0aD1h
Lmxlbmd0aCo0LGksaix0cmlwbGV0O2ZvcihpPTA7aTxsZW5ndGg7aSs9Myl7dHJpcGxldD0oKChh
W2k+PjJdPj44KigzLWklNCkpJjB4RkYpPDwxNil8KCgoYVtpKzE+PjJdPj44KigzLShpKzEpJTQp
KSYweEZGKTw8OCl8KChhW2krMj4+Ml0+PjgqKDMtKGkrMiklNCkpJjB4RkYpO2ZvcihqPTA7ajw0
O2orPTEpe2lmKGkqOCtqKjY8PWEubGVuZ3RoKjMyKXtzdHIrPWIuY2hhckF0KCh0cmlwbGV0Pj42
KigzLWopKSYweDNGKX1lbHNle3N0cis9YjY0cGFkfX19cmV0dXJuIHN0cn0scm90cj1mdW5jdGlv
bih4LG4pe2lmKG48PTMyKXtyZXR1cm4gbmV3IEludF82NCgoeC5oaWdoT3JkZXI+Pj5uKXwoeC5s
b3dPcmRlcjw8KDMyLW4pKSwoeC5sb3dPcmRlcj4+Pm4pfCh4LmhpZ2hPcmRlcjw8KDMyLW4pKSl9
ZWxzZXtyZXR1cm4gbmV3IEludF82NCgoeC5sb3dPcmRlcj4+Pm4pfCh4LmhpZ2hPcmRlcjw8KDMy
LW4pKSwoeC5oaWdoT3JkZXI+Pj5uKXwoeC5sb3dPcmRlcjw8KDMyLW4pKSl9fSxzaHI9ZnVuY3Rp
b24oeCxuKXtpZihuPD0zMil7cmV0dXJuIG5ldyBJbnRfNjQoeC5oaWdoT3JkZXI+Pj5uLHgubG93
T3JkZXI+Pj5ufCh4LmhpZ2hPcmRlcjw8KDMyLW4pKSl9ZWxzZXtyZXR1cm4gbmV3IEludF82NCgw
LHguaGlnaE9yZGVyPDwoMzItbikpfX0sY2g9ZnVuY3Rpb24oeCx5LHope3JldHVybiBuZXcgSW50
XzY0KCh4LmhpZ2hPcmRlciZ5LmhpZ2hPcmRlcileKH54LmhpZ2hPcmRlciZ6LmhpZ2hPcmRlciks
KHgubG93T3JkZXImeS5sb3dPcmRlcileKH54Lmxvd09yZGVyJnoubG93T3JkZXIpKX0sbWFqPWZ1
bmN0aW9uKHgseSx6KXtyZXR1cm4gbmV3IEludF82NCgoeC5oaWdoT3JkZXImeS5oaWdoT3JkZXIp
Xih4LmhpZ2hPcmRlciZ6LmhpZ2hPcmRlcileKHkuaGlnaE9yZGVyJnouaGlnaE9yZGVyKSwoeC5s
b3dPcmRlciZ5Lmxvd09yZGVyKV4oeC5sb3dPcmRlciZ6Lmxvd09yZGVyKV4oeS5sb3dPcmRlciZ6
Lmxvd09yZGVyKSl9LHNpZ21hMD1mdW5jdGlvbih4KXt2YXIgYT1yb3RyKHgsMjgpLHJvdHIzND1y
b3RyKHgsMzQpLHJvdHIzOT1yb3RyKHgsMzkpO3JldHVybiBuZXcgSW50XzY0KGEuaGlnaE9yZGVy
XnJvdHIzNC5oaWdoT3JkZXJecm90cjM5LmhpZ2hPcmRlcixhLmxvd09yZGVyXnJvdHIzNC5sb3dP
cmRlcl5yb3RyMzkubG93T3JkZXIpfSxzaWdtYTE9ZnVuY3Rpb24oeCl7dmFyIGE9cm90cih4LDE0
KSxyb3RyMTg9cm90cih4LDE4KSxyb3RyNDE9cm90cih4LDQxKTtyZXR1cm4gbmV3IEludF82NChh
LmhpZ2hPcmRlcl5yb3RyMTguaGlnaE9yZGVyXnJvdHI0MS5oaWdoT3JkZXIsYS5sb3dPcmRlcl5y
b3RyMTgubG93T3JkZXJecm90cjQxLmxvd09yZGVyKX0sZ2FtbWEwPWZ1bmN0aW9uKHgpe3ZhciBh
PXJvdHIoeCwxKSxyb3RyOD1yb3RyKHgsOCksc2hyNz1zaHIoeCw3KTtyZXR1cm4gbmV3IEludF82
NChhLmhpZ2hPcmRlcl5yb3RyOC5oaWdoT3JkZXJec2hyNy5oaWdoT3JkZXIsYS5sb3dPcmRlcl5y
b3RyOC5sb3dPcmRlcl5zaHI3Lmxvd09yZGVyKX0sZ2FtbWExPWZ1bmN0aW9uKHgpe3ZhciBhPXJv
dHIoeCwxOSkscm90cjYxPXJvdHIoeCw2MSksc2hyNj1zaHIoeCw2KTtyZXR1cm4gbmV3IEludF82
NChhLmhpZ2hPcmRlcl5yb3RyNjEuaGlnaE9yZGVyXnNocjYuaGlnaE9yZGVyLGEubG93T3JkZXJe
cm90cjYxLmxvd09yZGVyXnNocjYubG93T3JkZXIpfSxzYWZlQWRkXzI9ZnVuY3Rpb24oeCx5KXt2
YXIgYSxtc3csbG93T3JkZXIsaGlnaE9yZGVyO2E9KHgubG93T3JkZXImMHhGRkZGKSsoeS5sb3dP
cmRlciYweEZGRkYpO21zdz0oeC5sb3dPcmRlcj4+PjE2KSsoeS5sb3dPcmRlcj4+PjE2KSsoYT4+
PjE2KTtsb3dPcmRlcj0oKG1zdyYweEZGRkYpPDwxNil8KGEmMHhGRkZGKTthPSh4LmhpZ2hPcmRl
ciYweEZGRkYpKyh5LmhpZ2hPcmRlciYweEZGRkYpKyhtc3c+Pj4xNik7bXN3PSh4LmhpZ2hPcmRl
cj4+PjE2KSsoeS5oaWdoT3JkZXI+Pj4xNikrKGE+Pj4xNik7aGlnaE9yZGVyPSgobXN3JjB4RkZG
Rik8PDE2KXwoYSYweEZGRkYpO3JldHVybiBuZXcgSW50XzY0KGhpZ2hPcmRlcixsb3dPcmRlcil9
LHNhZmVBZGRfND1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxtc3csbG93T3JkZXIsaGlnaE9yZGVy
O2U9KGEubG93T3JkZXImMHhGRkZGKSsoYi5sb3dPcmRlciYweEZGRkYpKyhjLmxvd09yZGVyJjB4
RkZGRikrKGQubG93T3JkZXImMHhGRkZGKTttc3c9KGEubG93T3JkZXI+Pj4xNikrKGIubG93T3Jk
ZXI+Pj4xNikrKGMubG93T3JkZXI+Pj4xNikrKGQubG93T3JkZXI+Pj4xNikrKGU+Pj4xNik7bG93
T3JkZXI9KChtc3cmMHhGRkZGKTw8MTYpfChlJjB4RkZGRik7ZT0oYS5oaWdoT3JkZXImMHhGRkZG
KSsoYi5oaWdoT3JkZXImMHhGRkZGKSsoYy5oaWdoT3JkZXImMHhGRkZGKSsoZC5oaWdoT3JkZXIm
MHhGRkZGKSsobXN3Pj4+MTYpO21zdz0oYS5oaWdoT3JkZXI+Pj4xNikrKGIuaGlnaE9yZGVyPj4+
MTYpKyhjLmhpZ2hPcmRlcj4+PjE2KSsoZC5oaWdoT3JkZXI+Pj4xNikrKGU+Pj4xNik7aGlnaE9y
ZGVyPSgobXN3JjB4RkZGRik8PDE2KXwoZSYweEZGRkYpO3JldHVybiBuZXcgSW50XzY0KGhpZ2hP
cmRlcixsb3dPcmRlcil9LHNhZmVBZGRfNT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLG1zdyxs
b3dPcmRlcixoaWdoT3JkZXI7Zj0oYS5sb3dPcmRlciYweEZGRkYpKyhiLmxvd09yZGVyJjB4RkZG
RikrKGMubG93T3JkZXImMHhGRkZGKSsoZC5sb3dPcmRlciYweEZGRkYpKyhlLmxvd09yZGVyJjB4
RkZGRik7bXN3PShhLmxvd09yZGVyPj4+MTYpKyhiLmxvd09yZGVyPj4+MTYpKyhjLmxvd09yZGVy
Pj4+MTYpKyhkLmxvd09yZGVyPj4+MTYpKyhlLmxvd09yZGVyPj4+MTYpKyhmPj4+MTYpO2xvd09y
ZGVyPSgobXN3JjB4RkZGRik8PDE2KXwoZiYweEZGRkYpO2Y9KGEuaGlnaE9yZGVyJjB4RkZGRikr
KGIuaGlnaE9yZGVyJjB4RkZGRikrKGMuaGlnaE9yZGVyJjB4RkZGRikrKGQuaGlnaE9yZGVyJjB4
RkZGRikrKGUuaGlnaE9yZGVyJjB4RkZGRikrKG1zdz4+PjE2KTttc3c9KGEuaGlnaE9yZGVyPj4+
MTYpKyhiLmhpZ2hPcmRlcj4+PjE2KSsoYy5oaWdoT3JkZXI+Pj4xNikrKGQuaGlnaE9yZGVyPj4+
MTYpKyhlLmhpZ2hPcmRlcj4+PjE2KSsoZj4+PjE2KTtoaWdoT3JkZXI9KChtc3cmMHhGRkZGKTw8
MTYpfChmJjB4RkZGRik7cmV0dXJuIG5ldyBJbnRfNjQoaGlnaE9yZGVyLGxvd09yZGVyKX0sY29y
ZVNIQTI9ZnVuY3Rpb24oaixrLGwpe3ZhciBhLGIsYyxkLGUsZixnLGgsVDEsVDIsSCxsZW5ndGhQ
b3NpdGlvbixpLHQsSyxXPVtdLGFwcGVuZGVkTWVzc2FnZUxlbmd0aDtpZihsPT09IlNIQS0zODQi
fHxsPT09IlNIQS01MTIiKXtsZW5ndGhQb3NpdGlvbj0oKChrKzEyOCk+PjEwKTw8NSkrMzE7Sz1b
bmV3IEludF82NCgweDQyOGEyZjk4LDB4ZDcyOGFlMjIpLG5ldyBJbnRfNjQoMHg3MTM3NDQ5MSww
eDIzZWY2NWNkKSxuZXcgSW50XzY0KDB4YjVjMGZiY2YsMHhlYzRkM2IyZiksbmV3IEludF82NCgw
eGU5YjVkYmE1LDB4ODE4OWRiYmMpLG5ldyBJbnRfNjQoMHgzOTU2YzI1YiwweGYzNDhiNTM4KSxu
ZXcgSW50XzY0KDB4NTlmMTExZjEsMHhiNjA1ZDAxOSksbmV3IEludF82NCgweDkyM2Y4MmE0LDB4
YWYxOTRmOWIpLG5ldyBJbnRfNjQoMHhhYjFjNWVkNSwweGRhNmQ4MTE4KSxuZXcgSW50XzY0KDB4
ZDgwN2FhOTgsMHhhMzAzMDI0MiksbmV3IEludF82NCgweDEyODM1YjAxLDB4NDU3MDZmYmUpLG5l
dyBJbnRfNjQoMHgyNDMxODViZSwweDRlZTRiMjhjKSxuZXcgSW50XzY0KDB4NTUwYzdkYzMsMHhk
NWZmYjRlMiksbmV3IEludF82NCgweDcyYmU1ZDc0LDB4ZjI3Yjg5NmYpLG5ldyBJbnRfNjQoMHg4
MGRlYjFmZSwweDNiMTY5NmIxKSxuZXcgSW50XzY0KDB4OWJkYzA2YTcsMHgyNWM3MTIzNSksbmV3
IEludF82NCgweGMxOWJmMTc0LDB4Y2Y2OTI2OTQpLG5ldyBJbnRfNjQoMHhlNDliNjljMSwweDll
ZjE0YWQyKSxuZXcgSW50XzY0KDB4ZWZiZTQ3ODYsMHgzODRmMjVlMyksbmV3IEludF82NCgweDBm
YzE5ZGM2LDB4OGI4Y2Q1YjUpLG5ldyBJbnRfNjQoMHgyNDBjYTFjYywweDc3YWM5YzY1KSxuZXcg
SW50XzY0KDB4MmRlOTJjNmYsMHg1OTJiMDI3NSksbmV3IEludF82NCgweDRhNzQ4NGFhLDB4NmVh
NmU0ODMpLG5ldyBJbnRfNjQoMHg1Y2IwYTlkYywweGJkNDFmYmQ0KSxuZXcgSW50XzY0KDB4NzZm
OTg4ZGEsMHg4MzExNTNiNSksbmV3IEludF82NCgweDk4M2U1MTUyLDB4ZWU2NmRmYWIpLG5ldyBJ
bnRfNjQoMHhhODMxYzY2ZCwweDJkYjQzMjEwKSxuZXcgSW50XzY0KDB4YjAwMzI3YzgsMHg5OGZi
MjEzZiksbmV3IEludF82NCgweGJmNTk3ZmM3LDB4YmVlZjBlZTQpLG5ldyBJbnRfNjQoMHhjNmUw
MGJmMywweDNkYTg4ZmMyKSxuZXcgSW50XzY0KDB4ZDVhNzkxNDcsMHg5MzBhYTcyNSksbmV3IElu
dF82NCgweDA2Y2E2MzUxLDB4ZTAwMzgyNmYpLG5ldyBJbnRfNjQoMHgxNDI5Mjk2NywweDBhMGU2
ZTcwKSxuZXcgSW50XzY0KDB4MjdiNzBhODUsMHg0NmQyMmZmYyksbmV3IEludF82NCgweDJlMWIy
MTM4LDB4NWMyNmM5MjYpLG5ldyBJbnRfNjQoMHg0ZDJjNmRmYywweDVhYzQyYWVkKSxuZXcgSW50
XzY0KDB4NTMzODBkMTMsMHg5ZDk1YjNkZiksbmV3IEludF82NCgweDY1MGE3MzU0LDB4OGJhZjYz
ZGUpLG5ldyBJbnRfNjQoMHg3NjZhMGFiYiwweDNjNzdiMmE4KSxuZXcgSW50XzY0KDB4ODFjMmM5
MmUsMHg0N2VkYWVlNiksbmV3IEludF82NCgweDkyNzIyYzg1LDB4MTQ4MjM1M2IpLG5ldyBJbnRf
NjQoMHhhMmJmZThhMSwweDRjZjEwMzY0KSxuZXcgSW50XzY0KDB4YTgxYTY2NGIsMHhiYzQyMzAw
MSksbmV3IEludF82NCgweGMyNGI4YjcwLDB4ZDBmODk3OTEpLG5ldyBJbnRfNjQoMHhjNzZjNTFh
MywweDA2NTRiZTMwKSxuZXcgSW50XzY0KDB4ZDE5MmU4MTksMHhkNmVmNTIxOCksbmV3IEludF82
NCgweGQ2OTkwNjI0LDB4NTU2NWE5MTApLG5ldyBJbnRfNjQoMHhmNDBlMzU4NSwweDU3NzEyMDJh
KSxuZXcgSW50XzY0KDB4MTA2YWEwNzAsMHgzMmJiZDFiOCksbmV3IEludF82NCgweDE5YTRjMTE2
LDB4YjhkMmQwYzgpLG5ldyBJbnRfNjQoMHgxZTM3NmMwOCwweDUxNDFhYjUzKSxuZXcgSW50XzY0
KDB4Mjc0ODc3NGMsMHhkZjhlZWI5OSksbmV3IEludF82NCgweDM0YjBiY2I1LDB4ZTE5YjQ4YTgp
LG5ldyBJbnRfNjQoMHgzOTFjMGNiMywweGM1Yzk1YTYzKSxuZXcgSW50XzY0KDB4NGVkOGFhNGEs
MHhlMzQxOGFjYiksbmV3IEludF82NCgweDViOWNjYTRmLDB4Nzc2M2UzNzMpLG5ldyBJbnRfNjQo
MHg2ODJlNmZmMywweGQ2YjJiOGEzKSxuZXcgSW50XzY0KDB4NzQ4ZjgyZWUsMHg1ZGVmYjJmYyks
bmV3IEludF82NCgweDc4YTU2MzZmLDB4NDMxNzJmNjApLG5ldyBJbnRfNjQoMHg4NGM4NzgxNCww
eGExZjBhYjcyKSxuZXcgSW50XzY0KDB4OGNjNzAyMDgsMHgxYTY0MzllYyksbmV3IEludF82NCgw
eDkwYmVmZmZhLDB4MjM2MzFlMjgpLG5ldyBJbnRfNjQoMHhhNDUwNmNlYiwweGRlODJiZGU5KSxu
ZXcgSW50XzY0KDB4YmVmOWEzZjcsMHhiMmM2NzkxNSksbmV3IEludF82NCgweGM2NzE3OGYyLDB4
ZTM3MjUzMmIpLG5ldyBJbnRfNjQoMHhjYTI3M2VjZSwweGVhMjY2MTljKSxuZXcgSW50XzY0KDB4
ZDE4NmI4YzcsMHgyMWMwYzIwNyksbmV3IEludF82NCgweGVhZGE3ZGQ2LDB4Y2RlMGViMWUpLG5l
dyBJbnRfNjQoMHhmNTdkNGY3ZiwweGVlNmVkMTc4KSxuZXcgSW50XzY0KDB4MDZmMDY3YWEsMHg3
MjE3NmZiYSksbmV3IEludF82NCgweDBhNjM3ZGM1LDB4YTJjODk4YTYpLG5ldyBJbnRfNjQoMHgx
MTNmOTgwNCwweGJlZjkwZGFlKSxuZXcgSW50XzY0KDB4MWI3MTBiMzUsMHgxMzFjNDcxYiksbmV3
IEludF82NCgweDI4ZGI3N2Y1LDB4MjMwNDdkODQpLG5ldyBJbnRfNjQoMHgzMmNhYWI3YiwweDQw
YzcyNDkzKSxuZXcgSW50XzY0KDB4M2M5ZWJlMGEsMHgxNWM5YmViYyksbmV3IEludF82NCgweDQz
MWQ2N2M0LDB4OWMxMDBkNGMpLG5ldyBJbnRfNjQoMHg0Y2M1ZDRiZSwweGNiM2U0MmI2KSxuZXcg
SW50XzY0KDB4NTk3ZjI5OWMsMHhmYzY1N2UyYSksbmV3IEludF82NCgweDVmY2I2ZmFiLDB4M2Fk
NmZhZWMpLG5ldyBJbnRfNjQoMHg2YzQ0MTk4YywweDRhNDc1ODE3KV07aWYobD09PSJTSEEtMzg0
Iil7SD1bbmV3IEludF82NCgweGNiYmI5ZDVkLDB4YzEwNTllZDgpLG5ldyBJbnRfNjQoMHgwNjI5
YTI5MmEsMHgzNjdjZDUwNyksbmV3IEludF82NCgweDkxNTkwMTVhLDB4MzA3MGRkMTcpLG5ldyBJ
bnRfNjQoMHgwMTUyZmVjZDgsMHhmNzBlNTkzOSksbmV3IEludF82NCgweDY3MzMyNjY3LDB4ZmZj
MDBiMzEpLG5ldyBJbnRfNjQoMHg5OGViNDRhODcsMHg2ODU4MTUxMSksbmV3IEludF82NCgweGRi
MGMyZTBkLDB4NjRmOThmYTcpLG5ldyBJbnRfNjQoMHgwNDdiNTQ4MWQsMHhiZWZhNGZhNCldfWVs
c2V7SD1bbmV3IEludF82NCgweDZhMDllNjY3LDB4ZjNiY2M5MDgpLG5ldyBJbnRfNjQoMHhiYjY3
YWU4NSwweDg0Y2FhNzNiKSxuZXcgSW50XzY0KDB4M2M2ZWYzNzIsMHhmZTk0ZjgyYiksbmV3IElu
dF82NCgweGE1NGZmNTNhLDB4NWYxZDM2ZjEpLG5ldyBJbnRfNjQoMHg1MTBlNTI3ZiwweGFkZTY4
MmQxKSxuZXcgSW50XzY0KDB4OWIwNTY4OGMsMHgyYjNlNmMxZiksbmV3IEludF82NCgweDFmODNk
OWFiLDB4ZmI0MWJkNmIpLG5ldyBJbnRfNjQoMHg1YmUwY2QxOSwweDEzN2UyMTc5KV19fWpbaz4+
NV18PTB4ODA8PCgyNC1rJTMyKTtqW2xlbmd0aFBvc2l0aW9uXT1rO2FwcGVuZGVkTWVzc2FnZUxl
bmd0aD1qLmxlbmd0aDtmb3IoaT0wO2k8YXBwZW5kZWRNZXNzYWdlTGVuZ3RoO2krPTMyKXthPUhb
MF07Yj1IWzFdO2M9SFsyXTtkPUhbM107ZT1IWzRdO2Y9SFs1XTtnPUhbNl07aD1IWzddO2Zvcih0
PTA7dDw4MDt0Kz0xKXtpZih0PDE2KXtXW3RdPW5ldyBJbnRfNjQoalt0KjIraV0salt0KjIraSsx
XSl9ZWxzZXtXW3RdPXNhZmVBZGRfNChnYW1tYTEoV1t0LTJdKSxXW3QtN10sZ2FtbWEwKFdbdC0x
NV0pLFdbdC0xNl0pfVQxPXNhZmVBZGRfNShoLHNpZ21hMShlKSxjaChlLGYsZyksS1t0XSxXW3Rd
KTtUMj1zYWZlQWRkXzIoc2lnbWEwKGEpLG1haihhLGIsYykpO2g9ZztnPWY7Zj1lO2U9c2FmZUFk
ZF8yKGQsVDEpO2Q9YztjPWI7Yj1hO2E9c2FmZUFkZF8yKFQxLFQyKX1IWzBdPXNhZmVBZGRfMihh
LEhbMF0pO0hbMV09c2FmZUFkZF8yKGIsSFsxXSk7SFsyXT1zYWZlQWRkXzIoYyxIWzJdKTtIWzNd
PXNhZmVBZGRfMihkLEhbM10pO0hbNF09c2FmZUFkZF8yKGUsSFs0XSk7SFs1XT1zYWZlQWRkXzIo
ZixIWzVdKTtIWzZdPXNhZmVBZGRfMihnLEhbNl0pO0hbN109c2FmZUFkZF8yKGgsSFs3XSl9c3dp
dGNoKGwpe2Nhc2UiU0hBLTM4NCI6cmV0dXJuW0hbMF0uaGlnaE9yZGVyLEhbMF0ubG93T3JkZXIs
SFsxXS5oaWdoT3JkZXIsSFsxXS5sb3dPcmRlcixIWzJdLmhpZ2hPcmRlcixIWzJdLmxvd09yZGVy
LEhbM10uaGlnaE9yZGVyLEhbM10ubG93T3JkZXIsSFs0XS5oaWdoT3JkZXIsSFs0XS5sb3dPcmRl
cixIWzVdLmhpZ2hPcmRlcixIWzVdLmxvd09yZGVyXTtjYXNlIlNIQS01MTIiOnJldHVybltIWzBd
LmhpZ2hPcmRlcixIWzBdLmxvd09yZGVyLEhbMV0uaGlnaE9yZGVyLEhbMV0ubG93T3JkZXIsSFsy
XS5oaWdoT3JkZXIsSFsyXS5sb3dPcmRlcixIWzNdLmhpZ2hPcmRlcixIWzNdLmxvd09yZGVyLEhb
NF0uaGlnaE9yZGVyLEhbNF0ubG93T3JkZXIsSFs1XS5oaWdoT3JkZXIsSFs1XS5sb3dPcmRlcixI
WzZdLmhpZ2hPcmRlcixIWzZdLmxvd09yZGVyLEhbN10uaGlnaE9yZGVyLEhbN10ubG93T3JkZXJd
O2RlZmF1bHQ6cmV0dXJuW119fSxqc1NIQT1mdW5jdGlvbihhLGIpe3RoaXMuc2hhMzg0PW51bGw7
dGhpcy5zaGE1MTI9bnVsbDt0aGlzLnN0ckJpbkxlbj1udWxsO3RoaXMuc3RyVG9IYXNoPW51bGw7
aWYoIkhFWCI9PT1iKXtpZigwIT09KGEubGVuZ3RoJTIpKXtyZXR1cm4iVEVYVCBNVVNUIEJFIElO
IEJZVEUgSU5DUkVNRU5UUyJ9dGhpcy5zdHJCaW5MZW49YS5sZW5ndGgqNDt0aGlzLnN0clRvSGFz
aD1oZXgyYmluYihhKX1lbHNlIGlmKCgiQVNDSUkiPT09Yil8fCgndW5kZWZpbmVkJz09PXR5cGVv
ZihiKSkpe3RoaXMuc3RyQmluTGVuPWEubGVuZ3RoKmNoYXJTaXplO3RoaXMuc3RyVG9IYXNoPXN0
cjJiaW5iKGEpfWVsc2V7cmV0dXJuIlVOS05PV04gVEVYVCBJTlBVVCBUWVBFIn19O2pzU0hBLnBy
b3RvdHlwZT17Z2V0SGFzaDpmdW5jdGlvbihhLGIpe3ZhciBjPW51bGwsbWVzc2FnZT10aGlzLnN0
clRvSGFzaC5zbGljZSgpO3N3aXRjaChiKXtjYXNlIkhFWCI6Yz1iaW5iMmhleDticmVhaztjYXNl
IkI2NCI6Yz1iaW5iMmI2NDticmVhaztkZWZhdWx0OnJldHVybiJGT1JNQVQgTk9UIFJFQ09HTkla
RUQifXN3aXRjaChhKXtjYXNlIlNIQS0zODQiOmlmKG51bGw9PT10aGlzLnNoYTM4NCl7dGhpcy5z
aGEzODQ9Y29yZVNIQTIobWVzc2FnZSx0aGlzLnN0ckJpbkxlbixhKX1yZXR1cm4gYyh0aGlzLnNo
YTM4NCk7Y2FzZSJTSEEtNTEyIjppZihudWxsPT09dGhpcy5zaGE1MTIpe3RoaXMuc2hhNTEyPWNv
cmVTSEEyKG1lc3NhZ2UsdGhpcy5zdHJCaW5MZW4sYSl9cmV0dXJuIGModGhpcy5zaGE1MTIpO2Rl
ZmF1bHQ6cmV0dXJuIkhBU0ggTk9UIFJFQ09HTklaRUQifX0sZ2V0SE1BQzpmdW5jdGlvbihhLGIs
YyxkKXt2YXIgZSxrZXlUb1VzZSxpLHJldFZhbCxrZXlCaW5MZW4saGFzaEJpdFNpemUsa2V5V2l0
aElQYWQ9W10sa2V5V2l0aE9QYWQ9W107c3dpdGNoKGQpe2Nhc2UiSEVYIjplPWJpbmIyaGV4O2Jy
ZWFrO2Nhc2UiQjY0IjplPWJpbmIyYjY0O2JyZWFrO2RlZmF1bHQ6cmV0dXJuIkZPUk1BVCBOT1Qg
UkVDT0dOSVpFRCJ9c3dpdGNoKGMpe2Nhc2UiU0hBLTM4NCI6aGFzaEJpdFNpemU9Mzg0O2JyZWFr
O2Nhc2UiU0hBLTUxMiI6aGFzaEJpdFNpemU9NTEyO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIkhBU0gg
Tk9UIFJFQ09HTklaRUQifWlmKCJIRVgiPT09Yil7aWYoMCE9PShhLmxlbmd0aCUyKSl7cmV0dXJu
IktFWSBNVVNUIEJFIElOIEJZVEUgSU5DUkVNRU5UUyJ9a2V5VG9Vc2U9aGV4MmJpbmIoYSk7a2V5
QmluTGVuPWEubGVuZ3RoKjR9ZWxzZSBpZigiQVNDSUkiPT09Yil7a2V5VG9Vc2U9c3RyMmJpbmIo
YSk7a2V5QmluTGVuPWEubGVuZ3RoKmNoYXJTaXplfWVsc2V7cmV0dXJuIlVOS05PV04gS0VZIElO
UFVUIFRZUEUifWlmKDEyODwoa2V5QmluTGVuLzgpKXtrZXlUb1VzZT1jb3JlU0hBMihrZXlUb1Vz
ZSxrZXlCaW5MZW4sYyk7a2V5VG9Vc2VbMzFdJj0weEZGRkZGRjAwfWVsc2UgaWYoMTI4PihrZXlC
aW5MZW4vOCkpe2tleVRvVXNlWzMxXSY9MHhGRkZGRkYwMH1mb3IoaT0wO2k8PTMxO2krPTEpe2tl
eVdpdGhJUGFkW2ldPWtleVRvVXNlW2ldXjB4MzYzNjM2MzY7a2V5V2l0aE9QYWRbaV09a2V5VG9V
c2VbaV1eMHg1QzVDNUM1Q31yZXRWYWw9Y29yZVNIQTIoa2V5V2l0aElQYWQuY29uY2F0KHRoaXMu
c3RyVG9IYXNoKSwxMDI0K3RoaXMuc3RyQmluTGVuLGMpO3JldFZhbD1jb3JlU0hBMihrZXlXaXRo
T1BhZC5jb25jYXQocmV0VmFsKSwxMDI0K2hhc2hCaXRTaXplLGMpO3JldHVybihlKHJldFZhbCkp
fX07d2luZG93LmpzU0hBPWpzU0hBfSgpKTsKCi8vIFNIQS01MTIgKFBBSiB2ZXJzaW9uKQoKLyoK
ICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0
aG0sIFNIQS01MTIsIGFzIGRlZmluZWQKICogaW4gRklQUyAxODAtMgogKiBWZXJzaW9uIDIuMiBD
b3B5cmlnaHQgQW5vbnltb3VzIENvbnRyaWJ1dG9yLCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDA5
LgogKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIs
IExvc3RpbmV0CiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZQogKiBTZWUgaHR0
cDovL3BhamhvbWUub3JnLnVrL2NyeXB0L21kNSBmb3IgZGV0YWlscy4KICovCgovKgogKiBDb25m
aWd1cmFibGUgdmFyaWFibGVzLiBZb3UgbWF5IG5lZWQgdG8gdHdlYWsgdGhlc2UgdG8gYmUgY29t
cGF0aWJsZSB3aXRoCiAqIHRoZSBzZXJ2ZXItc2lkZSwgYnV0IHRoZSBkZWZhdWx0cyB3b3JrIGlu
IG1vc3QgY2FzZXMuCiAqLwp2YXIgaGV4Y2FzZSA9IDA7ICAvKiBoZXggb3V0cHV0IGZvcm1hdC4g
MCAtIGxvd2VyY2FzZTsgMSAtIHVwcGVyY2FzZSAgICAgICAgKi8KdmFyIGI2NHBhZCAgPSAiIjsg
LyogYmFzZS02NCBwYWQgY2hhcmFjdGVyLiAiPSIgZm9yIHN0cmljdCBSRkMgY29tcGxpYW5jZSAg
ICovCgovKgogKiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB5b3UnbGwgdXN1YWxseSB3YW50IHRv
IGNhbGwKICogVGhleSB0YWtlIHN0cmluZyBhcmd1bWVudHMgYW5kIHJldHVybiBlaXRoZXIgaGV4
IG9yIGJhc2UtNjQgZW5jb2RlZCBzdHJpbmdzCiAqLwpmdW5jdGlvbiBoZXhfc2hhNTEyKHMpICAg
IHsgcmV0dXJuIHJzdHIyaGV4KHJzdHJfc2hhNTEyKHN0cjJyc3RyX3V0ZjgocykpKTsgfQoKLyoK
ICogQ2FsY3VsYXRlIHRoZSBTSEEtNTEyIG9mIGEgcmF3IHN0cmluZwogKi8KZnVuY3Rpb24gcnN0
cl9zaGE1MTIocykKewogIHJldHVybiBiaW5iMnJzdHIoYmluYl9zaGE1MTIocnN0cjJiaW5iKHMp
LCBzLmxlbmd0aCAqIDgpKTsKfQoKLyoKICogQ29udmVydCBhIHJhdyBzdHJpbmcgdG8gYSBoZXgg
c3RyaW5nCiAqLwpmdW5jdGlvbiByc3RyMmhleChpbnB1dCkKewogIHRyeSB7IGhleGNhc2UgfSBj
YXRjaChlKSB7IGhleGNhc2U9MDsgfQogIHZhciBoZXhfdGFiID0gaGV4Y2FzZSA/ICIwMTIzNDU2
Nzg5QUJDREVGIiA6ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICB2YXIgb3V0cHV0ID0gIiI7CiAgdmFy
IHg7CiAgZm9yKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKQogIHsKICAgIHggPSBp
bnB1dC5jaGFyQ29kZUF0KGkpOwogICAgb3V0cHV0ICs9IGhleF90YWIuY2hhckF0KCh4ID4+PiA0
KSAmIDB4MEYpCiAgICAgICAgICAgKyAgaGV4X3RhYi5jaGFyQXQoIHggICAgICAgICYgMHgwRik7
CiAgfQogIHJldHVybiBvdXRwdXQ7Cn0KCi8qCiAqIEVuY29kZSBhIHN0cmluZyBhcyB1dGYtOC4K
ICogRm9yIGVmZmljaWVuY3ksIHRoaXMgYXNzdW1lcyB0aGUgaW5wdXQgaXMgdmFsaWQgdXRmLTE2
LgogKi8KZnVuY3Rpb24gc3RyMnJzdHJfdXRmOChpbnB1dCkKewogIHZhciBvdXRwdXQgPSAiIjsK
ICB2YXIgaSA9IC0xOwogIHZhciB4LCB5OwoKICB3aGlsZSgrK2kgPCBpbnB1dC5sZW5ndGgpCiAg
ewogICAgLyogRGVjb2RlIHV0Zi0xNiBzdXJyb2dhdGUgcGFpcnMgKi8KICAgIHggPSBpbnB1dC5j
aGFyQ29kZUF0KGkpOwogICAgeSA9IGkgKyAxIDwgaW5wdXQubGVuZ3RoID8gaW5wdXQuY2hhckNv
ZGVBdChpICsgMSkgOiAwOwogICAgaWYoMHhEODAwIDw9IHggJiYgeCA8PSAweERCRkYgJiYgMHhE
QzAwIDw9IHkgJiYgeSA8PSAweERGRkYpCiAgICB7CiAgICAgIHggPSAweDEwMDAwICsgKCh4ICYg
MHgwM0ZGKSA8PCAxMCkgKyAoeSAmIDB4MDNGRik7CiAgICAgIGkrKzsKICAgIH0KCiAgICAvKiBF
bmNvZGUgb3V0cHV0IGFzIHV0Zi04ICovCiAgICBpZih4IDw9IDB4N0YpCiAgICAgIG91dHB1dCAr
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKHgpOwogICAgZWxzZSBpZih4IDw9IDB4N0ZGKQogICAgICBv
dXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEMwIHwgKCh4ID4+PiA2ICkgJiAweDFGKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICggeCAgICAgICAgICYg
MHgzRikpOwogICAgZWxzZSBpZih4IDw9IDB4RkZGRikKICAgICAgb3V0cHV0ICs9IFN0cmluZy5m
cm9tQ2hhckNvZGUoMHhFMCB8ICgoeCA+Pj4gMTIpICYgMHgwRiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKHggPj4+IDYgKSAmIDB4M0YpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKCB4ICAgICAgICAgJiAweDNGKSk7CiAg
ICBlbHNlIGlmKHggPD0gMHgxRkZGRkYpCiAgICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4RjAgfCAoKHggPj4+IDE4KSAmIDB4MDcpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDgwIHwgKCh4ID4+PiAxMikgJiAweDNGKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoeCA+Pj4gNiApICYgMHgzRiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoIHggICAgICAgICAmIDB4M0YpKTsKICB9
CiAgcmV0dXJuIG91dHB1dDsKfQoKLyoKICogQ29udmVydCBhIHJhdyBzdHJpbmcgdG8gYW4gYXJy
YXkgb2YgYmlnLWVuZGlhbiB3b3JkcwogKiBDaGFyYWN0ZXJzID4yNTUgaGF2ZSB0aGVpciBoaWdo
LWJ5dGUgc2lsZW50bHkgaWdub3JlZC4KICovCmZ1bmN0aW9uIHJzdHIyYmluYihpbnB1dCkKewog
dmFyIG91dHB1dCA9IEFycmF5KGlucHV0Lmxlbmd0aCA+PiAyKTsKICBmb3IodmFyIGkgPSAwOyBp
IDwgb3V0cHV0Lmxlbmd0aDsgaSsrKQogICAgb3V0cHV0W2ldID0gMDsKICBmb3IodmFyIGkgPSAw
OyBpIDwgaW5wdXQubGVuZ3RoICogODsgaSArPSA4KQogICAgb3V0cHV0W2k+PjVdIHw9IChpbnB1
dC5jaGFyQ29kZUF0KGkgLyA4KSAmIDB4RkYpIDw8ICgyNCAtIGkgJSAzMik7CiAgcmV0dXJuIG91
dHB1dDsKfQoKLyoKICogQ29udmVydCBhbiBhcnJheSBvZiBiaWctZW5kaWFuIHdvcmRzIHRvIGEg
c3RyaW5nCiAqLwpmdW5jdGlvbiBiaW5iMnJzdHIoaW5wdXQpCnsKICB2YXIgb3V0cHV0ID0gIiI7
CiAgZm9yKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCAqIDMyOyBpICs9IDgpCiAgICBvdXRw
dXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoaW5wdXRbaT4+NV0gPj4+ICgyNCAtIGkgJSAzMikp
ICYgMHhGRik7CiAgIHJldHVybiBvdXRwdXQ7Cn0KCi8qCiAqIENhbGN1bGF0ZSB0aGUgU0hBLTUx
MiBvZiBhbiBhcnJheSBvZiBiaWctZW5kaWFuIGR3b3JkcywgYW5kIGEgYml0IGxlbmd0aAogKi8K
dmFyIHNoYTUxMl9rOwpmdW5jdGlvbiBiaW5iX3NoYTUxMih4LCBsZW4pCnsKICBpZihzaGE1MTJf
ayA9PSB1bmRlZmluZWQpCiAgewogICAgLy9TSEE1MTIgY29uc3RhbnRzCiAgICBzaGE1MTJfayA9
IG5ldyBBcnJheSgKbmV3IGludDY0KDB4NDI4YTJmOTgsIC02ODUxOTk4MzgpLCBuZXcgaW50NjQo
MHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCksCm5ldyBpbnQ2NCgtMTI0NTY0MzgyNSwgLTMzMDQ4Mjg5
NyksIG5ldyBpbnQ2NCgtMzczOTU3NzIzLCAtMjEyMTY3MTc0OCksCm5ldyBpbnQ2NCgweDM5NTZj
MjViLCAtMjEzMzM4ODI0KSwgbmV3IGludDY0KDB4NTlmMTExZjEsIC0xMjQxMTMzMDMxKSwKbmV3
IGludDY0KC0xODQxMzMxNTQ4LCAtMTM1NzI5NTcxNyksIG5ldyBpbnQ2NCgtMTQyNDIwNDA3NSwg
LTYzMDM1NzczNiksCm5ldyBpbnQ2NCgtNjcwNTg2MjE2LCAtMTU2MDA4MzkwMiksIG5ldyBpbnQ2
NCgweDEyODM1YjAxLCAweDQ1NzA2ZmJlKSwKbmV3IGludDY0KDB4MjQzMTg1YmUsIDB4NGVlNGIy
OGMpLCBuZXcgaW50NjQoMHg1NTBjN2RjMywgLTcwNDY2MjMwMiksCm5ldyBpbnQ2NCgweDcyYmU1
ZDc0LCAtMjI2Nzg0OTEzKSwgbmV3IGludDY0KC0yMTMyODg5MDkwLCAweDNiMTY5NmIxKSwKbmV3
IGludDY0KC0xNjgwMDc5MTkzLCAweDI1YzcxMjM1KSwgbmV3IGludDY0KC0xMDQ2NzQ0NzE2LCAt
ODE1MTkyNDI4KSwKbmV3IGludDY0KC00NTk1NzY4OTUsIC0xNjI4MzUzODM4KSwgbmV3IGludDY0
KC0yNzI3NDI1MjIsIDB4Mzg0ZjI1ZTMpLApuZXcgaW50NjQoMHhmYzE5ZGM2LCAtMTk1MzcwNDUy
MyksIG5ldyBpbnQ2NCgweDI0MGNhMWNjLCAweDc3YWM5YzY1KSwKbmV3IGludDY0KDB4MmRlOTJj
NmYsIDB4NTkyYjAyNzUpLCBuZXcgaW50NjQoMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyksCm5ldyBp
bnQ2NCgweDVjYjBhOWRjLCAtMTExOTc0OTE2NCksIG5ldyBpbnQ2NCgweDc2Zjk4OGRhLCAtMjA5
NjAxNjQ1OSksCm5ldyBpbnQ2NCgtMTc0MDc0NjQxNCwgLTI5NTI0Nzk1NyksIG5ldyBpbnQ2NCgt
MTQ3MzEzMjk0NywgMHgyZGI0MzIxMCksCm5ldyBpbnQ2NCgtMTM0MTk3MDQ4OCwgLTE3MjgzNzI0
MTcpLCBuZXcgaW50NjQoLTEwODQ2NTM2MjUsIC0xMDkxNjI5MzQwKSwKbmV3IGludDY0KC05NTgz
OTU0MDUsIDB4M2RhODhmYzIpLCBuZXcgaW50NjQoLTcxMDQzODU4NSwgLTE4MjgwMTgzOTUpLApu
ZXcgaW50NjQoMHg2Y2E2MzUxLCAtNTM2NjQwOTEzKSwgbmV3IGludDY0KDB4MTQyOTI5NjcsIDB4
YTBlNmU3MCksCm5ldyBpbnQ2NCgweDI3YjcwYTg1LCAweDQ2ZDIyZmZjKSwgbmV3IGludDY0KDB4
MmUxYjIxMzgsIDB4NWMyNmM5MjYpLApuZXcgaW50NjQoMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCks
IG5ldyBpbnQ2NCgweDUzMzgwZDEzLCAtMTY1MTEzMzQ3MyksCm5ldyBpbnQ2NCgweDY1MGE3MzU0
LCAtMTk1MTQzOTkwNiksIG5ldyBpbnQ2NCgweDc2NmEwYWJiLCAweDNjNzdiMmE4KSwKbmV3IGlu
dDY0KC0yMTE3OTQwOTQ2LCAweDQ3ZWRhZWU2KSwgbmV3IGludDY0KC0xODM4MDExMjU5LCAweDE0
ODIzNTNiKSwKbmV3IGludDY0KC0xNTY0NDgxMzc1LCAweDRjZjEwMzY0KSwgbmV3IGludDY0KC0x
NDc0NjY0ODg1LCAtMTEzNjUxMzAyMyksCm5ldyBpbnQ2NCgtMTAzNTIzNjQ5NiwgLTc4OTAxNDYz
OSksIG5ldyBpbnQ2NCgtOTQ5MjAyNTI1LCAweDY1NGJlMzApLApuZXcgaW50NjQoLTc3ODkwMTQ3
OSwgLTY4ODk1ODk1MiksIG5ldyBpbnQ2NCgtNjk0NjE0NDkyLCAweDU1NjVhOTEwKSwKbmV3IGlu
dDY0KC0yMDAzOTUzODcsIDB4NTc3MTIwMmEpLCBuZXcgaW50NjQoMHgxMDZhYTA3MCwgMHgzMmJi
ZDFiOCksCm5ldyBpbnQ2NCgweDE5YTRjMTE2LCAtMTE5NDE0MzU0NCksIG5ldyBpbnQ2NCgweDFl
Mzc2YzA4LCAweDUxNDFhYjUzKSwKbmV3IGludDY0KDB4Mjc0ODc3NGMsIC01NDQyODE3MDMpLCBu
ZXcgaW50NjQoMHgzNGIwYmNiNSwgLTUwOTkxNzAxNiksCm5ldyBpbnQ2NCgweDM5MWMwY2IzLCAt
OTc2NjU5ODY5KSwgbmV3IGludDY0KDB4NGVkOGFhNGEsIC00ODIyNDM4OTMpLApuZXcgaW50NjQo
MHg1YjljY2E0ZiwgMHg3NzYzZTM3MyksIG5ldyBpbnQ2NCgweDY4MmU2ZmYzLCAtNjkyOTMwMzk3
KSwKbmV3IGludDY0KDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMpLCBuZXcgaW50NjQoMHg3OGE1NjM2
ZiwgMHg0MzE3MmY2MCksCm5ldyBpbnQ2NCgtMjA2NzIzNjg0NCwgLTE1NzgwNjI5OTApLCBuZXcg
aW50NjQoLTE5MzMxMTQ4NzIsIDB4MWE2NDM5ZWMpLApuZXcgaW50NjQoLTE4NjY1MzA4MjIsIDB4
MjM2MzFlMjgpLCBuZXcgaW50NjQoLTE1MzgyMzMxMDksIC01NjE4NTcwNDcpLApuZXcgaW50NjQo
LTEwOTA5MzU4MTcsIC0xMjk1NjE1NzIzKSwgbmV3IGludDY0KC05NjU2NDE5OTgsIC00NzkwNDY4
NjkpLApuZXcgaW50NjQoLTkwMzM5NzY4MiwgLTM2NjU4MzM5NiksIG5ldyBpbnQ2NCgtNzc5NzAw
MDI1LCAweDIxYzBjMjA3KSwKbmV3IGludDY0KC0zNTQ3Nzk2OTAsIC04NDA4OTc3NjIpLCBuZXcg
aW50NjQoLTE3NjMzNzAyNSwgLTI5NDcyNzMwNCksCm5ldyBpbnQ2NCgweDZmMDY3YWEsIDB4NzIx
NzZmYmEpLCBuZXcgaW50NjQoMHhhNjM3ZGM1LCAtMTU2MzkxMjAyNiksCm5ldyBpbnQ2NCgweDEx
M2Y5ODA0LCAtMTA5MDk3NDI5MCksIG5ldyBpbnQ2NCgweDFiNzEwYjM1LCAweDEzMWM0NzFiKSwK
bmV3IGludDY0KDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQpLCBuZXcgaW50NjQoMHgzMmNhYWI3Yiwg
MHg0MGM3MjQ5MyksCm5ldyBpbnQ2NCgweDNjOWViZTBhLCAweDE1YzliZWJjKSwgbmV3IGludDY0
KDB4NDMxZDY3YzQsIC0xNjc2NjY5NjIwKSwKbmV3IGludDY0KDB4NGNjNWQ0YmUsIC04ODUxMTIx
MzgpLCBuZXcgaW50NjQoMHg1OTdmMjk5YywgLTYwNDU3NDMwKSwKbmV3IGludDY0KDB4NWZjYjZm
YWIsIDB4M2FkNmZhZWMpLCBuZXcgaW50NjQoMHg2YzQ0MTk4YywgMHg0YTQ3NTgxNykpOwogIH0K
CiAgLy9Jbml0aWFsIGhhc2ggdmFsdWVzCiAgdmFyIEggPSBuZXcgQXJyYXkoCm5ldyBpbnQ2NCgw
eDZhMDllNjY3LCAtMjA1NzMxNTc2KSwKbmV3IGludDY0KC0xMTUwODMzMDE5LCAtMjA2NzA5Mzcw
MSksCm5ldyBpbnQ2NCgweDNjNmVmMzcyLCAtMjM3OTE1NzMpLApuZXcgaW50NjQoLTE1MjE0ODY1
MzQsIDB4NWYxZDM2ZjEpLApuZXcgaW50NjQoMHg1MTBlNTI3ZiwgLTEzNzc0MDIxNTkpLApuZXcg
aW50NjQoLTE2OTQxNDQzNzIsIDB4MmIzZTZjMWYpLApuZXcgaW50NjQoMHgxZjgzZDlhYiwgLTc5
NTc3NzQ5KSwKbmV3IGludDY0KDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkpKTsKCiAgdmFyIFQxID0g
bmV3IGludDY0KDAsIDApLAogICAgVDIgPSBuZXcgaW50NjQoMCwgMCksCiAgICBhID0gbmV3IGlu
dDY0KDAsMCksCiAgICBiID0gbmV3IGludDY0KDAsMCksCiAgICBjID0gbmV3IGludDY0KDAsMCks
CiAgICBkID0gbmV3IGludDY0KDAsMCksCiAgICBlID0gbmV3IGludDY0KDAsMCksCiAgICBmID0g
bmV3IGludDY0KDAsMCksCiAgICBnID0gbmV3IGludDY0KDAsMCksCiAgICBoID0gbmV3IGludDY0
KDAsMCksCiAgICAvL1RlbXBvcmFyeSB2YXJpYWJsZXMgbm90IHNwZWNpZmllZCBieSB0aGUgZG9j
dW1lbnQKICAgIHMwID0gbmV3IGludDY0KDAsIDApLAogICAgczEgPSBuZXcgaW50NjQoMCwgMCks
CiAgICBDaCA9IG5ldyBpbnQ2NCgwLCAwKSwKICAgIE1haiA9IG5ldyBpbnQ2NCgwLCAwKSwKICAg
IHIxID0gbmV3IGludDY0KDAsIDApLAogICAgcjIgPSBuZXcgaW50NjQoMCwgMCksCiAgICByMyA9
IG5ldyBpbnQ2NCgwLCAwKTsKICB2YXIgaiwgaTsKICB2YXIgVyA9IG5ldyBBcnJheSg4MCk7CiAg
Zm9yKGk9MDsgaTw4MDsgaSsrKQogICAgV1tpXSA9IG5ldyBpbnQ2NCgwLCAwKTsKCiAgLy8gYXBw
ZW5kIHBhZGRpbmcgdG8gdGhlIHNvdXJjZSBzdHJpbmcuIFRoZSBmb3JtYXQgaXMgZGVzY3JpYmVk
IGluIHRoZSBGSVBTLgogIHhbbGVuID4+IDVdIHw9IDB4ODAgPDwgKDI0IC0gKGxlbiAmIDB4MWYp
KTsKICB4WygobGVuICsgMTI4ID4+IDEwKTw8IDUpICsgMzFdID0gbGVuOwoKICBmb3IoaSA9IDA7
IGk8eC5sZW5ndGg7IGkrPTMyKSAvLzMyIGR3b3JkcyBpcyB0aGUgYmxvY2sgc2l6ZQogIHsKICAg
IGludDY0Y29weShhLCBIWzBdKTsKICAgIGludDY0Y29weShiLCBIWzFdKTsKICAgIGludDY0Y29w
eShjLCBIWzJdKTsKICAgIGludDY0Y29weShkLCBIWzNdKTsKICAgIGludDY0Y29weShlLCBIWzRd
KTsKICAgIGludDY0Y29weShmLCBIWzVdKTsKICAgIGludDY0Y29weShnLCBIWzZdKTsKICAgIGlu
dDY0Y29weShoLCBIWzddKTsKCiAgICBmb3Ioaj0wOyBqPDE2OyBqKyspCiAgICB7CiAgICAgICAg
V1tqXS5oID0geFtpICsgMipqXTsKICAgICAgICBXW2pdLmwgPSB4W2kgKyAyKmogKyAxXTsKICAg
IH0KCiAgICBmb3Ioaj0xNjsgajw4MDsgaisrKQogICAgewogICAgICAvL3NpZ21hMQogICAgICBp
bnQ2NHJyb3QocjEsIFdbai0yXSwgMTkpOwogICAgICBpbnQ2NHJldnJyb3QocjIsIFdbai0yXSwg
MjkpOwogICAgICBpbnQ2NHNocihyMywgV1tqLTJdLCA2KTsKICAgICAgczEubCA9IHIxLmwgXiBy
Mi5sIF4gcjMubDsKICAgICAgczEuaCA9IHIxLmggXiByMi5oIF4gcjMuaDsKICAgICAgLy9zaWdt
YTAKICAgICAgaW50NjRycm90KHIxLCBXW2otMTVdLCAxKTsKICAgICAgaW50NjRycm90KHIyLCBX
W2otMTVdLCA4KTsKICAgICAgaW50NjRzaHIocjMsIFdbai0xNV0sIDcpOwogICAgICBzMC5sID0g
cjEubCBeIHIyLmwgXiByMy5sOwogICAgICBzMC5oID0gcjEuaCBeIHIyLmggXiByMy5oOwoKICAg
ICAgaW50NjRhZGQ0KFdbal0sIHMxLCBXW2otN10sIHMwLCBXW2otMTZdKTsKICAgIH0KCiAgICBm
b3IoaiA9IDA7IGogPCA4MDsgaisrKQogICAgewogICAgICAvL0NoCiAgICAgIENoLmwgPSAoZS5s
ICYgZi5sKSBeICh+ZS5sICYgZy5sKTsKICAgICAgQ2guaCA9IChlLmggJiBmLmgpIF4gKH5lLmgg
JiBnLmgpOwoKICAgICAgLy9TaWdtYTEKICAgICAgaW50NjRycm90KHIxLCBlLCAxNCk7CiAgICAg
IGludDY0cnJvdChyMiwgZSwgMTgpOwogICAgICBpbnQ2NHJldnJyb3QocjMsIGUsIDkpOwogICAg
ICBzMS5sID0gcjEubCBeIHIyLmwgXiByMy5sOwogICAgICBzMS5oID0gcjEuaCBeIHIyLmggXiBy
My5oOwoKICAgICAgLy9TaWdtYTAKICAgICAgaW50NjRycm90KHIxLCBhLCAyOCk7CiAgICAgIGlu
dDY0cmV2cnJvdChyMiwgYSwgMik7CiAgICAgIGludDY0cmV2cnJvdChyMywgYSwgNyk7CiAgICAg
IHMwLmwgPSByMS5sIF4gcjIubCBeIHIzLmw7CiAgICAgIHMwLmggPSByMS5oIF4gcjIuaCBeIHIz
Lmg7CgogICAgICAvL01hagogICAgICBNYWoubCA9IChhLmwgJiBiLmwpIF4gKGEubCAmIGMubCkg
XiAoYi5sICYgYy5sKTsKICAgICAgTWFqLmggPSAoYS5oICYgYi5oKSBeIChhLmggJiBjLmgpIF4g
KGIuaCAmIGMuaCk7CgogICAgICBpbnQ2NGFkZDUoVDEsIGgsIHMxLCBDaCwgc2hhNTEyX2tbal0s
IFdbal0pOwogICAgICBpbnQ2NGFkZChUMiwgczAsIE1haik7CgogICAgICBpbnQ2NGNvcHkoaCwg
Zyk7CiAgICAgIGludDY0Y29weShnLCBmKTsKICAgICAgaW50NjRjb3B5KGYsIGUpOwogICAgICBp
bnQ2NGFkZChlLCBkLCBUMSk7CiAgICAgIGludDY0Y29weShkLCBjKTsKICAgICAgaW50NjRjb3B5
KGMsIGIpOwogICAgICBpbnQ2NGNvcHkoYiwgYSk7CiAgICAgIGludDY0YWRkKGEsIFQxLCBUMik7
CiAgICB9CiAgICBpbnQ2NGFkZChIWzBdLCBIWzBdLCBhKTsKICAgIGludDY0YWRkKEhbMV0sIEhb
MV0sIGIpOwogICAgaW50NjRhZGQoSFsyXSwgSFsyXSwgYyk7CiAgICBpbnQ2NGFkZChIWzNdLCBI
WzNdLCBkKTsKICAgIGludDY0YWRkKEhbNF0sIEhbNF0sIGUpOwogICAgaW50NjRhZGQoSFs1XSwg
SFs1XSwgZik7CiAgICBpbnQ2NGFkZChIWzZdLCBIWzZdLCBnKTsKICAgIGludDY0YWRkKEhbN10s
IEhbN10sIGgpOwogIH0KCiAgLy9yZXByZXNlbnQgdGhlIGhhc2ggYXMgYW4gYXJyYXkgb2YgMzIt
Yml0IGR3b3JkcwogIHZhciBoYXNoID0gbmV3IEFycmF5KDE2KTsKICBmb3IoaT0wOyBpPDg7IGkr
KykKICB7CiAgICBoYXNoWzIqaV0gPSBIW2ldLmg7CiAgICBoYXNoWzIqaSArIDFdID0gSFtpXS5s
OwogIH0KICByZXR1cm4gaGFzaDsKfQoKLy9BIGNvbnN0cnVjdG9yIGZvciA2NC1iaXQgbnVtYmVy
cwpmdW5jdGlvbiBpbnQ2NChoLCBsKQp7CiAgdGhpcy5oID0gaDsKICB0aGlzLmwgPSBsOwogIC8v
dGhpcy50b1N0cmluZyA9IGludDY0dG9TdHJpbmc7Cn0KCi8vQ29waWVzIHNyYyBpbnRvIGRzdCwg
YXNzdW1pbmcgYm90aCBhcmUgNjQtYml0IG51bWJlcnMKZnVuY3Rpb24gaW50NjRjb3B5KGRzdCwg
c3JjKQp7CiAgZHN0LmggPSBzcmMuaDsKICBkc3QubCA9IHNyYy5sOwp9CgovL1JpZ2h0LXJvdGF0
ZXMgYSA2NC1iaXQgbnVtYmVyIGJ5IHNoaWZ0Ci8vV29uJ3QgaGFuZGxlIGNhc2VzIG9mIHNoaWZ0
Pj0zMgovL1RoZSBmdW5jdGlvbiByZXZycm90KCkgaXMgZm9yIHRoYXQKZnVuY3Rpb24gaW50NjRy
cm90KGRzdCwgeCwgc2hpZnQpCnsKICAgIGRzdC5sID0gKHgubCA+Pj4gc2hpZnQpIHwgKHguaCA8
PCAoMzItc2hpZnQpKTsKICAgIGRzdC5oID0gKHguaCA+Pj4gc2hpZnQpIHwgKHgubCA8PCAoMzIt
c2hpZnQpKTsKfQoKLy9SZXZlcnNlcyB0aGUgZHdvcmRzIG9mIHRoZSBzb3VyY2UgYW5kIHRoZW4g
cm90YXRlcyByaWdodCBieSBzaGlmdC4KLy9UaGlzIGlzIGVxdWl2YWxlbnQgdG8gcm90YXRpb24g
YnkgMzIrc2hpZnQKZnVuY3Rpb24gaW50NjRyZXZycm90KGRzdCwgeCwgc2hpZnQpCnsKICAgIGRz
dC5sID0gKHguaCA+Pj4gc2hpZnQpIHwgKHgubCA8PCAoMzItc2hpZnQpKTsKICAgIGRzdC5oID0g
KHgubCA+Pj4gc2hpZnQpIHwgKHguaCA8PCAoMzItc2hpZnQpKTsKfQoKLy9CaXR3aXNlLXNoaWZ0
cyByaWdodCBhIDY0LWJpdCBudW1iZXIgYnkgc2hpZnQKLy9Xb24ndCBoYW5kbGUgc2hpZnQ+PTMy
LCBidXQgaXQncyBuZXZlciBuZWVkZWQgaW4gU0hBNTEyCmZ1bmN0aW9uIGludDY0c2hyKGRzdCwg
eCwgc2hpZnQpCnsKICAgIGRzdC5sID0gKHgubCA+Pj4gc2hpZnQpIHwgKHguaCA8PCAoMzItc2hp
ZnQpKTsKICAgIGRzdC5oID0gKHguaCA+Pj4gc2hpZnQpOwp9CgovL0FkZHMgdHdvIDY0LWJpdCBu
dW1iZXJzCi8vTGlrZSB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIGRvZXMgbm90IHJlbHkg
b24gMzItYml0IG9wZXJhdGlvbnMKZnVuY3Rpb24gaW50NjRhZGQoZHN0LCB4LCB5KQp7CgovL2Rv
Y3VtZW50LndyaXRlbG4oImludDY0YWRkIHdpdGggZHN0aCgiICsgZHN0LmggKyAiLCBkc3RsKCIg
KyBkc3QubCArICIpLCB4aCgiICsgeC5oICsgIiksIHhsKCIgKyB4LmwgKyAiKSwgeWgoIiArIHku
aCArICIpLCB5bCgiICsgeS5sICsgIik8YnI+Iik7CgogICB2YXIgdzAgPSAoeC5sICYgMHhmZmZm
KSArICh5LmwgJiAweGZmZmYpOwogICB2YXIgdzEgPSAoeC5sID4+PiAxNikgKyAoeS5sID4+PiAx
NikgKyAodzAgPj4+IDE2KTsKICAgdmFyIHcyID0gKHguaCAmIDB4ZmZmZikgKyAoeS5oICYgMHhm
ZmZmKSArICh3MSA+Pj4gMTYpOwogICB2YXIgdzMgPSAoeC5oID4+PiAxNikgKyAoeS5oID4+PiAx
NikgKyAodzIgPj4+IDE2KTsKICAgZHN0LmwgPSAodzAgJiAweGZmZmYpIHwgKHcxIDw8IDE2KTsK
ICAgZHN0LmggPSAodzIgJiAweGZmZmYpIHwgKHczIDw8IDE2KTsKfQoKLy9TYW1lLCBleGNlcHQg
d2l0aCA0IGFkZGVuZHMuIFdvcmtzIGZhc3RlciB0aGFuIGFkZGluZyB0aGVtIG9uZSBieSBvbmUu
CmZ1bmN0aW9uIGludDY0YWRkNChkc3QsIGEsIGIsIGMsIGQpCnsKICAgdmFyIHcwID0gKGEubCAm
IDB4ZmZmZikgKyAoYi5sICYgMHhmZmZmKSArIChjLmwgJiAweGZmZmYpICsgKGQubCAmIDB4ZmZm
Zik7CiAgIHZhciB3MSA9IChhLmwgPj4+IDE2KSArIChiLmwgPj4+IDE2KSArIChjLmwgPj4+IDE2
KSArIChkLmwgPj4+IDE2KSArICh3MCA+Pj4gMTYpOwogICB2YXIgdzIgPSAoYS5oICYgMHhmZmZm
KSArIChiLmggJiAweGZmZmYpICsgKGMuaCAmIDB4ZmZmZikgKyAoZC5oICYgMHhmZmZmKSArICh3
MSA+Pj4gMTYpOwogICB2YXIgdzMgPSAoYS5oID4+PiAxNikgKyAoYi5oID4+PiAxNikgKyAoYy5o
ID4+PiAxNikgKyAoZC5oID4+PiAxNikgKyAodzIgPj4+IDE2KTsKICAgZHN0LmwgPSAodzAgJiAw
eGZmZmYpIHwgKHcxIDw8IDE2KTsKICAgZHN0LmggPSAodzIgJiAweGZmZmYpIHwgKHczIDw8IDE2
KTsKfQoKLy9TYW1lLCBleGNlcHQgd2l0aCA1IGFkZGVuZHMKZnVuY3Rpb24gaW50NjRhZGQ1KGRz
dCwgYSwgYiwgYywgZCwgZSkKewogICB2YXIgdzAgPSAoYS5sICYgMHhmZmZmKSArIChiLmwgJiAw
eGZmZmYpICsgKGMubCAmIDB4ZmZmZikgKyAoZC5sICYgMHhmZmZmKSArIChlLmwgJiAweGZmZmYp
OwogICB2YXIgdzEgPSAoYS5sID4+PiAxNikgKyAoYi5sID4+PiAxNikgKyAoYy5sID4+PiAxNikg
KyAoZC5sID4+PiAxNikgKyAoZS5sID4+PiAxNikgKyAodzAgPj4+IDE2KTsKICAgdmFyIHcyID0g
KGEuaCAmIDB4ZmZmZikgKyAoYi5oICYgMHhmZmZmKSArIChjLmggJiAweGZmZmYpICsgKGQuaCAm
IDB4ZmZmZikgKyAoZS5oICYgMHhmZmZmKSArICh3MSA+Pj4gMTYpOwogICB2YXIgdzMgPSAoYS5o
ID4+PiAxNikgKyAoYi5oID4+PiAxNikgKyAoYy5oID4+PiAxNikgKyAoZC5oID4+PiAxNikgKyAo
ZS5oID4+PiAxNikgKyAodzIgPj4+IDE2KTsKICAgZHN0LmwgPSAodzAgJiAweGZmZmYpIHwgKHcx
IDw8IDE2KTsKICAgZHN0LmggPSAodzIgJiAweGZmZmYpIHwgKHczIDw8IDE2KTsKfQoKLy8tLT48
L3NjcmlwdD4KCjwvaGVhZD4KCjxib2R5PgoKPHA+U0hBLTUxMiB0ZXN0IGZvciBNYWMgKEludGVs
IE9TWCBMaW9uIDEwLjcuNCBhbmQgaVBvZCBUb3VjaCAzZyA1LjAuMSkgdXNpbmcgPGEgaHJlZj0i
aHR0cDovL2pzc2hhLnNvdXJjZWZvcmdlLm5ldC8iPmpzc2hhPC9hPiAoQlQgdmVyc2lvbikgYW5k
IDxhIGhyZWY9Imh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUvc2hhNTEyLmh0bWwiPnNo
YTUxMjwvYT4gKFBBSiB2ZXJzaW9uKS48L3A+Cgo8cD5BbGwgcm91bmRzIGNvcnJlY3Qgb24gRmly
ZWZveCAxMi4wLCBPcGVyYSAxMS42NCBhbmQgQ2hyb21lIDE2LjAwLjwvcD4KCjxwPkZpcnN0IHJv
dW5kIGNvcnJlY3QgdGhlbiBhbGwgc3Vic2VxdWVudCB3cm9uZyBvbiBpQ2FiIDUuMDEgYW5kIFNh
ZmFyaSA1LjE3ICg3NTM0LjU3LjIsIHBsdXMgV2Via2l0IG5pZ2h0bHkgYnVpbGQgcjEyMTMxOSkg
LS0gaWUsIGJyb3dzZXJzIHVzaW5nIEJpZyBXZWJraXQuPC9wPgoKPHA+QWxsIHJvdW5kcyBjb3Jy
ZWN0IG9uIFRpbnkgaUNhYiA1LjggYW5kIFRpbnkgU2FmYXJpIC0tIGllLCBicm93c2VycyB1c2lu
ZyBUaW55IFdlYmtpdC48L3A+Cgo8cD5OQjogYWxsIHJvdW5kcyBjb3JyZWN0IG9uIEJpZyBXZWJr
aXQgaWYgeW91IG9wZW4gdGhlIFdlYiBJbnNwZWN0b3IgYW5kIHN3aXRjaCBvbiBKYXZhc2NyaXB0
IERlYnVnZ2luZy4gSG0uPC9wPgoKPHA+dGV4dDogdGVzdDxicj4KZXhwZWN0ZWQgaGFzaDogZWUy
NmIwZGQ0YWY3ZTc0OWFhMWE4ZWUzYzEwYWU5OTIzZjYxODk4MDc3MmU0NzNmODgxOWE1ZDQ5NDBl
MGRiMjdhYzE4NWY4YTBlMWQ1Zjg0Zjg4YmM4ODdmZDY3YjE0MzczMmMzMDRjYzVmYTlhZDhlNmY1
N2Y1MDAyOGE4ZmY8L3A+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dGVzdF9qc3No
YSgpOzwvc2NyaXB0PgoKPCEtLSBwPjxhIGhyZWY9ImphdmFzY3JpcHQ6dGVzdF9qc3NoYSgpIj5y
dW48L2E+PC9wIC0tPgoKPG5vc2NyaXB0PihZb3UgbmVlZCBKYXZhc2NyaXB0IHN3aXRjaGVkIG9u
IGZvciB0aGVzZSB0ZXN0cy4pPC9ub3NjcmlwdD4KCjwvYm9keT48L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149818</attachid>
            <date>2012-06-27 16:41:25 -0700</date>
            <delta_ts>2012-06-27 16:52:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixsha512_patch_1.diff</filename>
            <type>text/plain</type>
            <size>12050</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTA2LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SmF2YXNjcmlwdCBTSEEtNTEyIGdpdmVzIHdyb25nIGhhc2ggb24gc2Vjb25kIGFuZCBzdWJzZXF1
ZW50IHJ1bnMgdW5sZXNzIFdlYiBJbnNwZWN0b3IgSmF2YXNjcmlwdCBEZWJ1Z2dpbmcgaXMgb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDUzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTc2NDYxMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhl
IGNvZGUgd2FzIGFzc3VtaW5nIHRoYXQgdGhlIHJlY292ZXJ5IHNob3VsZCBiZSBVbmRlZmluZWQg
aWYgdGhlIHNvdXJjZSBvZgorICAgICAgICB0aGUgU2V0TG9jYWwgd2FzICFzaG91bGRHZW5lcmF0
ZSgpLiBCdXQgdGhhdCdzIHdyb25nLCBzaW5jZSB0aGUgREZHIG9wdGltaXplciBtYXkgc2tpcCBh
cm91bmQgYQorICAgICAgICBVSW50MzJUb051bWJlciBub2RlIChoZW5jZSBtYWtpbmcgaXQgIXNo
b3VsZEdlbmVyYXRlKCkpIGFuZCBrZWVwIHRoZSBzb3VyY2Ugb2YgdGhhdCBub2RlIGFsaXZlLgor
ICAgICAgICBJbiB0aGF0IGNhc2Ugd2Ugc2hvdWxkIGJhc2UgdGhlIHJlY292ZXJ5IG9uIHRoZSBz
b3VyY2Ugb2YgdGhlIFVJbnQzMlRvTnVtYmVyLiBUaGUgbG9naWMgZm9yIHRoaXMKKyAgICAgICAg
d2FzIGFscmVhZHkgaW4gcGxhY2UgYnV0IHRoZSBmYXN0IGNoZWNrIGZvciAhc2hvdWxkR2VuZXJh
dGUoKSBicm9rZSBpdC4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9y
KToKKwogMjAxMi0wNi0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIERGRyBkaXNhc3NlbWJseSBzaG91bGQgYmUgZWFzaWVyIHRvIHJlYWQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAxMjEzODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5NywxNCArMTM5NywxMiBAQCBWYWx1ZVJlY292ZXJ5
IFNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsCiAgICAgICAgIGlmIChub2RlUHRyLT5oYXNDb25z
dGFudCgpKQogICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KHZhbHVl
T2ZKU0NvbnN0YW50KHZhbHVlU291cmNlLm5vZGVJbmRleCgpKSk7CiAgICAgICAgIAotICAgICAg
ICBpZiAoIW5vZGVQdHItPnNob3VsZEdlbmVyYXRlKCkpIHsKLSAgICAgICAgICAgIC8vIEl0J3Mg
bGVnaXRpbWF0ZWx5IGRlYWQuIEFzIGluLCBub2JvZHkgd2lsbCBldmVyIHVzZSB0aGlzIG5vZGUs
IG9yIG9wZXJhbmQsCi0gICAgICAgICAgICAvLyBldmVyLiBTZXQgaXQgdG8gVW5kZWZpbmVkIHRv
IG1ha2UgdGhlIEdDIGhhcHB5IGFmdGVyIHRoZSBPU1IuCi0gICAgICAgICAgICByZXR1cm4gVmFs
dWVSZWNvdmVyeTo6Y29uc3RhbnQoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAKLSAg
ICAgICAgR2VuZXJhdGlvbkluZm8qIGluZm9QdHIgPSAmbV9nZW5lcmF0aW9uSW5mb1tub2RlUHRy
LT52aXJ0dWFsUmVnaXN0ZXIoKV07Ci0gICAgICAgIGlmICghaW5mb1B0ci0+YWxpdmUoKSB8fCBp
bmZvUHRyLT5ub2RlSW5kZXgoKSAhPSB2YWx1ZVNvdXJjZS5ub2RlSW5kZXgoKSkgeworICAgICAg
ICBHZW5lcmF0aW9uSW5mbyogaW5mb1B0cjsKKyAgICAgICAgaWYgKG5vZGVQdHItPnNob3VsZEdl
bmVyYXRlKCkpCisgICAgICAgICAgICBpbmZvUHRyID0gJm1fZ2VuZXJhdGlvbkluZm9bbm9kZVB0
ci0+dmlydHVhbFJlZ2lzdGVyKCldOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvUHRy
ID0gMDsKKyAgICAgICAgaWYgKCFpbmZvUHRyIHx8ICFpbmZvUHRyLT5hbGl2ZSgpIHx8IGluZm9Q
dHItPm5vZGVJbmRleCgpICE9IHZhbHVlU291cmNlLm5vZGVJbmRleCgpKSB7CiAgICAgICAgICAg
ICAvLyBUcnkgdG8gc2VlIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0ZSBub2RlIHRoYXQgd291bGQg
Y29udGFpbiB0aGUgdmFsdWUgd2Ugd2FudC4KICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBmb3Vy
IHBvc3NpYmlsaXRpZXM6CiAgICAgICAgICAgICAvLwpAQCAtMTQzMSw5ICsxNDI5LDExIEBAIFZh
bHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAgIGlmIChu
b2RlUHRyLT5vcCgpID09IFVJbnQzMlRvTnVtYmVyIHx8IG5vZGVQdHItPm9wKCkgPT0gRG91Ymxl
QXNJbnQzMikgewogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBub2RlUHRy
LT5jaGlsZDEoKS5pbmRleCgpOwogICAgICAgICAgICAgICAgIG5vZGVQdHIgPSAmYXQobm9kZUlu
ZGV4KTsKLSAgICAgICAgICAgICAgICBpbmZvUHRyID0gJm1fZ2VuZXJhdGlvbkluZm9bbm9kZVB0
ci0+dmlydHVhbFJlZ2lzdGVyKCldOwotICAgICAgICAgICAgICAgIGlmIChpbmZvUHRyLT5hbGl2
ZSgpICYmIGluZm9QdHItPm5vZGVJbmRleCgpID09IG5vZGVJbmRleCkKLSAgICAgICAgICAgICAg
ICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5zaG91bGRH
ZW5lcmF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGluZm9QdHIgPSAmbV9nZW5lcmF0aW9u
SW5mb1tub2RlUHRyLT52aXJ0dWFsUmVnaXN0ZXIoKV07CisgICAgICAgICAgICAgICAgICAgIGlm
IChpbmZvUHRyLT5hbGl2ZSgpICYmIGluZm9QdHItPm5vZGVJbmRleCgpID09IG5vZGVJbmRleCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFmb3VuZCkgewpAQCAt
MTQ4Miw5ICsxNDgyLDExIEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVW
YWwKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChub2RlSW5kZXhUb1VzZSAhPSBO
b05vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZVB0ciA9ICZhdChub2RlSW5kZXhUb1Vz
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9QdHIgPSAmbV9nZW5lcmF0aW9uSW5mb1tub2Rl
UHRyLT52aXJ0dWFsUmVnaXN0ZXIoKV07Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmZv
UHRyLT5hbGl2ZSgpICYmIGluZm9QdHItPm5vZGVJbmRleCgpID09IG5vZGVJbmRleFRvVXNlKTsK
LSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZVB0ci0+c2hvdWxkR2VuZXJhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1B0ciA9ICZtX2dlbmVyYXRpb25JbmZvW25vZGVQdHItPnZpcnR1YWxSZWdpc3RlcigpXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmZvUHRyLT5hbGl2ZSgpICYmIGluZm9Q
dHItPm5vZGVJbmRleCgpID09IG5vZGVJbmRleFRvVXNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjEzODMpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0wNi0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEph
dmFzY3JpcHQgU0hBLTUxMiBnaXZlcyB3cm9uZyBoYXNoIG9uIHNlY29uZCBhbmQgc3Vic2VxdWVu
dCBydW5zIHVubGVzcyBXZWIgSW5zcGVjdG9yIEphdmFzY3JpcHQgRGVidWdnaW5nIGlzIG9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDA1MworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTE3NjQ2MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pzL2RmZy11aW50MzItdG8tbnVtYmVyLXNr
aXAtdGhlbi1leGl0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9kZmct
dWludDMyLXRvLW51bWJlci1za2lwLXRoZW4tZXhpdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctdWludDMyLXRvLW51bWJlci1za2lwLXRoZW4tZXhpdC5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDEyLTA2LTI3ICBBbHBoYSBMYW0gIDxoY2xh
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZWJhc2UgaW1hZ2UgbWlzbWF0
Y2ggY2F1c2VkIGJ5IDEyMTM3MS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZGZnLXVpbnQz
Mi10by1udW1iZXItc2tpcC10aGVuLWV4aXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXItc2tpcC10aGVuLWV4aXQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctdWludDMy
LXRvLW51bWJlci1za2lwLXRoZW4tZXhpdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjA5IEBACitUaGlzIHRlc3RzIHRoYXQgYSBza2lwcGVkIGNvbnZlcnNpb24gb2YgdWlu
dDMyIHRvIG51bWJlciBkb2VzIG5vdCBjb25mdXNlIE9TUiBleGl0IGludG8gdGhpbmtpbmcgdGhh
dCB0aGUgY29udmVyc2lvbiBpcyBkZWFkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBmb28oaSwgMSwgbykgaXMgNDIKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDQyCitQQVNT
IGZvbyhpLCAxLCBvKSBpcyA0MworUEFTUyBmb28oaSwgMSwgbykgaXMgNDMKK1BBU1MgZm9vKGks
IDEsIG8pIGlzIDQ0CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA0NAorUEFTUyBmb28oaSwgMSwgbykg
aXMgNDUKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDQ1CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA0Ngor
UEFTUyBmb28oaSwgMSwgbykgaXMgNDYKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDQ3CitQQVNTIGZv
byhpLCAxLCBvKSBpcyA0NworUEFTUyBmb28oaSwgMSwgbykgaXMgNDgKK1BBU1MgZm9vKGksIDEs
IG8pIGlzIDQ4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA0OQorUEFTUyBmb28oaSwgMSwgbykgaXMg
NDkKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDUwCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA1MAorUEFT
UyBmb28oaSwgMSwgbykgaXMgNTEKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDUxCitQQVNTIGZvbyhp
LCAxLCBvKSBpcyA1MgorUEFTUyBmb28oaSwgMSwgbykgaXMgNTIKK1BBU1MgZm9vKGksIDEsIG8p
IGlzIDUzCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA1MworUEFTUyBmb28oaSwgMSwgbykgaXMgNTQK
K1BBU1MgZm9vKGksIDEsIG8pIGlzIDU0CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA1NQorUEFTUyBm
b28oaSwgMSwgbykgaXMgNTUKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDU2CitQQVNTIGZvbyhpLCAx
LCBvKSBpcyA1NgorUEFTUyBmb28oaSwgMSwgbykgaXMgNTcKK1BBU1MgZm9vKGksIDEsIG8pIGlz
IDU3CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA1OAorUEFTUyBmb28oaSwgMSwgbykgaXMgNTgKK1BB
U1MgZm9vKGksIDEsIG8pIGlzIDU5CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA1OQorUEFTUyBmb28o
aSwgMSwgbykgaXMgNjAKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDYwCitQQVNTIGZvbyhpLCAxLCBv
KSBpcyA2MQorUEFTUyBmb28oaSwgMSwgbykgaXMgNjEKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDYy
CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA2MgorUEFTUyBmb28oaSwgMSwgbykgaXMgNjMKK1BBU1Mg
Zm9vKGksIDEsIG8pIGlzIDYzCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA2NAorUEFTUyBmb28oaSwg
MSwgbykgaXMgNjQKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDY1CitQQVNTIGZvbyhpLCAxLCBvKSBp
cyA2NQorUEFTUyBmb28oaSwgMSwgbykgaXMgNjYKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDY2CitQ
QVNTIGZvbyhpLCAxLCBvKSBpcyA2NworUEFTUyBmb28oaSwgMSwgbykgaXMgNjcKK1BBU1MgZm9v
KGksIDEsIG8pIGlzIDY4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA2OAorUEFTUyBmb28oaSwgMSwg
bykgaXMgNjkKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDY5CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA3
MAorUEFTUyBmb28oaSwgMSwgbykgaXMgNzAKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDcxCitQQVNT
IGZvbyhpLCAxLCBvKSBpcyA3MQorUEFTUyBmb28oaSwgMSwgbykgaXMgNzIKK1BBU1MgZm9vKGks
IDEsIG8pIGlzIDcyCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA3MworUEFTUyBmb28oaSwgMSwgbykg
aXMgNzMKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDc0CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA3NAor
UEFTUyBmb28oaSwgMSwgbykgaXMgNzUKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDc1CitQQVNTIGZv
byhpLCAxLCBvKSBpcyA3NgorUEFTUyBmb28oaSwgMSwgbykgaXMgNzYKK1BBU1MgZm9vKGksIDEs
IG8pIGlzIDc3CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA3NworUEFTUyBmb28oaSwgMSwgbykgaXMg
NzgKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDc4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA3OQorUEFT
UyBmb28oaSwgMSwgbykgaXMgNzkKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDgwCitQQVNTIGZvbyhp
LCAxLCBvKSBpcyA4MAorUEFTUyBmb28oaSwgMSwgbykgaXMgODEKK1BBU1MgZm9vKGksIDEsIG8p
IGlzIDgxCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA4MgorUEFTUyBmb28oaSwgMSwgbykgaXMgODIK
K1BBU1MgZm9vKGksIDEsIG8pIGlzIDgzCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA4MworUEFTUyBm
b28oaSwgMSwgbykgaXMgODQKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDg0CitQQVNTIGZvbyhpLCAx
LCBvKSBpcyA4NQorUEFTUyBmb28oaSwgMSwgbykgaXMgODUKK1BBU1MgZm9vKGksIDEsIG8pIGlz
IDg2CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA4NgorUEFTUyBmb28oaSwgMSwgbykgaXMgODcKK1BB
U1MgZm9vKGksIDEsIG8pIGlzIDg3CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA4OAorUEFTUyBmb28o
aSwgMSwgbykgaXMgODgKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDg5CitQQVNTIGZvbyhpLCAxLCBv
KSBpcyA4OQorUEFTUyBmb28oaSwgMSwgbykgaXMgOTAKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDkw
CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA5MQorUEFTUyBmb28oaSwgMSwgbykgaXMgOTEKK1BBU1Mg
Zm9vKGksIDEsIG8pIGlzIDkyCitQQVNTIGZvbyhpLCAxLCBvKSBpcyA5MgorUEFTUyBmb28oaSwg
MSwgbykgaXMgOTMKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDkzCitQQVNTIGZvbyhpLCAxLCBvKSBp
cyA5NAorUEFTUyBmb28oaSwgMSwgbykgaXMgOTQKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDk1CitQ
QVNTIGZvbyhpLCAxLCBvKSBpcyA5NQorUEFTUyBmb28oaSwgMSwgbykgaXMgOTYKK1BBU1MgZm9v
KGksIDEsIG8pIGlzIDk2CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA5NworUEFTUyBmb28oaSwgMSwg
bykgaXMgOTcKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDk4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyA5
OAorUEFTUyBmb28oaSwgMSwgbykgaXMgOTkKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDk5CitQQVNT
IGZvbyhpLCAxLCBvKSBpcyAxMDAKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEwMAorUEFTUyBmb28o
aSwgMSwgbykgaXMgMTAxCitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMDEKK1BBU1MgZm9vKGksIDEs
IG8pIGlzIDEwMgorUEFTUyBmb28oaSwgMSwgbykgaXMgMTAyCitQQVNTIGZvbyhpLCAxLCBvKSBp
cyAxMDMKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEwMworUEFTUyBmb28oaSwgMSwgbykgaXMgMTA0
CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMDQKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEwNQorUEFT
UyBmb28oaSwgMSwgbykgaXMgMTA1CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMDYKK1BBU1MgZm9v
KGksIDEsIG8pIGlzIDEwNgorUEFTUyBmb28oaSwgMSwgbykgaXMgMTA3CitQQVNTIGZvbyhpLCAx
LCBvKSBpcyAxMDcKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEwOAorUEFTUyBmb28oaSwgMSwgbykg
aXMgMTA4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMDkKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEw
OQorUEFTUyBmb28oaSwgMSwgbykgaXMgMTEwCitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMTAKK1BB
U1MgZm9vKGksIDEsIG8pIGlzIDExMQorUEFTUyBmb28oaSwgMSwgbykgaXMgMTExCitQQVNTIGZv
byhpLCAxLCBvKSBpcyAxMTIKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDExMgorUEFTUyBmb28oaSwg
MSwgbykgaXMgMTEzCitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMTMKK1BBU1MgZm9vKGksIDEsIG8p
IGlzIDExNAorUEFTUyBmb28oaSwgMSwgbykgaXMgMTE0CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAx
MTUKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDExNQorUEFTUyBmb28oaSwgMSwgbykgaXMgMTE2CitQ
QVNTIGZvbyhpLCAxLCBvKSBpcyAxMTYKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDExOAorUEFTUyBm
b28oaSwgMSwgbykgaXMgMTE4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMTkKK1BBU1MgZm9vKGks
IDEsIG8pIGlzIDExOQorUEFTUyBmb28oaSwgMSwgbykgaXMgMTIwCitQQVNTIGZvbyhpLCAxLCBv
KSBpcyAxMjAKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEyMQorUEFTUyBmb28oaSwgMSwgbykgaXMg
MTIxCitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMjIKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEyMgor
UEFTUyBmb28oaSwgMSwgbykgaXMgMTIzCitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMjMKK1BBU1Mg
Zm9vKGksIDEsIG8pIGlzIDEyNAorUEFTUyBmb28oaSwgMSwgbykgaXMgMTI0CitQQVNTIGZvbyhp
LCAxLCBvKSBpcyAxMjUKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEyNQorUEFTUyBmb28oaSwgMSwg
bykgaXMgMTI2CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMjYKK1BBU1MgZm9vKGksIDEsIG8pIGlz
IDEyNworUEFTUyBmb28oaSwgMSwgbykgaXMgMTI3CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMjgK
K1BBU1MgZm9vKGksIDEsIG8pIGlzIDEyOAorUEFTUyBmb28oaSwgMSwgbykgaXMgMTI5CitQQVNT
IGZvbyhpLCAxLCBvKSBpcyAxMjkKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEzMAorUEFTUyBmb28o
aSwgMSwgbykgaXMgMTMwCitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMzEKK1BBU1MgZm9vKGksIDEs
IG8pIGlzIDEzMQorUEFTUyBmb28oaSwgMSwgbykgaXMgMTMyCitQQVNTIGZvbyhpLCAxLCBvKSBp
cyAxMzIKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEzMworUEFTUyBmb28oaSwgMSwgbykgaXMgMTMz
CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMzQKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEzNAorUEFT
UyBmb28oaSwgMSwgbykgaXMgMTM1CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMzUKK1BBU1MgZm9v
KGksIDEsIG8pIGlzIDEzNgorUEFTUyBmb28oaSwgMSwgbykgaXMgMTM2CitQQVNTIGZvbyhpLCAx
LCBvKSBpcyAxMzcKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEzNworUEFTUyBmb28oaSwgMSwgbykg
aXMgMTM4CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxMzgKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDEz
OQorUEFTUyBmb28oaSwgMSwgbykgaXMgMTM5CitQQVNTIGZvbyhpLCAxLCBvKSBpcyAxNDAKK1BB
U1MgZm9vKGksIDEsIG8pIGlzIDE0MAorUEFTUyBmb28oaSwgMSwgbykgaXMgMTQxCitQQVNTIGZv
byhpLCAxLCBvKSBpcyAxNDEKK1BBU1MgZm9vKGksIDEsIG8pIGlzIDE0MgorUEFTUyBmb28oaSwg
MSwgbykgaXMgMTQyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctdWludDMyLXRvLW51bWJlci1z
a2lwLXRoZW4tZXhpdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZGZn
LXVpbnQzMi10by1udW1iZXItc2tpcC10aGVuLWV4aXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXItc2tpcC10aGVuLWV4aXQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL2RmZy11aW50MzItdG8tbnVtYmVyLXNraXAtdGhlbi1leGl0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0
LXRlc3RzL2RmZy11aW50MzItdG8tbnVtYmVyLXNraXAtdGhlbi1leGl0LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy11aW50MzItdG8tbnVtYmVy
LXNraXAtdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvZGZnLXVpbnQzMi10by1udW1iZXItc2tpcC10aGVuLWV4aXQuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdHMgdGhhdCBh
IHNraXBwZWQgY29udmVyc2lvbiBvZiB1aW50MzIgdG8gbnVtYmVyIGRvZXMgbm90IGNvbmZ1c2Ug
T1NSIGV4aXQgaW50byB0aGlua2luZyB0aGF0IHRoZSBjb252ZXJzaW9uIGlzIGRlYWQuIgorKTsK
KworZnVuY3Rpb24gZm9vKGEsIGIsIG8pIHsKKyAgICB2YXIgeCA9IGEgPj4+IGI7CisgICAgcmV0
dXJuIG8uZiArICh4IHwgMCk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpIHsK
KyAgICB2YXIgbzsKKyAgICB2YXIgZXhwZWN0ZWQ7CisgICAgaWYgKGkgPCAxNTApIHsKKyAgICAg
ICAgbyA9IHtmOjQyfTsKKyAgICAgICAgZXhwZWN0ZWQgPSA0MiArICgoaSAvIDIpIHwgMCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbyA9IHtmOjQzLCBnOjQ0fTsKKyAgICAgICAgZXhwZWN0ZWQg
PSA0MyArICgoaSAvIDIpIHwgMCk7CisgICAgfQorICAgIHNob3VsZEJlKCJmb28oaSwgMSwgbyki
LCAiIiArIGV4cGVjdGVkKTsKK30KKwo=
</data>
<flag name="review"
          id="157929"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>