<?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>40322</bug_id>
          
          <creation_ts>2010-06-08 12:08:56 -0700</creation_ts>
          <short_desc>Update readPixels to take ArrayBufferView rather than returning it</short_desc>
          <delta_ts>2010-06-09 14:40:03 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235419</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-08 12:08:56 -0700</bug_when>
    <thetext>Per recent updates to the WebGL spec, readPixels must be updated to take an ArrayBufferView as argument rather than returning a newly allocated one. Checks on the type and size of the passed array must be implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235911</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-09 11:45:56 -0700</bug_when>
    <thetext>I&apos;ve already got a patch in progress for this one. Reassigning to myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235994</commentid>
    <comment_count>2</comment_count>
      <attachid>58293</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-09 14:06:46 -0700</bug_when>
    <thetext>Created attachment 58293
Patch

Self-explanatory.

Ran WebGL tests in WebKit; testing in Chromium in progress and will be completed before checkin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235999</commentid>
    <comment_count>3</comment_count>
      <attachid>58294</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-09 14:10:33 -0700</bug_when>
    <thetext>Created attachment 58294
Revised patch

Fixed minor style issue in read-pixels.html test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236004</commentid>
    <comment_count>4</comment_count>
      <attachid>58294</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-09 14:12:49 -0700</bug_when>
    <thetext>Comment on attachment 58294
Revised patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236017</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-09 14:40:03 -0700</bug_when>
    <thetext>Committed r60914: &lt;http://trac.webkit.org/changeset/60914&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58293</attachid>
            <date>2010-06-09 14:06:46 -0700</date>
            <delta_ts>2010-06-09 14:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>readpixels.patch</filename>
            <type>text/plain</type>
            <size>27061</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSByZWFkUGl4ZWxzIHRvIHRha2UgQXJyYXlCdWZmZXJWaWV3IHJhdGhlciB0aGFuIHJldHVy
bmluZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAzMjIKKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMs
IHdoaWNoIGhhdmUgYmVlbiBtb2RpZmllZC4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisKIDIwMTAtMDYtMDkgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1v
Ymk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBUcmVhdC4KSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDYwOTEwKQor
KysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjY0LDcgKzE2NjQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
cG9seWdvbk9mZnNlCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAot
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBp
eGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBo
ZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUpCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQogewogICAgIC8vIFZh
bGlkYXRlIGVudW1zLgogICAgIHVuc2lnbmVkIGxvbmcgY29tcG9uZW50c1BlclBpeGVsID0gMDsK
QEAgLTE2ODAsNyArMTY4MCw3IEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBXZWJHTFJl
bmRlcmkKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdW5zaWduZWQgbG9uZyBi
eXRlc1BlckNvbXBvbmVudCA9IDA7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xNjk1LDExICsx
Njk1LDIxIEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBXZWJHTFJlbmRlcmkKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFwaXhlbHMpIHsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCEoKGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSAmJiB0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFKSB8fCAoZm9ybWF0ID09IG1faW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQgJiYgdHlw
ZSA9PSBtX2ltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSkpKSB7CiAgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gVmFs
aWRhdGUgYXJyYXkgdHlwZSBhZ2FpbnN0IHBpeGVsIHR5cGUuCisgICAgaWYgKHR5cGUgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUgJiYgIXBpeGVscy0+aXNVbnNpZ25lZEJ5dGVB
cnJheSgpCisgICAgICAgIHx8IHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUgJiYgIXBpeGVscy0+aXNVbnNpZ25lZFNob3J0QXJyYXkoKSkgeworICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gQ2FsY3VsYXRlIGFycmF5IHNpemUs
IHRha2luZyBpbnRvIGNvbnNpZGVyYXRpb24gb2YgUEFDS19BTElHTk1FTlQuCiAgICAgdW5zaWdu
ZWQgbG9uZyBieXRlc1BlclJvdyA9IGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9u
ZW50ICogd2lkdGg7CkBAIC0xNzEyLDEyICsxNzIyLDExIEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBXZWJHTFJlbmRlcmkKICAgICAvLyBUaGUgbGFzdCByb3cgbmVlZHMgbm8gcGFkZGlu
Zy4KICAgICB1bnNpZ25lZCBsb25nIHRvdGFsQnl0ZXMgPSBieXRlc1BlclJvdyAqIGhlaWdodCAt
IHBhZGRpbmc7CiAgICAgdW5zaWduZWQgbG9uZyBudW0gPSB0b3RhbEJ5dGVzIC8gYnl0ZXNQZXJD
b21wb25lbnQ7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXk7Ci0gICAgaWYgKHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpCi0gICAgICAgIGFycmF5ID0g
VWludDhBcnJheTo6Y3JlYXRlKG51bSk7Ci0gICAgZWxzZQotICAgICAgICBhcnJheSA9IFVpbnQx
NkFycmF5OjpjcmVhdGUobnVtKTsKLSAgICB2b2lkKiBkYXRhID0gYXJyYXktPmJhc2VBZGRyZXNz
KCk7CisgICAgaWYgKHBpeGVscy0+bGVuZ3RoKCkgPCBudW0pIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMtPmJhc2VB
ZGRyZXNzKCk7CiAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHNlY3Rpb24gd2hlbiBHTCBkcml2ZXIgYnVnIG9uIE1hYyBpcyBmaXhlZCwgaS5l
LiwKQEAgLTE3MzcsNyArMTc0Niw2IEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBXZWJH
TFJlbmRlcmkKICAgICB9CiAjZW5kaWYKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwotICAgIHJldHVybiBhcnJheTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDYwOTEwKQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4
Miw3IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgdm9pZCBwaXhlbFN0b3JlaSh1
bnNpZ25lZCBsb25nIHBuYW1lLCBsb25nIHBhcmFtKTsKICAgICAgICAgdm9pZCBwb2x5Z29uT2Zm
c2V0KGRvdWJsZSBmYWN0b3IsIGRvdWJsZSB1bml0cyk7CiAgICAgICAgIAotICAgICAgICBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcmVhZFBpeGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlYWRQaXhlbHMobG9uZyB4LCBs
b25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25l
ZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVs
cyk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOwogICAg
ICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGwJKHJldmlzaW9uIDYwOTEwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsNyArNTk1LDcgQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICB2b2lkICAgICAgICAgcGl4ZWxTdG9yZWkoaW4gdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW4gbG9uZyBwYXJhbSk7CiAgICAgICAgIHZvaWQgICAgICAgICBwb2x5
Z29uT2Zmc2V0KGluIGRvdWJsZSBmYWN0b3IsIGluIGRvdWJsZSB1bml0cyk7CiAKLSAgICAgICAg
QXJyYXlCdWZmZXJWaWV3IHJlYWRQaXhlbHMoaW4gbG9uZyB4LCBpbiBsb25nIHksIGluIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIGluIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBpbiB1bnNpZ25lZCBsb25n
IGZvcm1hdCwgaW4gdW5zaWduZWQgbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCAgICAgICAgIHJl
YWRQaXhlbHMoaW4gbG9uZyB4LCBpbiBsb25nIHksIGluIHVuc2lnbmVkIGxvbmcgd2lkdGgsIGlu
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBpbiB1bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4gdW5zaWdu
ZWQgbG9uZyB0eXBlLCBpbiBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKTsKICAgICAgICAgCiAgICAg
ICAgIHZvaWQgICAgICAgICByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKICAgICAgICAgdm9pZCAg
ICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGluIHVuc2lnbmVkIGxvbmcgd2lkdGgsIGluIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYt
MDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByZWFkUGl4ZWxzIHRvIHRha2Ug
QXJyYXlCdWZmZXJWaWV3IHJhdGhlciB0aGFuIHJldHVybmluZyBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMjIKKworICAgICAgICBObyBuZXcg
dGVzdHM7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIHdoaWNoIGhhdmUgYmVlbiBtb2RpZmll
ZC4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjg4OC5odG1sOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9wb2ludC1zaXplLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVhZC1waXhl
bHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3JlYWQtcGl4ZWxz
Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxp
emF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJESW1hZ2VEYXRhVGVzdC5odG1sOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdmll
d3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWw6CisKIDIwMTAtMDYtMDkgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjg4OC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjg4
OC5odG1sCShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2J1Zy0zMjg4OC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDggQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgLy8gUmVhZCBiYWNrIHRoZSByZW5kZXJpbmcgcmVzdWx0cwogICAg
IHZhciB3aWR0aCA9IDMyOwogICAgIHZhciBoZWlnaHQgPSAzMjsKLSAgICBidWYgPSBnbC5yZWFk
UGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOwor
ICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wucmVh
ZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBi
dWYpOwogICAgIC8vIFNwb3QgY2hlY2sgYSBjb3VwbGUgb2YgMngyIHJlZ2lvbnMgaW4gdGhlIHVw
cGVyIGFuZCBsb3dlciBsZWZ0CiAgICAgLy8gY29ybmVyczsgdGhleSBzaG91bGQgYmUgdGhlIGJh
Y2tncm91bmQgY29sb3IgcmF0aGVyIHRoYW4KICAgICAvLyBnYXJiYWdlCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3Rl
bmNpbC1hbnRpYWxpYXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMu
aHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9j
b250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw5IEBAIGZ1bmN0aW9uIGRyYXdBbmRSZWFkUGl4ZWwo
Z2wsIHZlcnRpY2VzLCAKIAogICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCB2ZXJ0
aWNlcy5sZW5ndGggLyAzKTsKIAotICAgIHJldHVybiBnbC5yZWFkUGl4ZWxzKHgsIHksIDEsIDEs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJh
eSgxICogMSAqIDQpOworICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgMSwgMSwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYnVmKTsKKyAgICByZXR1cm4gYnVmOwogfQogCiBmdW5jdGlvbiB0ZXN0
QWxwaGEoYWxwaGEpCkBAIC0xNDcsNyArMTQ5LDggQEAgZnVuY3Rpb24gdGVzdEFscGhhKGFscGhh
KQogICAgIHNob3VsZEJlKCJjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMiLCAiZmFsc2UiKTsKICAg
ICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsK
IAotICAgIHZhciBidWYgPSB3ZWJHTC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIHdlYkdMLlJHQkEs
IHdlYkdMLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgxICog
MSAqIDQpOworICAgIHdlYkdMLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgd2ViR0wuUkdCQSwgd2Vi
R0wuVU5TSUdORURfQllURSwgYnVmKTsKICAgICBwaXhlbFswXSA9IGJ1ZlswXTsKICAgICBwaXhl
bFsxXSA9IGJ1ZlsxXTsKICAgICBwaXhlbFsyXSA9IGJ1ZlsyXTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDggQEAgZnVuY3Rpb24gcnVuVGVzdEl0ZXJhdGlv
bihhbnRpYWxpYXMpCiAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOwogCiAg
ICAgLy8gUmVhZCBiYWNrIHRoZSByZW5kZXJpbmcgcmVzdWx0cywgc2hvdWxkIGJlIHJlZAotICAg
IHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgyICogMiAqIDQpOworICAgIGds
LnJlYWRQaXhlbHMoMCwgMCwgMiwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsK
ICAgICB2YXIgaWR4ID0gMDsKICAgICBjb3JyZWN0Q29sb3IgPSBbMjU1LCAwLCAwXTsKICAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IDI7IHkrKykgewpAQCAtMTQ3LDcgKzE0OCw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3RJdGVyYXRpb24oYW50aWFsaWFzKQogICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5H
TEVTLCAwLCA2KTsKIAogICAgIC8vIFJlYWQgYmFjayB0aGUgcmVuZGVyaW5nIHJlc3VsdHMsIHNo
b3VsZCBiZSBncmVlbgotICAgIGJ1ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgMiwgMiwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwogICAgIGNvcnJlY3RDb2xvciA9IFswLCAyNTUs
IDBdOwogICAgIGZvciAodmFyIHkgPSAwOyB5IDwgMjsgeSsrKSB7CiAgICAgICAgIGZvciAodmFy
IHggPSAwOyB4IDwgMjsgeCsrKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9wb2ludC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIAogICAgIGdsLnVuaWZvcm0xZihsb2NQb2ludFNp
emUsIDEuMCk7CiAgICAgZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIHZlcnRpY2VzLmxlbmd0
aCAvIDMpOwotICAgIHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgyICogMiAq
IDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMiwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgYnVmKTsKICAgICB2YXIgaW5kZXggPSAwOwogICAgIGZvciAodmFyIHkgPSAwOyB5IDwg
MjsgKyt5KSB7CiAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgMjsgKyt4KSB7CkBAIC04OSw3
ICs5MCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiAgICAgZ2wudW5pZm9ybTFmKGxvY1BvaW50
U2l6ZSwgMi4wKTsKICAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgdmVydGljZXMubGVu
Z3RoIC8gMyk7Ci0gICAgYnVmID0gZ2wucmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFKTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiAgICAgaW5kZXggPSAwOwogICAgIGZvciAodmFyIHkg
PSAwOyB5IDwgMjsgKyt5KSB7CiAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgMjsgKyt4KSB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZWFkLXBpeGVscy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVhZC1w
aXhlbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3JlYWQtcGl4ZWxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTEsMTk0ICsxMSwxNjIgQEAgVGVzdGluZyBmb3JtYXQgPSBSR0JBIGFuZCB0eXBlID0gVU5TSUdO
RQogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDEsIHdpZHRoID0gMSwgaGVpZ2h0ID0gMgogUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAy
LDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5n
IFBBQ0tfQUxJR05NRU5UID0gMiwgd2lkdGggPSAxLCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVy
cm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgot
UEFTUyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMg
bm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElH
Tk1FTlQgPSA0LCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5
Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4K
IFBBU1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDgs
IHdpZHRoID0gMSwgaGVpZ2h0ID0gMgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
CiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlz
IGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhl
bCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBBQ0tfQUxJR05NRU5UID0gNCwgd2lkdGggPSAy
LCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRT
aXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVj
dGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDIsIGhlaWdodCA9
IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1Mg
MjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgog
VGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDQsIHdpZHRoID0gMywgaGVpZ2h0ID0gMgogUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAs
MjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBB
Q0tfQUxJR05NRU5UID0gOCwgd2lkdGggPSAzLCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVycm9y
KCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFT
UyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9u
LW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1F
TlQgPSA0LCB3aWR0aCA9IDQsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxl
bmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBB
U1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDgsIHdp
ZHRoID0gNCwgaGVpZ2h0ID0gMgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4
cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBp
cyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBBQ0tfQUxJR05NRU5UID0gOCwgd2lkdGggPSA1LCBo
ZWlnaHQgPSAxCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXpl
CiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVk
Q29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDUsIGhlaWdodCA9IDIK
IFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1
LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVz
dGluZyBQQUNLX0FMSUdOTUVOVCA9IDgsIHdpZHRoID0gNSwgaGVpZ2h0ID0gMgogUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1
IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBBQ0tf
QUxJR05NRU5UID0gOCwgd2lkdGggPSA2LCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBh
cnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9uLW51
bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQg
PSA4LCB3aWR0aCA9IDcsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0
aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBBU1Mg
cGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDgsIHdpZHRo
ID0gOCwgaGVpZ2h0ID0gMgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVj
dGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBl
eHBlY3RlZENvbG9yCiBUZXN0aW5nIHRoZSBvdGhlciBzdXBwb3J0ZWQgZm9ybWF0L3R5cGUgY29t
YmluYXRpb24KIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSAxLCB3aWR0aCA9IDEsIGhlaWdodCA9
IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1Mg
MjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRl
c3RpbmcgUEFDS19BTElHTk1FTlQgPSAyLCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VS
Uk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAg
aXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19B
TElHTk1FTlQgPSA0LCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFy
cmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwu
CiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4
LCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBp
cyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVs
IGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDIs
IGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNp
emUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVk
Q29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDIsIGhlaWdodCA9IDIK
IFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1
LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3Rp
bmcgUEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDMsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
Ci1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMg
bm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElH
Tk1FTlQgPSA4LCB3aWR0aCA9IDMsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5
Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQ
QVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA0LCB3
aWR0aCA9IDQsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgog
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBl
eHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlz
IGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDQsIGhl
aWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRF
cnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUK
IFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29s
b3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDUsIGhlaWdodCA9IDEKIFBB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGds
Lk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEw
MiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3Rpbmcg
UEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDUsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1Q
QVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9u
LW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1F
TlQgPSA4LCB3aWR0aCA9IDUsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxl
bmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNT
IHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0
aCA9IDYsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBl
Y3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4
cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDcsIGhlaWdo
dCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBB
U1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IK
IFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDgsIGhlaWdodCA9IDIKIFBBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiww
LDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3JlYWQtcGl4ZWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVhZC1waXhlbHMuaHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZWFkLXBpeGVscy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw2IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIC8vIFRoZSBiZWxvdyBk
ZWNsYXJhdGlvbnMgbmVlZCB0byBiZSBnbG9iYWwgZm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0K
IHZhciBnbCA9IG51bGw7CiB2YXIgYXJyYXkgPSBudWxsOwotdmFyIGV4cGVjdGVkU2l6ZSA9IDA7
CiB2YXIgcGl4ZWwgPSBbIDAsIDAsIDAsIDAgXTsKIHZhciBleHBlY3RlZENvbG9yID0gWyAwLCAw
LCAwLCAwIF07CiB2YXIgcGl4ZWxGb3JtYXQgPSAwOwpAQCAtMTU5LDExICsxNTgsOSBAQCBmdW5j
dGlvbiBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgdHlwZSwgCiAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CiAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuUEFDS19BTElHTk1FTlQsIHBh
Y2tBbGlnbm1lbnQpOwogICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9S
Iik7Ci0gICAgYXJyYXkgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSk7Ci0gICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsK
ICAgICB2YXIgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZVBpeGVsQnl0ZXMoZm9ybWF0LCB0eXBl
KTsKICAgICB2YXIgcGFkZGluZyA9IGNhbGN1bGF0ZVBhZGRpbmdCeXRlcyhieXRlc1BlclBpeGVs
LCBwYWNrQWxpZ25tZW50LCB3aWR0aCk7Ci0gICAgZXhwZWN0ZWRTaXplID0gYnl0ZXNQZXJQaXhl
bCAqIHdpZHRoICogaGVpZ2h0ICsgcGFkZGluZyAqIChoZWlnaHQgLSAxKTsKKyAgICB2YXIgc2l6
ZSA9IGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aCAqIGhlaWdodCArIHBhZGRpbmcgKiAoaGVpZ2h0IC0g
MSk7CiAgICAgdmFyIGlzU2hvcnQgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIGdsLlVOU0lHTkVEX1NIT1JUXzVfNl81OgpAQCAtMTcyLDggKzE2OSwxNCBAQCBmdW5jdGlv
biBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgdHlwZSwgCiAgICAgICAgIGlzU2hvcnQgPSB0cnVl
OwogICAgIH0KICAgICBpZiAoaXNTaG9ydCkKLSAgICAgICAgZXhwZWN0ZWRTaXplIC89IDI7Ci0g
ICAgc2hvdWxkQmUoImFycmF5Lmxlbmd0aCIsICJleHBlY3RlZFNpemUiKTsKKyAgICAgICAgc2l6
ZSAvPSAyOworICAgIGlmICh0eXBlID09IGdsLlVOU0lHTkVEX0JZVEUpIHsKKyAgICAgICAgYXJy
YXkgPSBuZXcgVWludDhBcnJheShzaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhcnJheSA9
IG5ldyBVaW50MTZBcnJheShzaXplKTsKKyAgICB9CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGFycmF5KTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0
RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOwogICAgIC8vIENoZWNrIHRoZSBsYXN0IHBpeGVsIG9m
IHRoZSBsYXN0IHJvdy4KICAgICB2YXIgYnl0ZXNQZXJSb3cgPSB3aWR0aCAqIGJ5dGVzUGVyUGl4
ZWwgKyBwYWRkaW5nOwogICAgIHZhciBwb3MgPSBieXRlc1BlclJvdyAqIChoZWlnaHQgLSAxKSAr
ICh3aWR0aCAtIDEpICogYnl0ZXNQZXJQaXhlbDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlv
bi5odG1sCShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3
ICsxNSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIH0KIAogICAgIGRlYnVnKCdUZXN0IHdo
ZXRoZXIgdGhlIFdlYkdMIGludGVybmFsIGJ1ZmZlcnMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRv
IDAuJyk7Ci0gICAgdmFyIGJ1ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgNTAwLCA1MDAsIGdsLlJH
QkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSg1MDAg
KiA1MDAgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDUwMCwgNTAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBidWYpOwogICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VS
Uk9SKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoJ0dMIGVycm9yIGRldGVjdGVkIGFmdGVyIHJlYWRQ
aXhlbHMoKS4nKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDQsNyArNDUsNyBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICAgICAgdGVzdEZhaWxlZCgnRnJhbWVidWZmZXIgaW5jb21wbGV0
ZS4nKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBidWYgPSBnbC5yZWFkUGl4
ZWxzKDAsIDAsIDUwMCwgNTAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgICBnbC5y
ZWFkUGl4ZWxzKDAsIDAsIDUwMCwgNTAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYp
OwogICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7CiAgICAgICAgIHRlc3RG
YWlsZWQoJ0dMIGVycm9yIGRldGVjdGVkIGFmdGVyIHJlYWRQaXhlbHMoKS4nKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS1kYXRhLmh0bWwJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRh
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsOCBAQCBmdW5jdGlvbiBydW5PbmVJ
dGVyYXRpb24odXNlVGV4U3ViSW1hZ2UyCiAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMs
IDAsIDYpOwogCiAgICAgLy8gUmVhZCBiYWNrIHRoZSByZW5kZXJpbmcgcmVzdWx0cwotICAgIGJ1
ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7
CisgICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoMSAqIDIgKiA0KTsKKyAgICBnbC5yZWFkUGl4ZWxz
KDAsIDAsIDEsIDIsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiAgICAgLy8gQ2hl
Y2sgdGhlIHRvcCBwaXhlbCBhbmQgYm90dG9tIHBpeGVsIGFuZCBtYWtlIHN1cmUgdGhleSBoYXZl
CiAgICAgLy8gdGhlIHJpZ2h0IGNvbG9yLgogICAgIGRlYnVnKCJDaGVja2luZyBib3R0b20gcGl4
ZWwiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmh0
bWwJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzEsNyArMTMxLDggQEAgZnVuY3Rpb24gcnVuT25lSXRlcmF0aW9uKGltYWdlLCB1c2VUZXhT
dQogICAgIC8vIFJlYWQgYmFjayB0aGUgcmVuZGVyaW5nIHJlc3VsdHMKICAgICB2YXIgd2lkdGgg
PSAzMjsKICAgICB2YXIgaGVpZ2h0ID0gMzI7Ci0gICAgYnVmID0gZ2wucmVhZFBpeGVscygwLCAw
LCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgICBidWYgPSBu
ZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwg
MCwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKICAgICAv
LyBDaGVjayBhIGZldyBwaXhlbHMgbmVhciB0aGUgdG9wIGFuZCBib3R0b20gYW5kIG1ha2Ugc3Vy
ZSB0aGV5IGhhdmUKICAgICAvLyB0aGUgcmlnaHQgY29sb3IuCiAgICAgdmFyIHF1ZXJ5V2lkdGgg
PSAyOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LXN1Yi1pbWFnZS0y
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1z
dWItaW1hZ2UtMmQuaHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC90ZXgtc3ViLWltYWdlLTJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDggQEAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOwogZ2wuZHJhd0FycmF5cyhnbC5U
UklBTkdMRVMsIDAsIDYpOwogCiAvLyBSZWFkIGJhY2sgdGhlIGZyYW1lIGJ1ZmZlcgotdmFyIGJ1
ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0LCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKK3ZhciBidWYgPSBuZXcgVWludDhBcnJheSh0ZXh0dXJl
V2lkdGggKiB0ZXh0dXJlSGVpZ2h0ICogNCk7CitnbC5yZWFkUGl4ZWxzKDAsIDAsIHRleHR1cmVX
aWR0aCwgdGV4dHVyZUhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKIAog
Ly8gVmVyaWZ5IHRoZSBmcmFtZSBidWZmZXIncyBjb250ZW50cwogdmFyIHBhc3NlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJESW1hZ2VEYXRh
VGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eEltYWdlMkRJbWFnZURhdGFUZXN0Lmh0bWwJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyREltYWdlRGF0YVRlc3QuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw4IEBACiAKICAgICAgICAgICAgIC8vIFRlc3Qgc2V2ZXJh
bCBsb2NhdGlvbnMKICAgICAgICAgICAgIC8vIEVhY2ggbGluZSBzaG91bGQgYmUgYWxsIHJlZCAK
LSAgICAgICAgICAgIHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDY0LCA2NCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSk7CisgICAgICAgICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJy
YXkoNjQgKiA2NCAqIDQpOworICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCA2NCwgNjQs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHZhciBvZmZzZXQxNSA9IDM4NDA7IC8vICgxNSo2NCkgKiA0CiAgICAgICAgICAgICB2YXIg
b2Zmc2V0NDAgPSAxMDI0MDsgLy8gKDQwKjY0KSAqIDQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC5odG1sCShyZXZpc2lvbiA2MDkxMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcsNyArMTI3LDggQEAKICAgICAgICAgICAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOw0KICAgICAgICAgICAgICAgZ2wu
ZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOw0KICAgICAgICAgICAgICAgZ2wuZmx1c2go
KTsNCi0gICAgICAgICAgICAgIHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDQsIDQsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOw0KKyAgICAgICAgICAgICAgdmFyIGJ1ZiA9IG5ldyBV
aW50OEFycmF5KDQgKiA0ICogNCk7DQorICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAs
IDQsIDQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7DQogICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDQgKiA0OyArK2kpIHsNCiAgICAgICAgICAgICAgICAgdmFyIG9m
ZnNldCA9IGkgKiA0Ow0KICAgICAgICAgICAgICAgICBpZiAoYnVmW29mZnNldCArIDBdICE9IHIg
fHwNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwJ
KHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5n
bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOCBAQAogICAgICAgICAgICAgZ2wu
Y2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOwogICAgICAg
ICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICB2YXIgYnVmID0gZ2wucmVhZFBpeGVscygwLCAwLCA1MCwgNTAsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUpOworICAgICAgICAgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5
KDUwICogNTAgKiA0KTsKKyAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgNTAsIDUwLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBUZXN0IHNldmVyYWwgbG9jYXRpb25zCiAgICAgICAgICAgICAvLyBGaXJzdCBsaW5lIHNo
b3VsZCBiZSBhbGwgYmxhY2sKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Zp
ZXdwb3J0LXVuY2hhbmdlZC11cG9uLXJlc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdlZC11cG9uLXJlc2l6ZS5odG1s
CShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ZpZXdw
b3J0LXVuY2hhbmdlZC11cG9uLXJlc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIGdsLnVzZVByb2dyYW0oZ2wucHJvZ3JhbSk7CiBnbC5kcmF3QXJyYXlzKGdsLlRSSUFO
R0xFUywgMCwgNik7CiAKIC8vIEVuc3VyZSB0aGF0IHRoZSBmcmFtZSBidWZmZXIgaXMgcmVkIGF0
IHRoZSBzYW1wbGVkIHBpeGVsCi12YXIgYnVmID0gZ2wucmVhZFBpeGVscygyLCAyLCAxLCAxLCBn
bC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKK3ZhciBidWYgPSBuZXcgVWludDhBcnJheSgxICog
MSAqIDQpOworZ2wucmVhZFBpeGVscygyLCAyLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBidWYpOwogdmFyIHBhc3NlZCA9IHRydWU7CiBpZiAoYnVmWzBdICE9IDI1NSB8fAogICAg
IGJ1ZlsxXSAhPSAwIHx8CkBAIC03NSw3ICs3Niw4IEBAIGlmIChwYXNzZWQpIHsKICAgLy8gVGhp
cyB0aW1lLCBiZWNhdXNlIHdlIGRpZCBub3QgY2hhbmdlIHRoZSB2aWV3cG9ydCwgaXQgc2hvdWxk
CiAgIC8vIHN0aWxsIGJlICgwLCAwLCA0LCA0KSwgc28gb25seSB0aGUgbG93ZXItbGVmdCBxdWFk
cmFudCBzaG91bGQKICAgLy8gaGF2ZSBiZWVuIGZpbGxlZC4KLSAgdmFyIGJ1ZiA9IGdsLnJlYWRQ
aXhlbHMoNiwgNiwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgIHZhciBidWYg
PSBuZXcgVWludDhBcnJheSgxICogMSAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDYsIDYsIDEsIDEs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiAgIHZhciBwYXNzZWQgPSB0cnVlOwog
ICBpZiAoYnVmWzBdICE9IDAgfHwKICAgICAgIGJ1ZlsxXSAhPSAwIHx8Cg==
</data>
<flag name="commit-queue"
          id="43267"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58294</attachid>
            <date>2010-06-09 14:10:33 -0700</date>
            <delta_ts>2010-06-09 14:12:48 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>readpixels.patch</filename>
            <type>text/plain</type>
            <size>27048</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSByZWFkUGl4ZWxzIHRvIHRha2UgQXJyYXlCdWZmZXJWaWV3IHJhdGhlciB0aGFuIHJldHVy
bmluZyBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAzMjIKKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMs
IHdoaWNoIGhhdmUgYmVlbiBtb2RpZmllZC4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGw6CisKIDIwMTAtMDYtMDkgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1v
Ymk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBUcmVhdC4KSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDYwOTEwKQor
KysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjY0LDcgKzE2NjQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
cG9seWdvbk9mZnNlCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAot
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBp
eGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBo
ZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1bnNpZ25lZCBsb25nIHR5cGUpCit2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQg
bG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCB1
bnNpZ25lZCBsb25nIHR5cGUsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQogewogICAgIC8vIFZh
bGlkYXRlIGVudW1zLgogICAgIHVuc2lnbmVkIGxvbmcgY29tcG9uZW50c1BlclBpeGVsID0gMDsK
QEAgLTE2ODAsNyArMTY4MCw3IEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBXZWJHTFJl
bmRlcmkKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgdW5zaWduZWQgbG9uZyBi
eXRlc1BlckNvbXBvbmVudCA9IDA7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xNjk1LDExICsx
Njk1LDIxIEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBXZWJHTFJlbmRlcmkKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFwaXhlbHMpIHsKKyAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCEoKGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSAmJiB0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFKSB8fCAoZm9ybWF0ID09IG1faW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQgJiYgdHlw
ZSA9PSBtX2ltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSkpKSB7CiAgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gVmFs
aWRhdGUgYXJyYXkgdHlwZSBhZ2FpbnN0IHBpeGVsIHR5cGUuCisgICAgaWYgKHR5cGUgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUgJiYgIXBpeGVscy0+aXNVbnNpZ25lZEJ5dGVB
cnJheSgpCisgICAgICAgIHx8IHR5cGUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUgJiYgIXBpeGVscy0+aXNVbnNpZ25lZFNob3J0QXJyYXkoKSkgeworICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gQ2FsY3VsYXRlIGFycmF5IHNpemUs
IHRha2luZyBpbnRvIGNvbnNpZGVyYXRpb24gb2YgUEFDS19BTElHTk1FTlQuCiAgICAgdW5zaWdu
ZWQgbG9uZyBieXRlc1BlclJvdyA9IGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9u
ZW50ICogd2lkdGg7CkBAIC0xNzEyLDEyICsxNzIyLDExIEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBXZWJHTFJlbmRlcmkKICAgICAvLyBUaGUgbGFzdCByb3cgbmVlZHMgbm8gcGFkZGlu
Zy4KICAgICB1bnNpZ25lZCBsb25nIHRvdGFsQnl0ZXMgPSBieXRlc1BlclJvdyAqIGhlaWdodCAt
IHBhZGRpbmc7CiAgICAgdW5zaWduZWQgbG9uZyBudW0gPSB0b3RhbEJ5dGVzIC8gYnl0ZXNQZXJD
b21wb25lbnQ7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXk7Ci0gICAgaWYgKHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpCi0gICAgICAgIGFycmF5ID0g
VWludDhBcnJheTo6Y3JlYXRlKG51bSk7Ci0gICAgZWxzZQotICAgICAgICBhcnJheSA9IFVpbnQx
NkFycmF5OjpjcmVhdGUobnVtKTsKLSAgICB2b2lkKiBkYXRhID0gYXJyYXktPmJhc2VBZGRyZXNz
KCk7CisgICAgaWYgKHBpeGVscy0+bGVuZ3RoKCkgPCBudW0pIHsKKyAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMtPmJhc2VB
ZGRyZXNzKCk7CiAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgZGF0YSk7CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHNlY3Rpb24gd2hlbiBHTCBkcml2ZXIgYnVnIG9uIE1hYyBpcyBmaXhlZCwgaS5l
LiwKQEAgLTE3MzcsNyArMTc0Niw2IEBAIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBXZWJH
TFJlbmRlcmkKICAgICB9CiAjZW5kaWYKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwotICAgIHJldHVybiBhcnJheTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDYwOTEwKQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4
Miw3IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgdm9pZCBwaXhlbFN0b3JlaSh1
bnNpZ25lZCBsb25nIHBuYW1lLCBsb25nIHBhcmFtKTsKICAgICAgICAgdm9pZCBwb2x5Z29uT2Zm
c2V0KGRvdWJsZSBmYWN0b3IsIGRvdWJsZSB1bml0cyk7CiAgICAgICAgIAotICAgICAgICBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcmVhZFBpeGVscyhsb25nIHgsIGxvbmcgeSwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQsIHVuc2lnbmVkIGxvbmcgZm9ybWF0
LCB1bnNpZ25lZCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJlYWRQaXhlbHMobG9uZyB4LCBs
b25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25l
ZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVs
cyk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpOwogICAg
ICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGwJKHJldmlzaW9uIDYwOTEwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsNyArNTk1LDcgQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICB2b2lkICAgICAgICAgcGl4ZWxTdG9yZWkoaW4gdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW4gbG9uZyBwYXJhbSk7CiAgICAgICAgIHZvaWQgICAgICAgICBwb2x5
Z29uT2Zmc2V0KGluIGRvdWJsZSBmYWN0b3IsIGluIGRvdWJsZSB1bml0cyk7CiAKLSAgICAgICAg
QXJyYXlCdWZmZXJWaWV3IHJlYWRQaXhlbHMoaW4gbG9uZyB4LCBpbiBsb25nIHksIGluIHVuc2ln
bmVkIGxvbmcgd2lkdGgsIGluIHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBpbiB1bnNpZ25lZCBsb25n
IGZvcm1hdCwgaW4gdW5zaWduZWQgbG9uZyB0eXBlKTsKKyAgICAgICAgdm9pZCAgICAgICAgIHJl
YWRQaXhlbHMoaW4gbG9uZyB4LCBpbiBsb25nIHksIGluIHVuc2lnbmVkIGxvbmcgd2lkdGgsIGlu
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0LCBpbiB1bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4gdW5zaWdu
ZWQgbG9uZyB0eXBlLCBpbiBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKTsKICAgICAgICAgCiAgICAg
ICAgIHZvaWQgICAgICAgICByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKICAgICAgICAgdm9pZCAg
ICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVu
c2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIGluIHVuc2lnbmVkIGxvbmcgd2lkdGgsIGluIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYt
MDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByZWFkUGl4ZWxzIHRvIHRha2Ug
QXJyYXlCdWZmZXJWaWV3IHJhdGhlciB0aGFuIHJldHVybmluZyBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMjIKKworICAgICAgICBObyBuZXcg
dGVzdHM7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIHdoaWNoIGhhdmUgYmVlbiBtb2RpZmll
ZC4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjg4OC5odG1sOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9wb2ludC1zaXplLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVhZC1waXhl
bHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3JlYWQtcGl4ZWxz
Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxp
emF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJESW1hZ2VEYXRhVGVzdC5odG1sOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdmll
d3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWw6CisKIDIwMTAtMDYtMDkgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjg4OC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1Zy0zMjg4
OC5odG1sCShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2J1Zy0zMjg4OC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDggQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgLy8gUmVhZCBiYWNrIHRoZSByZW5kZXJpbmcgcmVzdWx0cwogICAg
IHZhciB3aWR0aCA9IDMyOwogICAgIHZhciBoZWlnaHQgPSAzMjsKLSAgICBidWYgPSBnbC5yZWFk
UGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOwor
ICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wucmVh
ZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBi
dWYpOwogICAgIC8vIFNwb3QgY2hlY2sgYSBjb3VwbGUgb2YgMngyIHJlZ2lvbnMgaW4gdGhlIHVw
cGVyIGFuZCBsb3dlciBsZWZ0CiAgICAgLy8gY29ybmVyczsgdGhleSBzaG91bGQgYmUgdGhlIGJh
Y2tncm91bmQgY29sb3IgcmF0aGVyIHRoYW4KICAgICAvLyBnYXJiYWdlCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3Rl
bmNpbC1hbnRpYWxpYXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMu
aHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9j
b250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw5IEBAIGZ1bmN0aW9uIGRyYXdBbmRSZWFkUGl4ZWwo
Z2wsIHZlcnRpY2VzLCAKIAogICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCB2ZXJ0
aWNlcy5sZW5ndGggLyAzKTsKIAotICAgIHJldHVybiBnbC5yZWFkUGl4ZWxzKHgsIHksIDEsIDEs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJh
eSgxICogMSAqIDQpOworICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgMSwgMSwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYnVmKTsKKyAgICByZXR1cm4gYnVmOwogfQogCiBmdW5jdGlvbiB0ZXN0
QWxwaGEoYWxwaGEpCkBAIC0xNDcsNyArMTQ5LDggQEAgZnVuY3Rpb24gdGVzdEFscGhhKGFscGhh
KQogICAgIHNob3VsZEJlKCJjb250ZXh0QXR0cmlicy5hbnRpYWxpYXMiLCAiZmFsc2UiKTsKICAg
ICBzaG91bGRCZSgiY29udGV4dEF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsK
IAotICAgIHZhciBidWYgPSB3ZWJHTC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIHdlYkdMLlJHQkEs
IHdlYkdMLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgxICog
MSAqIDQpOworICAgIHdlYkdMLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgd2ViR0wuUkdCQSwgd2Vi
R0wuVU5TSUdORURfQllURSwgYnVmKTsKICAgICBwaXhlbFswXSA9IGJ1ZlswXTsKICAgICBwaXhl
bFsxXSA9IGJ1ZlsxXTsKICAgICBwaXhlbFsyXSA9IGJ1ZlsyXTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb3B5LXRleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDggQEAgZnVuY3Rpb24gcnVuVGVzdEl0ZXJhdGlv
bihhbnRpYWxpYXMpCiAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOwogCiAg
ICAgLy8gUmVhZCBiYWNrIHRoZSByZW5kZXJpbmcgcmVzdWx0cywgc2hvdWxkIGJlIHJlZAotICAg
IHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgyICogMiAqIDQpOworICAgIGds
LnJlYWRQaXhlbHMoMCwgMCwgMiwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsK
ICAgICB2YXIgaWR4ID0gMDsKICAgICBjb3JyZWN0Q29sb3IgPSBbMjU1LCAwLCAwXTsKICAgICBm
b3IgKHZhciB5ID0gMDsgeSA8IDI7IHkrKykgewpAQCAtMTQ3LDcgKzE0OCw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3RJdGVyYXRpb24oYW50aWFsaWFzKQogICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5H
TEVTLCAwLCA2KTsKIAogICAgIC8vIFJlYWQgYmFjayB0aGUgcmVuZGVyaW5nIHJlc3VsdHMsIHNo
b3VsZCBiZSBncmVlbgotICAgIGJ1ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgMiwgMiwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwogICAgIGNvcnJlY3RDb2xvciA9IFswLCAyNTUs
IDBdOwogICAgIGZvciAodmFyIHkgPSAwOyB5IDwgMjsgeSsrKSB7CiAgICAgICAgIGZvciAodmFy
IHggPSAwOyB4IDwgMjsgeCsrKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9wb2ludC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIAogICAgIGdsLnVuaWZvcm0xZihsb2NQb2ludFNp
emUsIDEuMCk7CiAgICAgZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIHZlcnRpY2VzLmxlbmd0
aCAvIDMpOwotICAgIHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSgyICogMiAq
IDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMiwgMiwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSwgYnVmKTsKICAgICB2YXIgaW5kZXggPSAwOwogICAgIGZvciAodmFyIHkgPSAwOyB5IDwg
MjsgKyt5KSB7CiAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgMjsgKyt4KSB7CkBAIC04OSw3
ICs5MCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiAgICAgZ2wudW5pZm9ybTFmKGxvY1BvaW50
U2l6ZSwgMi4wKTsKICAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywgMCwgdmVydGljZXMubGVu
Z3RoIC8gMyk7Ci0gICAgYnVmID0gZ2wucmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFKTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiAgICAgaW5kZXggPSAwOwogICAgIGZvciAodmFyIHkg
PSAwOyB5IDwgMjsgKyt5KSB7CiAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgMjsgKyt4KSB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZWFkLXBpeGVscy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVhZC1w
aXhlbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3JlYWQtcGl4ZWxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTEsMTk0ICsxMSwxNjIgQEAgVGVzdGluZyBmb3JtYXQgPSBSR0JBIGFuZCB0eXBlID0gVU5TSUdO
RQogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDEsIHdpZHRoID0gMSwgaGVpZ2h0ID0gMgogUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAy
LDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5n
IFBBQ0tfQUxJR05NRU5UID0gMiwgd2lkdGggPSAxLCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVy
cm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgot
UEFTUyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMg
bm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElH
Tk1FTlQgPSA0LCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5
Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4K
IFBBU1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDgs
IHdpZHRoID0gMSwgaGVpZ2h0ID0gMgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
CiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlz
IGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhl
bCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBBQ0tfQUxJR05NRU5UID0gNCwgd2lkdGggPSAy
LCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRT
aXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVj
dGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDIsIGhlaWdodCA9
IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1Mg
MjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgog
VGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDQsIHdpZHRoID0gMywgaGVpZ2h0ID0gMgogUEFTUyBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAs
MjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBB
Q0tfQUxJR05NRU5UID0gOCwgd2lkdGggPSAzLCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVycm9y
KCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFT
UyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9u
LW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1F
TlQgPSA0LCB3aWR0aCA9IDQsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxl
bmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBB
U1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDgsIHdp
ZHRoID0gNCwgaGVpZ2h0ID0gMgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQ
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4
cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBp
cyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBBQ0tfQUxJR05NRU5UID0gOCwgd2lkdGggPSA1LCBo
ZWlnaHQgPSAxCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBhcnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXpl
CiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVk
Q29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDUsIGhlaWdodCA9IDIK
IFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1
LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBBU1MgcGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVz
dGluZyBQQUNLX0FMSUdOTUVOVCA9IDgsIHdpZHRoID0gNSwgaGVpZ2h0ID0gMgogUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVjdGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1
IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBleHBlY3RlZENvbG9yCiBUZXN0aW5nIFBBQ0tf
QUxJR05NRU5UID0gOCwgd2lkdGggPSA2LCBoZWlnaHQgPSAyCiBQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFTUyBh
cnJheS5sZW5ndGggaXMgZXhwZWN0ZWRTaXplCiBQQVNTIDI1NSwxMDIsMCwyNTUgaXMgbm9uLW51
bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQg
PSA4LCB3aWR0aCA9IDcsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19F
UlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0
aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDI1NSBpcyBub24tbnVsbC4KIFBBU1Mg
cGl4ZWwgaXMgZXhwZWN0ZWRDb2xvcgogVGVzdGluZyBQQUNLX0FMSUdOTUVOVCA9IDgsIHdpZHRo
ID0gOCwgaGVpZ2h0ID0gMgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgYXJyYXkubGVuZ3RoIGlzIGV4cGVj
dGVkU2l6ZQogUEFTUyAyNTUsMTAyLDAsMjU1IGlzIG5vbi1udWxsLgogUEFTUyBwaXhlbCBpcyBl
eHBlY3RlZENvbG9yCiBUZXN0aW5nIHRoZSBvdGhlciBzdXBwb3J0ZWQgZm9ybWF0L3R5cGUgY29t
YmluYXRpb24KIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSAxLCB3aWR0aCA9IDEsIGhlaWdodCA9
IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1Mg
MjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRl
c3RpbmcgUEFDS19BTElHTk1FTlQgPSAyLCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VS
Uk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAg
aXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19B
TElHTk1FTlQgPSA0LCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFy
cmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwu
CiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4
LCB3aWR0aCA9IDEsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBp
cyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVs
IGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDIs
IGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5n
ZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNp
emUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVk
Q29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDIsIGhlaWdodCA9IDIK
IFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1
LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3Rp
bmcgUEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDMsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
Ci1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMg
bm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElH
Tk1FTlQgPSA4LCB3aWR0aCA9IDMsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5
Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQ
QVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA0LCB3
aWR0aCA9IDQsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgog
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBl
eHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlz
IGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDQsIGhl
aWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRF
cnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUK
IFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29s
b3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDUsIGhlaWdodCA9IDEKIFBB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGds
Lk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEw
MiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3Rpbmcg
UEFDS19BTElHTk1FTlQgPSA0LCB3aWR0aCA9IDUsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1Q
QVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9u
LW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1F
TlQgPSA4LCB3aWR0aCA9IDUsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxl
bmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNT
IHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0
aCA9IDYsIGhlaWdodCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBl
Y3RlZFNpemUKIFBBU1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4
cGVjdGVkQ29sb3IKIFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDcsIGhlaWdo
dCA9IDIKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLk5PX0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBB
U1MgMjU1LDEwMiwwLDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IK
IFRlc3RpbmcgUEFDS19BTElHTk1FTlQgPSA4LCB3aWR0aCA9IDgsIGhlaWdodCA9IDIKIFBBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1QQVNTIGFycmF5Lmxlbmd0aCBpcyBleHBlY3RlZFNpemUKIFBBU1MgMjU1LDEwMiww
LDAgaXMgbm9uLW51bGwuCiBQQVNTIHBpeGVsIGlzIGV4cGVjdGVkQ29sb3IKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3JlYWQtcGl4ZWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVhZC1waXhlbHMuaHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZWFkLXBpeGVscy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw2IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIC8vIFRoZSBiZWxvdyBk
ZWNsYXJhdGlvbnMgbmVlZCB0byBiZSBnbG9iYWwgZm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0K
IHZhciBnbCA9IG51bGw7CiB2YXIgYXJyYXkgPSBudWxsOwotdmFyIGV4cGVjdGVkU2l6ZSA9IDA7
CiB2YXIgcGl4ZWwgPSBbIDAsIDAsIDAsIDAgXTsKIHZhciBleHBlY3RlZENvbG9yID0gWyAwLCAw
LCAwLCAwIF07CiB2YXIgcGl4ZWxGb3JtYXQgPSAwOwpAQCAtMTU5LDExICsxNTgsOSBAQCBmdW5j
dGlvbiBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgdHlwZSwgCiAgICAgZ2wuY2xlYXIoZ2wuQ09M
T1JfQlVGRkVSX0JJVCk7CiAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuUEFDS19BTElHTk1FTlQsIHBh
Y2tBbGlnbm1lbnQpOwogICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9S
Iik7Ci0gICAgYXJyYXkgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSk7Ci0gICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsK
ICAgICB2YXIgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZVBpeGVsQnl0ZXMoZm9ybWF0LCB0eXBl
KTsKICAgICB2YXIgcGFkZGluZyA9IGNhbGN1bGF0ZVBhZGRpbmdCeXRlcyhieXRlc1BlclBpeGVs
LCBwYWNrQWxpZ25tZW50LCB3aWR0aCk7Ci0gICAgZXhwZWN0ZWRTaXplID0gYnl0ZXNQZXJQaXhl
bCAqIHdpZHRoICogaGVpZ2h0ICsgcGFkZGluZyAqIChoZWlnaHQgLSAxKTsKKyAgICB2YXIgc2l6
ZSA9IGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aCAqIGhlaWdodCArIHBhZGRpbmcgKiAoaGVpZ2h0IC0g
MSk7CiAgICAgdmFyIGlzU2hvcnQgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIGdsLlVOU0lHTkVEX1NIT1JUXzVfNl81OgpAQCAtMTcyLDggKzE2OSwxMyBAQCBmdW5jdGlv
biBydW5UZXN0SXRlcmF0aW9uKGZvcm1hdCwgdHlwZSwgCiAgICAgICAgIGlzU2hvcnQgPSB0cnVl
OwogICAgIH0KICAgICBpZiAoaXNTaG9ydCkKLSAgICAgICAgZXhwZWN0ZWRTaXplIC89IDI7Ci0g
ICAgc2hvdWxkQmUoImFycmF5Lmxlbmd0aCIsICJleHBlY3RlZFNpemUiKTsKKyAgICAgICAgc2l6
ZSAvPSAyOworICAgIGlmICh0eXBlID09IGdsLlVOU0lHTkVEX0JZVEUpCisgICAgICAgIGFycmF5
ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7CisgICAgZWxzZQorICAgICAgICBhcnJheSA9IG5ldyBV
aW50MTZBcnJheShzaXplKTsKKyAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgYXJyYXkpOworICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImds
Lk5PX0VSUk9SIik7CiAgICAgLy8gQ2hlY2sgdGhlIGxhc3QgcGl4ZWwgb2YgdGhlIGxhc3Qgcm93
LgogICAgIHZhciBieXRlc1BlclJvdyA9IHdpZHRoICogYnl0ZXNQZXJQaXhlbCArIHBhZGRpbmc7
CiAgICAgdmFyIHBvcyA9IGJ5dGVzUGVyUm93ICogKGhlaWdodCAtIDEpICsgKHdpZHRoIC0gMSkg
KiBieXRlc1BlclBpeGVsOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVu
ZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwJKHJldmlz
aW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVy
LWluaXRpYWxpemF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDcgKzE1LDggQEAgZnVu
Y3Rpb24gcnVuVGVzdCgpCiAgICAgfQogCiAgICAgZGVidWcoJ1Rlc3Qgd2hldGhlciB0aGUgV2Vi
R0wgaW50ZXJuYWwgYnVmZmVycyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdG8gMC4nKTsKLSAgICB2
YXIgYnVmID0gZ2wucmVhZFBpeGVscygwLCAwLCA1MDAsIDUwMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSk7CisgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KDUwMCAqIDUwMCAqIDQpOwor
ICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgNTAwLCA1MDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsIGJ1Zik7CiAgICAgaWYgKGdsLmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpIHsKICAgICAg
ICAgdGVzdEZhaWxlZCgnR0wgZXJyb3IgZGV0ZWN0ZWQgYWZ0ZXIgcmVhZFBpeGVscygpLicpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NCw3ICs0NSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
KQogICAgICAgICB0ZXN0RmFpbGVkKCdGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlLicpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGJ1ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgNTAw
LCA1MDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIGdsLnJlYWRQaXhlbHMoMCwg
MCwgNTAwLCA1MDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiAgICAgaWYgKGds
LmdldEVycm9yKCkgIT0gZ2wuTk9fRVJST1IpIHsKICAgICAgICAgdGVzdEZhaWxlZCgnR0wgZXJy
b3IgZGV0ZWN0ZWQgYWZ0ZXIgcmVhZFBpeGVscygpLicpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRh
dGEuaHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw4IEBAIGZ1bmN0aW9uIHJ1bk9uZUl0ZXJhdGlvbih1c2VU
ZXhTdWJJbWFnZTIKICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7CiAKICAg
ICAvLyBSZWFkIGJhY2sgdGhlIHJlbmRlcmluZyByZXN1bHRzCi0gICAgYnVmID0gZ2wucmVhZFBp
eGVscygwLCAwLCAxLCAyLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgICBidWYgPSBu
ZXcgVWludDhBcnJheSgxICogMiAqIDQpOworICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMiwg
Z2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKICAgICAvLyBDaGVjayB0aGUgdG9wIHBp
eGVsIGFuZCBib3R0b20gcGl4ZWwgYW5kIG1ha2Ugc3VyZSB0aGV5IGhhdmUKICAgICAvLyB0aGUg
cmlnaHQgY29sb3IuCiAgICAgZGVidWcoIkNoZWNraW5nIGJvdHRvbSBwaXhlbCIpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuaHRtbAkocmV2aXNpb24g
NjA5MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEs
OCBAQCBmdW5jdGlvbiBydW5PbmVJdGVyYXRpb24oaW1hZ2UsIHVzZVRleFN1CiAgICAgLy8gUmVh
ZCBiYWNrIHRoZSByZW5kZXJpbmcgcmVzdWx0cwogICAgIHZhciB3aWR0aCA9IDMyOwogICAgIHZh
ciBoZWlnaHQgPSAzMjsKLSAgICBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWln
aHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5
KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVp
Z2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwogICAgIC8vIENoZWNrIGEgZmV3
IHBpeGVscyBuZWFyIHRoZSB0b3AgYW5kIGJvdHRvbSBhbmQgbWFrZSBzdXJlIHRoZXkgaGF2ZQog
ICAgIC8vIHRoZSByaWdodCBjb2xvci4KICAgICB2YXIgcXVlcnlXaWR0aCA9IDI7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtc3ViLWltYWdlLTJkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LXN1Yi1pbWFnZS0yZC5o
dG1sCShyZXZpc2lvbiA2MDkxMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eC1zdWItaW1hZ2UtMmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsOCBAQCBnbC51
bmlmb3JtMWkodGV4dHVyZUxvYywgMCk7CiBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwg
Nik7CiAKIC8vIFJlYWQgYmFjayB0aGUgZnJhbWUgYnVmZmVyCi12YXIgYnVmID0gZ2wucmVhZFBp
eGVscygwLCAwLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUpOwordmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHRleHR1cmVXaWR0aCAqIHRleHR1
cmVIZWlnaHQgKiA0KTsKK2dsLnJlYWRQaXhlbHMoMCwgMCwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJl
SGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYpOwogCiAvLyBWZXJpZnkgdGhl
IGZyYW1lIGJ1ZmZlcidzIGNvbnRlbnRzCiB2YXIgcGFzc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkRJbWFnZURhdGFUZXN0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyREltYWdl
RGF0YVRlc3QuaHRtbAkocmV2aXNpb24gNjA5MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC90ZXhJbWFnZTJESW1hZ2VEYXRhVGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNyArMTA2LDggQEAKIAogICAgICAgICAgICAgLy8gVGVzdCBzZXZlcmFsIGxvY2F0aW9ucwog
ICAgICAgICAgICAgLy8gRWFjaCBsaW5lIHNob3VsZCBiZSBhbGwgcmVkIAotICAgICAgICAgICAg
dmFyIGJ1ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgNjQsIDY0LCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFKTsKKyAgICAgICAgICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSg2NCAqIDY0ICog
NCk7CisgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDY0LCA2NCwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYnVmKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyIG9mZnNl
dDE1ID0gMzg0MDsgLy8gKDE1KjY0KSAqIDQKICAgICAgICAgICAgIHZhciBvZmZzZXQ0MCA9IDEw
MjQwOyAvLyAoNDAqNjQpICogNApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
dGV4dHVyZS1ucG90Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvdGV4dHVyZS1ucG90Lmh0bWwJKHJldmlzaW9uIDYwOTEwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1ucG90Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEy
Nyw3ICsxMjcsOCBAQAogICAgICAgICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklU
IHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7DQogICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGds
LlRSSUFOR0xFUywgMCwgNik7DQogICAgICAgICAgICAgICBnbC5mbHVzaCgpOw0KLSAgICAgICAg
ICAgICAgdmFyIGJ1ZiA9IGdsLnJlYWRQaXhlbHMoMCwgMCwgNCwgNCwgZ2wuUkdCQSwgZ2wuVU5T
SUdORURfQllURSk7DQorICAgICAgICAgICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoNCAq
IDQgKiA0KTsNCisgICAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgNCwgNCwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsNCiAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNCAqIDQ7ICsraSkgew0KICAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gaSAqIDQ7
DQogICAgICAgICAgICAgICAgIGlmIChidWZbb2Zmc2V0ICsgMF0gIT0gciB8fA0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkocmV2aXNpb24gNjA5
MTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw3ICs0OSw4IEBACiAgICAgICAgICAgICBnbC5jbGVhcihnbC5DT0xP
Ul9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CiAgICAgICAgICAgICBnbC5kcmF3
QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHZh
ciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDUwLCA1MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURf
QllURSk7CisgICAgICAgICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoNTAgKiA1MCAqIDQp
OworICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCA1MCwgNTAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIGJ1Zik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFRlc3Qgc2V2
ZXJhbCBsb2NhdGlvbnMKICAgICAgICAgICAgIC8vIEZpcnN0IGxpbmUgc2hvdWxkIGJlIGFsbCBi
bGFjawpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFu
Z2VkLXVwb24tcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWwJKHJldmlzaW9uIDYw
OTEwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2Vk
LXVwb24tcmVzaXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgZ2wudXNl
UHJvZ3JhbShnbC5wcm9ncmFtKTsKIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsK
IAogLy8gRW5zdXJlIHRoYXQgdGhlIGZyYW1lIGJ1ZmZlciBpcyByZWQgYXQgdGhlIHNhbXBsZWQg
cGl4ZWwKLXZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDIsIDIsIDEsIDEsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUpOwordmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KDEgKiAxICogNCk7CitnbC5y
ZWFkUGl4ZWxzKDIsIDIsIDEsIDEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CiB2
YXIgcGFzc2VkID0gdHJ1ZTsKIGlmIChidWZbMF0gIT0gMjU1IHx8CiAgICAgYnVmWzFdICE9IDAg
fHwKQEAgLTc1LDcgKzc2LDggQEAgaWYgKHBhc3NlZCkgewogICAvLyBUaGlzIHRpbWUsIGJlY2F1
c2Ugd2UgZGlkIG5vdCBjaGFuZ2UgdGhlIHZpZXdwb3J0LCBpdCBzaG91bGQKICAgLy8gc3RpbGwg
YmUgKDAsIDAsIDQsIDQpLCBzbyBvbmx5IHRoZSBsb3dlci1sZWZ0IHF1YWRyYW50IHNob3VsZAog
ICAvLyBoYXZlIGJlZW4gZmlsbGVkLgotICB2YXIgYnVmID0gZ2wucmVhZFBpeGVscyg2LCA2LCAx
LCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFy
cmF5KDEgKiAxICogNCk7CisgIGdsLnJlYWRQaXhlbHMoNiwgNiwgMSwgMSwgZ2wuUkdCQSwgZ2wu
VU5TSUdORURfQllURSwgYnVmKTsKICAgdmFyIHBhc3NlZCA9IHRydWU7CiAgIGlmIChidWZbMF0g
IT0gMCB8fAogICAgICAgYnVmWzFdICE9IDAgfHwK
</data>
<flag name="review"
          id="43268"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="43269"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>