<?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>211992</bug_id>
          
          <creation_ts>2020-05-16 18:08:30 -0700</creation_ts>
          <short_desc>Rename some API test files</short_desc>
          <delta_ts>2020-05-16 19:58:15 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653377</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 18:08:30 -0700</bug_when>
    <thetext>Rename some API test files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653378</commentid>
    <comment_count>1</comment_count>
      <attachid>399579</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 18:09:19 -0700</bug_when>
    <thetext>Created attachment 399579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653381</commentid>
    <comment_count>2</comment_count>
      <attachid>399580</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 18:18:29 -0700</bug_when>
    <thetext>Created attachment 399580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653386</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-16 19:57:04 -0700</bug_when>
    <thetext>Committed r261790: &lt;https://trac.webkit.org/changeset/261790&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399580.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653387</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-16 19:58:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63311595&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399579</attachid>
            <date>2020-05-16 18:09:19 -0700</date>
            <delta_ts>2020-05-16 18:18:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211992-20200516180918.patch</filename>
            <type>text/plain</type>
            <size>131232</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzY3ODY1NzMyMmU3OTJmNDAyNTZkYjQ5MDBkMDYyMDgz
YThmYzg5Ni4uYzg3NTUyMWRjZDBjMjU0NGI0ZTJlZjFhODgxYWFjODIyNDdhYmQwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIwLTA1LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBzb21lIEFQSSB0ZXN0IGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE5OTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJJ20gdGlyZWQgb2YgUXVpY2sgT3BlbiBvZiBD
b2xvci5jcHAgb3BlbmluZyB0aGUgdGVzdCBmaWxlIHJhdGhlciB0aGFuIHRoZSBvbmUgSSB3YW50
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9y
VGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbG9yLmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5k
ZWRDb2xvclRlc3RzLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9FeHRlbmRlZENvbG9yLmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvSW50UG9pbnRUZXN0cy5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFJlY3QuY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9JbnRTaXplVGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemUuY3BwLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0VGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwLgorCiAyMDIwLTA1
LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAg
IEF0dHJpYnV0ZSBub24tbmV0d29yayBsb2FkcyBhbmQgbG9hZHMgd2l0aCBodG1sIHN0cmluZ3Mg
YXMgYXV0b21hdGljYWxseSBhcHAtYm91bmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI3
MWU1MTA4ZDYyOWE3YTFlZDk1ODc4OTY5YTUzODFlM2FkYjllMS4uZjgzODdlYWI5YjAzMjY3YWNm
MmI5OGRkNjkyMDJiY2I5ZGZlZDQ5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4OCw3
ICsxODgsNyBAQAogCQkzMTI4QTgxMzIzNzYzRkFDMDBEOTBENDAgLyogbGluay13aXRoLWltYWdl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEyOEE4MTIyMzc2M0YwQjAwRDkwRDQwIC8qIGxpbmstd2l0aC1pbWFnZS5odG1sICovOyB9
OwogCQkzMTI4QTgxNTIzNzY0MTMzMDBEOTBENDAgLyogaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4QTgxNDIzNzY0MEZE
MDBEOTBENDAgLyogaW1hZ2UuaHRtbCAqLzsgfTsKIAkJMzEzQzNBMDIyMUU1NjdDMzAwREJBODZF
IC8qIFN5c3RlbVByZXZpZXdCbG9iTmFtaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzQzNBMDEyMUU1Njc3QTAwREJBODZFIC8q
IFN5c3RlbVByZXZpZXdCbG9iTmFtaW5nLmh0bWwgKi87IH07Ci0JCTMxNTExODEwMURCMUFFNDAw
MDE3NjMwNCAvKiBFeHRlbmRlZENvbG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBFeHRlbmRlZENv
bG9yLmNwcCAqLzsgfTsKKwkJMzE1MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29s
b3JUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTUxMTgwRjFEQjFBREQ1MDAxNzYzMDQgLyogRXh0ZW5kZWRDb2xvclRlc3RzLmNwcCAqLzsg
fTsKIAkJMzFCNzZFNDMyMzI5OEUyQzAwN0ZFRDJDIC8qIFN5c3RlbVByZXZpZXcubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUI3NkU0MjIzMjk4RTJC
MDA3RkVEMkMgLyogU3lzdGVtUHJldmlldy5tbSAqLzsgfTsKIAkJMzFCNzZFNDUyMzI5OUJEQzAw
N0ZFRDJDIC8qIHN5c3RlbS1wcmV2aWV3LXRyaWdnZXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUI3NkU0NDIzMjk5QkEzMDA3RkVE
MkMgLyogc3lzdGVtLXByZXZpZXctdHJpZ2dlci5odG1sICovOyB9OwogCQkzM0JFNUFGOTEzN0I1
QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTVBRjgxMzdCNUFBRTAwNzA1
ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTUwOCw5ICs1
MDgsOSBAQAogCQk3QTkwOUE3RTFEODc3NDgwMDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkwOUE3MDFEODc3
NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludC5jcHAgKi87IH07CiAJCTdBOTA5QTdGMUQ4Nzc0ODAw
MDdFMTBGOCAvKiBGbG9hdFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdC5jcHAg
Ki87IH07CiAJCTdBOTA5QTgwMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MDlBNzIxRDg3NzQ3
NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgKi87IH07Ci0JCTdBOTA5QTgxMUQ4Nzc0ODAwMDdF
MTBGOCAvKiBJbnRQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTkwOUE3MzFEODc3NDc1MDA3RTEwRjggLyogSW50UG9pbnQuY3BwICovOyB9
OwotCQk3QTkwOUE4MjFEODc3NDgwMDA3RTEwRjggLyogSW50UmVjdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkwOUE3NDFEODc3NDc1MDA3RTEw
RjggLyogSW50UmVjdC5jcHAgKi87IH07Ci0JCTdBOTA5QTgzMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJ
bnRTaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBOTA5QTc1MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRTaXplLmNwcCAqLzsgfTsKKwkJN0E5MDlB
ODExRDg3NzQ4MDAwN0UxMEY4IC8qIEludFBvaW50VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MDlBNzMxRDg3NzQ3NTAwN0UxMEY4IC8q
IEludFBvaW50VGVzdHMuY3BwICovOyB9OworCQk3QTkwOUE4MjFEODc3NDgwMDA3RTEwRjggLyog
SW50UmVjdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBOTA5QTc0MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRSZWN0VGVzdHMuY3BwICovOyB9
OworCQk3QTkwOUE4MzFEODc3NDgwMDA3RTEwRjggLyogSW50U2l6ZVRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTA5QTc1MUQ4Nzc0NzUw
MDdFMTBGOCAvKiBJbnRTaXplVGVzdHMuY3BwICovOyB9OwogCQk3QTk1QkRFMTFFOUJFQzVGMDA4
NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTVCREUwMUU5QkVDNDAwMDg2NTQ5OCAvKiBJ
bmplY3RlZEJ1bmRsZUFwcGxlRXZlbnQuY3BwICovOyB9OwogCQk3QTk1QkRFMjFFOUJFQzc0MDA4
NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTk1QkRERjFFOUJFQzQwMDA4NjU0
OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTdBQzdC
NTZEMjBEOTc2OUYwMDJDMDlBMCAvKiBDdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUM3QjU2QzIwRDk3NjhGMDAy
QzA5QTAgLyogQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tICovOyB9OwpAQCAtNTIyLDcgKzUyMiw3
IEBACiAJCTdBRUFENDdGMUUyMDExNkMwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hl
bWVBY2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUVBRDQ3QzFFMjAxMTM4MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1lQWNj
ZXNzLm1tICovOyB9OwogCQk3QUVBRDQ4MTFFMjAxMjI3MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRp
b25GaWxlU2NoZW1lQWNjZXNzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFQUQ0N0QxRTIwMTE0RTAwNDE2RUZFIC8qIENyb3NzUGFy
dGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sICovOyB9OwogCQk3QzFBRjc5NTFFOERDQkFCMDAy
NjQ1QjkgLyogUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUFGNzkzMUU4RENCQUIwMDI2NDVCOSAvKiBQcmVw
YXJlRm9yTW92ZVRvV2luZG93Lm1tICovOyB9OwotCQk3QzM5NjUwNjFDREQ3NEY5MDA5NERCQjgg
LyogQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLzsgfTsKKwkJN0MzOTY1
MDYxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENv
bG9yVGVzdHMuY3BwICovOyB9OwogCQk3QzNEQjhFNDFEMTIxMjlCMDBBRThDQzMgLyogQ29tbWFu
ZEJhY2tGb3J3YXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSAq
LzsgfTsKIAkJN0M0MTdGMzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZp
Z2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzQxN0YzMTFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmln
YXRpb25EZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJN0M0ODZCQTExQUExMjU2NzAwM0Y2RjlCIC8qIGJ1
bmRsZS1maWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M0ODZCQTAxQUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwg
Ki87IH07CkBAIC02NjEsNyArNjYxLDcgQEAKIAkJN0NDRTdFREIxQTQxMUE5MjAwNDQ3QzRDIC8q
IENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJ
N0NDRTdFREMxQTQxMUE5MjAwNDQ3QzRDIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNzIwRTUxOEYxQTBFODAw
QTg0OEUxIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovOyB9OwogCQk3Q0NFN0VERDFBNDExQTky
MDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREMyQzcxNDE3OTcwODlEMDBFNjI3RkIgLyogVGltZVJhbmdlcy5j
cHAgKi87IH07Ci0JCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDY0MDEyMTY3
QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLzsgfTsKKwkJN0NDRTdFREYxQTQxMUE5
MjAwNDQ3QzRDIC8qIExheW91dFVuaXRUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0
VW5pdFRlc3RzLmNwcCAqLzsgfTsKIAkJN0NDRTdFRTAxQTQxMUE5QTAwNDQ3QzRDIC8qIEVkaXRv
ckNvbW1hbmRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNBQTQ4NTcxNEEwNDRENDAwODhGQUM0IC8qIEVkaXRvckNvbW1hbmRzLm1tICovOyB9Owog
CQk3Q0NFN0VFMTFBNDExQTlBMDA0NDdDNEMgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBDNUQzQkMxNDU5
OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSAqLzsgfTsKIAkJN0NDRTdF
RTIxQTQxMUE5QTAwNDQ3QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRjk5NDgx
N0EwOUY1MzAwOTk4RUYwIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwICov
OyB9OwpAQCAtMTY1Miw3ICsxNjUyLDcgQEAKIAkJMTFCN0ZEMjEyMTlGNDZERDAwNjlCMjdGIC8q
IEZpcnN0TWVhbmluZ2Z1bFBhaW50TWlsZXN0b25lX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaXJzdE1lYW5pbmdmdWxQYWludE1pbGVzdG9uZV9CdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUI3RkQyMjIxOUY0NkREMDA2
OUIyN0YgLyogRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUMyNTk4QzIxRkE2MThEMDA0QzlFMjMg
LyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJh
c3luYy1zY3JpcHQtbG9hZC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQ0
NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0VGVzdHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdFRlc3RzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RDQwRUMyMjFCNDZBNzAwNEI0NzRG
IC8qIFVVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJRC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RjNCMTEyMTVFNDVFQUIwMDIxMDA2
OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBm
aW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBmaW5kLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA0LDcgKzE4MDQsNyBAQAogCQkzMTI4QTgxMjIzNzYz
RjBCMDBEOTBENDAgLyogbGluay13aXRoLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRo
LWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4QTgxNDIzNzY0
MEZEMDBEOTBENDAgLyogaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGltYWdlLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxM0MzQTAxMjFFNTY3N0EwMERCQTg2RSAvKiBTeXN0ZW1Q
cmV2aWV3QmxvYk5hbWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gU3lzdGVt
UHJldmlld0Jsb2JOYW1pbmcuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE1
MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxNTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBFeHRlbmRlZENvbG9y
VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRD
b2xvclRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFCNzZFNDIyMzI5
OEUyQjAwN0ZFRDJDIC8qIFN5c3RlbVByZXZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1QcmV2aWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMUI3NkU0NDIzMjk5QkEzMDA3RkVEMkMgLyogc3lzdGVtLXByZXZpZXctdHJpZ2dl
ci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gInN5c3RlbS1wcmV2aWV3LXRyaWdnZXIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50
RW1wdHlVc2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHJldmVudEVtcHR5VXNlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxOTMsOSArMjE5Myw5IEBACiAJCTdBOTA5QTcwMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFBv
aW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UG9pbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTkwOUE3MTFEODc3NDc1MDA3RTEw
RjggLyogRmxvYXRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZsb2F0UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTA5QTcyMUQ4
Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmxvYXRTaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
N0E5MDlBNzMxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0E5MDlBNzQxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFJlY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdBOTA5QTc1MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRTaXplLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTkwOUE3MzFEODc3NDc1MDA3RTEwRjggLyogSW50UG9p
bnRUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRQb2lu
dFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5MDlBNzQxRDg3NzQ3
NTAwN0UxMEY4IC8qIEludFJlY3RUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRSZWN0VGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QTkwOUE3NTFEODc3NDc1MDA3RTEwRjggLyogSW50U2l6ZVRlc3RzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFNpemVUZXN0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBOTVCRERGMUU5QkVDNDAwMDg2NTQ5OCAvKiBJbmplY3RlZEJ1
bmRsZUFwcGxlRXZlbnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluamVjdGVkQnVuZGxlQXBwbGVFdmVudF9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTk1QkRFMDFFOUJFQzQwMDA4NjU0OTggLyogSW5qZWN0ZWRCdW5k
bGVBcHBsZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
amVjdGVkQnVuZGxlQXBwbGVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBOTlEOTkzMUFENEEyOUQwMDM3MzE0MSAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbnVUeXBlc0Zvck1vdXNl
RXZlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxMSw3ICsyMjExLDcg
QEAKIAkJN0FFQUQ0N0MxRTIwMTEzODAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmlsZVNjaGVt
ZUFjY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENyb3Nz
UGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FFQUQ0N0QxRTIwMTE0RTAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFj
Y2Vzcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gQ3Jvc3NQYXJ0aXRpb25GaWxl
U2NoZW1lQWNjZXNzLmh0bWw7IHBhdGggPSBUZXN0cy9tYWMvQ3Jvc3NQYXJ0aXRpb25GaWxlU2No
ZW1lQWNjZXNzLmh0bWw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJN0MxQUY3OTMx
RThEQ0JBQjAwMjY0NUI5IC8qIFByZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzM5NjUwNTFDREQ3NEY5MDA5NERCQjggLyog
Q29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5NjUwNTFDREQ3NEY5MDA5NERCQjgg
LyogQ29sb3JUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b2xvclRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzREI4RTIxRDEy
MTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbW1hbmRCYWNrRm9yd2FyZC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M0MTdGMzExRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0Rl
ZmF1bHROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1dlYlZpZXdEZWZhdWx0TmF2aWdhdGlvbkRlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4NkJBMDFBQTEyNTRCMDAzRjZGOUIgLyogYnVuZGxl
LWZpbGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJidW5kbGUtZmlsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMzMDMsNyArMzMwMyw3IEBACiAJCQkJNTczMDNCQzIyMDA3MUUyMjAw
MzU1OTY1IC8qIENCT1JSZWFkZXJUZXN0LmNwcCAqLywKIAkJCQk1NzMwM0JBQzIwMDZDNTYwMDAz
NTU5NjUgLyogQ0JPUlZhbHVlVGVzdC5jcHAgKi8sCiAJCQkJNTczMDNCQUIyMDA2QzU1NDAwMzU1
OTY1IC8qIENCT1JXcml0ZXJUZXN0LmNwcCAqLywKLQkJCQk3QzM5NjUwNTFDREQ3NEY5MDA5NERC
QjggLyogQ29sb3IuY3BwICovLAorCQkJCTdDMzk2NTA1MUNERDc0RjkwMDk0REJCOCAvKiBDb2xv
clRlc3RzLmNwcCAqLywKIAkJCQkxQzlFQjg0MDFFMzgwREExMDA1QzY0NDIgLyogQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQk3Q0IxODRDNDFBQTNGMjEwMDA2NkVERkQgLyogQ29u
dGVudEV4dGVuc2lvbnMuY3BwICovLAogCQkJCUNENTQ1MUU5MTlFNDFGOUQwMDE2OTM2RiAvKiBD
U1NQYXJzZXIuY3BwICovLApAQCAtMzMxNCw3ICszMzE0LDcgQEAKIAkJCQkyNjBCQTU3ODFCMUQy
RTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwICovLAogCQkJCTI2MEJBNTdBMUIxRDJFRTIw
MDRGQTA3QyAvKiBERkFIZWxwZXJzLmggKi8sCiAJCQkJMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZC
IC8qIERGQU1pbmltaXplci5jcHAgKi8sCi0JCQkJMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8q
IEV4dGVuZGVkQ29sb3IuY3BwICovLAorCQkJCTMxNTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBF
eHRlbmRlZENvbG9yVGVzdHMuY3BwICovLAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAv
KiBGaWRvSGlkTWVzc2FnZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQz
RSAvKiBGaWRvVGVzdERhdGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyog
RmlsZU1vbml0b3IuY3BwICovLApAQCAtMzMyNiwxMiArMzMyNiwxMiBAQAogCQkJCTVDQTFERUM3
MUY3MUY0MDcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICovLAogCQkJCTQ2RkEyRkVE
MjM4NDZDOUEwMDBDQ0IwQyAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLywKIAkJCQk2QjlBQkUxMTIw
ODY5NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3BwICovLAotCQkJCTdBOTA5QTczMUQ4Nzc0
NzUwMDdFMTBGOCAvKiBJbnRQb2ludC5jcHAgKi8sCi0JCQkJN0E5MDlBNzQxRDg3NzQ3NTAwN0Ux
MEY4IC8qIEludFJlY3QuY3BwICovLAotCQkJCTdBOTA5QTc1MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJ
bnRTaXplLmNwcCAqLywKKwkJCQk3QTkwOUE3MzFEODc3NDc1MDA3RTEwRjggLyogSW50UG9pbnRU
ZXN0cy5jcHAgKi8sCisJCQkJN0E5MDlBNzQxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFJlY3RUZXN0
cy5jcHAgKi8sCisJCQkJN0E5MDlBNzUxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFNpemVUZXN0cy5j
cHAgKi8sCiAJCQkJQ0Q1RkY0OTYyMTYyRTI3RTAwNEJEODZGIC8qIElTT0JveC5jcHAgKi8sCiAJ
CQkJMjc4RTNFMTgyM0NEODJGQTAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLywKLQkJCQkx
NDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCisJCQkJMTQ0NjQw
MTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXRUZXN0cy5jcHAgKi8sCiAJCQkJNkJGNEE2
ODIyMzlFRDRDRDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNwcCAqLywKIAkJCQkwNzZFNTA3
RTFGNDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJQ0UxODY2NDcxRjcyRThG
MTAwQTBDQUI2IC8qIE1hcmtlZFRleHQuY3BwICovLApAQCAtNDgzMCw3ICs0ODMwLDcgQEAKIAkJ
CQlDREYwQjc4QTIxNkQ0OERDMDA0MjFFQ0MgLyogQ2xvc2VXZWJWaWV3RHVyaW5nRW50ZXJGdWxs
c2NyZWVuLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkIzMDYxMDYyMThBMzcyOTAwRjVBODAyIC8q
IENsb3NpbmdXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkExRDBBNjRGQjAw
RkVCQ0YzIC8qIENvZGluZy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDMzk2NTA2MUNERDc0Rjkw
MDk0REJCOCAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzM5NjUwNjFDREQ3NEY5
MDA5NERCQjggLyogQ29sb3JUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNEQjhFNDFE
MTIxMjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM5RUI4NDExRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1QzRBODQ5NTFGN0VFRkZDMDBBQ0ZDNTQgLyogQ29uZmlndXJh
dGlvbi5tbSBpbiBTb3VyY2VzICovLApAQCAtNDkxMSw3ICs0OTExLDcgQEAKIAkJCQk1Qzc5NjQx
MDFFQjAyNzhEMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RBMjlCMjkyMEZEMkE5OTAwRjE1Q0VEIC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFEMTJCRUMwMjQ1QkVGODUwMDRDMEI3QSAvKiBFeGl0UGlQ
T25TdXNwZW5kVmlkZW9FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE1MTE4MTAxREIx
QUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE1
MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3JUZXN0cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VGMTFBNDExQUU2MDA0NDdDNEMgLyogRmFpbGVkTG9hZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1Nzk2NTFFNzIxNkJGREVEMDA2RUJGRTUgLyogRmlkb0hpZE1lc3Nh
Z2VUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMzJENzRBMUYwMjE1MTUwMDE2MkM0NCAv
KiBGaWxlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ5ODUsOSArNDk4NSw5IEBACiAJ
CQkJRjQ0QTUzMTEyMUI4OTkwMzAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEQTFBNDExQTg3MDA0NDdDNEMgLyogSW5zdGFuY2VN
ZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQjAyMzJGMUU0RTg3MTgwMDcw
NzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovLAot
CQkJCTdBOTA5QTgxMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRQb2ludC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk3QTkwOUE4MjFEODc3NDgwMDA3RTEwRjggLyogSW50UmVjdC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk3QTkwOUE4MzFEODc3NDgwMDA3RTEwRjggLyogSW50U2l6ZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk3QTkwOUE4MTFEODc3NDgwMDA3RTEwRjggLyogSW50UG9pbnRUZXN0cy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTkwOUE4MjFEODc3NDgwMDA3RTEwRjggLyogSW50UmVj
dFRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBOTA5QTgzMUQ4Nzc0ODAwMDdFMTBGOCAv
KiBJbnRTaXplVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMTZFMTMyM0UwQ0IzQTAw
MjA4OTAwIC8qIGlPU01vdXNlU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODkz
MURENTk5QkQwMEIwMDMyOCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q1RkY0OUYyMTYyRTk0MzAwNEJEODZGIC8qIElTT0JveC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTUwMDAsNyArNTAwMCw3IEBACiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3
RTgyIC8qIEtleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3OEUz
RTE5MjNDRDg0MkYwMDVBNkI4MCAvKiBLZXllZENvZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YwNjFBNDExQUU2MDA0NDdDNEMgLyogTGF5b3V0TWlsZXN0b25lc1dpdGhBbGxDb250
ZW50SW5GcmFtZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0NFN0VERjFBNDExQTkyMDA0NDdD
NEMgLyogTGF5b3V0VW5pdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Q0NFN0VERjFBNDExQTky
MDA0NDdDNEMgLyogTGF5b3V0VW5pdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0QkZB
NjhFMUU0QUQwODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0E3QjBFN0YxRUFGRTRDMzAwNkFCOEFFIC8qIExpbWl0VGl0bGVTaXplLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzI1Q0NBMDYxRTUxMzgwQjAwMjZDQjhBIC8qIExpbmVCcmVh
a2luZy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db2xvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMTA1ZTAzMjdjZmU1
ZDA0MGM1ZGQwNmI0OTU5MmMwZWQ0MWYwYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyLCAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGVzdC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKLQotVEVTVChDb2xvciwgUkdCVG9IU1ZfV2hpdGUpCi17Ci0gICAg
Q29sb3IgY29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgCi0gICAgZG91YmxlIGggPSAwOwotICAg
IGRvdWJsZSBzID0gMDsKLSAgICBkb3VibGUgdiA9IDA7Ci0gICAgY29sb3IuZ2V0SFNWKGgsIHMs
IHYpOwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBoKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VR
KDAsIHMpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgdik7Ci19Ci0KLVRFU1QoQ29sb3IsIFJH
QlRvSFNWX0JsYWNrKQotewotICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmJsYWNrOwotICAgIAot
ICAgIGRvdWJsZSBoID0gMDsKLSAgICBkb3VibGUgcyA9IDA7Ci0gICAgZG91YmxlIHYgPSAwOwot
ICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsKLQotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7
Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBzKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHYp
OwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTVl9SZWQpCi17Ci0gICAgQ29sb3IgY29sb3IoMjU1
LCAwLCAwKTsKLSAgICAKLSAgICBkb3VibGUgaCA9IDA7Ci0gICAgZG91YmxlIHMgPSAwOwotICAg
IGRvdWJsZSB2ID0gMDsKLSAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7Ci0KLSAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDAsIGgpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgcyk7Ci0gICAgRVhQRUNU
X0RPVUJMRV9FUSgxLCB2KTsKLX0KLQotVEVTVChDb2xvciwgUkdCVG9IU1ZfR3JlZW4pCi17Ci0g
ICAgQ29sb3IgY29sb3IoMCwgMjU1LCAwKTsKLSAgICAKLSAgICBkb3VibGUgaCA9IDA7Ci0gICAg
ZG91YmxlIHMgPSAwOwotICAgIGRvdWJsZSB2ID0gMDsKLSAgICBjb2xvci5nZXRIU1YoaCwgcywg
dik7Ci0KLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuMzMzMzMzMzMzMzMzMzMzMzEsIGgpOwotICAg
IEVYUEVDVF9ET1VCTEVfRVEoMSwgcyk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgxLCB2KTsKLX0K
LQotVEVTVChDb2xvciwgUkdCVG9IU1ZfQmx1ZSkKLXsKLSAgICBDb2xvciBjb2xvcigwLCAwLCAy
NTUpOwotICAgIAotICAgIGRvdWJsZSBoID0gMDsKLSAgICBkb3VibGUgcyA9IDA7Ci0gICAgZG91
YmxlIHYgPSAwOwotICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsKLQotICAgIEVYUEVDVF9ET1VC
TEVfRVEoMC42NjY2NjY2NjY2NjY2NjY2MywgaCk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBz
KTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHYpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hT
Vl9EYXJrR3JheSkKLXsKLSAgICBDb2xvciBjb2xvciA9IENvbG9yOjpkYXJrR3JheTsKLSAgICAK
LSAgICBkb3VibGUgaCA9IDA7Ci0gICAgZG91YmxlIHMgPSAwOwotICAgIGRvdWJsZSB2ID0gMDsK
LSAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7Ci0KLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGgp
OwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgcyk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUw
MTk2MDc4NDMxMzcyNTQ4LCB2KTsKLX0KLQotVEVTVChDb2xvciwgUkdCVG9IU1ZfR3JheSkKLXsK
LSAgICBDb2xvciBjb2xvciA9IENvbG9yOjpncmF5OwotICAgIAotICAgIGRvdWJsZSBoID0gMDsK
LSAgICBkb3VibGUgcyA9IDA7Ci0gICAgZG91YmxlIHYgPSAwOwotICAgIGNvbG9yLmdldEhTViho
LCBzLCB2KTsKLQotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7Ci0gICAgRVhQRUNUX0RPVUJM
RV9FUSgwLCBzKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNjI3NDUwOTgwMzkyMTU2ODUsIHYp
OwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTVl9MaWdodEdyYXkpCi17Ci0gICAgQ29sb3IgY29s
b3IgPSBDb2xvcjo6bGlnaHRHcmF5OwotICAgIAotICAgIGRvdWJsZSBoID0gMDsKLSAgICBkb3Vi
bGUgcyA9IDA7Ci0gICAgZG91YmxlIHYgPSAwOwotICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsK
LQotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBz
KTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNzUyOTQxMTc2NDcwNTg4MjIsIHYpOwotfQotCi1U
RVNUKENvbG9yLCBSR0JUb0hTTF9XaGl0ZSkKLXsKLSAgICBDb2xvciBjb2xvciA9IENvbG9yOjp3
aGl0ZTsKLQotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xv
ci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwotCi0gICAgRVhQRUNUX0RPVUJM
RV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7Ci0gICAg
RVhQRUNUX0RPVUJMRV9FUSgxLCBsaWdodG5lc3MpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hT
TF9CbGFjaykKLXsKLSAgICBDb2xvciBjb2xvciA9IENvbG9yOjpibGFjazsKLQotICAgIGRvdWJs
ZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1
cmF0aW9uLCBsaWdodG5lc3MpOwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAg
IEVYUEVDVF9ET1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgw
LCBsaWdodG5lc3MpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTTF9SZWQpCi17Ci0gICAgQ29s
b3IgY29sb3IoMjU1LCAwLCAwKTsKLQotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0
bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwotCi0g
ICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgc2F0
dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUsIGxpZ2h0bmVzcyk7Ci19Ci0KLVRF
U1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVuKQotewotICAgIENvbG9yIGNvbG9yKDAsIDI1NSwgMCk7
Ci0KLSAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0
SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKLQotICAgIEVYUEVDVF9ET1VCTEVfRVEo
MiwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHNhdHVyYXRpb24pOwotICAgIEVYUEVD
VF9ET1VCTEVfRVEoMC41LCBsaWdodG5lc3MpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTTF9C
bHVlKQotewotICAgIENvbG9yIGNvbG9yKDAsIDAsIDI1NSk7Ci0KLSAgICBkb3VibGUgaHVlLCBz
YXR1cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwg
bGlnaHRuZXNzKTsKLQotICAgIEVYUEVDVF9ET1VCTEVfRVEoNCwgaHVlKTsKLSAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDEsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMC41LCBsaWdo
dG5lc3MpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTTF9EYXJrR3JheSkKLXsKLSAgICBDb2xv
ciBjb2xvciA9IENvbG9yOjpkYXJrR3JheTsKLQotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24s
IGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3Mp
OwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEo
MCwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUwMTk2MDc4NDMxMzcyNTQ4
LCBsaWdodG5lc3MpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTTF9HcmF5KQotewotICAgIENv
bG9yIGNvbG9yID0gQ29sb3I6OmdyYXk7Ci0KLSAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsK
LQotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAs
IHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwg
bGlnaHRuZXNzKTsKLX0KLQotVEVTVChDb2xvciwgUkdCVG9IU0xfTGlnaHRHcmF5KQotewotICAg
IENvbG9yIGNvbG9yID0gQ29sb3I6OmxpZ2h0R3JheTsKLQotICAgIGRvdWJsZSBodWUsIHNhdHVy
YXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdo
dG5lc3MpOwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VC
TEVfRVEoMCwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjc1Mjk0MTE3NjQ3
MDU4ODIyLCBsaWdodG5lc3MpOwotfQotCi1URVNUKENvbG9yLCBWYWxpZGl0eSkKLXsKLSAgICBD
b2xvciBpbnZhbGlkQ29sb3I7Ci0gICAgRVhQRUNUX0ZBTFNFKGludmFsaWRDb2xvci5pc1ZhbGlk
KCkpOwotICAgIEVYUEVDVF9GQUxTRShpbnZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKLQotICAg
IENvbG9yIG90aGVySW52YWxpZENvbG9yID0gaW52YWxpZENvbG9yOwotICAgIEVYUEVDVF9GQUxT
RShvdGhlckludmFsaWRDb2xvci5pc1ZhbGlkKCkpOwotICAgIEVYUEVDVF9GQUxTRShvdGhlcklu
dmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwotCi0gICAgQ29sb3IgdmFsaWRDb2xvcigyNTUsIDAs
IDApOwotICAgIEVYUEVDVF9UUlVFKHZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UodmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwotCi0gICAgQ29sb3Igb3RoZXJWYWxpZENv
bG9yID0gdmFsaWRDb2xvcjsKLSAgICBFWFBFQ1RfVFJVRShvdGhlclZhbGlkQ29sb3IuaXNWYWxp
ZCgpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob3RoZXJWYWxpZENvbG9yLmlzRXh0ZW5kZWQoKSk7Ci0K
LSAgICB2YWxpZENvbG9yID0gQ29sb3IoMSwgMiwgMywgNCk7Ci0gICAgRVhQRUNUX1RSVUUodmFs
aWRDb2xvci5pc1ZhbGlkKCkpOwotICAgIEVYUEVDVF9GQUxTRSh2YWxpZENvbG9yLmlzRXh0ZW5k
ZWQoKSk7Ci0gICAgRVhQRUNUX0VRKHZhbGlkQ29sb3IucmVkKCksIDEpOwotICAgIEVYUEVDVF9F
USh2YWxpZENvbG9yLmdyZWVuKCksIDIpOwotICAgIEVYUEVDVF9FUSh2YWxpZENvbG9yLmJsdWUo
KSwgMyk7Ci0gICAgRVhQRUNUX0VRKHZhbGlkQ29sb3IuYWxwaGEoKSwgNCk7Ci0KLSAgICBDb2xv
ciB5ZXRBbm90aGVyVmFsaWRDb2xvcihXVEZNb3ZlKHZhbGlkQ29sb3IpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh5ZXRBbm90aGVyVmFsaWRDb2xvci5pc1ZhbGlkKCkpOwotICAgIEVYUEVDVF9GQUxTRSh5
ZXRBbm90aGVyVmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwotICAgIEVYUEVDVF9FUSh5ZXRBbm90
aGVyVmFsaWRDb2xvci5yZWQoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKHlldEFub3RoZXJWYWxpZENv
bG9yLmdyZWVuKCksIDIpOwotICAgIEVYUEVDVF9FUSh5ZXRBbm90aGVyVmFsaWRDb2xvci5ibHVl
KCksIDMpOwotICAgIEVYUEVDVF9FUSh5ZXRBbm90aGVyVmFsaWRDb2xvci5hbHBoYSgpLCA0KTsK
LQotICAgIG90aGVyVmFsaWRDb2xvciA9IFdURk1vdmUoeWV0QW5vdGhlclZhbGlkQ29sb3IpOwot
ICAgIEVYUEVDVF9UUlVFKG90aGVyVmFsaWRDb2xvci5pc1ZhbGlkKCkpOwotICAgIEVYUEVDVF9G
QUxTRShvdGhlclZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKLSAgICBFWFBFQ1RfRVEob3RoZXJW
YWxpZENvbG9yLnJlZCgpLCAxKTsKLSAgICBFWFBFQ1RfRVEob3RoZXJWYWxpZENvbG9yLmdyZWVu
KCksIDIpOwotICAgIEVYUEVDVF9FUShvdGhlclZhbGlkQ29sb3IuYmx1ZSgpLCAzKTsKLSAgICBF
WFBFQ1RfRVEob3RoZXJWYWxpZENvbG9yLmFscGhhKCksIDQpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29sb3JUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29sb3JUZXN0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzExMDVlMDMyN2NmZTVkMDQwYzVkZDA2YjQ5NTky
YzBlZDQxZjBiZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db2xvclRlc3RzLmNwcApAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQ29sb3IsIFJHQlRvSFNWX1doaXRlKQorewor
ICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OndoaXRlOworICAgIAorICAgIGRvdWJsZSBoID0gMDsK
KyAgICBkb3VibGUgcyA9IDA7CisgICAgZG91YmxlIHYgPSAwOworICAgIGNvbG9yLmdldEhTViho
LCBzLCB2KTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7CisgICAgRVhQRUNUX0RPVUJM
RV9FUSgwLCBzKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHYpOworfQorCitURVNUKENvbG9y
LCBSR0JUb0hTVl9CbGFjaykKK3sKKyAgICBDb2xvciBjb2xvciA9IENvbG9yOjpibGFjazsKKyAg
ICAKKyAgICBkb3VibGUgaCA9IDA7CisgICAgZG91YmxlIHMgPSAwOworICAgIGRvdWJsZSB2ID0g
MDsKKyAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAs
IGgpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgw
LCB2KTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU1ZfUmVkKQoreworICAgIENvbG9yIGNvbG9y
KDI1NSwgMCwgMCk7CisgICAgCisgICAgZG91YmxlIGggPSAwOworICAgIGRvdWJsZSBzID0gMDsK
KyAgICBkb3VibGUgdiA9IDA7CisgICAgY29sb3IuZ2V0SFNWKGgsIHMsIHYpOworCisgICAgRVhQ
RUNUX0RPVUJMRV9FUSgwLCBoKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHMpOworICAgIEVY
UEVDVF9ET1VCTEVfRVEoMSwgdik7Cit9CisKK1RFU1QoQ29sb3IsIFJHQlRvSFNWX0dyZWVuKQor
eworICAgIENvbG9yIGNvbG9yKDAsIDI1NSwgMCk7CisgICAgCisgICAgZG91YmxlIGggPSAwOwor
ICAgIGRvdWJsZSBzID0gMDsKKyAgICBkb3VibGUgdiA9IDA7CisgICAgY29sb3IuZ2V0SFNWKGgs
IHMsIHYpOworCisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjMzMzMzMzMzMzMzMzMzMzMxLCBoKTsK
KyAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHMpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgdik7
Cit9CisKK1RFU1QoQ29sb3IsIFJHQlRvSFNWX0JsdWUpCit7CisgICAgQ29sb3IgY29sb3IoMCwg
MCwgMjU1KTsKKyAgICAKKyAgICBkb3VibGUgaCA9IDA7CisgICAgZG91YmxlIHMgPSAwOworICAg
IGRvdWJsZSB2ID0gMDsKKyAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7CisKKyAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDAuNjY2NjY2NjY2NjY2NjY2NjMsIGgpOworICAgIEVYUEVDVF9ET1VCTEVfRVEo
MSwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgxLCB2KTsKK30KKworVEVTVChDb2xvciwgUkdC
VG9IU1ZfRGFya0dyYXkpCit7CisgICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6ZGFya0dyYXk7Cisg
ICAgCisgICAgZG91YmxlIGggPSAwOworICAgIGRvdWJsZSBzID0gMDsKKyAgICBkb3VibGUgdiA9
IDA7CisgICAgY29sb3IuZ2V0SFNWKGgsIHMsIHYpOworCisgICAgRVhQRUNUX0RPVUJMRV9FUSgw
LCBoKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHMpOworICAgIEVYUEVDVF9ET1VCTEVfRVEo
MC41MDE5NjA3ODQzMTM3MjU0OCwgdik7Cit9CisKK1RFU1QoQ29sb3IsIFJHQlRvSFNWX0dyYXkp
Cit7CisgICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6Z3JheTsKKyAgICAKKyAgICBkb3VibGUgaCA9
IDA7CisgICAgZG91YmxlIHMgPSAwOworICAgIGRvdWJsZSB2ID0gMDsKKyAgICBjb2xvci5nZXRI
U1YoaCwgcywgdik7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGgpOworICAgIEVYUEVDVF9E
T1VCTEVfRVEoMCwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjYyNzQ1MDk4MDM5MjE1Njg1
LCB2KTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU1ZfTGlnaHRHcmF5KQoreworICAgIENvbG9y
IGNvbG9yID0gQ29sb3I6OmxpZ2h0R3JheTsKKyAgICAKKyAgICBkb3VibGUgaCA9IDA7CisgICAg
ZG91YmxlIHMgPSAwOworICAgIGRvdWJsZSB2ID0gMDsKKyAgICBjb2xvci5nZXRIU1YoaCwgcywg
dik7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGgpOworICAgIEVYUEVDVF9ET1VCTEVfRVEo
MCwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjc1Mjk0MTE3NjQ3MDU4ODIyLCB2KTsKK30K
KworVEVTVChDb2xvciwgUkdCVG9IU0xfV2hpdGUpCit7CisgICAgQ29sb3IgY29sb3IgPSBDb2xv
cjo6d2hpdGU7CisKKyAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAg
Y29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKworICAgIEVYUEVDVF9E
T1VCTEVfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwor
ICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgbGlnaHRuZXNzKTsKK30KKworVEVTVChDb2xvciwgUkdC
VG9IU0xfQmxhY2spCit7CisgICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6YmxhY2s7CisKKyAgICBk
b3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwg
c2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsK
KyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9ET1VCTEVf
RVEoMCwgbGlnaHRuZXNzKTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU0xfUmVkKQoreworICAg
IENvbG9yIGNvbG9yKDI1NSwgMCwgMCk7CisKKyAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3M7CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsK
KworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDEs
IHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMC41LCBsaWdodG5lc3MpOworfQor
CitURVNUKENvbG9yLCBSR0JUb0hTTF9HcmVlbikKK3sKKyAgICBDb2xvciBjb2xvcigwLCAyNTUs
IDApOworCisgICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOworICAgIGNvbG9y
LmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisKKyAgICBFWFBFQ1RfRE9VQkxF
X0VRKDIsIGh1ZSk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBzYXR1cmF0aW9uKTsKKyAgICBF
WFBFQ1RfRE9VQkxFX0VRKDAuNSwgbGlnaHRuZXNzKTsKK30KKworVEVTVChDb2xvciwgUkdCVG9I
U0xfQmx1ZSkKK3sKKyAgICBDb2xvciBjb2xvcigwLCAwLCAyNTUpOworCisgICAgZG91YmxlIGh1
ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOworICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRp
b24sIGxpZ2h0bmVzcyk7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDQsIGh1ZSk7CisgICAgRVhQ
RUNUX0RPVUJMRV9FUSgxLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNSwg
bGlnaHRuZXNzKTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU0xfRGFya0dyYXkpCit7CisgICAg
Q29sb3IgY29sb3IgPSBDb2xvcjo6ZGFya0dyYXk7CisKKyAgICBkb3VibGUgaHVlLCBzYXR1cmF0
aW9uLCBsaWdodG5lc3M7CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRu
ZXNzKTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRE9VQkxF
X0VRKDAsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMC41MDE5NjA3ODQzMTM3
MjU0OCwgbGlnaHRuZXNzKTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU0xfR3JheSkKK3sKKyAg
ICBDb2xvciBjb2xvciA9IENvbG9yOjpncmF5OworCisgICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlv
biwgbGlnaHRuZXNzOworICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVz
cyk7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7CisgICAgRVhQRUNUX0RPVUJMRV9F
USgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNjI3NDUwOTgwMzkyMTU2
ODUsIGxpZ2h0bmVzcyk7Cit9CisKK1RFU1QoQ29sb3IsIFJHQlRvSFNMX0xpZ2h0R3JheSkKK3sK
KyAgICBDb2xvciBjb2xvciA9IENvbG9yOjpsaWdodEdyYXk7CisKKyAgICBkb3VibGUgaHVlLCBz
YXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwg
bGlnaHRuZXNzKTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMC43NTI5NDEx
NzY0NzA1ODgyMiwgbGlnaHRuZXNzKTsKK30KKworVEVTVChDb2xvciwgVmFsaWRpdHkpCit7Cisg
ICAgQ29sb3IgaW52YWxpZENvbG9yOworICAgIEVYUEVDVF9GQUxTRShpbnZhbGlkQ29sb3IuaXNW
YWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaW52YWxpZENvbG9yLmlzRXh0ZW5kZWQoKSk7CisK
KyAgICBDb2xvciBvdGhlckludmFsaWRDb2xvciA9IGludmFsaWRDb2xvcjsKKyAgICBFWFBFQ1Rf
RkFMU0Uob3RoZXJJbnZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob3Ro
ZXJJbnZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9yIHZhbGlkQ29sb3IoMjU1
LCAwLCAwKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWxpZENvbG9yLmlzVmFsaWQoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKHZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9yIG90aGVyVmFs
aWRDb2xvciA9IHZhbGlkQ29sb3I7CisgICAgRVhQRUNUX1RSVUUob3RoZXJWYWxpZENvbG9yLmlz
VmFsaWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKG90aGVyVmFsaWRDb2xvci5pc0V4dGVuZGVkKCkp
OworCisgICAgdmFsaWRDb2xvciA9IENvbG9yKDEsIDIsIDMsIDQpOworICAgIEVYUEVDVF9UUlVF
KHZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodmFsaWRDb2xvci5pc0V4
dGVuZGVkKCkpOworICAgIEVYUEVDVF9FUSh2YWxpZENvbG9yLnJlZCgpLCAxKTsKKyAgICBFWFBF
Q1RfRVEodmFsaWRDb2xvci5ncmVlbigpLCAyKTsKKyAgICBFWFBFQ1RfRVEodmFsaWRDb2xvci5i
bHVlKCksIDMpOworICAgIEVYUEVDVF9FUSh2YWxpZENvbG9yLmFscGhhKCksIDQpOworCisgICAg
Q29sb3IgeWV0QW5vdGhlclZhbGlkQ29sb3IoV1RGTW92ZSh2YWxpZENvbG9yKSk7CisgICAgRVhQ
RUNUX1RSVUUoeWV0QW5vdGhlclZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoeWV0QW5vdGhlclZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKKyAgICBFWFBFQ1RfRVEoeWV0
QW5vdGhlclZhbGlkQ29sb3IucmVkKCksIDEpOworICAgIEVYUEVDVF9FUSh5ZXRBbm90aGVyVmFs
aWRDb2xvci5ncmVlbigpLCAyKTsKKyAgICBFWFBFQ1RfRVEoeWV0QW5vdGhlclZhbGlkQ29sb3Iu
Ymx1ZSgpLCAzKTsKKyAgICBFWFBFQ1RfRVEoeWV0QW5vdGhlclZhbGlkQ29sb3IuYWxwaGEoKSwg
NCk7CisKKyAgICBvdGhlclZhbGlkQ29sb3IgPSBXVEZNb3ZlKHlldEFub3RoZXJWYWxpZENvbG9y
KTsKKyAgICBFWFBFQ1RfVFJVRShvdGhlclZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0Uob3RoZXJWYWxpZENvbG9yLmlzRXh0ZW5kZWQoKSk7CisgICAgRVhQRUNUX0VRKG90
aGVyVmFsaWRDb2xvci5yZWQoKSwgMSk7CisgICAgRVhQRUNUX0VRKG90aGVyVmFsaWRDb2xvci5n
cmVlbigpLCAyKTsKKyAgICBFWFBFQ1RfRVEob3RoZXJWYWxpZENvbG9yLmJsdWUoKSwgMyk7Cisg
ICAgRVhQRUNUX0VRKG90aGVyVmFsaWRDb2xvci5hbHBoYSgpLCA0KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0V4dGVuZGVkQ29sb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
NTEyYWQ3ODgyNjExYjZjODA2ZWEwNjgyM2NkMGJhOWQ1NjlmZjhmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9FeHRlbmRlZENvbG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGVzdC5oIgot
I2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3Iu
aD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKLQotVEVTVChFeHRlbmRlZENvbG9yLCBDb25zdHJ1Y3RvcikKLXsKLSAgICBDb2xvciBjMSgx
LjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwotICAgIEVYUEVDVF9U
UlVFKGMxLmlzRXh0ZW5kZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzEuYXNFeHRl
bmRlZCgpLnJlZCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBjMS5hc0V4dGVuZGVkKCku
Z3JlZW4oKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGMxLmFzRXh0ZW5kZWQoKS5ibHVl
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMxLmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIGMxLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKLSAgICBFWFBF
Q1RfRVEoYzEuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOwotfQot
Ci1URVNUKEV4dGVuZGVkQ29sb3IsIENvcHlDb25zdHJ1Y3RvcikKLXsKLSAgICBDb2xvciBjMSgx
LjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwotICAgIEVYUEVDVF9U
UlVFKGMxLmlzRXh0ZW5kZWQoKSk7Ci0KLSAgICBDb2xvciBjMihjMSk7Ci0KLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9F
USgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4y
NSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIu
YXNFeHRlbmRlZCgpLmFscGhhKCkpOwotICAgIEVYUEVDVF9FUSgydSwgYzEuYXNFeHRlbmRlZCgp
LnJlZkNvdW50KCkpOwotICAgIEVYUEVDVF9FUSgydSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50
KCkpOwotICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41
IDAuMjUpIik7Ci19Ci0KLVRFU1QoRXh0ZW5kZWRDb2xvciwgQXNzaWdubWVudCkKLXsKLSAgICBD
b2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwotICAg
IEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7Ci0KLSAgICBDb2xvciBjMiA9IGMxOwotCi0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLnJlZCgpKTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoMC41LCBjMi5hc0V4dGVuZGVkKCkuZ3JlZW4oKSk7Ci0gICAgRVhQRUNUX0ZM
T0FUX0VRKDAuMjUsIGMyLmFzRXh0ZW5kZWQoKS5ibHVlKCkpOwotICAgIEVYUEVDVF9GTE9BVF9F
USgxLjAsIGMyLmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIGMxLmFz
RXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIGMyLmFzRXh0ZW5kZWQo
KS5yZWZDb3VudCgpKTsKLSAgICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxh
eS1wMyAxIDAuNSAwLjI1KSIpOwotfQotCi1URVNUKEV4dGVuZGVkQ29sb3IsIE1vdmVDb25zdHJ1
Y3RvcikKLXsKLSAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpE
aXNwbGF5UDMpOwotICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7Ci0KLSAgICBDb2xv
ciBjMihXVEZNb3ZlKGMxKSk7Ci0gICAgLy8gV2Ugc2hvdWxkIGhhdmUgbW92ZWQgdGhlIGV4dGVu
ZGVkIGNvbG9yIHBvaW50ZXIgaW50byBjMiwKLSAgICAvLyBhbmQgc2V0IGMxIHRvIGludmFsaWQg
c28gdGhhdCBpdCBkb2Vzbid0IGNhdXNlIGRlbGV0aW9uLgotICAgIEVYUEVDVF9GQUxTRShjMS5p
c0V4dGVuZGVkKCkpOwotICAgIEVYUEVDVF9GQUxTRShjMS5pc1ZhbGlkKCkpOwotCi0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLnJlZCgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMC41LCBjMi5hc0V4dGVuZGVkKCkuZ3JlZW4oKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VR
KDAuMjUsIGMyLmFzRXh0ZW5kZWQoKS5ibHVlKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAs
IGMyLmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIGMyLmFzRXh0ZW5k
ZWQoKS5yZWZDb3VudCgpKTsKLSAgICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlz
cGxheS1wMyAxIDAuNSAwLjI1KSIpOwotfQotCi1URVNUKEV4dGVuZGVkQ29sb3IsIE1vdmVBc3Np
Z25tZW50KQotewotICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6
OkRpc3BsYXlQMyk7Ci0gICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRlbmRlZCgpKTsKLQotICAgIENv
bG9yIGMyID0gV1RGTW92ZShjMSk7Ci0KLSAgICAvLyBXZSBzaG91bGQgaGF2ZSBtb3ZlZCB0aGUg
ZXh0ZW5kZWQgY29sb3IgcG9pbnRlciBpbnRvIGMyLAotICAgIC8vIGFuZCBzZXQgYzEgdG8gaW52
YWxpZCBzbyB0aGF0IGl0IGRvZXNuJ3QgY2F1c2UgZGVsZXRpb24uCi0gICAgRVhQRUNUX0ZBTFNF
KGMxLmlzRXh0ZW5kZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGMxLmlzVmFsaWQoKSk7Ci0KLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VR
KDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgYzIuYXNF
eHRlbmRlZCgpLnJlZkNvdW50KCkpOwotICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xv
cihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Ci19Ci0KLVRFU1QoRXh0ZW5kZWRDb2xvciwgQmFz
aWNSZWZlcmVuY2VDb3VudGluZykKLXsKLSAgICBDb2xvciogYzEgPSBuZXcgQ29sb3IoMS4wLCAw
LjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsKLSAgICBFWFBFQ1RfVFJVRShj
MS0+aXNFeHRlbmRlZCgpKTsKLQotICAgIENvbG9yKiBjMiA9IG5ldyBDb2xvcigqYzEpOwotICAg
IENvbG9yKiBjMyA9IG5ldyBDb2xvcigqYzIpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwg
YzItPmFzRXh0ZW5kZWQoKS5yZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzItPmFz
RXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzItPmFzRXh0
ZW5kZWQoKS5ibHVlKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLT5hc0V4dGVuZGVk
KCkuYWxwaGEoKSk7Ci0gICAgRVhQRUNUX0VRKDN1LCBjMi0+YXNFeHRlbmRlZCgpLnJlZkNvdW50
KCkpOwotICAgIEVYUEVDVF9FUShjMi0+Y3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAu
NSAwLjI1KSIpOwotCi0gICAgZGVsZXRlIGMxOwotICAgIEVYUEVDVF9FUSgydSwgYzItPmFzRXh0
ZW5kZWQoKS5yZWZDb3VudCgpKTsKLQotICAgIGRlbGV0ZSBjMjsKLSAgICBFWFBFQ1RfRVEoMXUs
IGMzLT5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7Ci0KLSAgICBkZWxldGUgYzM7Ci19Ci0KLUNv
bG9yIG1ha2VDb2xvcigpCi17Ci0gICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29s
b3JTcGFjZTo6RGlzcGxheVAzKTsKLSAgICBFWFBFQ1RfVFJVRShjMS5pc0V4dGVuZGVkKCkpOwot
ICAgIEVYUEVDVF9FUSgxdSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOwotCi0gICAgcmV0
dXJuIGMxOwotfQotCi1URVNUKEV4dGVuZGVkQ29sb3IsIFJldHVyblZhbHVlcykKLXsKLSAgICBD
b2xvciBjMiA9IG1ha2VDb2xvcigpOwotICAgIEVYUEVDVF9UUlVFKGMyLmlzRXh0ZW5kZWQoKSk7
Ci0KLSAgICBFWFBFQ1RfRVEoMXUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKLSAgICBF
WFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOwot
fQotCi0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzUxMmFkNzg4MjYxMWI2YzgwNmVhMDY4MjNjZDBiYTlkNTY5ZmY4ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9y
VGVzdHMuY3BwCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChFeHRlbmRlZENvbG9yLCBDb25z
dHJ1Y3RvcikKK3sKKyAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNl
OjpEaXNwbGF5UDMpOworICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDEuMCwgYzEuYXNFeHRlbmRlZCgpLnJlZCgpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMC41LCBjMS5hc0V4dGVuZGVkKCkuZ3JlZW4oKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDAuMjUsIGMxLmFzRXh0ZW5kZWQoKS5ibHVlKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAs
IGMxLmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIGMxLmFzRXh0ZW5k
ZWQoKS5yZWZDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoYzEuY3NzVGV4dCgpLCAiY29sb3IoZGlz
cGxheS1wMyAxIDAuNSAwLjI1KSIpOworfQorCitURVNUKEV4dGVuZGVkQ29sb3IsIENvcHlDb25z
dHJ1Y3RvcikKK3sKKyAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNl
OjpEaXNwbGF5UDMpOworICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7CisKKyAgICBD
b2xvciBjMihjMSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCku
cmVkKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworICAgIEVY
UEVDVF9FUSgydSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVYUEVDVF9FUSgy
dSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0
KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Cit9CisKK1RFU1QoRXh0ZW5kZWRD
b2xvciwgQXNzaWdubWVudCkKK3sKKyAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBD
b2xvclNwYWNlOjpEaXNwbGF5UDMpOworICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7
CisKKyAgICBDb2xvciBjMiA9IGMxOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNF
eHRlbmRlZCgpLnJlZCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBjMi5hc0V4dGVuZGVk
KCkuZ3JlZW4oKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGMyLmFzRXh0ZW5kZWQoKS5i
bHVlKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLmFzRXh0ZW5kZWQoKS5hbHBoYSgp
KTsKKyAgICBFWFBFQ1RfRVEoMnUsIGMxLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKKyAgICBF
WFBFQ1RfRVEoMnUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEo
YzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOworfQorCitURVNU
KEV4dGVuZGVkQ29sb3IsIE1vdmVDb25zdHJ1Y3RvcikKK3sKKyAgICBDb2xvciBjMSgxLjAsIDAu
NSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOworICAgIEVYUEVDVF9UUlVFKGMx
LmlzRXh0ZW5kZWQoKSk7CisKKyAgICBDb2xvciBjMihXVEZNb3ZlKGMxKSk7CisgICAgLy8gV2Ug
c2hvdWxkIGhhdmUgbW92ZWQgdGhlIGV4dGVuZGVkIGNvbG9yIHBvaW50ZXIgaW50byBjMiwKKyAg
ICAvLyBhbmQgc2V0IGMxIHRvIGludmFsaWQgc28gdGhhdCBpdCBkb2Vzbid0IGNhdXNlIGRlbGV0
aW9uLgorICAgIEVYUEVDVF9GQUxTRShjMS5pc0V4dGVuZGVkKCkpOworICAgIEVYUEVDVF9GQUxT
RShjMS5pc1ZhbGlkKCkpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRl
ZCgpLnJlZCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBjMi5hc0V4dGVuZGVkKCkuZ3Jl
ZW4oKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMjUsIGMyLmFzRXh0ZW5kZWQoKS5ibHVlKCkp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMXUsIGMyLmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKKyAgICBFWFBFQ1Rf
RVEoYzIuY3NzVGV4dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOworfQorCitU
RVNUKEV4dGVuZGVkQ29sb3IsIE1vdmVBc3NpZ25tZW50KQoreworICAgIENvbG9yIGMxKDEuMCwg
MC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7CisgICAgRVhQRUNUX1RSVUUo
YzEuaXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9yIGMyID0gV1RGTW92ZShjMSk7CisKKyAgICAv
LyBXZSBzaG91bGQgaGF2ZSBtb3ZlZCB0aGUgZXh0ZW5kZWQgY29sb3IgcG9pbnRlciBpbnRvIGMy
LAorICAgIC8vIGFuZCBzZXQgYzEgdG8gaW52YWxpZCBzbyB0aGF0IGl0IGRvZXNuJ3QgY2F1c2Ug
ZGVsZXRpb24uCisgICAgRVhQRUNUX0ZBTFNFKGMxLmlzRXh0ZW5kZWQoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGMxLmlzVmFsaWQoKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4
dGVuZGVkKCkucmVkKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQo
KS5ncmVlbigpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJs
dWUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkp
OworICAgIEVYUEVDVF9FUSgxdSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVY
UEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Cit9
CisKK1RFU1QoRXh0ZW5kZWRDb2xvciwgQmFzaWNSZWZlcmVuY2VDb3VudGluZykKK3sKKyAgICBD
b2xvciogYzEgPSBuZXcgQ29sb3IoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFjZTo6RGlz
cGxheVAzKTsKKyAgICBFWFBFQ1RfVFJVRShjMS0+aXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9y
KiBjMiA9IG5ldyBDb2xvcigqYzEpOworICAgIENvbG9yKiBjMyA9IG5ldyBDb2xvcigqYzIpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzItPmFzRXh0ZW5kZWQoKS5yZWQoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzItPmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMC4yNSwgYzItPmFzRXh0ZW5kZWQoKS5ibHVlKCkpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgxLjAsIGMyLT5hc0V4dGVuZGVkKCkuYWxwaGEoKSk7CisgICAgRVhQRUNUX0VRKDN1
LCBjMi0+YXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVYUEVDVF9FUShjMi0+Y3NzVGV4
dCgpLCAiY29sb3IoZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOworCisgICAgZGVsZXRlIGMxOwor
ICAgIEVYUEVDVF9FUSgydSwgYzItPmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKKworICAgIGRl
bGV0ZSBjMjsKKyAgICBFWFBFQ1RfRVEoMXUsIGMzLT5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7
CisKKyAgICBkZWxldGUgYzM7Cit9CisKK0NvbG9yIG1ha2VDb2xvcigpCit7CisgICAgQ29sb3Ig
YzEoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsKKyAgICBFWFBF
Q1RfVFJVRShjMS5pc0V4dGVuZGVkKCkpOworICAgIEVYUEVDVF9FUSgxdSwgYzEuYXNFeHRlbmRl
ZCgpLnJlZkNvdW50KCkpOworCisgICAgcmV0dXJuIGMxOworfQorCitURVNUKEV4dGVuZGVkQ29s
b3IsIFJldHVyblZhbHVlcykKK3sKKyAgICBDb2xvciBjMiA9IG1ha2VDb2xvcigpOworICAgIEVY
UEVDVF9UUlVFKGMyLmlzRXh0ZW5kZWQoKSk7CisKKyAgICBFWFBFQ1RfRVEoMXUsIGMyLmFzRXh0
ZW5kZWQoKS5yZWZDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoYzIuY3NzVGV4dCgpLCAiY29sb3Io
ZGlzcGxheS1wMyAxIDAuNSAwLjI1KSIpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRQ
b2ludC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTMzMmU1YzM3MTQzNDY0YTI2ODQ4NTZh
ODU1MzU3N2I5Y2QzMzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRQb2ludC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvSW50UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLQotI2lmIFVTRShD
RykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxkMmQxLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewotCi1zdGF0aWMgdm9pZCB0ZXN0R2V0QW5kU2V0KFdlYkNvcmU6OkludFBv
aW50IHBvaW50KQotewotICAgIHBvaW50LnNldFgoMSk7Ci0gICAgRVhQRUNUX0VRKDEsIHBvaW50
LngoKSk7Ci0gICAgcG9pbnQuc2V0WSgyKTsKLSAgICBFWFBFQ1RfRVEoMiwgcG9pbnQueSgpKTsK
LX0KLQotVEVTVChJbnRQb2ludCwgRGVmYXVsdENvbnN0cnVjdGlvbikKLXsKLSAgICBXZWJDb3Jl
OjpJbnRQb2ludCB0ZXN0OwotCi0gICAgRVhQRUNUX0VRKDAsIHRlc3QueCgpKTsKLSAgICBFWFBF
Q1RfRVEoMCwgdGVzdC55KCkpOwotICAgIEFTU0VSVF9UUlVFKHRlc3QuaXNaZXJvKCkpOwotCi0g
ICAgdGVzdEdldEFuZFNldCh0ZXN0KTsKLX0KLQotVEVTVChJbnRQb2ludCwgVmFsdWVDb25zdHJ1
Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgdGVzdCgxMCwgOSk7Ci0KLSAgICBFWFBF
Q1RfRVEoMTAsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoOSwgdGVzdC55KCkpOwotCi0gICAg
dGVzdEdldEFuZFNldCh0ZXN0KTsKLX0KLQotVEVTVChJbnRQb2ludCwgWmVyb0NvbnN0cnVjdGlv
bikKLXsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0ID0gV2ViQ29yZTo6SW50UG9pbnQ6Onpl
cm8oKTsKLQotICAgIEVYUEVDVF9FUSgwLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHRl
c3QueSgpKTsKLSAgICBBU1NFUlRfVFJVRSh0ZXN0LmlzWmVybygpKTsKLX0KLQotVEVTVChJbnRQ
b2ludCwgSW50U2l6ZUNvbnN0cnVjdGlvbikKLXsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3RJ
bnB1dCgyMDAzLCAxOTk3KTsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0KHRlc3RJbnB1dCk7
Ci0KLSAgICBFWFBFQ1RfRVEoMjAwMywgdGVzdC54KCkpOwotICAgIEVYUEVDVF9FUSgxOTk3LCB0
ZXN0LnkoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKHRlc3QuaXNaZXJvKCkpOwotfQotCi1URVNUKElu
dFBvaW50LCBGbG9hdFBvaW50Q29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgdGVzdElucHV0KDIwMDMuMmYsIDE5OTcuM2YpOwotICAgIFdlYkNvcmU6OkludFBvaW50IHRl
c3QodGVzdElucHV0KTsKLQotICAgIEVYUEVDVF9FUSgyMDAzLCB0ZXN0LngoKSk7Ci0gICAgRVhQ
RUNUX0VRKDE5OTcsIHRlc3QueSgpKTsKLSAgICBBU1NFUlRfRkFMU0UodGVzdC5pc1plcm8oKSk7
Ci19Ci0KLVRFU1QoSW50UG9pbnQsIE1vdmUpCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgdGVz
dCgxMCwgMjApOwotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgzMCwgNTApOwotCi0gICAgdGVz
dC5tb3ZlKHNpemUpOwotCi0gICAgRVhQRUNUX0VRKDQwLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNU
X0VRKDcwLCB0ZXN0LnkoKSk7Ci0KLSAgICB0ZXN0Lm1vdmUoLTIsIDgpOwotCi0gICAgRVhQRUNU
X0VRKDM4LCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDc4LCB0ZXN0LnkoKSk7Ci0KLSAgICBX
ZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQoMTAwLCAxMDApOwotCi0gICAgdGVzdC5tb3ZlQnkob2Zm
c2V0KTsKLQotICAgIEVYUEVDVF9FUSgxMzgsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMTc4
LCB0ZXN0LnkoKSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIFNjYWxlKQotewotICAgIFdlYkNvcmU6
OkludFBvaW50IHRlc3QoMTAsIDIwKTsKLQotICAgIHRlc3Quc2NhbGUoMi4wKTsKLQotICAgIEVY
UEVDVF9FUSgyMCwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9FUSg0MCwgdGVzdC55KCkpOwotCi0g
ICAgdGVzdC5zY2FsZSgzLjAsIDEuNSk7Ci0KLSAgICBFWFBFQ1RfRVEoNjAsIHRlc3QueCgpKTsK
LSAgICBFWFBFQ1RfRVEoNjAsIHRlc3QueSgpKTsKLX0KLQotVEVTVChJbnRQb2ludCwgRXhwYW5k
KQotewotICAgIFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsKLSAgICBXZWJDb3JlOjpJbnRQ
b2ludCBiKDIwLCA0MCk7Ci0KLSAgICBhdXRvIGMgPSBhLmV4cGFuZGVkVG8oYik7Ci0KLSAgICBF
WFBFQ1RfRVEoMjAsIGMueCgpKTsKLSAgICBFWFBFQ1RfRVEoNDAsIGMueSgpKTsKLX0KLQotVEVT
VChJbnRQb2ludCwgU2hyaW5rKQotewotICAgIFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBiKDIwLCA0MCk7Ci0KLSAgICBhdXRvIGMgPSBiLnNocnVu
a1RvKGEpOwotCi0gICAgRVhQRUNUX0VRKDEwLCBjLngoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBj
LnkoKSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIFRyYW5zcG9zZSkKLXsKLSAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhKDEwLCAyMCk7Ci0KLSAgICBhdXRvIGIgPSBhLnRyYW5zcG9zZWRQb2ludCgpOwot
Ci0gICAgRVhQRUNUX0VRKDIwLCBiLngoKSk7Ci0gICAgRVhQRUNUX0VRKDEwLCBiLnkoKSk7Ci19
Ci0KLVRFU1QoSW50UG9pbnQsIENhc3QpCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMCwg
MjApOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBhcyA9IFdlYkNvcmU6OnRvSW50U2l6ZShhKTsK
LSAgICBFWFBFQ1RfRVEoMTAsIGFzLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgyMCwgYXMuaGVp
Z2h0KCkpOwotCi0jaWYgVVNFKENHKQotICAgIENHUG9pbnQgY2dQb2ludCA9IGE7Ci0KLSAgICBB
U1NFUlRfRkxPQVRfRVEoMTAuMGYsIGNnUG9pbnQueCk7Ci0gICAgQVNTRVJUX0ZMT0FUX0VRKDIw
LjBmLCBjZ1BvaW50LnkpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgZnJvbUNHUG9pbnQoY2dQ
b2ludCk7Ci0gICAgRVhQRUNUX0VRKDEwLCBmcm9tQ0dQb2ludC54KCkpOwotICAgIEVYUEVDVF9F
USgyMCwgZnJvbUNHUG9pbnQueSgpKTsKLSAgICBBU1NFUlRfVFJVRShhID09IGZyb21DR1BvaW50
KTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIFBPSU5UIGdkaVBvaW50ID0gYTsK
LQotICAgIEFTU0VSVF9GTE9BVF9FUSgxMC4wZiwgZ2RpUG9pbnQueCk7Ci0gICAgQVNTRVJUX0ZM
T0FUX0VRKDIwLjBmLCBnZGlQb2ludC55KTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50IGZyb21H
RElQb2ludChnZGlQb2ludCk7Ci0gICAgRVhQRUNUX0VRKDEwLCBmcm9tR0RJUG9pbnQueCgpKTsK
LSAgICBFWFBFQ1RfRVEoMjAsIGZyb21HRElQb2ludC55KCkpOwotICAgIEFTU0VSVF9UUlVFKGEg
PT0gZnJvbUdESVBvaW50KTsKLQotICAgIEQyRDFfUE9JTlRfMkYgZDJkUG9pbnRGID0gYTsKLQot
ICAgIEFTU0VSVF9GTE9BVF9FUSgxMC4wZiwgZDJkUG9pbnRGLngpOwotICAgIEFTU0VSVF9GTE9B
VF9FUSgyMC4wZiwgZDJkUG9pbnRGLnkpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgZnJvbUQy
RFBvaW50RihkMmRQb2ludEYpOwotICAgIEVYUEVDVF9FUSgxMCwgZnJvbUQyRFBvaW50Ri54KCkp
OwotICAgIEVYUEVDVF9FUSgyMCwgZnJvbUQyRFBvaW50Ri55KCkpOwotICAgIEFTU0VSVF9UUlVF
KGEgPT0gZnJvbUQyRFBvaW50Rik7Ci0KLSAgICBEMkQxX1BPSU5UXzJVIGQyZFBvaW50VSA9IGE7
Ci0KLSAgICBBU1NFUlRfRkxPQVRfRVEoMTAuMGYsIGQyZFBvaW50VS54KTsKLSAgICBBU1NFUlRf
RkxPQVRfRVEoMjAuMGYsIGQyZFBvaW50VS55KTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50IGZy
b21EMkRQb2ludFUoZDJkUG9pbnRVKTsKLSAgICBFWFBFQ1RfRVEoMTAsIGZyb21EMkRQb2ludFUu
eCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGZyb21EMkRQb2ludFUueSgpKTsKLSAgICBBU1NFUlRf
VFJVRShhID09IGZyb21EMkRQb2ludFUpOwotI2VuZGlmCi19Ci0KLVRFU1QoSW50UG9pbnQsIEFk
ZGl0aW9uKQotewotICAgIFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsKLSAgICBXZWJDb3Jl
OjpJbnRQb2ludCBiKDUwLCA2MCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBicyg1MCwgNjApOwot
Ci0gICAgYXV0byBjID0gYSArIGI7Ci0KLSAgICBFWFBFQ1RfRVEoNjAsIGMueCgpKTsKLSAgICBF
WFBFQ1RfRVEoODAsIGMueSgpKTsKLQotICAgIGEgKz0gYnM7Ci0KLSAgICBFWFBFQ1RfRVEoNjAs
IGEueCgpKTsKLSAgICBFWFBFQ1RfRVEoODAsIGEueSgpKTsKLX0KLQotVEVTVChJbnRQb2ludCwg
U3VidHJhY3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMDAsIDgwKTsKLSAgICBX
ZWJDb3JlOjpJbnRQb2ludCBiKDUwLCA2MCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBicyg1MCwg
NjApOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBjID0gYSAtIGI7Ci0KLSAgICBFWFBFQ1RfRVEo
NTAsIGMud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBjLmhlaWdodCgpKTsKLQotICAgIFdl
YkNvcmU6OkludFBvaW50IGQgPSBhIC0gYnM7Ci0KLSAgICBFWFBFQ1RfRVEoNTAsIGQueCgpKTsK
LSAgICBFWFBFQ1RfRVEoMjAsIGQueSgpKTsKLQotICAgIGEgLT0gYnM7Ci0KLSAgICBFWFBFQ1Rf
RVEoNTAsIGEueCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGEueSgpKTsKLX0KLQotVEVTVChJbnRQ
b2ludCwgTmVnYXRpb24pCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMDAsIDgwKTsKLSAg
ICBhdXRvIGIgPSAtYTsKLQotICAgIEVYUEVDVF9FUSgtMTAwLCBiLngoKSk7Ci0gICAgRVhQRUNU
X0VRKC04MCwgYi55KCkpOwotfQotCi1URVNUKEludFBvaW50LCBFcXVhbGl0eSkKLXsKLSAgICBX
ZWJDb3JlOjpJbnRQb2ludCBhKDEwMCwgODApOwotICAgIFdlYkNvcmU6OkludFBvaW50IGIoNzAs
IDUwKTsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBjKDEwMCwgODApOwotCi0gICAgQVNTRVJUX1RS
VUUoYSA9PSBjKTsKLSAgICBBU1NFUlRfRkFMU0UoYSA9PSBiKTsKLSAgICBBU1NFUlRfRkFMU0Uo
YSAhPSBjKTsKLSAgICBBU1NFUlRfVFJVRShhICE9IGIpOwotfQotCi19CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UG9pbnRUZXN0cy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UG9pbnRUZXN0cy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWEzMzJlNWMzNzE0MzQ2NGEyNjg0ODU2YTg1NTM1NzdiOWNkMzMxYwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRQb2ludFRlc3RzLmNw
cApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9p
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKworI2lmIFVTRShDRykKKyNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KFdJTikKKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgdm9pZCB0ZXN0R2V0QW5kU2V0KFdlYkNvcmU6OkludFBvaW50IHBvaW50
KQoreworICAgIHBvaW50LnNldFgoMSk7CisgICAgRVhQRUNUX0VRKDEsIHBvaW50LngoKSk7Cisg
ICAgcG9pbnQuc2V0WSgyKTsKKyAgICBFWFBFQ1RfRVEoMiwgcG9pbnQueSgpKTsKK30KKworVEVT
VChJbnRQb2ludCwgRGVmYXVsdENvbnN0cnVjdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCB0ZXN0OworCisgICAgRVhQRUNUX0VRKDAsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
dGVzdC55KCkpOworICAgIEFTU0VSVF9UUlVFKHRlc3QuaXNaZXJvKCkpOworCisgICAgdGVzdEdl
dEFuZFNldCh0ZXN0KTsKK30KKworVEVTVChJbnRQb2ludCwgVmFsdWVDb25zdHJ1Y3Rpb24pCit7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgdGVzdCgxMCwgOSk7CisKKyAgICBFWFBFQ1RfRVEoMTAs
IHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoOSwgdGVzdC55KCkpOworCisgICAgdGVzdEdldEFu
ZFNldCh0ZXN0KTsKK30KKworVEVTVChJbnRQb2ludCwgWmVyb0NvbnN0cnVjdGlvbikKK3sKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0ID0gV2ViQ29yZTo6SW50UG9pbnQ6Onplcm8oKTsKKwor
ICAgIEVYUEVDVF9FUSgwLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0VRKDAsIHRlc3QueSgpKTsK
KyAgICBBU1NFUlRfVFJVRSh0ZXN0LmlzWmVybygpKTsKK30KKworVEVTVChJbnRQb2ludCwgSW50
U2l6ZUNvbnN0cnVjdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3RJbnB1dCgyMDAz
LCAxOTk3KTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0KHRlc3RJbnB1dCk7CisKKyAgICBF
WFBFQ1RfRVEoMjAwMywgdGVzdC54KCkpOworICAgIEVYUEVDVF9FUSgxOTk3LCB0ZXN0LnkoKSk7
CisgICAgQVNTRVJUX0ZBTFNFKHRlc3QuaXNaZXJvKCkpOworfQorCitURVNUKEludFBvaW50LCBG
bG9hdFBvaW50Q29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVzdElu
cHV0KDIwMDMuMmYsIDE5OTcuM2YpOworICAgIFdlYkNvcmU6OkludFBvaW50IHRlc3QodGVzdElu
cHV0KTsKKworICAgIEVYUEVDVF9FUSgyMDAzLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0VRKDE5
OTcsIHRlc3QueSgpKTsKKyAgICBBU1NFUlRfRkFMU0UodGVzdC5pc1plcm8oKSk7Cit9CisKK1RF
U1QoSW50UG9pbnQsIE1vdmUpCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgdGVzdCgxMCwgMjAp
OworICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgzMCwgNTApOworCisgICAgdGVzdC5tb3ZlKHNp
emUpOworCisgICAgRVhQRUNUX0VRKDQwLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0VRKDcwLCB0
ZXN0LnkoKSk7CisKKyAgICB0ZXN0Lm1vdmUoLTIsIDgpOworCisgICAgRVhQRUNUX0VRKDM4LCB0
ZXN0LngoKSk7CisgICAgRVhQRUNUX0VRKDc4LCB0ZXN0LnkoKSk7CisKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBvZmZzZXQoMTAwLCAxMDApOworCisgICAgdGVzdC5tb3ZlQnkob2Zmc2V0KTsKKwor
ICAgIEVYUEVDVF9FUSgxMzgsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoMTc4LCB0ZXN0Lnko
KSk7Cit9CisKK1RFU1QoSW50UG9pbnQsIFNjYWxlKQoreworICAgIFdlYkNvcmU6OkludFBvaW50
IHRlc3QoMTAsIDIwKTsKKworICAgIHRlc3Quc2NhbGUoMi4wKTsKKworICAgIEVYUEVDVF9FUSgy
MCwgdGVzdC54KCkpOworICAgIEVYUEVDVF9FUSg0MCwgdGVzdC55KCkpOworCisgICAgdGVzdC5z
Y2FsZSgzLjAsIDEuNSk7CisKKyAgICBFWFBFQ1RfRVEoNjAsIHRlc3QueCgpKTsKKyAgICBFWFBF
Q1RfRVEoNjAsIHRlc3QueSgpKTsKK30KKworVEVTVChJbnRQb2ludCwgRXhwYW5kKQoreworICAg
IFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBiKDIw
LCA0MCk7CisKKyAgICBhdXRvIGMgPSBhLmV4cGFuZGVkVG8oYik7CisKKyAgICBFWFBFQ1RfRVEo
MjAsIGMueCgpKTsKKyAgICBFWFBFQ1RfRVEoNDAsIGMueSgpKTsKK30KKworVEVTVChJbnRQb2lu
dCwgU2hyaW5rKQoreworICAgIFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBiKDIwLCA0MCk7CisKKyAgICBhdXRvIGMgPSBiLnNocnVua1RvKGEpOwor
CisgICAgRVhQRUNUX0VRKDEwLCBjLngoKSk7CisgICAgRVhQRUNUX0VRKDIwLCBjLnkoKSk7Cit9
CisKK1RFU1QoSW50UG9pbnQsIFRyYW5zcG9zZSkKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBh
KDEwLCAyMCk7CisKKyAgICBhdXRvIGIgPSBhLnRyYW5zcG9zZWRQb2ludCgpOworCisgICAgRVhQ
RUNUX0VRKDIwLCBiLngoKSk7CisgICAgRVhQRUNUX0VRKDEwLCBiLnkoKSk7Cit9CisKK1RFU1Qo
SW50UG9pbnQsIENhc3QpCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMCwgMjApOworCisg
ICAgV2ViQ29yZTo6SW50U2l6ZSBhcyA9IFdlYkNvcmU6OnRvSW50U2l6ZShhKTsKKyAgICBFWFBF
Q1RfRVEoMTAsIGFzLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgyMCwgYXMuaGVpZ2h0KCkpOwor
CisjaWYgVVNFKENHKQorICAgIENHUG9pbnQgY2dQb2ludCA9IGE7CisKKyAgICBBU1NFUlRfRkxP
QVRfRVEoMTAuMGYsIGNnUG9pbnQueCk7CisgICAgQVNTRVJUX0ZMT0FUX0VRKDIwLjBmLCBjZ1Bv
aW50LnkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgZnJvbUNHUG9pbnQoY2dQb2ludCk7Cisg
ICAgRVhQRUNUX0VRKDEwLCBmcm9tQ0dQb2ludC54KCkpOworICAgIEVYUEVDVF9FUSgyMCwgZnJv
bUNHUG9pbnQueSgpKTsKKyAgICBBU1NFUlRfVFJVRShhID09IGZyb21DR1BvaW50KTsKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oV0lOKQorICAgIFBPSU5UIGdkaVBvaW50ID0gYTsKKworICAgIEFT
U0VSVF9GTE9BVF9FUSgxMC4wZiwgZ2RpUG9pbnQueCk7CisgICAgQVNTRVJUX0ZMT0FUX0VRKDIw
LjBmLCBnZGlQb2ludC55KTsKKworICAgIFdlYkNvcmU6OkludFBvaW50IGZyb21HRElQb2ludChn
ZGlQb2ludCk7CisgICAgRVhQRUNUX0VRKDEwLCBmcm9tR0RJUG9pbnQueCgpKTsKKyAgICBFWFBF
Q1RfRVEoMjAsIGZyb21HRElQb2ludC55KCkpOworICAgIEFTU0VSVF9UUlVFKGEgPT0gZnJvbUdE
SVBvaW50KTsKKworICAgIEQyRDFfUE9JTlRfMkYgZDJkUG9pbnRGID0gYTsKKworICAgIEFTU0VS
VF9GTE9BVF9FUSgxMC4wZiwgZDJkUG9pbnRGLngpOworICAgIEFTU0VSVF9GTE9BVF9FUSgyMC4w
ZiwgZDJkUG9pbnRGLnkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgZnJvbUQyRFBvaW50Rihk
MmRQb2ludEYpOworICAgIEVYUEVDVF9FUSgxMCwgZnJvbUQyRFBvaW50Ri54KCkpOworICAgIEVY
UEVDVF9FUSgyMCwgZnJvbUQyRFBvaW50Ri55KCkpOworICAgIEFTU0VSVF9UUlVFKGEgPT0gZnJv
bUQyRFBvaW50Rik7CisKKyAgICBEMkQxX1BPSU5UXzJVIGQyZFBvaW50VSA9IGE7CisKKyAgICBB
U1NFUlRfRkxPQVRfRVEoMTAuMGYsIGQyZFBvaW50VS54KTsKKyAgICBBU1NFUlRfRkxPQVRfRVEo
MjAuMGYsIGQyZFBvaW50VS55KTsKKworICAgIFdlYkNvcmU6OkludFBvaW50IGZyb21EMkRQb2lu
dFUoZDJkUG9pbnRVKTsKKyAgICBFWFBFQ1RfRVEoMTAsIGZyb21EMkRQb2ludFUueCgpKTsKKyAg
ICBFWFBFQ1RfRVEoMjAsIGZyb21EMkRQb2ludFUueSgpKTsKKyAgICBBU1NFUlRfVFJVRShhID09
IGZyb21EMkRQb2ludFUpOworI2VuZGlmCit9CisKK1RFU1QoSW50UG9pbnQsIEFkZGl0aW9uKQor
eworICAgIFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBiKDUwLCA2MCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBicyg1MCwgNjApOworCisgICAgYXV0
byBjID0gYSArIGI7CisKKyAgICBFWFBFQ1RfRVEoNjAsIGMueCgpKTsKKyAgICBFWFBFQ1RfRVEo
ODAsIGMueSgpKTsKKworICAgIGEgKz0gYnM7CisKKyAgICBFWFBFQ1RfRVEoNjAsIGEueCgpKTsK
KyAgICBFWFBFQ1RfRVEoODAsIGEueSgpKTsKK30KKworVEVTVChJbnRQb2ludCwgU3VidHJhY3Rp
b24pCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMDAsIDgwKTsKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBiKDUwLCA2MCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBicyg1MCwgNjApOworCisg
ICAgV2ViQ29yZTo6SW50U2l6ZSBjID0gYSAtIGI7CisKKyAgICBFWFBFQ1RfRVEoNTAsIGMud2lk
dGgoKSk7CisgICAgRVhQRUNUX0VRKDIwLCBjLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6Oklu
dFBvaW50IGQgPSBhIC0gYnM7CisKKyAgICBFWFBFQ1RfRVEoNTAsIGQueCgpKTsKKyAgICBFWFBF
Q1RfRVEoMjAsIGQueSgpKTsKKworICAgIGEgLT0gYnM7CisKKyAgICBFWFBFQ1RfRVEoNTAsIGEu
eCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAsIGEueSgpKTsKK30KKworVEVTVChJbnRQb2ludCwgTmVn
YXRpb24pCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMDAsIDgwKTsKKyAgICBhdXRvIGIg
PSAtYTsKKworICAgIEVYUEVDVF9FUSgtMTAwLCBiLngoKSk7CisgICAgRVhQRUNUX0VRKC04MCwg
Yi55KCkpOworfQorCitURVNUKEludFBvaW50LCBFcXVhbGl0eSkKK3sKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBhKDEwMCwgODApOworICAgIFdlYkNvcmU6OkludFBvaW50IGIoNzAsIDUwKTsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjKDEwMCwgODApOworCisgICAgQVNTRVJUX1RSVUUoYSA9PSBj
KTsKKyAgICBBU1NFUlRfRkFMU0UoYSA9PSBiKTsKKyAgICBBU1NFUlRfRkFMU0UoYSAhPSBjKTsK
KyAgICBBU1NFUlRfVFJVRShhICE9IGIpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UmVjdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSW50UmVjdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA3OTNlYWE4YWY5NzY0ZDM1MjJiZjE3N2RkMDczYjJiNTliMzZhNDAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ludFJlY3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjE5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotCi0jaWYgVVNF
KENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPGQyZDEuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyB2b2lkIHRlc3RHZXRBbmRTZXQoV2ViQ29yZTo6SW50
UmVjdCByZWN0KQotewotICAgIHJlY3Quc2V0WCgxKTsKLSAgICBFWFBFQ1RfRVEoMSwgcmVjdC54
KCkpOwotICAgIHJlY3Quc2V0WSgyKTsKLSAgICBFWFBFQ1RfRVEoMiwgcmVjdC55KCkpOwotICAg
IHJlY3Quc2V0V2lkdGgoMjAzKTsKLSAgICBFWFBFQ1RfRVEoMjAzLCByZWN0LndpZHRoKCkpOwot
ICAgIHJlY3Quc2V0SGVpZ2h0KDczKTsKLSAgICBFWFBFQ1RfRVEoNzMsIHJlY3QuaGVpZ2h0KCkp
OwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0RW1wdHlSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHJlY3QpCi17Ci0gICAgRVhQRUNUX0VRKDAsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwg
cmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSgwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9F
USgwLCByZWN0LmhlaWdodCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVjdC5tYXhYKCkpOwotICAg
IEVYUEVDVF9FUSgwLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVjdC5pc0VtcHR5
KCkpOwotfQotCi1URVNUKEludFJlY3QsIERlZmF1bHRDb25zdHJ1Y3Rpb24pCi17Ci0gICAgV2Vi
Q29yZTo6SW50UmVjdCB0ZXN0OwotCi0gICAgdGVzdEVtcHR5UmVjdCh0ZXN0KTsKLQotICAgIHRl
c3RHZXRBbmRTZXQodGVzdCk7Ci0KLSAgICBhdXRvIGxvY2F0aW9uID0gdGVzdC5sb2NhdGlvbigp
OwotICAgIEVYUEVDVF9FUSgwLCBsb2NhdGlvbi54KCkpOwotICAgIEVYUEVDVF9FUSgwLCBsb2Nh
dGlvbi55KCkpOwotCi0gICAgYXV0byBzaXplID0gdGVzdC5zaXplKCk7Ci0gICAgRVhQRUNUX0VR
KDAsIHNpemUud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHNpemUuaGVpZ2h0KCkpOwotfQot
Ci1URVNUKEludFJlY3QsIFZhbHVlQ29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkludFJl
Y3QgdGVzdCgxMCwgMjAsIDEwMCwgNTApOwotCi0gICAgRVhQRUNUX0VRKDEwLCB0ZXN0LngoKSk7
Ci0gICAgRVhQRUNUX0VRKDIwLCB0ZXN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgdGVzdC53
aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNTAsIHRlc3QuaGVpZ2h0KCkpOwotICAgIEVYUEVDVF9F
USgxMTAsIHRlc3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoNzAsIHRlc3QubWF4WSgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UodGVzdC5pc0VtcHR5KCkpOwotCi0gICAgYXV0byBsb2NhdGlvbiA9IHRl
c3QubG9jYXRpb24oKTsKLSAgICBFWFBFQ1RfRVEoMTAsIGxvY2F0aW9uLngoKSk7Ci0gICAgRVhQ
RUNUX0VRKDIwLCBsb2NhdGlvbi55KCkpOwotCi0gICAgYXV0byBzaXplID0gdGVzdC5zaXplKCk7
Ci0gICAgRVhQRUNUX0VRKDEwMCwgc2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNTAsIHNp
emUuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFJlY3QsIFBvaW50U2l6ZUNvbnN0cnVjdGlvbikK
LXsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBsb2NhdGlvbigyMCwgMzApOwotICAgIFdlYkNvcmU6
OkludFNpemUgc2l6ZSgxMDAsIDUwKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgdGVzdChsb2Nh
dGlvbiwgc2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMjAsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1Rf
RVEoMzAsIHRlc3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoMTAwLCB0ZXN0LndpZHRoKCkpOwotICAg
IEVYUEVDVF9FUSg1MCwgdGVzdC5oZWlnaHQoKSk7Ci0gICAgRVhQRUNUX0VRKDEyMCwgdGVzdC5t
YXhYKCkpOwotICAgIEVYUEVDVF9FUSg4MCwgdGVzdC5tYXhZKCkpOwotICAgIEVYUEVDVF9GQUxT
RSh0ZXN0LmlzRW1wdHkoKSk7Ci0KLSAgICBhdXRvIGxvY2F0aW9uMiA9IHRlc3QubG9jYXRpb24o
KTsKLSAgICBFWFBFQ1RfRVEoMjAsIGxvY2F0aW9uMi54KCkpOwotICAgIEVYUEVDVF9FUSgzMCwg
bG9jYXRpb24yLnkoKSk7Ci0KLSAgICBhdXRvIHNpemUyID0gdGVzdC5zaXplKCk7Ci0gICAgRVhQ
RUNUX0VRKDEwMCwgc2l6ZTIud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDUwLCBzaXplMi5oZWln
aHQoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgRmxvYXRSZWN0Q29uc3RydWN0aW9uKQotewotICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDIwLjBmLCAzMC4wZiwgMTUwLjBmLCAzMDAuMGYpOwot
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCB0ZXN0KHJlY3QpOwotCi0gICAgRVhQRUNUX0VRKDIwLCB0
ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDMwLCB0ZXN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDE1
MCwgdGVzdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMzAwLCB0ZXN0LmhlaWdodCgpKTsKLSAg
ICBFWFBFQ1RfRVEoMTcwLCB0ZXN0Lm1heFgoKSk7Ci0gICAgRVhQRUNUX0VRKDMzMCwgdGVzdC5t
YXhZKCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzRW1wdHkoKSk7Ci0KLSAgICBhdXRvIGxv
Y2F0aW9uID0gdGVzdC5sb2NhdGlvbigpOwotICAgIEVYUEVDVF9FUSgyMCwgbG9jYXRpb24ueCgp
KTsKLSAgICBFWFBFQ1RfRVEoMzAsIGxvY2F0aW9uLnkoKSk7Ci0KLSAgICBhdXRvIHNpemUgPSB0
ZXN0LnNpemUoKTsKLSAgICBFWFBFQ1RfRVEoMTUwLCBzaXplLndpZHRoKCkpOwotICAgIEVYUEVD
VF9FUSgzMDAsIHNpemUuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFJlY3QsIFNldExvY2F0aW9u
QW5kU2l6ZSkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Q7Ci0KLSAgICB0ZXN0RW1wdHlS
ZWN0KHJlY3QpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb24oMTAsIDIwKTsKLQot
ICAgIHJlY3Quc2V0TG9jYXRpb24obG9jYXRpb24pOwotCi0gICAgRVhQRUNUX0VRKDEwLCByZWN0
LngoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHJl
Y3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHJlY3QuaGVpZ2h0KCkpOwotICAgIEVYUEVD
VF9FUSgxMCwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9FUSgyMCwgcmVjdC5tYXhZKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHJlY3QuaXNFbXB0eSgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUg
c2l6ZSgxMDAsIDIwMCk7Ci0KLSAgICByZWN0LnNldFNpemUoc2l6ZSk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMTAsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIHJlY3QueSgpKTsKLSAgICBFWFBF
Q1RfRVEoMTAwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgyMDAsIHJlY3QuaGVpZ2h0
KCkpOwotICAgIEVYUEVDVF9FUSgxMTAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMjIw
LCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJlY3QuaXNFbXB0eSgpKTsKLX0KLQot
VEVTVChJbnRSZWN0LCBDZW50ZXIpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDIwLCA0
MCwgMTAwLCAyMDApOwotCi0gICAgYXV0byBjZW50ZXIgPSByZWN0LmNlbnRlcigpOwotCi0gICAg
RVhQRUNUX0VRKDcwLCBjZW50ZXIueCgpKTsKLSAgICBFWFBFQ1RfRVEoMTQwLCBjZW50ZXIueSgp
KTsKLX0KLQotVEVTVChJbnRSZWN0LCBNb3ZlKQotewotICAgIFdlYkNvcmU6OkludFJlY3QgcmVj
dCgyMCwgMzAsIDEwMCwgMjAwKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgZGVsdGEoMTAsIDIw
KTsKLQotICAgIHJlY3QubW92ZShkZWx0YSk7Ci0KLSAgICBFWFBFQ1RfRVEoMzAsIHJlY3QueCgp
KTsKLSAgICBFWFBFQ1RfRVEoNTAsIHJlY3QueSgpKTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50
IGRlbHRhUG9pbnQoLTIwLCAtNDApOwotCi0gICAgcmVjdC5tb3ZlQnkoZGVsdGFQb2ludCk7Ci0K
LSAgICBFWFBFQ1RfRVEoMTAsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMTAsIHJlY3QueSgp
KTsKLQotICAgIHJlY3QubW92ZSgtMTAsIDIyKTsKLQotICAgIEVYUEVDVF9FUSgwLCByZWN0Lngo
KSk7Ci0gICAgRVhQRUNUX0VRKDMyLCByZWN0LnkoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgRXhw
YW5kKQotewotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKLQot
ICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgxMDAsIDEwMCk7Ci0KLSAgICByZWN0LmV4cGFuZChz
aXplKTsKLQotICAgIEVYUEVDVF9FUSgyMDAsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VR
KDMwMCwgcmVjdC5oZWlnaHQoKSk7Ci0KLSAgICByZWN0LmV4cGFuZCg1NSwgMjIpOwotCi0gICAg
RVhQRUNUX0VRKDI1NSwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMzIyLCByZWN0Lmhl
aWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTIoLTEwLCAtMjApOwotCi0gICAg
cmVjdC5leHBhbmQoc2l6ZTIpOwotCi0gICAgRVhQRUNUX0VRKDI0NSwgcmVjdC53aWR0aCgpKTsK
LSAgICBFWFBFQ1RfRVEoMzAyLCByZWN0LmhlaWdodCgpKTsKLQotICAgIHJlY3QuZXhwYW5kKC01
LCAtMik7Ci0KLSAgICBFWFBFQ1RfRVEoMjQwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9F
USgzMDAsIHJlY3QuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFJlY3QsIENvbnRyYWN0KQotewot
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKLQotICAgIFdlYkNv
cmU6OkludFNpemUgc2l6ZSg1MCwgMTAwKTsKLQotICAgIHJlY3QuY29udHJhY3Qoc2l6ZSk7Ci0K
LSAgICBFWFBFQ1RfRVEoNTAsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgcmVj
dC5oZWlnaHQoKSk7Ci0KLSAgICByZWN0LmNvbnRyYWN0KDI1LCAyMik7Ci0KLSAgICBFWFBFQ1Rf
RVEoMjUsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDc4LCByZWN0LmhlaWdodCgpKTsK
LQotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTIoLTEwLCAtMjApOwotCi0gICAgcmVjdC5jb250
cmFjdChzaXplMik7Ci0KLSAgICBFWFBFQ1RfRVEoMzUsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQ
RUNUX0VRKDk4LCByZWN0LmhlaWdodCgpKTsKLQotICAgIHJlY3QuY29udHJhY3QoLTUsIC0yKTsK
LQotICAgIEVYUEVDVF9FUSg0MCwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMTAwLCBy
ZWN0LmhlaWdodCgpKTsKLX0KLQotVEVTVChJbnRSZWN0LCBTaGlmdFhFZGdlKQotewotICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKLQotICAgIHJlY3Quc2hpZnRY
RWRnZVRvKDc3KTsKLQotICAgIEVYUEVDVF9FUSg3NywgcmVjdC54KCkpOwotICAgIEVYUEVDVF9F
USgxMjAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMzAsIHJlY3QueSgpKTsKLSAgICBF
WFBFQ1RfRVEoMjMwLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0VRKDQzLCByZWN0LndpZHRo
KCkpOwotICAgIEVYUEVDVF9FUSgyMDAsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAgcmVjdC5zaGlm
dE1heFhFZGdlVG8oMjAwKTsKLQotICAgIEVYUEVDVF9FUSg3NywgcmVjdC54KCkpOwotICAgIEVY
UEVDVF9FUSgyMDAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMzAsIHJlY3QueSgpKTsK
LSAgICBFWFBFQ1RfRVEoMjMwLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0VRKDEyMywgcmVj
dC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAwLCByZWN0LmhlaWdodCgpKTsKLX0KLQotVEVT
VChJbnRSZWN0LCBTaGlmdFlFZGdlKQotewotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwg
MzAsIDEwMCwgMjAwKTsKLQotICAgIHJlY3Quc2hpZnRZRWRnZVRvKDU5LjBmKTsKLQotICAgIEVY
UEVDVF9FUSgyMCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSgxMjAsIHJlY3QubWF4WCgpKTsK
LSAgICBFWFBFQ1RfRVEoNTksIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoMjMwLCByZWN0Lm1h
eFkoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEo
MTcxLCByZWN0LmhlaWdodCgpKTsKLQotICAgIHJlY3Quc2hpZnRNYXhZRWRnZVRvKDI3MC4wZik7
Ci0KLSAgICBFWFBFQ1RfRVEoMjAsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMTIwLCByZWN0
Lm1heFgoKSk7Ci0gICAgRVhQRUNUX0VRKDU5LCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDI3
MCwgcmVjdC5tYXhZKCkpOwotICAgIEVYUEVDVF9FUSgxMDAsIHJlY3Qud2lkdGgoKSk7Ci0gICAg
RVhQRUNUX0VRKDIxMSwgcmVjdC5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgSW5mbGF0
ZSkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAg
ICByZWN0LmluZmxhdGVYKDUpOwotCi0gICAgRVhQRUNUX0VRKDE1LCByZWN0LngoKSk7Ci0gICAg
RVhQRUNUX0VRKDEyNSwgcmVjdC5tYXhYKCkpOwotCi0gICAgcmVjdC5pbmZsYXRlWSg0KTsKLQot
ICAgIEVYUEVDVF9FUSgyNiwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSgyMzQsIHJlY3QubWF4
WSgpKTsKLQotICAgIHJlY3QuaW5mbGF0ZSgxMCk7Ci0KLSAgICBFWFBFQ1RfRVEoNSwgcmVjdC54
KCkpOwotICAgIEVYUEVDVF9FUSgxMzUsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMTYs
IHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoMjQ0LCByZWN0Lm1heFkoKSk7Ci19Ci0KLVRFU1Qo
SW50UmVjdCwgQ29ybmVycykKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAx
MDAsIDIwMCk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRvcExlZnQgPSByZWN0Lm1pblhN
aW5ZQ29ybmVyKCk7Ci0gICAgRVhQRUNUX0VRKDIwLCB0b3BMZWZ0LngoKSk7Ci0gICAgRVhQRUNU
X0VRKDMwLCB0b3BMZWZ0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRvcFJpZ2h0
ID0gcmVjdC5tYXhYTWluWUNvcm5lcigpOwotICAgIEVYUEVDVF9FUSgxMjAsIHRvcFJpZ2h0Lngo
KSk7Ci0gICAgRVhQRUNUX0VRKDMwLCB0b3BSaWdodC55KCkpOwotCi0gICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBib3R0b21MZWZ0ID0gcmVjdC5taW5YTWF4WUNvcm5lcigpOwotICAgIEVYUEVDVF9F
USgyMCwgYm90dG9tTGVmdC54KCkpOwotICAgIEVYUEVDVF9FUSgyMzAsIGJvdHRvbUxlZnQueSgp
KTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYm90dG9tUmlnaHQgPSByZWN0Lm1heFhNYXhZ
Q29ybmVyKCk7Ci0gICAgRVhQRUNUX0VRKDEyMCwgYm90dG9tUmlnaHQueCgpKTsKLSAgICBFWFBF
Q1RfRVEoMjMwLCBib3R0b21SaWdodC55KCkpOwotfQotCi1URVNUKEludFJlY3QsIENvbnRhaW5z
KQotewotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKLQotICAg
IFdlYkNvcmU6OkludFJlY3QgY29udGFpbmVkKDMwLCA0MCwgNTAsIDEwMCk7Ci0KLSAgICBBU1NF
UlRfVFJVRShyZWN0LmNvbnRhaW5zKGNvbnRhaW5lZCkpOwotCi0gICAgV2ViQ29yZTo6SW50UmVj
dCBvdXRzaWRlKDEyMCwgMjMwLCA1MCwgMTAwKTsKLQotICAgIEFTU0VSVF9GQUxTRShyZWN0LmNv
bnRhaW5zKG91dHNpZGUpKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgaW50ZXJzZWN0cygxMCwg
MjAsIDkwLCAxODApOwotCi0gICAgQVNTRVJUX0ZBTFNFKHJlY3QuY29udGFpbnMoaW50ZXJzZWN0
cykpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnRJbnNpZGUoNjAsIDcwKTsKLQotICAg
IEFTU0VSVF9UUlVFKHJlY3QuY29udGFpbnMocG9pbnRJbnNpZGUpKTsKLQotICAgIFdlYkNvcmU6
OkludFBvaW50IHBvaW50T3V0c2lkZSgxNjAsIDI3MCk7Ci0KLSAgICBBU1NFUlRfRkFMU0UocmVj
dC5jb250YWlucyhwb2ludE91dHNpZGUpKTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50
T25MaW5lKDIwLCAzMCk7Ci0KLSAgICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKHBvaW50T25M
aW5lKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKDYwLCA3MCkpOwotICAgIEFT
U0VSVF9GQUxTRShyZWN0LmNvbnRhaW5zKDE2MCwgMjcwKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwg
SW50ZXJzZWN0cykKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIw
MCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRhaW5lZCgzMCwgNDAsIDUwLCAxMDApOwot
Ci0gICAgQVNTRVJUX1RSVUUocmVjdC5pbnRlcnNlY3RzKGNvbnRhaW5lZCkpOwotCi0gICAgV2Vi
Q29yZTo6SW50UmVjdCBvdXRzaWRlKDEyMCwgMjMwLCA1MCwgMTAwKTsKLQotICAgIEFTU0VSVF9G
QUxTRShyZWN0LmludGVyc2VjdHMob3V0c2lkZSkpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBp
bnRlcnNlY3RzKDEwLCAyMCwgOTAsIDE4MCk7Ci0KLSAgICBBU1NFUlRfVFJVRShyZWN0LmludGVy
c2VjdHMoaW50ZXJzZWN0cykpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0SW50ZXJzZWN0UmVzdWx0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCi17Ci0gICAgRVhQRUNUX0VRKDcwLCByZWN0
LngoKSk7Ci0gICAgRVhQRUNUX0VRKDEyMCwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9FUSg4
MCwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSgyMzAsIHJlY3QubWF4WSgpKTsKLX0KLQotVEVT
VChJbnRSZWN0LCBJbnRlcnNlY3QpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0QSgyMCwg
MzAsIDEwMCwgMjAwKTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RCKDcwLCA4MCwgMTAwLCAy
MDApOwotCi0gICAgcmVjdEEuaW50ZXJzZWN0KHJlY3RCKTsKLQotICAgIHRlc3RJbnRlcnNlY3RS
ZXN1bHQocmVjdEEpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0QygyMCwgMzAsIDEwMCwg
MjAwKTsKLQotICAgIGF1dG8gaW50ZXJzZWN0ZWQgPSBXZWJDb3JlOjppbnRlcnNlY3Rpb24ocmVj
dEMsIHJlY3RCKTsKLQotICAgIHRlc3RJbnRlcnNlY3RSZXN1bHQoaW50ZXJzZWN0ZWQpOwotfQot
Ci1zdGF0aWMgdm9pZCB0ZXN0VW5pdGVkUmVjdHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdW5p
dGVkKQotewotICAgIEVYUEVDVF9FUSgyMCwgdW5pdGVkLngoKSk7Ci0gICAgRVhQRUNUX0VRKDE3
MCwgdW5pdGVkLm1heFgoKSk7Ci0gICAgRVhQRUNUX0VRKDMwLCB1bml0ZWQueSgpKTsKLSAgICBF
WFBFQ1RfRVEoMjgwLCB1bml0ZWQubWF4WSgpKTsKLX0KLQotVEVTVChJbnRSZWN0LCBVbml0ZSkK
LXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RBKDIwLCAzMCwgMTAwLCAyMDApOwotICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdEIoNzAsIDgwLCAxMDAsIDIwMCk7Ci0KLSAgICByZWN0QS51bml0
ZShyZWN0Qik7Ci0KLSAgICB0ZXN0VW5pdGVkUmVjdHMocmVjdEEpOwotCi0gICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0QygyMCwgMzAsIDEwMCwgMjAwKTsKLQotICAgIGF1dG8gdW5pdGVkID0gV2Vi
Q29yZTo6dW5pb25SZWN0KHJlY3RDLCByZWN0Qik7Ci0KLSAgICB0ZXN0VW5pdGVkUmVjdHModW5p
dGVkKTsKLX0KLQotVEVTVChJbnRSZWN0LCBTY2FsZSkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAgICByZWN0LnNjYWxlKDIuMGYpOwotCi0gICAg
RVhQRUNUX0VRKDQwLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDI0MCwgcmVjdC5tYXhYKCkp
OwotICAgIEVYUEVDVF9FUSg2MCwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSg0NjAsIHJlY3Qu
bWF4WSgpKTsKLX0KLQotVEVTVChJbnRSZWN0LCBUcmFuc3Bvc2UpCi17Ci0gICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOwotCi0gICAgYXV0byB0cmFuc3Bvc2VkID0g
cmVjdC50cmFuc3Bvc2VkUmVjdCgpOwotCi0gICAgRVhQRUNUX0VRKDMwLCB0cmFuc3Bvc2VkLngo
KSk7Ci0gICAgRVhQRUNUX0VRKDIzMCwgdHJhbnNwb3NlZC5tYXhYKCkpOwotICAgIEVYUEVDVF9F
USgyMCwgdHJhbnNwb3NlZC55KCkpOwotICAgIEVYUEVDVF9FUSgxMjAsIHRyYW5zcG9zZWQubWF4
WSgpKTsKLX0KLQotI2lmIFVTRShDRykgfHwgUExBVEZPUk0oV0lOKQotc3RhdGljIHZvaWQgY2hl
Y2tDYXN0UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIEVYUEVDVF9F
USgxMCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSg0MCwgcmVjdC5tYXhYKCkpOwotICAgIEVY
UEVDVF9FUSgyMCwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSg2MCwgcmVjdC5tYXhZKCkpOwot
ICAgIEVYUEVDVF9FUSgzMCwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNDAsIHJlY3Qu
aGVpZ2h0KCkpOwotfQotI2VuZGlmCi0KLVRFU1QoSW50UmVjdCwgQ2FzdGluZykKLXsKLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QoMTAsIDIwLCAzMCwgNDApOwotCi0jaWYgVVNFKENHKQotICAg
IENHUmVjdCBjZ1JlY3QgPSBDR1JlY3RNYWtlKDEwLjAsIDIwLjAsIDMwLjAsIDQwLjApOwotCi0g
ICAgV2ViQ29yZTo6SW50UmVjdCByZWN0RnJvbUNHUmVjdChjZ1JlY3QpOwotCi0gICAgY2hlY2tD
YXN0UmVjdChyZWN0RnJvbUNHUmVjdCk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBSRUNUIGdkaVJlY3QgPSByZWN0OwotCi0gICAgRVhQRUNUX0VRKDEwLCBnZGlSZWN0LmxlZnQp
OwotICAgIEVYUEVDVF9FUSgyMCwgZ2RpUmVjdC50b3ApOwotICAgIEVYUEVDVF9FUSg0MCwgZ2Rp
UmVjdC5yaWdodCk7Ci0gICAgRVhQRUNUX0VRKDYwLCBnZGlSZWN0LmJvdHRvbSk7Ci0KLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3RGcm9tR0RJUmVjdChnZGlSZWN0KTsKLQotICAgIGNoZWNrQ2Fz
dFJlY3QocmVjdEZyb21HRElSZWN0KTsKLQotICAgIEQyRDFfUkVDVF9VIGQyZFJlY3RVID0gcmVj
dDsKLQotICAgIEVYUEVDVF9FUSgxMCwgZDJkUmVjdFUubGVmdCk7Ci0gICAgRVhQRUNUX0VRKDIw
LCBkMmRSZWN0VS50b3ApOwotICAgIEVYUEVDVF9FUSg0MCwgZDJkUmVjdFUucmlnaHQpOwotICAg
IEVYUEVDVF9FUSg2MCwgZDJkUmVjdFUuYm90dG9tKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3Qg
cmVjdEZyb21EMkRSZWN0VShkMmRSZWN0VSk7Ci0KLSAgICBjaGVja0Nhc3RSZWN0KHJlY3RGcm9t
RDJEUmVjdFUpOwotCi0gICAgRDJEMV9SRUNUX0YgZDJkUmVjdEYgPSByZWN0OwotCi0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEwLjBmLCBkMmRSZWN0Ri5sZWZ0KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
MjAuMGYsIGQyZFJlY3RGLnRvcCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjBmLCBkMmRSZWN0
Ri5yaWdodCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDYwLjBmLCBkMmRSZWN0Ri5ib3R0b20pOwot
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0RnJvbUQyRFJlY3RGKGQyZFJlY3RGKTsKLQotICAg
IGNoZWNrQ2FzdFJlY3QocmVjdEZyb21EMkRSZWN0Rik7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZv
aWQgY2hlY2tTdWJ0cmFjdGlvblJlc3VsdDEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkK
LXsKLSAgICBFWFBFQ1RfRVEoLTEwLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDkwLCByZWN0
Lm1heFgoKSk7Ci0gICAgRVhQRUNUX0VRKC0xMCwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSg5
MCwgcmVjdC5tYXhZKCkpOwotICAgIEVYUEVDVF9FUSgxMDAsIHJlY3Qud2lkdGgoKSk7Ci0gICAg
RVhQRUNUX0VRKDEwMCwgcmVjdC5oZWlnaHQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNoZWNrU3Vi
dHJhY3Rpb25SZXN1bHQyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCi17Ci0gICAgRVhQ
RUNUX0VRKC00MCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSg2MCwgcmVjdC5tYXhYKCkpOwot
ICAgIEVYUEVDVF9FUSgtNTAsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoNTAsIHJlY3QubWF4
WSgpKTsKLSAgICBFWFBFQ1RfRVEoMTAwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgx
MDAsIHJlY3QuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFJlY3QsIFN1YnRyYWN0aW9uKQotewot
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgxMCwgMjAsIDEwMCwgMTAwKTsKLSAgICBXZWJDb3Jl
OjpJbnRQb2ludCByaWdodFNpZGUoMjAsIDMwKTsKLQotICAgIHJlY3QgLT0gcmlnaHRTaWRlOwot
Ci0gICAgY2hlY2tTdWJ0cmFjdGlvblJlc3VsdDEocmVjdCk7Ci0KLSAgICBhdXRvIHJlY3QyID0g
cmVjdCAtIFdlYkNvcmU6OkludFBvaW50KDMwLCA0MCk7Ci0gICAgY2hlY2tTdWJ0cmFjdGlvblJl
c3VsdDIocmVjdDIpOwotfQotCi1URVNUKEludFJlY3QsIEVxdWFsaXR5KQotewotICAgIFdlYkNv
cmU6OkludFJlY3QgcmVjdCgxMCwgMjAsIDEwMCwgMTAwKTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QyKDEwLCAyMCwgMTAwLCAxMDApOwotICAgIFdlYkNvcmU6OkludFJlY3QgcmlnaHRTaWRl
KDExMCwgMjAsIDIwLCAxMDApOwotCi0gICAgQVNTRVJUX1RSVUUocmVjdCA9PSByZWN0Mik7Ci0g
ICAgQVNTRVJUX0ZBTFNFKHJlY3QgIT0gcmVjdDIpOwotICAgIEFTU0VSVF9UUlVFKHJlY3QgIT0g
cmlnaHRTaWRlKTsKLSAgICBBU1NFUlRfRkFMU0UocmVjdCA9PSByaWdodFNpZGUpOwotfQotCi0j
aWYgVVNFKENHKQotc3RhdGljIHZvaWQgY2hlY2tFbmNsb3NpbmdJbnRSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QpCi17Ci0gICAgRVhQRUNUX0VRKDEwLCByZWN0LngoKSk7Ci0gICAg
RVhQRUNUX0VRKDQxLCByZWN0Lm1heFgoKSk7Ci0gICAgRVhQRUNUX0VRKDIxLCByZWN0LnkoKSk7
Ci0gICAgRVhQRUNUX0VRKDYyLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0VRKDMxLCByZWN0
LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg0MSwgcmVjdC5oZWlnaHQoKSk7Ci19Ci0jZW5kaWYK
LQotVEVTVChJbnRSZWN0LCBFbmNsb3NpbmdJbnRSZWN0KQotewotI2lmIFVTRShDRykKLSAgICBD
R1JlY3QgY2dSZWN0ID0gQ0dSZWN0TWFrZSgxMC41LCAyMS4zLCAzMC4xLCA0MC4wKTsKLQotICAg
IFdlYkNvcmU6OkludFJlY3QgZW5jbG9zaW5nQ0cgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0
KGNnUmVjdCk7Ci0KLSAgICBjaGVja0VuY2xvc2luZ0ludFJlY3QoZW5jbG9zaW5nQ0cpOwotI2Vu
ZGlmCi19Ci0KLVRFU1QoSW50UmVjdCwgQXJlYUFuZERpc3RhbmNlcykKLXsKLSAgICBXZWJDb3Jl
OjpJbnRSZWN0IHJlY3QoMTAsIDIwLCAxMDAsIDEwMCk7Ci0KLSAgICBFWFBFQ1RfRVEoMTAwMDBV
LCByZWN0LmFyZWEoKS51bnNhZmVHZXQoKSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFJlY3RUZXN0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc5M2Vh
YThhZjk3NjRkMzUyMmJmMTc3ZGQwNzNiMmI1OWIzNmE0MAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3BwCkBAIC0wLDAg
KzEsNjE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUu
aD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYK
KworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCB0ZXN0R2V0QW5kU2V0
KFdlYkNvcmU6OkludFJlY3QgcmVjdCkKK3sKKyAgICByZWN0LnNldFgoMSk7CisgICAgRVhQRUNU
X0VRKDEsIHJlY3QueCgpKTsKKyAgICByZWN0LnNldFkoMik7CisgICAgRVhQRUNUX0VRKDIsIHJl
Y3QueSgpKTsKKyAgICByZWN0LnNldFdpZHRoKDIwMyk7CisgICAgRVhQRUNUX0VRKDIwMywgcmVj
dC53aWR0aCgpKTsKKyAgICByZWN0LnNldEhlaWdodCg3Myk7CisgICAgRVhQRUNUX0VRKDczLCBy
ZWN0LmhlaWdodCgpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdEVtcHR5UmVjdChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiByZWN0KQoreworICAgIEVYUEVDVF9FUSgwLCByZWN0LngoKSk7CisgICAg
RVhQRUNUX0VRKDAsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgcmVjdC53aWR0aCgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgcmVjdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDAsIHJlY3Qu
bWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVDVF9UUlVF
KHJlY3QuaXNFbXB0eSgpKTsKK30KKworVEVTVChJbnRSZWN0LCBEZWZhdWx0Q29uc3RydWN0aW9u
KQoreworICAgIFdlYkNvcmU6OkludFJlY3QgdGVzdDsKKworICAgIHRlc3RFbXB0eVJlY3QodGVz
dCk7CisKKyAgICB0ZXN0R2V0QW5kU2V0KHRlc3QpOworCisgICAgYXV0byBsb2NhdGlvbiA9IHRl
c3QubG9jYXRpb24oKTsKKyAgICBFWFBFQ1RfRVEoMCwgbG9jYXRpb24ueCgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbG9jYXRpb24ueSgpKTsKKworICAgIGF1dG8gc2l6ZSA9IHRlc3Quc2l6ZSgpOwor
ICAgIEVYUEVDVF9FUSgwLCBzaXplLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgwLCBzaXplLmhl
aWdodCgpKTsKK30KKworVEVTVChJbnRSZWN0LCBWYWx1ZUNvbnN0cnVjdGlvbikKK3sKKyAgICBX
ZWJDb3JlOjpJbnRSZWN0IHRlc3QoMTAsIDIwLCAxMDAsIDUwKTsKKworICAgIEVYUEVDVF9FUSgx
MCwgdGVzdC54KCkpOworICAgIEVYUEVDVF9FUSgyMCwgdGVzdC55KCkpOworICAgIEVYUEVDVF9F
USgxMDAsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDUwLCB0ZXN0LmhlaWdodCgpKTsK
KyAgICBFWFBFQ1RfRVEoMTEwLCB0ZXN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDcwLCB0ZXN0
Lm1heFkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsKKworICAgIGF1dG8g
bG9jYXRpb24gPSB0ZXN0LmxvY2F0aW9uKCk7CisgICAgRVhQRUNUX0VRKDEwLCBsb2NhdGlvbi54
KCkpOworICAgIEVYUEVDVF9FUSgyMCwgbG9jYXRpb24ueSgpKTsKKworICAgIGF1dG8gc2l6ZSA9
IHRlc3Quc2l6ZSgpOworICAgIEVYUEVDVF9FUSgxMDAsIHNpemUud2lkdGgoKSk7CisgICAgRVhQ
RUNUX0VRKDUwLCBzaXplLmhlaWdodCgpKTsKK30KKworVEVTVChJbnRSZWN0LCBQb2ludFNpemVD
b25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb24oMjAsIDMwKTsK
KyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoMTAwLCA1MCk7CisKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IHRlc3QobG9jYXRpb24sIHNpemUpOworCisgICAgRVhQRUNUX0VRKDIwLCB0ZXN0LngoKSk7
CisgICAgRVhQRUNUX0VRKDMwLCB0ZXN0LnkoKSk7CisgICAgRVhQRUNUX0VRKDEwMCwgdGVzdC53
aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNTAsIHRlc3QuaGVpZ2h0KCkpOworICAgIEVYUEVDVF9F
USgxMjAsIHRlc3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoODAsIHRlc3QubWF4WSgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodGVzdC5pc0VtcHR5KCkpOworCisgICAgYXV0byBsb2NhdGlvbjIgPSB0
ZXN0LmxvY2F0aW9uKCk7CisgICAgRVhQRUNUX0VRKDIwLCBsb2NhdGlvbjIueCgpKTsKKyAgICBF
WFBFQ1RfRVEoMzAsIGxvY2F0aW9uMi55KCkpOworCisgICAgYXV0byBzaXplMiA9IHRlc3Quc2l6
ZSgpOworICAgIEVYUEVDVF9FUSgxMDAsIHNpemUyLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg1
MCwgc2l6ZTIuaGVpZ2h0KCkpOworfQorCitURVNUKEludFJlY3QsIEZsb2F0UmVjdENvbnN0cnVj
dGlvbikKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDE1MC4w
ZiwgMzAwLjBmKTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgdGVzdChyZWN0KTsKKworICAgIEVY
UEVDVF9FUSgyMCwgdGVzdC54KCkpOworICAgIEVYUEVDVF9FUSgzMCwgdGVzdC55KCkpOworICAg
IEVYUEVDVF9FUSgxNTAsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDMwMCwgdGVzdC5o
ZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDE3MCwgdGVzdC5tYXhYKCkpOworICAgIEVYUEVDVF9F
USgzMzAsIHRlc3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc0VtcHR5KCkpOwor
CisgICAgYXV0byBsb2NhdGlvbiA9IHRlc3QubG9jYXRpb24oKTsKKyAgICBFWFBFQ1RfRVEoMjAs
IGxvY2F0aW9uLngoKSk7CisgICAgRVhQRUNUX0VRKDMwLCBsb2NhdGlvbi55KCkpOworCisgICAg
YXV0byBzaXplID0gdGVzdC5zaXplKCk7CisgICAgRVhQRUNUX0VRKDE1MCwgc2l6ZS53aWR0aCgp
KTsKKyAgICBFWFBFQ1RfRVEoMzAwLCBzaXplLmhlaWdodCgpKTsKK30KKworVEVTVChJbnRSZWN0
LCBTZXRMb2NhdGlvbkFuZFNpemUpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0OworCisg
ICAgdGVzdEVtcHR5UmVjdChyZWN0KTsKKworICAgIFdlYkNvcmU6OkludFBvaW50IGxvY2F0aW9u
KDEwLCAyMCk7CisKKyAgICByZWN0LnNldExvY2F0aW9uKGxvY2F0aW9uKTsKKworICAgIEVYUEVD
VF9FUSgxMCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgyMCwgcmVjdC55KCkpOworICAgIEVY
UEVDVF9FUSgwLCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgwLCByZWN0LmhlaWdodCgp
KTsKKyAgICBFWFBFQ1RfRVEoMTAsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAsIHJl
Y3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfVFJVRShyZWN0LmlzRW1wdHkoKSk7CisKKyAgICBXZWJD
b3JlOjpJbnRTaXplIHNpemUoMTAwLCAyMDApOworCisgICAgcmVjdC5zZXRTaXplKHNpemUpOwor
CisgICAgRVhQRUNUX0VRKDEwLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0VRKDIwLCByZWN0Lnko
KSk7CisgICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAw
LCByZWN0LmhlaWdodCgpKTsKKyAgICBFWFBFQ1RfRVEoMTEwLCByZWN0Lm1heFgoKSk7CisgICAg
RVhQRUNUX0VRKDIyMCwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVDVF9GQUxTRShyZWN0LmlzRW1w
dHkoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgQ2VudGVyKQoreworICAgIFdlYkNvcmU6OkludFJl
Y3QgcmVjdCgyMCwgNDAsIDEwMCwgMjAwKTsKKworICAgIGF1dG8gY2VudGVyID0gcmVjdC5jZW50
ZXIoKTsKKworICAgIEVYUEVDVF9FUSg3MCwgY2VudGVyLngoKSk7CisgICAgRVhQRUNUX0VRKDE0
MCwgY2VudGVyLnkoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgTW92ZSkKK3sKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXpl
IGRlbHRhKDEwLCAyMCk7CisKKyAgICByZWN0Lm1vdmUoZGVsdGEpOworCisgICAgRVhQRUNUX0VR
KDMwLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0VRKDUwLCByZWN0LnkoKSk7CisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBkZWx0YVBvaW50KC0yMCwgLTQwKTsKKworICAgIHJlY3QubW92ZUJ5KGRl
bHRhUG9pbnQpOworCisgICAgRVhQRUNUX0VRKDEwLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0VR
KDEwLCByZWN0LnkoKSk7CisKKyAgICByZWN0Lm1vdmUoLTEwLCAyMik7CisKKyAgICBFWFBFQ1Rf
RVEoMCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgzMiwgcmVjdC55KCkpOworfQorCitURVNU
KEludFJlY3QsIEV4cGFuZCkKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAx
MDAsIDIwMCk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoMTAwLCAxMDApOworCisgICAg
cmVjdC5leHBhbmQoc2l6ZSk7CisKKyAgICBFWFBFQ1RfRVEoMjAwLCByZWN0LndpZHRoKCkpOwor
ICAgIEVYUEVDVF9FUSgzMDAsIHJlY3QuaGVpZ2h0KCkpOworCisgICAgcmVjdC5leHBhbmQoNTUs
IDIyKTsKKworICAgIEVYUEVDVF9FUSgyNTUsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VR
KDMyMiwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUyKC0xMCwg
LTIwKTsKKworICAgIHJlY3QuZXhwYW5kKHNpemUyKTsKKworICAgIEVYUEVDVF9FUSgyNDUsIHJl
Y3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDMwMiwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICBy
ZWN0LmV4cGFuZCgtNSwgLTIpOworCisgICAgRVhQRUNUX0VRKDI0MCwgcmVjdC53aWR0aCgpKTsK
KyAgICBFWFBFQ1RfRVEoMzAwLCByZWN0LmhlaWdodCgpKTsKK30KKworVEVTVChJbnRSZWN0LCBD
b250cmFjdCkKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7
CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoNTAsIDEwMCk7CisKKyAgICByZWN0LmNvbnRy
YWN0KHNpemUpOworCisgICAgRVhQRUNUX0VRKDUwLCByZWN0LndpZHRoKCkpOworICAgIEVYUEVD
VF9FUSgxMDAsIHJlY3QuaGVpZ2h0KCkpOworCisgICAgcmVjdC5jb250cmFjdCgyNSwgMjIpOwor
CisgICAgRVhQRUNUX0VRKDI1LCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg3OCwgcmVj
dC5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUyKC0xMCwgLTIwKTsKKwor
ICAgIHJlY3QuY29udHJhY3Qoc2l6ZTIpOworCisgICAgRVhQRUNUX0VRKDM1LCByZWN0LndpZHRo
KCkpOworICAgIEVYUEVDVF9FUSg5OCwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0LmNvbnRy
YWN0KC01LCAtMik7CisKKyAgICBFWFBFQ1RfRVEoNDAsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQ
RUNUX0VRKDEwMCwgcmVjdC5oZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgU2hpZnRYRWRn
ZSkKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7CisKKyAg
ICByZWN0LnNoaWZ0WEVkZ2VUbyg3Nyk7CisKKyAgICBFWFBFQ1RfRVEoNzcsIHJlY3QueCgpKTsK
KyAgICBFWFBFQ1RfRVEoMTIwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDMwLCByZWN0
LnkoKSk7CisgICAgRVhQRUNUX0VRKDIzMCwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVDVF9FUSg0
MywgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAwLCByZWN0LmhlaWdodCgpKTsKKwor
ICAgIHJlY3Quc2hpZnRNYXhYRWRnZVRvKDIwMCk7CisKKyAgICBFWFBFQ1RfRVEoNzcsIHJlY3Qu
eCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDMw
LCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0VRKDIzMCwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVD
VF9FUSgxMjMsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDIwMCwgcmVjdC5oZWlnaHQo
KSk7Cit9CisKK1RFU1QoSW50UmVjdCwgU2hpZnRZRWRnZSkKK3sKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7CisKKyAgICByZWN0LnNoaWZ0WUVkZ2VUbyg1OS4w
Zik7CisKKyAgICBFWFBFQ1RfRVEoMjAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoMTIwLCBy
ZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDU5LCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0VR
KDIzMCwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVDVF9FUSgxMDAsIHJlY3Qud2lkdGgoKSk7Cisg
ICAgRVhQRUNUX0VRKDE3MSwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0LnNoaWZ0TWF4WUVk
Z2VUbygyNzAuMGYpOworCisgICAgRVhQRUNUX0VRKDIwLCByZWN0LngoKSk7CisgICAgRVhQRUNU
X0VRKDEyMCwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSg1OSwgcmVjdC55KCkpOworICAg
IEVYUEVDVF9FUSgyNzAsIHJlY3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCByZWN0Lndp
ZHRoKCkpOworICAgIEVYUEVDVF9FUSgyMTEsIHJlY3QuaGVpZ2h0KCkpOworfQorCitURVNUKElu
dFJlY3QsIEluZmxhdGUpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAw
LCAyMDApOworCisgICAgcmVjdC5pbmZsYXRlWCg1KTsKKworICAgIEVYUEVDVF9FUSgxNSwgcmVj
dC54KCkpOworICAgIEVYUEVDVF9FUSgxMjUsIHJlY3QubWF4WCgpKTsKKworICAgIHJlY3QuaW5m
bGF0ZVkoNCk7CisKKyAgICBFWFBFQ1RfRVEoMjYsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEo
MjM0LCByZWN0Lm1heFkoKSk7CisKKyAgICByZWN0LmluZmxhdGUoMTApOworCisgICAgRVhQRUNU
X0VRKDUsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoMTM1LCByZWN0Lm1heFgoKSk7CisgICAg
RVhQRUNUX0VRKDE2LCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0VRKDI0NCwgcmVjdC5tYXhZKCkp
OworfQorCitURVNUKEludFJlY3QsIENvcm5lcnMpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0KDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0b3BMZWZ0
ID0gcmVjdC5taW5YTWluWUNvcm5lcigpOworICAgIEVYUEVDVF9FUSgyMCwgdG9wTGVmdC54KCkp
OworICAgIEVYUEVDVF9FUSgzMCwgdG9wTGVmdC55KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCB0b3BSaWdodCA9IHJlY3QubWF4WE1pbllDb3JuZXIoKTsKKyAgICBFWFBFQ1RfRVEoMTIw
LCB0b3BSaWdodC54KCkpOworICAgIEVYUEVDVF9FUSgzMCwgdG9wUmlnaHQueSgpKTsKKworICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgYm90dG9tTGVmdCA9IHJlY3QubWluWE1heFlDb3JuZXIoKTsK
KyAgICBFWFBFQ1RfRVEoMjAsIGJvdHRvbUxlZnQueCgpKTsKKyAgICBFWFBFQ1RfRVEoMjMwLCBi
b3R0b21MZWZ0LnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJvdHRvbVJpZ2h0ID0g
cmVjdC5tYXhYTWF4WUNvcm5lcigpOworICAgIEVYUEVDVF9FUSgxMjAsIGJvdHRvbVJpZ2h0Lngo
KSk7CisgICAgRVhQRUNUX0VRKDIzMCwgYm90dG9tUmlnaHQueSgpKTsKK30KKworVEVTVChJbnRS
ZWN0LCBDb250YWlucykKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAs
IDIwMCk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRhaW5lZCgzMCwgNDAsIDUwLCAxMDAp
OworCisgICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlucyhjb250YWluZWQpKTsKKworICAgIFdl
YkNvcmU6OkludFJlY3Qgb3V0c2lkZSgxMjAsIDIzMCwgNTAsIDEwMCk7CisKKyAgICBBU1NFUlRf
RkFMU0UocmVjdC5jb250YWlucyhvdXRzaWRlKSk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGlu
dGVyc2VjdHMoMTAsIDIwLCA5MCwgMTgwKTsKKworICAgIEFTU0VSVF9GQUxTRShyZWN0LmNvbnRh
aW5zKGludGVyc2VjdHMpKTsKKworICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50SW5zaWRlKDYw
LCA3MCk7CisKKyAgICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKHBvaW50SW5zaWRlKSk7CisK
KyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludE91dHNpZGUoMTYwLCAyNzApOworCisgICAgQVNT
RVJUX0ZBTFNFKHJlY3QuY29udGFpbnMocG9pbnRPdXRzaWRlKSk7CisKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludE9uTGluZSgyMCwgMzApOworCisgICAgQVNTRVJUX1RSVUUocmVjdC5jb250
YWlucyhwb2ludE9uTGluZSkpOworCisgICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlucyg2MCwg
NzApKTsKKyAgICBBU1NFUlRfRkFMU0UocmVjdC5jb250YWlucygxNjAsIDI3MCkpOworfQorCitU
RVNUKEludFJlY3QsIEludGVyc2VjdHMpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDIw
LCAzMCwgMTAwLCAyMDApOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBjb250YWluZWQoMzAsIDQw
LCA1MCwgMTAwKTsKKworICAgIEFTU0VSVF9UUlVFKHJlY3QuaW50ZXJzZWN0cyhjb250YWluZWQp
KTsKKworICAgIFdlYkNvcmU6OkludFJlY3Qgb3V0c2lkZSgxMjAsIDIzMCwgNTAsIDEwMCk7CisK
KyAgICBBU1NFUlRfRkFMU0UocmVjdC5pbnRlcnNlY3RzKG91dHNpZGUpKTsKKworICAgIFdlYkNv
cmU6OkludFJlY3QgaW50ZXJzZWN0cygxMCwgMjAsIDkwLCAxODApOworCisgICAgQVNTRVJUX1RS
VUUocmVjdC5pbnRlcnNlY3RzKGludGVyc2VjdHMpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdElu
dGVyc2VjdFJlc3VsdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQoreworICAgIEVYUEVD
VF9FUSg3MCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgxMjAsIHJlY3QubWF4WCgpKTsKKyAg
ICBFWFBFQ1RfRVEoODAsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoMjMwLCByZWN0Lm1heFko
KSk7Cit9CisKK1RFU1QoSW50UmVjdCwgSW50ZXJzZWN0KQoreworICAgIFdlYkNvcmU6OkludFJl
Y3QgcmVjdEEoMjAsIDMwLCAxMDAsIDIwMCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0Qig3
MCwgODAsIDEwMCwgMjAwKTsKKworICAgIHJlY3RBLmludGVyc2VjdChyZWN0Qik7CisKKyAgICB0
ZXN0SW50ZXJzZWN0UmVzdWx0KHJlY3RBKTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEMo
MjAsIDMwLCAxMDAsIDIwMCk7CisKKyAgICBhdXRvIGludGVyc2VjdGVkID0gV2ViQ29yZTo6aW50
ZXJzZWN0aW9uKHJlY3RDLCByZWN0Qik7CisKKyAgICB0ZXN0SW50ZXJzZWN0UmVzdWx0KGludGVy
c2VjdGVkKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFVuaXRlZFJlY3RzKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHVuaXRlZCkKK3sKKyAgICBFWFBFQ1RfRVEoMjAsIHVuaXRlZC54KCkpOworICAg
IEVYUEVDVF9FUSgxNzAsIHVuaXRlZC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSgzMCwgdW5pdGVk
LnkoKSk7CisgICAgRVhQRUNUX0VRKDI4MCwgdW5pdGVkLm1heFkoKSk7Cit9CisKK1RFU1QoSW50
UmVjdCwgVW5pdGUpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0QSgyMCwgMzAsIDEwMCwg
MjAwKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RCKDcwLCA4MCwgMTAwLCAyMDApOworCisg
ICAgcmVjdEEudW5pdGUocmVjdEIpOworCisgICAgdGVzdFVuaXRlZFJlY3RzKHJlY3RBKTsKKwor
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEMoMjAsIDMwLCAxMDAsIDIwMCk7CisKKyAgICBhdXRv
IHVuaXRlZCA9IFdlYkNvcmU6OnVuaW9uUmVjdChyZWN0QywgcmVjdEIpOworCisgICAgdGVzdFVu
aXRlZFJlY3RzKHVuaXRlZCk7Cit9CisKK1RFU1QoSW50UmVjdCwgU2NhbGUpCit7CisgICAgV2Vi
Q29yZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgcmVjdC5zY2FsZSgy
LjBmKTsKKworICAgIEVYUEVDVF9FUSg0MCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgyNDAs
IHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoNjAsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1Rf
RVEoNDYwLCByZWN0Lm1heFkoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgVHJhbnNwb3NlKQorewor
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKKworICAgIGF1dG8g
dHJhbnNwb3NlZCA9IHJlY3QudHJhbnNwb3NlZFJlY3QoKTsKKworICAgIEVYUEVDVF9FUSgzMCwg
dHJhbnNwb3NlZC54KCkpOworICAgIEVYUEVDVF9FUSgyMzAsIHRyYW5zcG9zZWQubWF4WCgpKTsK
KyAgICBFWFBFQ1RfRVEoMjAsIHRyYW5zcG9zZWQueSgpKTsKKyAgICBFWFBFQ1RfRVEoMTIwLCB0
cmFuc3Bvc2VkLm1heFkoKSk7Cit9CisKKyNpZiBVU0UoQ0cpIHx8IFBMQVRGT1JNKFdJTikKK3N0
YXRpYyB2b2lkIGNoZWNrQ2FzdFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3sK
KyAgICBFWFBFQ1RfRVEoMTAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoNDAsIHJlY3QubWF4
WCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoNjAsIHJl
Y3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRVEoMzAsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNU
X0VRKDQwLCByZWN0LmhlaWdodCgpKTsKK30KKyNlbmRpZgorCitURVNUKEludFJlY3QsIENhc3Rp
bmcpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDEwLCAyMCwgMzAsIDQwKTsKKworI2lm
IFVTRShDRykKKyAgICBDR1JlY3QgY2dSZWN0ID0gQ0dSZWN0TWFrZSgxMC4wLCAyMC4wLCAzMC4w
LCA0MC4wKTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZyb21DR1JlY3QoY2dSZWN0KTsK
KworICAgIGNoZWNrQ2FzdFJlY3QocmVjdEZyb21DR1JlY3QpOworI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShXSU4pCisgICAgUkVDVCBnZGlSZWN0ID0gcmVjdDsKKworICAgIEVYUEVDVF9FUSgxMCwg
Z2RpUmVjdC5sZWZ0KTsKKyAgICBFWFBFQ1RfRVEoMjAsIGdkaVJlY3QudG9wKTsKKyAgICBFWFBF
Q1RfRVEoNDAsIGdkaVJlY3QucmlnaHQpOworICAgIEVYUEVDVF9FUSg2MCwgZ2RpUmVjdC5ib3R0
b20pOworCisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0RnJvbUdESVJlY3QoZ2RpUmVjdCk7CisK
KyAgICBjaGVja0Nhc3RSZWN0KHJlY3RGcm9tR0RJUmVjdCk7CisKKyAgICBEMkQxX1JFQ1RfVSBk
MmRSZWN0VSA9IHJlY3Q7CisKKyAgICBFWFBFQ1RfRVEoMTAsIGQyZFJlY3RVLmxlZnQpOworICAg
IEVYUEVDVF9FUSgyMCwgZDJkUmVjdFUudG9wKTsKKyAgICBFWFBFQ1RfRVEoNDAsIGQyZFJlY3RV
LnJpZ2h0KTsKKyAgICBFWFBFQ1RfRVEoNjAsIGQyZFJlY3RVLmJvdHRvbSk7CisKKyAgICBXZWJD
b3JlOjpJbnRSZWN0IHJlY3RGcm9tRDJEUmVjdFUoZDJkUmVjdFUpOworCisgICAgY2hlY2tDYXN0
UmVjdChyZWN0RnJvbUQyRFJlY3RVKTsKKworICAgIEQyRDFfUkVDVF9GIGQyZFJlY3RGID0gcmVj
dDsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgZDJkUmVjdEYubGVmdCk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDIwLjBmLCBkMmRSZWN0Ri50b3ApOworICAgIEVYUEVDVF9GTE9BVF9FUSg0
MC4wZiwgZDJkUmVjdEYucmlnaHQpOworICAgIEVYUEVDVF9GTE9BVF9FUSg2MC4wZiwgZDJkUmVj
dEYuYm90dG9tKTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZyb21EMkRSZWN0RihkMmRS
ZWN0Rik7CisKKyAgICBjaGVja0Nhc3RSZWN0KHJlY3RGcm9tRDJEUmVjdEYpOworI2VuZGlmCit9
CisKK3N0YXRpYyB2b2lkIGNoZWNrU3VidHJhY3Rpb25SZXN1bHQxKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3QpCit7CisgICAgRVhQRUNUX0VRKC0xMCwgcmVjdC54KCkpOworICAgIEVYUEVD
VF9FUSg5MCwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSgtMTAsIHJlY3QueSgpKTsKKyAg
ICBFWFBFQ1RfRVEoOTAsIHJlY3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCByZWN0Lndp
ZHRoKCkpOworICAgIEVYUEVDVF9FUSgxMDAsIHJlY3QuaGVpZ2h0KCkpOworfQorCitzdGF0aWMg
dm9pZCBjaGVja1N1YnRyYWN0aW9uUmVzdWx0Mihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQoreworICAgIEVYUEVDVF9FUSgtNDAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoNjAsIHJl
Y3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoLTUwLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0VR
KDUwLCByZWN0Lm1heFkoKSk7CisgICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53aWR0aCgpKTsKKyAg
ICBFWFBFQ1RfRVEoMTAwLCByZWN0LmhlaWdodCgpKTsKK30KKworVEVTVChJbnRSZWN0LCBTdWJ0
cmFjdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMTAsIDIwLCAxMDAsIDEwMCk7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgcmlnaHRTaWRlKDIwLCAzMCk7CisKKyAgICByZWN0IC09
IHJpZ2h0U2lkZTsKKworICAgIGNoZWNrU3VidHJhY3Rpb25SZXN1bHQxKHJlY3QpOworCisgICAg
YXV0byByZWN0MiA9IHJlY3QgLSBXZWJDb3JlOjpJbnRQb2ludCgzMCwgNDApOworICAgIGNoZWNr
U3VidHJhY3Rpb25SZXN1bHQyKHJlY3QyKTsKK30KKworVEVTVChJbnRSZWN0LCBFcXVhbGl0eSkK
K3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMTAsIDIwLCAxMDAsIDEwMCk7CisgICAgV2Vi
Q29yZTo6SW50UmVjdCByZWN0MigxMCwgMjAsIDEwMCwgMTAwKTsKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IHJpZ2h0U2lkZSgxMTAsIDIwLCAyMCwgMTAwKTsKKworICAgIEFTU0VSVF9UUlVFKHJlY3Qg
PT0gcmVjdDIpOworICAgIEFTU0VSVF9GQUxTRShyZWN0ICE9IHJlY3QyKTsKKyAgICBBU1NFUlRf
VFJVRShyZWN0ICE9IHJpZ2h0U2lkZSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlY3QgPT0gcmlnaHRT
aWRlKTsKK30KKworI2lmIFVTRShDRykKK3N0YXRpYyB2b2lkIGNoZWNrRW5jbG9zaW5nSW50UmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQoreworICAgIEVYUEVDVF9FUSgxMCwgcmVj
dC54KCkpOworICAgIEVYUEVDVF9FUSg0MSwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSgy
MSwgcmVjdC55KCkpOworICAgIEVYUEVDVF9FUSg2MiwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVD
VF9FUSgzMSwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNDEsIHJlY3QuaGVpZ2h0KCkp
OworfQorI2VuZGlmCisKK1RFU1QoSW50UmVjdCwgRW5jbG9zaW5nSW50UmVjdCkKK3sKKyNpZiBV
U0UoQ0cpCisgICAgQ0dSZWN0IGNnUmVjdCA9IENHUmVjdE1ha2UoMTAuNSwgMjEuMywgMzAuMSwg
NDAuMCk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGVuY2xvc2luZ0NHID0gV2ViQ29yZTo6ZW5j
bG9zaW5nSW50UmVjdChjZ1JlY3QpOworCisgICAgY2hlY2tFbmNsb3NpbmdJbnRSZWN0KGVuY2xv
c2luZ0NHKTsKKyNlbmRpZgorfQorCitURVNUKEludFJlY3QsIEFyZWFBbmREaXN0YW5jZXMpCit7
CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDEwLCAyMCwgMTAwLCAxMDApOworCisgICAgRVhQ
RUNUX0VRKDEwMDAwVSwgcmVjdC5hcmVhKCkudW5zYWZlR2V0KCkpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50U2l6ZS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50U2l6ZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE1NTk0MmY3NGU0YWM5MThmZGY0OTUyNTk1NjA4ZGM3YmNlMWE1YzQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+
Ci0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgot
I2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8ZDJkMS5oPgotI2VuZGlmCi0K
LW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIHZvaWQgdGVzdEdldEFuZFNldChX
ZWJDb3JlOjpJbnRTaXplIHJlY3QpCi17Ci0gICAgcmVjdC5zZXRXaWR0aCgyMDMpOwotICAgIEVY
UEVDVF9FUSgyMDMsIHJlY3Qud2lkdGgoKSk7Ci0gICAgcmVjdC5zZXRIZWlnaHQoNzMpOwotICAg
IEVYUEVDVF9FUSg3MywgcmVjdC5oZWlnaHQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RFbXB0
eVNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcmVjdCkKLXsKLSAgICBFWFBFQ1RfRVEoMCwg
cmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUocmVjdC5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKHJlY3QuaXNaZXJvKCkp
OwotfQotCi1URVNUKEludFNpemUsIERlZmF1bHRDb25zdHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29y
ZTo6SW50U2l6ZSB0ZXN0OwotCi0gICAgdGVzdEVtcHR5U2l6ZSh0ZXN0KTsKLQotICAgIHRlc3RH
ZXRBbmRTZXQodGVzdCk7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgVmFsdWVDb25zdHJ1Y3Rpb24pCi17
Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0KDEwMCwgMjAwKTsKLQotICAgIEVYUEVDVF9FUSgx
MDAsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDIwMCwgdGVzdC5oZWlnaHQoKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdC5p
c1plcm8oKSk7Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgZXBzaWxvbiA9IDAuMDAwMWY7Ci0g
ICAgRVhQRUNUX05FQVIoMC41ZiwgdGVzdC5hc3BlY3RSYXRpbygpLCBlcHNpbG9uKTsKLX0KLQot
VEVTVChJbnRTaXplLCBGbG9hdFNpemVDb25zdHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHNpemUoMTAyNC4yLCA3NjcuOCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0KHNp
emUpOwotCi0gICAgRVhQRUNUX0VRKDEwMjQsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VR
KDc2NywgdGVzdC5oZWlnaHQoKSk7Ci0KLSAgICBBU1NFUlRfRkFMU0UodGVzdC5pc0VtcHR5KCkp
OwotICAgIEFTU0VSVF9GQUxTRSh0ZXN0LmlzWmVybygpKTsKLQotICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgZXBzaWxvbiA9IDAuMDAxOwotICAgIEVYUEVDVF9ORUFSKDEuMzM1ZiwgdGVzdC5hc3Bl
Y3RSYXRpbygpLCBlcHNpbG9uKTsKLQotICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Ci19Ci0KLVRF
U1QoSW50U2l6ZSwgRGlhZ29uYWxMZW5ndGhBbmRBcmVhKQotewotICAgIFdlYkNvcmU6OkludFNp
emUgdGVzdCgxMDI0LCA3NjgpOwotCi0gICAgRVhQRUNUX0VRKDE2Mzg0MDAsIHRlc3QuZGlhZ29u
YWxMZW5ndGhTcXVhcmVkKCkpOwotICAgIEVYUEVDVF9FUSg3ODY0MzJVLCB0ZXN0LmFyZWEoKS51
bnNhZmVHZXQoKSk7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgU2NhbGUpCi17Ci0gICAgV2ViQ29yZTo6
SW50U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7Ci0KLSAgICB0ZXN0LnNjYWxlKDIuMGYpOwotCi0gICAg
RVhQRUNUX0VRKDIwNDgsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDE1MzYsIHRlc3Qu
aGVpZ2h0KCkpOwotCi0gICAgdGVzdC5zY2FsZSgwLjVmKTsKLQotICAgIEVYUEVDVF9FUSgxMDI0
LCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg3NjgsIHRlc3QuaGVpZ2h0KCkpOwotCi0g
ICAgdGVzdC5zY2FsZSgyLjBmLCAwLjVmKTsKLQotICAgIEVYUEVDVF9FUSgyMDQ4LCB0ZXN0Lndp
ZHRoKCkpOwotICAgIEVYUEVDVF9FUSgzODQsIHRlc3QuaGVpZ2h0KCkpOwotfQotCi1URVNUKElu
dFNpemUsIEV4cGFuZCkKLXsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsK
LQotICAgIEVYUEVDVF9FUSgxMDI0LCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg3Njgs
IHRlc3QuaGVpZ2h0KCkpOwotCi0gICAgdGVzdC5leHBhbmQoMTAwLCA1MCk7Ci0KLSAgICBFWFBF
Q1RfRVEoMTEyNCwgdGVzdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoODE4LCB0ZXN0LmhlaWdo
dCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgb3RoZXIoMjA0OCwgNzAwKTsKLQotICAgIGF1
dG8gZXhwYW5kZWQgPSB0ZXN0LmV4cGFuZGVkVG8ob3RoZXIpOwotCi0gICAgRVhQRUNUX0VRKDIw
NDgsIGV4cGFuZGVkLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg4MTgsIGV4cGFuZGVkLmhlaWdo
dCgpKTsKLX0KLQotVEVTVChJbnRTaXplLCBTaHJpbmspCi17Ci0gICAgV2ViQ29yZTo6SW50U2l6
ZSB0ZXN0KDEwMjQsIDc2OCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBvdGhlcigxMDAwLCA3MDAp
OwotCi0gICAgYXV0byBzaHJ1bmtlbiA9IHRlc3Quc2hydW5rVG8ob3RoZXIpOwotCi0gICAgRVhQ
RUNUX0VRKDEwMDAsIHNocnVua2VuLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg3MDAsIHNocnVu
a2VuLmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgb3RoZXIyKDIwMDAuMGYsIDcw
MC4wZik7Ci0KLSAgICBhdXRvIHNocnVua2VuMiA9IHRlc3Quc2hydW5rVG8ob3RoZXIyKTsKLQot
ICAgIEVYUEVDVF9FUSgxMDI0LCBzaHJ1bmtlbjIud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDcw
MCwgc2hydW5rZW4yLmhlaWdodCgpKTsKLX0KLQotVEVTVChJbnRTaXplLCBUcmFuc3Bvc2VkU2l6
ZSkKLXsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsKLQotICAgIGF1dG8g
dHJhbnNwb3NlZFNpemUgPSB0ZXN0LnRyYW5zcG9zZWRTaXplKCk7Ci0KLSAgICBFWFBFQ1RfRVEo
NzY4LCB0cmFuc3Bvc2VkU2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMTAyNCwgdHJhbnNw
b3NlZFNpemUuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFNpemUsIENhc3RpbmcpCi17Ci0gICAg
V2ViQ29yZTo6SW50U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7Ci0KLSNpZiBVU0UoQ0cpCi0gICAgQ0dT
aXplIGNnU2l6ZSA9IHRlc3Q7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAyNC4wZiwgY2dTaXpl
LndpZHRoKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoNzY4LjBmLCBjZ1NpemUuaGVpZ2h0KTsKLQot
ICAgIENHU2l6ZSBjZ1NpemUyID0gQ0dTaXplTWFrZSgtMjIuM2YsIDE0LjZmKTsKLQotICAgIFdl
YkNvcmU6OkludFNpemUgdGVzdENHKGNnU2l6ZTIpOwotCi0gICAgRVhQRUNUX0VRKC0yMiwgdGVz
dENHLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgxNCwgdGVzdENHLmhlaWdodCgpKTsKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIEQyRDFfU0laRV9VIGQyZFNpemVVID0gdGVzdDsK
LSAgICBFWFBFQ1RfRVEoMTAyNCwgZDJkU2l6ZVUud2lkdGgpOwotICAgIEVYUEVDVF9FUSg3Njgs
IGQyZFNpemVVLmhlaWdodCk7Ci0KLSAgICBEMkQxX1NJWkVfRiBkMmRTaXplRiA9IHRlc3Q7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIGQyZFNpemVGLndpZHRoKTsKLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoNzY4LjBmLCBkMmRTaXplRi5oZWlnaHQpOwotCi0gICAgRDJEMV9TSVpFX0YgZDJk
U2l6ZUYyID0gRDJEMTo6U2l6ZUYoLTIyLjNmLCAxNC42Zik7Ci0KLSAgICBXZWJDb3JlOjpJbnRT
aXplIHRlc3REMkQoZDJkU2l6ZUYyKTsKLQotICAgIEVYUEVDVF9FUSgtMjIsIHRlc3REMkQud2lk
dGgoKSk7Ci0gICAgRVhQRUNUX0VRKDE0LCB0ZXN0RDJELmhlaWdodCgpKTsKLQotICAgIEQyRDFf
U0laRV9GIGQyZFNpemVVMiA9IEQyRDE6OlNpemVGKC0yMywgMTYpOwotCi0gICAgV2ViQ29yZTo6
SW50U2l6ZSB0ZXN0RDJEMihkMmRTaXplVTIpOwotCi0gICAgRVhQRUNUX0VRKC0yMywgdGVzdEQy
RDIud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDE2LCB0ZXN0RDJEMi5oZWlnaHQoKSk7Ci0jZW5k
aWYKLX0KLQotVEVTVChJbnRTaXplLCBBZGRTdWJ0cmFjdCkKLXsKLSAgICBXZWJDb3JlOjpJbnRT
aXplIGEoNTEyLCAzODQpOwotICAgIFdlYkNvcmU6OkludFNpemUgYigxMDAsIDEwMCk7Ci0KLSAg
ICBXZWJDb3JlOjpJbnRTaXplIGMgPSBhICsgYjsKLQotICAgIEVYUEVDVF9FUSg2MTIsIGMud2lk
dGgoKSk7Ci0gICAgRVhQRUNUX0VRKDQ4NCwgYy5oZWlnaHQoKSk7Ci0KLSAgICBhICs9IGI7Ci0K
LSAgICBFWFBFQ1RfRVEoNjEyLCBhLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg0ODQsIGEuaGVp
Z2h0KCkpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBhMig1MTIsIDM4NCk7Ci0KLSAgICBXZWJD
b3JlOjpJbnRTaXplIGQgPSBhMiAtIGI7Ci0KLSAgICBFWFBFQ1RfRVEoNDEyLCBkLndpZHRoKCkp
OwotICAgIEVYUEVDVF9FUSgyODQsIGQuaGVpZ2h0KCkpOwotCi0gICAgYTIgLT0gYjsKLQotICAg
IEVYUEVDVF9FUSg0MTIsIGEyLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgyODQsIGEyLmhlaWdo
dCgpKTsKLX0KLQotVEVTVChJbnRTaXplLCBOZWdhdGlvbikKLXsKLSAgICBXZWJDb3JlOjpJbnRT
aXplIGEoNTEyLCAzODQpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBuZWdhdGVkID0gLWE7Ci0K
LSAgICBFWFBFQ1RfRVEoLTUxMiwgbmVnYXRlZC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoLTM4
NCwgbmVnYXRlZC5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgRXF1YWxpdHkpCi17Ci0g
ICAgV2ViQ29yZTo6SW50U2l6ZSBhKDEwMjQsIDc2OCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBi
KDEwMjQsIDc2OCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBjKDc2OCwgNTM0KTsKLQotICAgIEFT
U0VSVF9UUlVFKGEgPT0gYik7Ci0gICAgQVNTRVJUX0ZBTFNFKGEgIT0gYik7Ci0gICAgQVNTRVJU
X0ZBTFNFKGEgPT0gYyk7Ci0gICAgQVNTRVJUX1RSVUUoYSAhPSBjKTsKLX0KLQotVEVTVChJbnRT
aXplLCBDb250cmFjdCkKLXsKLSAgICBXZWJDb3JlOjpJbnRTaXplIGEoMTAyNCwgNzY4KTsKLQot
ICAgIGEuY29udHJhY3QoMTAwLCA1MCk7Ci0KLSAgICBFWFBFQ1RfRVEoOTI0LCBhLndpZHRoKCkp
OwotICAgIEVYUEVDVF9FUSg3MTgsIGEuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFNpemUsIENs
YW1wKQotewotICAgIFdlYkNvcmU6OkludFNpemUgYSgxMDI0LCA3NjgpOwotCi0gICAgYS5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7Ci0KLSAgICBFWFBFQ1RfRVEoMTAyNCwgYS53aWR0aCgpKTsKLSAg
ICBFWFBFQ1RfRVEoNzY4LCBhLmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgYigt
MTAyNCwgLTc2OCk7Ci0KLSAgICBiLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLQotICAgIEVYUEVD
VF9FUSgwLCBiLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgwLCBiLmhlaWdodCgpKTsKLQotICAg
IFdlYkNvcmU6OkludFNpemUgbWluaW11bVNpemUoMTAyNCwgMTAwMCk7Ci0KLSAgICBhLmNsYW1w
VG9NaW5pbXVtU2l6ZShtaW5pbXVtU2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMTAyNCwgYS53aWR0
aCgpKTsKLSAgICBFWFBFQ1RfRVEoMTAwMCwgYS5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50U2l6
ZSwgQ29uc3RyYWluZWRCZXR3ZWVuKQotewotICAgIFdlYkNvcmU6OkludFNpemUgbWluaW11bVNp
emUoMzg0LCAyNTYpOwotICAgIFdlYkNvcmU6OkludFNpemUgbWF4aW11bVNpemUoMjA0OCwgMTUz
Nik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIGEoMTAyNCwgNzY4KTsKLQotICAgIGF1dG8gY29u
c3RyYWluZWQxID0gYS5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNpemUsIG1heGltdW1TaXpl
KTsKLQotICAgIEVYUEVDVF9FUSgxMDI0LCBjb25zdHJhaW5lZDEud2lkdGgoKSk7Ci0gICAgRVhQ
RUNUX0VRKDc2OCwgY29uc3RyYWluZWQxLmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNp
emUgYigyMDAsIDEwMCk7Ci0KLSAgICBhdXRvIGNvbnN0cmFpbmVkMiA9IGIuY29uc3RyYWluZWRC
ZXR3ZWVuKG1pbmltdW1TaXplLCBtYXhpbXVtU2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMzg0LCBj
b25zdHJhaW5lZDIud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDI1NiwgY29uc3RyYWluZWQyLmhl
aWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgYyg1MDAwLCAyMDAwKTsKLQotICAgIGF1
dG8gY29uc3RyYWluZWQzID0gYy5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNpemUsIG1heGlt
dW1TaXplKTsKLQotICAgIEVYUEVDVF9FUSgyMDQ4LCBjb25zdHJhaW5lZDMud2lkdGgoKSk7Ci0g
ICAgRVhQRUNUX0VRKDE1MzYsIGNvbnN0cmFpbmVkMy5oZWlnaHQoKSk7Ci19Ci0KLS8qCi0KLUlu
dFNpemUgY29uc3RyYWluZWRCZXR3ZWVuKGNvbnN0IEludFNpemUmIG1pbiwgY29uc3QgSW50U2l6
ZSYgbWF4KSBjb25zdDsKLQotKi8KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSW50U2l6ZVRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTU5NDJmNzRlNGFjOTE4
ZmRmNDk1MjU5NTYwOGRjN2JjZTFhNWM0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAKQEAgLTAsMCArMSwzMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisKKyNpZiBVU0Uo
Q0cpCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKKyNp
ZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8ZDJkMS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgdGVzdEdldEFuZFNldChXZWJDb3JlOjpJbnRT
aXplIHJlY3QpCit7CisgICAgcmVjdC5zZXRXaWR0aCgyMDMpOworICAgIEVYUEVDVF9FUSgyMDMs
IHJlY3Qud2lkdGgoKSk7CisgICAgcmVjdC5zZXRIZWlnaHQoNzMpOworICAgIEVYUEVDVF9FUSg3
MywgcmVjdC5oZWlnaHQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RFbXB0eVNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgcmVjdCkKK3sKKyAgICBFWFBFQ1RfRVEoMCwgcmVjdC53aWR0aCgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgcmVjdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX1RSVUUocmVj
dC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKHJlY3QuaXNaZXJvKCkpOworfQorCitURVNU
KEludFNpemUsIERlZmF1bHRDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0
ZXN0OworCisgICAgdGVzdEVtcHR5U2l6ZSh0ZXN0KTsKKworICAgIHRlc3RHZXRBbmRTZXQodGVz
dCk7Cit9CisKK1RFU1QoSW50U2l6ZSwgVmFsdWVDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29y
ZTo6SW50U2l6ZSB0ZXN0KDEwMCwgMjAwKTsKKworICAgIEVYUEVDVF9FUSgxMDAsIHRlc3Qud2lk
dGgoKSk7CisgICAgRVhQRUNUX0VRKDIwMCwgdGVzdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHRlc3QuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc1plcm8oKSk7CisK
KyAgICBzdGF0aWMgY29uc3QgZmxvYXQgZXBzaWxvbiA9IDAuMDAwMWY7CisgICAgRVhQRUNUX05F
QVIoMC41ZiwgdGVzdC5hc3BlY3RSYXRpbygpLCBlcHNpbG9uKTsKK30KKworVEVTVChJbnRTaXpl
LCBGbG9hdFNpemVDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUo
MTAyNC4yLCA3NjcuOCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0KHNpemUpOworCisgICAg
RVhQRUNUX0VRKDEwMjQsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDc2NywgdGVzdC5o
ZWlnaHQoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UodGVzdC5pc0VtcHR5KCkpOworICAgIEFTU0VS
VF9GQUxTRSh0ZXN0LmlzWmVybygpKTsKKworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZXBzaWxv
biA9IDAuMDAxOworICAgIEVYUEVDVF9ORUFSKDEuMzM1ZiwgdGVzdC5hc3BlY3RSYXRpbygpLCBl
cHNpbG9uKTsKKworICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Cit9CisKK1RFU1QoSW50U2l6ZSwg
RGlhZ29uYWxMZW5ndGhBbmRBcmVhKQoreworICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDI0
LCA3NjgpOworCisgICAgRVhQRUNUX0VRKDE2Mzg0MDAsIHRlc3QuZGlhZ29uYWxMZW5ndGhTcXVh
cmVkKCkpOworICAgIEVYUEVDVF9FUSg3ODY0MzJVLCB0ZXN0LmFyZWEoKS51bnNhZmVHZXQoKSk7
Cit9CisKK1RFU1QoSW50U2l6ZSwgU2NhbGUpCit7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0
KDEwMjQsIDc2OCk7CisKKyAgICB0ZXN0LnNjYWxlKDIuMGYpOworCisgICAgRVhQRUNUX0VRKDIw
NDgsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDE1MzYsIHRlc3QuaGVpZ2h0KCkpOwor
CisgICAgdGVzdC5zY2FsZSgwLjVmKTsKKworICAgIEVYUEVDVF9FUSgxMDI0LCB0ZXN0LndpZHRo
KCkpOworICAgIEVYUEVDVF9FUSg3NjgsIHRlc3QuaGVpZ2h0KCkpOworCisgICAgdGVzdC5zY2Fs
ZSgyLjBmLCAwLjVmKTsKKworICAgIEVYUEVDVF9FUSgyMDQ4LCB0ZXN0LndpZHRoKCkpOworICAg
IEVYUEVDVF9FUSgzODQsIHRlc3QuaGVpZ2h0KCkpOworfQorCitURVNUKEludFNpemUsIEV4cGFu
ZCkKK3sKKyAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsKKworICAgIEVYUEVD
VF9FUSgxMDI0LCB0ZXN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg3NjgsIHRlc3QuaGVpZ2h0
KCkpOworCisgICAgdGVzdC5leHBhbmQoMTAwLCA1MCk7CisKKyAgICBFWFBFQ1RfRVEoMTEyNCwg
dGVzdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoODE4LCB0ZXN0LmhlaWdodCgpKTsKKworICAg
IFdlYkNvcmU6OkludFNpemUgb3RoZXIoMjA0OCwgNzAwKTsKKworICAgIGF1dG8gZXhwYW5kZWQg
PSB0ZXN0LmV4cGFuZGVkVG8ob3RoZXIpOworCisgICAgRVhQRUNUX0VRKDIwNDgsIGV4cGFuZGVk
LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg4MTgsIGV4cGFuZGVkLmhlaWdodCgpKTsKK30KKwor
VEVTVChJbnRTaXplLCBTaHJpbmspCit7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0KDEwMjQs
IDc2OCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBvdGhlcigxMDAwLCA3MDApOworCisgICAgYXV0
byBzaHJ1bmtlbiA9IHRlc3Quc2hydW5rVG8ob3RoZXIpOworCisgICAgRVhQRUNUX0VRKDEwMDAs
IHNocnVua2VuLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg3MDAsIHNocnVua2VuLmhlaWdodCgp
KTsKKworICAgIFdlYkNvcmU6OkludFNpemUgb3RoZXIyKDIwMDAuMGYsIDcwMC4wZik7CisKKyAg
ICBhdXRvIHNocnVua2VuMiA9IHRlc3Quc2hydW5rVG8ob3RoZXIyKTsKKworICAgIEVYUEVDVF9F
USgxMDI0LCBzaHJ1bmtlbjIud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDcwMCwgc2hydW5rZW4y
LmhlaWdodCgpKTsKK30KKworVEVTVChJbnRTaXplLCBUcmFuc3Bvc2VkU2l6ZSkKK3sKKyAgICBX
ZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsKKworICAgIGF1dG8gdHJhbnNwb3NlZFNp
emUgPSB0ZXN0LnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICBFWFBFQ1RfRVEoNzY4LCB0cmFuc3Bv
c2VkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMTAyNCwgdHJhbnNwb3NlZFNpemUuaGVp
Z2h0KCkpOworfQorCitURVNUKEludFNpemUsIENhc3RpbmcpCit7CisgICAgV2ViQ29yZTo6SW50
U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7CisKKyNpZiBVU0UoQ0cpCisgICAgQ0dTaXplIGNnU2l6ZSA9
IHRlc3Q7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAyNC4wZiwgY2dTaXplLndpZHRoKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNzY4LjBmLCBjZ1NpemUuaGVpZ2h0KTsKKworICAgIENHU2l6ZSBj
Z1NpemUyID0gQ0dTaXplTWFrZSgtMjIuM2YsIDE0LjZmKTsKKworICAgIFdlYkNvcmU6OkludFNp
emUgdGVzdENHKGNnU2l6ZTIpOworCisgICAgRVhQRUNUX0VRKC0yMiwgdGVzdENHLndpZHRoKCkp
OworICAgIEVYUEVDVF9FUSgxNCwgdGVzdENHLmhlaWdodCgpKTsKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oV0lOKQorICAgIEQyRDFfU0laRV9VIGQyZFNpemVVID0gdGVzdDsKKyAgICBFWFBFQ1Rf
RVEoMTAyNCwgZDJkU2l6ZVUud2lkdGgpOworICAgIEVYUEVDVF9FUSg3NjgsIGQyZFNpemVVLmhl
aWdodCk7CisKKyAgICBEMkQxX1NJWkVfRiBkMmRTaXplRiA9IHRlc3Q7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDEwMjQuMGYsIGQyZFNpemVGLndpZHRoKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNzY4
LjBmLCBkMmRTaXplRi5oZWlnaHQpOworCisgICAgRDJEMV9TSVpFX0YgZDJkU2l6ZUYyID0gRDJE
MTo6U2l6ZUYoLTIyLjNmLCAxNC42Zik7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3REMkQo
ZDJkU2l6ZUYyKTsKKworICAgIEVYUEVDVF9FUSgtMjIsIHRlc3REMkQud2lkdGgoKSk7CisgICAg
RVhQRUNUX0VRKDE0LCB0ZXN0RDJELmhlaWdodCgpKTsKKworICAgIEQyRDFfU0laRV9GIGQyZFNp
emVVMiA9IEQyRDE6OlNpemVGKC0yMywgMTYpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0
RDJEMihkMmRTaXplVTIpOworCisgICAgRVhQRUNUX0VRKC0yMywgdGVzdEQyRDIud2lkdGgoKSk7
CisgICAgRVhQRUNUX0VRKDE2LCB0ZXN0RDJEMi5oZWlnaHQoKSk7CisjZW5kaWYKK30KKworVEVT
VChJbnRTaXplLCBBZGRTdWJ0cmFjdCkKK3sKKyAgICBXZWJDb3JlOjpJbnRTaXplIGEoNTEyLCAz
ODQpOworICAgIFdlYkNvcmU6OkludFNpemUgYigxMDAsIDEwMCk7CisKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIGMgPSBhICsgYjsKKworICAgIEVYUEVDVF9FUSg2MTIsIGMud2lkdGgoKSk7CisgICAg
RVhQRUNUX0VRKDQ4NCwgYy5oZWlnaHQoKSk7CisKKyAgICBhICs9IGI7CisKKyAgICBFWFBFQ1Rf
RVEoNjEyLCBhLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg0ODQsIGEuaGVpZ2h0KCkpOworCisg
ICAgV2ViQ29yZTo6SW50U2l6ZSBhMig1MTIsIDM4NCk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXpl
IGQgPSBhMiAtIGI7CisKKyAgICBFWFBFQ1RfRVEoNDEyLCBkLndpZHRoKCkpOworICAgIEVYUEVD
VF9FUSgyODQsIGQuaGVpZ2h0KCkpOworCisgICAgYTIgLT0gYjsKKworICAgIEVYUEVDVF9FUSg0
MTIsIGEyLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgyODQsIGEyLmhlaWdodCgpKTsKK30KKwor
VEVTVChJbnRTaXplLCBOZWdhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRTaXplIGEoNTEyLCAz
ODQpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBuZWdhdGVkID0gLWE7CisKKyAgICBFWFBFQ1Rf
RVEoLTUxMiwgbmVnYXRlZC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoLTM4NCwgbmVnYXRlZC5o
ZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50U2l6ZSwgRXF1YWxpdHkpCit7CisgICAgV2ViQ29yZTo6
SW50U2l6ZSBhKDEwMjQsIDc2OCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBiKDEwMjQsIDc2OCk7
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBjKDc2OCwgNTM0KTsKKworICAgIEFTU0VSVF9UUlVFKGEg
PT0gYik7CisgICAgQVNTRVJUX0ZBTFNFKGEgIT0gYik7CisgICAgQVNTRVJUX0ZBTFNFKGEgPT0g
Yyk7CisgICAgQVNTRVJUX1RSVUUoYSAhPSBjKTsKK30KKworVEVTVChJbnRTaXplLCBDb250cmFj
dCkKK3sKKyAgICBXZWJDb3JlOjpJbnRTaXplIGEoMTAyNCwgNzY4KTsKKworICAgIGEuY29udHJh
Y3QoMTAwLCA1MCk7CisKKyAgICBFWFBFQ1RfRVEoOTI0LCBhLndpZHRoKCkpOworICAgIEVYUEVD
VF9FUSg3MTgsIGEuaGVpZ2h0KCkpOworfQorCitURVNUKEludFNpemUsIENsYW1wKQoreworICAg
IFdlYkNvcmU6OkludFNpemUgYSgxMDI0LCA3NjgpOworCisgICAgYS5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7CisKKyAgICBFWFBFQ1RfRVEoMTAyNCwgYS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEo
NzY4LCBhLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgYigtMTAyNCwgLTc2OCk7
CisKKyAgICBiLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKworICAgIEVYUEVDVF9FUSgwLCBiLndp
ZHRoKCkpOworICAgIEVYUEVDVF9FUSgwLCBiLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6Oklu
dFNpemUgbWluaW11bVNpemUoMTAyNCwgMTAwMCk7CisKKyAgICBhLmNsYW1wVG9NaW5pbXVtU2l6
ZShtaW5pbXVtU2l6ZSk7CisKKyAgICBFWFBFQ1RfRVEoMTAyNCwgYS53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRVEoMTAwMCwgYS5oZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50U2l6ZSwgQ29uc3RyYWlu
ZWRCZXR3ZWVuKQoreworICAgIFdlYkNvcmU6OkludFNpemUgbWluaW11bVNpemUoMzg0LCAyNTYp
OworICAgIFdlYkNvcmU6OkludFNpemUgbWF4aW11bVNpemUoMjA0OCwgMTUzNik7CisKKyAgICBX
ZWJDb3JlOjpJbnRTaXplIGEoMTAyNCwgNzY4KTsKKworICAgIGF1dG8gY29uc3RyYWluZWQxID0g
YS5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNpemUsIG1heGltdW1TaXplKTsKKworICAgIEVY
UEVDVF9FUSgxMDI0LCBjb25zdHJhaW5lZDEud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDc2OCwg
Y29uc3RyYWluZWQxLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgYigyMDAsIDEw
MCk7CisKKyAgICBhdXRvIGNvbnN0cmFpbmVkMiA9IGIuY29uc3RyYWluZWRCZXR3ZWVuKG1pbmlt
dW1TaXplLCBtYXhpbXVtU2l6ZSk7CisKKyAgICBFWFBFQ1RfRVEoMzg0LCBjb25zdHJhaW5lZDIu
d2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDI1NiwgY29uc3RyYWluZWQyLmhlaWdodCgpKTsKKwor
ICAgIFdlYkNvcmU6OkludFNpemUgYyg1MDAwLCAyMDAwKTsKKworICAgIGF1dG8gY29uc3RyYWlu
ZWQzID0gYy5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNpemUsIG1heGltdW1TaXplKTsKKwor
ICAgIEVYUEVDVF9FUSgyMDQ4LCBjb25zdHJhaW5lZDMud2lkdGgoKSk7CisgICAgRVhQRUNUX0VR
KDE1MzYsIGNvbnN0cmFpbmVkMy5oZWlnaHQoKSk7Cit9CisKKy8qCisKK0ludFNpemUgY29uc3Ry
YWluZWRCZXR3ZWVuKGNvbnN0IEludFNpemUmIG1pbiwgY29uc3QgSW50U2l6ZSYgbWF4KSBjb25z
dDsKKworKi8KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0xheW91dFVuaXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xh
eW91dFVuaXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTA0Yzk2YTFjNmRj
ZDIyM2I1ZjBkZGU2ZGY3ZDdlZDNmYzIxNGY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlv
dXRVbml0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0VW5pdC5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUKFdlYkNvcmVM
YXlvdXRVbml0LCBMYXlvdXRVbml0SW50KQotewotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KElO
VF9NSU4pLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOwotICAgIEFTU0VSVF9FUShMYXlv
dXRVbml0KElOVF9NSU4gLyAyKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKLSAgICBB
U1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0IC0gMSkudG9JbnQoKSwgaW50
TWluRm9yTGF5b3V0VW5pdCk7IAotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1pbkZvckxh
eW91dFVuaXQpLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOwotICAgIEFTU0VSVF9FUShM
YXlvdXRVbml0KGludE1pbkZvckxheW91dFVuaXQgKyAxKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlv
dXRVbml0ICsgMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5p
dCAvIDIpLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQgLyAyKTsKLSAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdCgtMTAwMDApLnRvSW50KCksIC0xMDAwMCk7Ci0gICAgQVNTRVJUX0VRKExheW91
dFVuaXQoLTEwMDApLnRvSW50KCksIC0xMDAwKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgt
MTAwKS50b0ludCgpLCAtMTAwKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTApLnRvSW50
KCksIC0xMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEpLnRvSW50KCksIC0xKTsKLSAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwKS50b0ludCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdCgxKS50b0ludCgpLCAxKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDApLnRv
SW50KCksIDEwMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMTAwMCkudG9JbnQoKSwgMTAw
MCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMTAwMDApLnRvSW50KCksIDEwMDAwKTsKLSAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0IC8gMikudG9JbnQoKSwg
aW50TWF4Rm9yTGF5b3V0VW5pdCAvIDIpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1h
eEZvckxheW91dFVuaXQgLSAxKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0IC0gMSk7Ci0g
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkudG9JbnQoKSwgaW50
TWF4Rm9yTGF5b3V0VW5pdCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5
b3V0VW5pdCArIDEpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOwotICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0KElOVF9NQVggLyAyKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsK
LSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChJTlRfTUFYKS50b0ludCgpLCBpbnRNYXhGb3JMYXlv
dXRVbml0KTsKLX0KLQotVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdEZsb2F0KQot
ewotICAgIGNvbnN0IGZsb2F0IHRvbGVyYW5jZSA9IDEuMGYgLyBrRml4ZWRQb2ludERlbm9taW5h
dG9yOwotICAgIEFTU0VSVF9GTE9BVF9FUShMYXlvdXRVbml0KDEuMGYpLnRvRmxvYXQoKSwgMS4w
Zik7Ci0gICAgQVNTRVJUX0ZMT0FUX0VRKExheW91dFVuaXQoMS4yNWYpLnRvRmxvYXQoKSwgMS4y
NWYpOwotICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS4xZikudG9GbG9hdCgpLCAxLjFmLCB0
b2xlcmFuY2UpOwotICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS4zM2YpLnRvRmxvYXQoKSwg
MS4zM2YsIHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgxLjMzMzNmKS50
b0Zsb2F0KCksIDEuMzMzM2YsIHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5p
dCgxLjUzNDM0ZikudG9GbG9hdCgpLCAxLjUzNDM0ZiwgdG9sZXJhbmNlKTsKLSAgICBBU1NFUlRf
TkVBUihMYXlvdXRVbml0KDM0NTYzNCkudG9GbG9hdCgpLCAzNDU2MzQuMGYsIHRvbGVyYW5jZSk7
Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzNDU2MzQuMTIzMzVmKS50b0Zsb2F0KCksIDM0
NTYzNC4xMjMzNWYsIHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgtMzQ1
NjM0LjEyMzM1ZikudG9GbG9hdCgpLCAtMzQ1NjM0LjEyMzM1ZiwgdG9sZXJhbmNlKTsKLSAgICBB
U1NFUlRfTkVBUihMYXlvdXRVbml0KC0zNDU2MzQpLnRvRmxvYXQoKSwgLTM0NTYzNC4wZiwgdG9s
ZXJhbmNlKTsgICAgCi0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzMzU1NDQzMi5mKS50b0Zs
b2F0KCksIDMzNTU0NDMyLmYsIHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5p
dCgtMzM1NTQ0MzIuZikudG9GbG9hdCgpLCAtMzM1NTQ0MzIuZiwgdG9sZXJhbmNlKTsKLSAgICBB
U1NFUlRfTkVBUihMYXlvdXRVbml0KDMzNTU0NDMyLmYpLnRvRG91YmxlKCksIDMzNTU0NDMyLmYs
IHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgtMzM1NTQ0MzIuZikudG9E
b3VibGUoKSwgLTMzNTU0NDMyLmYsIHRvbGVyYW5jZSk7Ci19Ci0KLVRFU1QoV2ViQ29yZUxheW91
dFVuaXQsIExheW91dFVuaXRSb3VuZGluZykKLXsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgt
MS45Zikucm91bmQoKSwgLTIpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjZmKS5yb3Vu
ZCgpLCAtMik7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKC0xLjUx
Zikucm91bmQoKSwgLTIpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3Vu
ZCgtMS41Zikucm91bmQoKSwgLTEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxv
YXRSb3VuZCgtMS40OWYpLnJvdW5kKCksIC0xKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgt
MS4wZikucm91bmQoKSwgLTEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRS
b3VuZCgtMC45OWYpLnJvdW5kKCksIC0xKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJv
bUZsb2F0Um91bmQoLTAuNTFmKS5yb3VuZCgpLCAtMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVu
aXQ6OmZyb21GbG9hdFJvdW5kKC0wLjUwZikucm91bmQoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKExh
eW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKC0wLjQ5Zikucm91bmQoKSwgMCk7Ci0gICAgQVNTRVJU
X0VRKExheW91dFVuaXQoLTAuMWYpLnJvdW5kKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRV
bml0KDAuMGYpLnJvdW5kKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuMWYpLnJv
dW5kKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgwLjQ5
Zikucm91bmQoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5k
KDAuNTBmKS5yb3VuZCgpLCAxKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0
Um91bmQoMC41MWYpLnJvdW5kKCksIDEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuOTlm
KS5yb3VuZCgpLCAxKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxLjBmKS5yb3VuZCgpLCAx
KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoMS40OWYpLnJvdW5k
KCksIDEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgxLjVmKS5y
b3VuZCgpLCAyKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoMS41
MWYpLnJvdW5kKCksIDIpOwotfQotCi1URVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0
TXVsdGlwbGljYXRpb24pCi17Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5b3V0
VW5pdCgxKSkudG9JbnQoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5
b3V0VW5pdCgyKSkudG9JbnQoKSwgMik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIpICog
TGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIp
ICogTGF5b3V0VW5pdCgwLjUpKS50b0ludCgpLCAxKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoMC41KSAqIExheW91dFVuaXQoMikpLnRvSW50KCksIDEpOwotICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdCgxMDApICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMTAwKTsKLSAgICAKLSAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoLTEpICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEpOwot
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAt
Mik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQoMSkpLnRvSW50
KCksIC0yKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgwLjUp
KS50b0ludCgpLCAtMSk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0wLjUpICogTGF5b3V0
VW5pdCgyKSkudG9JbnQoKSwgLTEpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAq
IExheW91dFVuaXQoMSkpLnRvSW50KCksIC0xMDApOwotICAgIAotICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMSk7Ci0gICAgQVNTRVJUX0VR
KChMYXlvdXRVbml0KC0xKSAqIExheW91dFVuaXQoLTIpKS50b0ludCgpLCAyKTsKLSAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDIpOwotICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgKiBMYXlvdXRVbml0KC0wLjUpKS50b0ludCgpLCAx
KTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTAuNSkgKiBMYXlvdXRVbml0KC0yKSkudG9J
bnQoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDApICogTGF5b3V0VW5pdCgt
MSkpLnRvSW50KCksIDEwMCk7Ci0gICAgCi0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEwMCkg
KiBMYXlvdXRVbml0KDMuMzMpKS5yb3VuZCgpLCAzMzMpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdCgtMTAwKSAqIExheW91dFVuaXQoMy4zMykpLnJvdW5kKCksIC0zMzMpOwotICAgIEFTU0VS
VF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVuaXQoLTMuMzMpKS5yb3VuZCgpLCAzMzMp
OwotCi0gICAgc2l6ZV90IGFIdW5kcmVkU2l6ZVQgPSAxMDA7Ci0gICAgQVNTRVJUX0VRKChMYXlv
dXRVbml0KGFIdW5kcmVkU2l6ZVQpICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMTAwKTsKLSAg
ICBBU1NFUlRfRVEoKGFIdW5kcmVkU2l6ZVQgKiBMYXlvdXRVbml0KDQpKS50b0ludCgpLCA0MDAp
OwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCg0KSAqIGFIdW5kcmVkU2l6ZVQpLnRvSW50KCks
IDQwMCk7Ci0KLSAgICBpbnQgcXVhcnRlck1heCA9IGludE1heEZvckxheW91dFVuaXQgLyA0Owot
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChxdWFydGVyTWF4KSAqIExheW91dFVuaXQoMikpLnRv
SW50KCksIHF1YXJ0ZXJNYXggKiAyKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQocXVhcnRl
ck1heCkgKiBMYXlvdXRVbml0KDMpKS50b0ludCgpLCBxdWFydGVyTWF4ICogMyk7Ci0gICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KHF1YXJ0ZXJNYXgpICogTGF5b3V0VW5pdCg0KSkudG9JbnQoKSwg
cXVhcnRlck1heCAqIDQpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChxdWFydGVyTWF4KSAq
IExheW91dFVuaXQoNSkpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOwotCi0gICAgc2l6
ZV90IG92ZXJmbG93SW50U2l6ZVQgPSBpbnRNYXhGb3JMYXlvdXRVbml0ICogNDsKLSAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQob3ZlcmZsb3dJbnRTaXplVCkgKiBMYXlvdXRVbml0KDIpKS50b0lu
dCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKLSAgICBBU1NFUlRfRVEoKG92ZXJmbG93SW50U2l6
ZVQgKiBMYXlvdXRVbml0KDQpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKLSAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoNCkgKiBvdmVyZmxvd0ludFNpemVUKS50b0ludCgpLCBpbnRN
YXhGb3JMYXlvdXRVbml0KTsKLX0KLQotVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5p
dERpdmlzaW9uKQotewotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQo
MSkpLnRvSW50KCksIDEpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVu
aXQoMikpLnRvSW50KCksIDApOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAvIExheW91
dFVuaXQoMSkpLnRvSW50KCksIDIpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAvIExh
eW91dFVuaXQoMC41KSkudG9JbnQoKSwgNCk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDAu
NSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoMTAwKSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAxMCk7Ci0gICAgQVNTRVJUX0ZMT0FU
X0VRKChMYXlvdXRVbml0KDEpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAwLjVmKTsKLSAg
ICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoMC41KSAvIExheW91dFVuaXQoMikpLnRvRmxv
YXQoKSwgMC4yNWYpOwotICAgIAotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlv
dXRVbml0KDEpKS50b0ludCgpLCAtMSk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAv
IExheW91dFVuaXQoMikpLnRvSW50KCksIDApOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgt
MikgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRV
bml0KC0yKSAvIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgLTQpOwotICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDApOwotICAgIEFTU0VS
VF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAtMTApOwot
ICAgIEFTU0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDIpKS50b0Zs
b2F0KCksIC0wLjVmKTsKLSAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTAuNSkgLyBM
YXlvdXRVbml0KDIpKS50b0Zsb2F0KCksIC0wLjI1Zik7Ci0gICAgCi0gICAgQVNTRVJUX0VRKChM
YXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAxKTsKLSAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgtMikpLnRvSW50KCksIDApOwotICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMik7Ci0g
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAvIExheW91dFVuaXQoLTAuNSkpLnRvSW50KCks
IDQpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQoLTIpKS50
b0ludCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlvdXRVbml0
KC0xMCkpLnRvSW50KCksIDEwKTsKLSAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTEp
IC8gTGF5b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC41Zik7Ci0gICAgQVNTRVJUX0ZMT0FUX0VR
KChMYXlvdXRVbml0KC0wLjUpIC8gTGF5b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC4yNWYpOwot
ICAgIAotICAgIHNpemVfdCBhSHVuZHJlZFNpemVUID0gMTAwOwotICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdChhSHVuZHJlZFNpemVUKSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDUwKTsKLSAg
ICBBU1NFUlRfRVEoKGFIdW5kcmVkU2l6ZVQgLyBMYXlvdXRVbml0KDQpKS50b0ludCgpLCAyNSk7
Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDQwMCkgLyBhSHVuZHJlZFNpemVUKS50b0ludCgp
LCA0KTsKLQotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KSAv
IExheW91dFVuaXQoMikpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQgLyAyKTsKLSAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkgLyBMYXlvdXRVbml0KDAu
NSkpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOwotfQotCi1URVNUKFdlYkNvcmVMYXlv
dXRVbml0LCBMYXlvdXRVbml0Q2VpbCkKLXsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwKS5j
ZWlsKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuMSkuY2VpbCgpLCAxKTsKLSAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjUpLmNlaWwoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKExh
eW91dFVuaXQoMC45KS5jZWlsKCksIDEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEuMCku
Y2VpbCgpLCAxKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxLjEpLmNlaWwoKSwgMik7Ci0g
ICAgCi0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuMSkuY2VpbCgpLCAwKTsKLSAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdCgtMC41KS5jZWlsKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRV
bml0KC0wLjkpLmNlaWwoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEuMCkuY2Vp
bCgpLCAtMSk7Ci0gICAgCi0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0
VW5pdCkuY2VpbCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKLSAgICBBU1NFUlRfRVEoKExheW91
dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkgLSBMYXlvdXRVbml0KDAuNSkpLmNlaWwoKSwgaW50
TWF4Rm9yTGF5b3V0VW5pdCk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGludE1heEZvckxh
eW91dFVuaXQpIC0gTGF5b3V0VW5pdCgxKSkuY2VpbCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0IC0g
MSk7Ci0KLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KS5jZWls
KCksIGludE1pbkZvckxheW91dFVuaXQpOwotfQotCi1URVNUKFdlYkNvcmVMYXlvdXRVbml0LCBM
YXlvdXRVbml0Rmxvb3IpCi17Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMCkuZmxvb3IoKSwg
MCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC4xKS5mbG9vcigpLCAwKTsKLSAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdCgwLjUpLmZsb29yKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRV
bml0KDAuOSkuZmxvb3IoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMS4wKS5mbG9v
cigpLCAxKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxLjEpLmZsb29yKCksIDEpOwotICAg
IAotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjEpLmZsb29yKCksIC0xKTsKLSAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdCgtMC41KS5mbG9vcigpLCAtMSk7Ci0gICAgQVNTRVJUX0VRKExheW91
dFVuaXQoLTAuOSkuZmxvb3IoKSwgLTEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjAp
LmZsb29yKCksIC0xKTsKLSAgICAKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNYXhGb3JM
YXlvdXRVbml0KS5mbG9vcigpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKLQotICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0KGludE1pbkZvckxheW91dFVuaXQpLmZsb29yKCksIGludE1pbkZvckxheW91
dFVuaXQpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KSAr
IExheW91dFVuaXQoMC41KSkuZmxvb3IoKSwgaW50TWluRm9yTGF5b3V0VW5pdCk7Ci0gICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KGludE1pbkZvckxheW91dFVuaXQpICsgTGF5b3V0VW5pdCgxKSku
Zmxvb3IoKSwgaW50TWluRm9yTGF5b3V0VW5pdCArIDEpOwotfQotCi1URVNUKFdlYkNvcmVMYXlv
dXRVbml0LCBMYXlvdXRVbml0UGl4ZWxTbmFwcGluZykKLXsKLSAgICBmb3IgKGludCBpID0gLTEw
MDAwMDsgaSA8PSAxMDAwMDA7ICsraSkgewotICAgICAgICBBU1NFUlRfRVEocm91bmRUb0Rldmlj
ZVBpeGVsKExheW91dFVuaXQoaSksIDEpLCBpKTsKLSAgICAgICAgQVNTRVJUX0VRKHJvdW5kVG9E
ZXZpY2VQaXhlbChMYXlvdXRVbml0KGkpLCAyKSwgaSk7Ci0gICAgICAgIEFTU0VSVF9FUShyb3Vu
ZFRvRGV2aWNlUGl4ZWwoTGF5b3V0VW5pdChpKSwgMyksIGkpOwotICAgIH0KLQotICAgIGZvciAo
ZmxvYXQgaSA9IC0xMDAwMDsgaSA8IDA7IGkgPSBpICsgMC41KQotICAgICAgICBBU1NFUlRfRkxP
QVRfRVEocm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQoaSksIDIpLCBpKTsKLQotICAgIGZv
ciAoZmxvYXQgaSA9IC0xMDAwMC4yNTsgaSA8IDA7IGkgPSBpICsgMC41KQotICAgICAgICBBU1NF
UlRfRkxPQVRfRVEocm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQoaSksIDIpLCBpICsgMC4y
NSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0VGVzdHMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXRUZXN0cy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjkwNGM5NmExYzZkY2QyMjNiNWYwZGRlNmRmN2Q3ZWQzZmMyMTRmOAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0VGVzdHMu
Y3BwCkBAIC0wLDAgKzEsMjQ4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdl
YkNvcmUvTGF5b3V0VW5pdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0
SW50KQoreworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KElOVF9NSU4pLnRvSW50KCksIGludE1p
bkZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KElOVF9NSU4gLyAyKS50
b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChp
bnRNaW5Gb3JMYXlvdXRVbml0IC0gMSkudG9JbnQoKSwgaW50TWluRm9yTGF5b3V0VW5pdCk7IAor
ICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1pbkZvckxheW91dFVuaXQpLnRvSW50KCksIGlu
dE1pbkZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1pbkZvckxh
eW91dFVuaXQgKyAxKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0ICsgMSk7CisgICAgQVNT
RVJUX0VRKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5pdCAvIDIpLnRvSW50KCksIGludE1p
bkZvckxheW91dFVuaXQgLyAyKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTAwMDApLnRv
SW50KCksIC0xMDAwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEwMDApLnRvSW50KCks
IC0xMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTAwKS50b0ludCgpLCAtMTAwKTsK
KyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMTApLnRvSW50KCksIC0xMCk7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQoLTEpLnRvSW50KCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5p
dCgwKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxKS50b0ludCgpLCAx
KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgxMDApLnRvSW50KCksIDEwMCk7CisgICAgQVNT
RVJUX0VRKExheW91dFVuaXQoMTAwMCkudG9JbnQoKSwgMTAwMCk7CisgICAgQVNTRVJUX0VRKExh
eW91dFVuaXQoMTAwMDApLnRvSW50KCksIDEwMDAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5p
dChpbnRNYXhGb3JMYXlvdXRVbml0IC8gMikudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCAv
IDIpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQgLSAxKS50
b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0IC0gMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVu
aXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Cisg
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCArIDEpLnRvSW50KCks
IGludE1heEZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KElOVF9NQVgg
LyAyKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0
VW5pdChJTlRfTUFYKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKK30KKworVEVTVChX
ZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdEZsb2F0KQoreworICAgIGNvbnN0IGZsb2F0IHRv
bGVyYW5jZSA9IDEuMGYgLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOworICAgIEFTU0VSVF9GTE9B
VF9FUShMYXlvdXRVbml0KDEuMGYpLnRvRmxvYXQoKSwgMS4wZik7CisgICAgQVNTRVJUX0ZMT0FU
X0VRKExheW91dFVuaXQoMS4yNWYpLnRvRmxvYXQoKSwgMS4yNWYpOworICAgIEFTU0VSVF9ORUFS
KExheW91dFVuaXQoMS4xZikudG9GbG9hdCgpLCAxLjFmLCB0b2xlcmFuY2UpOworICAgIEFTU0VS
VF9ORUFSKExheW91dFVuaXQoMS4zM2YpLnRvRmxvYXQoKSwgMS4zM2YsIHRvbGVyYW5jZSk7Cisg
ICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgxLjMzMzNmKS50b0Zsb2F0KCksIDEuMzMzM2YsIHRv
bGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgxLjUzNDM0ZikudG9GbG9hdCgp
LCAxLjUzNDM0ZiwgdG9sZXJhbmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDM0NTYz
NCkudG9GbG9hdCgpLCAzNDU2MzQuMGYsIHRvbGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5
b3V0VW5pdCgzNDU2MzQuMTIzMzVmKS50b0Zsb2F0KCksIDM0NTYzNC4xMjMzNWYsIHRvbGVyYW5j
ZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgtMzQ1NjM0LjEyMzM1ZikudG9GbG9hdCgp
LCAtMzQ1NjM0LjEyMzM1ZiwgdG9sZXJhbmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0
KC0zNDU2MzQpLnRvRmxvYXQoKSwgLTM0NTYzNC4wZiwgdG9sZXJhbmNlKTsgICAgCisgICAgQVNT
RVJUX05FQVIoTGF5b3V0VW5pdCgzMzU1NDQzMi5mKS50b0Zsb2F0KCksIDMzNTU0NDMyLmYsIHRv
bGVyYW5jZSk7CisgICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgtMzM1NTQ0MzIuZikudG9GbG9h
dCgpLCAtMzM1NTQ0MzIuZiwgdG9sZXJhbmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0
KDMzNTU0NDMyLmYpLnRvRG91YmxlKCksIDMzNTU0NDMyLmYsIHRvbGVyYW5jZSk7CisgICAgQVNT
RVJUX05FQVIoTGF5b3V0VW5pdCgtMzM1NTQ0MzIuZikudG9Eb3VibGUoKSwgLTMzNTU0NDMyLmYs
IHRvbGVyYW5jZSk7Cit9CisKK1RFU1QoV2ViQ29yZUxheW91dFVuaXQsIExheW91dFVuaXRSb3Vu
ZGluZykKK3sKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMS45Zikucm91bmQoKSwgLTIpOwor
ICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjZmKS5yb3VuZCgpLCAtMik7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKC0xLjUxZikucm91bmQoKSwgLTIpOworICAg
IEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMS41Zikucm91bmQoKSwgLTEp
OworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMS40OWYpLnJvdW5k
KCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMS4wZikucm91bmQoKSwgLTEpOwor
ICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMC45OWYpLnJvdW5kKCks
IC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoLTAuNTFmKS5y
b3VuZCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKC0w
LjUwZikucm91bmQoKSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJv
dW5kKC0wLjQ5Zikucm91bmQoKSwgMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuMWYp
LnJvdW5kKCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuMGYpLnJvdW5kKCksIDAp
OworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuMWYpLnJvdW5kKCksIDApOworICAgIEFTU0VS
VF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgwLjQ5Zikucm91bmQoKSwgMCk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKDAuNTBmKS5yb3VuZCgpLCAxKTsK
KyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoMC41MWYpLnJvdW5kKCks
IDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuOTlmKS5yb3VuZCgpLCAxKTsKKyAgICBB
U1NFUlRfRVEoTGF5b3V0VW5pdCgxLjBmKS5yb3VuZCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoMS40OWYpLnJvdW5kKCksIDEpOworICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgxLjVmKS5yb3VuZCgpLCAyKTsKKyAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoMS41MWYpLnJvdW5kKCksIDIpOworfQor
CitURVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0TXVsdGlwbGljYXRpb24pCit7Cisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMSk7
CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEpICogTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwg
Mik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIpICogTGF5b3V0VW5pdCgxKSkudG9JbnQo
KSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDIpICogTGF5b3V0VW5pdCgwLjUpKS50
b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMC41KSAqIExheW91dFVuaXQo
MikpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxMDApICogTGF5b3V0
VW5pdCgxKSkudG9JbnQoKSwgMTAwKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQo
LTEpICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdCgtMSkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAtMik7CisgICAgQVNTRVJUX0VRKChM
YXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIC0yKTsKKyAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgwLjUpKS50b0ludCgpLCAtMSk7CisgICAg
QVNTRVJUX0VRKChMYXlvdXRVbml0KC0wLjUpICogTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgLTEp
OworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVuaXQoMSkpLnRvSW50
KCksIC0xMDApOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRV
bml0KC0xKSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAqIExh
eW91dFVuaXQoLTIpKS50b0ludCgpLCAyKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIp
ICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5p
dCgtMikgKiBMYXlvdXRVbml0KC0wLjUpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExh
eW91dFVuaXQoLTAuNSkgKiBMYXlvdXRVbml0KC0yKSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJU
X0VRKChMYXlvdXRVbml0KC0xMDApICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDEwMCk7Cisg
ICAgCisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEwMCkgKiBMYXlvdXRVbml0KDMuMzMpKS5y
b3VuZCgpLCAzMzMpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVu
aXQoMy4zMykpLnJvdW5kKCksIC0zMzMpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAw
KSAqIExheW91dFVuaXQoLTMuMzMpKS5yb3VuZCgpLCAzMzMpOworCisgICAgc2l6ZV90IGFIdW5k
cmVkU2l6ZVQgPSAxMDA7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGFIdW5kcmVkU2l6ZVQp
ICogTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgMTAwKTsKKyAgICBBU1NFUlRfRVEoKGFIdW5kcmVk
U2l6ZVQgKiBMYXlvdXRVbml0KDQpKS50b0ludCgpLCA0MDApOworICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdCg0KSAqIGFIdW5kcmVkU2l6ZVQpLnRvSW50KCksIDQwMCk7CisKKyAgICBpbnQgcXVh
cnRlck1heCA9IGludE1heEZvckxheW91dFVuaXQgLyA0OworICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdChxdWFydGVyTWF4KSAqIExheW91dFVuaXQoMikpLnRvSW50KCksIHF1YXJ0ZXJNYXggKiAy
KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQocXVhcnRlck1heCkgKiBMYXlvdXRVbml0KDMp
KS50b0ludCgpLCBxdWFydGVyTWF4ICogMyk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KHF1
YXJ0ZXJNYXgpICogTGF5b3V0VW5pdCg0KSkudG9JbnQoKSwgcXVhcnRlck1heCAqIDQpOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdChxdWFydGVyTWF4KSAqIExheW91dFVuaXQoNSkpLnRvSW50
KCksIGludE1heEZvckxheW91dFVuaXQpOworCisgICAgc2l6ZV90IG92ZXJmbG93SW50U2l6ZVQg
PSBpbnRNYXhGb3JMYXlvdXRVbml0ICogNDsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQob3Zl
cmZsb3dJbnRTaXplVCkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRV
bml0KTsKKyAgICBBU1NFUlRfRVEoKG92ZXJmbG93SW50U2l6ZVQgKiBMYXlvdXRVbml0KDQpKS50
b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQo
NCkgKiBvdmVyZmxvd0ludFNpemVUKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKK30K
KworVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdERpdmlzaW9uKQoreworICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQoMSkpLnRvSW50KCksIDEpOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDApOwor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAvIExheW91dFVuaXQoMSkpLnRvSW50KCksIDIp
OworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAvIExheW91dFVuaXQoMC41KSkudG9JbnQo
KSwgNCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDAuNSkgLyBMYXlvdXRVbml0KDIpKS50
b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMTAwKSAvIExheW91dFVuaXQo
MTApKS50b0ludCgpLCAxMCk7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0KDEpIC8g
TGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAwLjVmKTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExh
eW91dFVuaXQoMC41KSAvIExheW91dFVuaXQoMikpLnRvRmxvYXQoKSwgMC4yNWYpOworICAgIAor
ICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAt
MSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQoMikpLnRvSW50
KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KDEpKS50
b0ludCgpLCAtMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAvIExheW91dFVuaXQo
MC41KSkudG9JbnQoKSwgLTQpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExh
eW91dFVuaXQoMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAw
KSAvIExheW91dFVuaXQoMTApKS50b0ludCgpLCAtMTApOworICAgIEFTU0VSVF9GTE9BVF9FUSgo
TGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDIpKS50b0Zsb2F0KCksIC0wLjVmKTsKKyAgICBB
U1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTAuNSkgLyBMYXlvdXRVbml0KDIpKS50b0Zsb2F0
KCksIC0wLjI1Zik7CisgICAgCisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91
dFVuaXQoLTEpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpIC8g
TGF5b3V0VW5pdCgtMikpLnRvSW50KCksIDApOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgt
MikgLyBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRV
bml0KC0yKSAvIExheW91dFVuaXQoLTAuNSkpLnRvSW50KCksIDQpOworICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQoLTIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlvdXRVbml0KC0xMCkpLnRvSW50KCksIDEwKTsK
KyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgtMikpLnRv
RmxvYXQoKSwgMC41Zik7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0KC0wLjUpIC8g
TGF5b3V0VW5pdCgtMikpLnRvRmxvYXQoKSwgMC4yNWYpOworICAgIAorICAgIHNpemVfdCBhSHVu
ZHJlZFNpemVUID0gMTAwOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChhSHVuZHJlZFNpemVU
KSAvIExheW91dFVuaXQoMikpLnRvSW50KCksIDUwKTsKKyAgICBBU1NFUlRfRVEoKGFIdW5kcmVk
U2l6ZVQgLyBMYXlvdXRVbml0KDQpKS50b0ludCgpLCAyNSk7CisgICAgQVNTRVJUX0VRKChMYXlv
dXRVbml0KDQwMCkgLyBhSHVuZHJlZFNpemVUKS50b0ludCgpLCA0KTsKKworICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KSAvIExheW91dFVuaXQoMikpLnRvSW50
KCksIGludE1heEZvckxheW91dFVuaXQgLyAyKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQo
aW50TWF4Rm9yTGF5b3V0VW5pdCkgLyBMYXlvdXRVbml0KDAuNSkpLnRvSW50KCksIGludE1heEZv
ckxheW91dFVuaXQpOworfQorCitURVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0Q2Vp
bCkKK3sKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwKS5jZWlsKCksIDApOworICAgIEFTU0VS
VF9FUShMYXlvdXRVbml0KDAuMSkuY2VpbCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5p
dCgwLjUpLmNlaWwoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC45KS5jZWlsKCks
IDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEuMCkuY2VpbCgpLCAxKTsKKyAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdCgxLjEpLmNlaWwoKSwgMik7CisgICAgCisgICAgQVNTRVJUX0VRKExh
eW91dFVuaXQoLTAuMSkuY2VpbCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC41
KS5jZWlsKCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjkpLmNlaWwoKSwgMCk7
CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEuMCkuY2VpbCgpLCAtMSk7CisgICAgCisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkuY2VpbCgpLCBpbnRNYXhG
b3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0
VW5pdCkgLSBMYXlvdXRVbml0KDAuNSkpLmNlaWwoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Cisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpIC0gTGF5b3V0VW5p
dCgxKSkuY2VpbCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0IC0gMSk7CisKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KS5jZWlsKCksIGludE1pbkZvckxheW91dFVu
aXQpOworfQorCitURVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0Rmxvb3IpCit7Cisg
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoMCkuZmxvb3IoKSwgMCk7CisgICAgQVNTRVJUX0VRKExh
eW91dFVuaXQoMC4xKS5mbG9vcigpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjUp
LmZsb29yKCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuOSkuZmxvb3IoKSwgMCk7
CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMS4wKS5mbG9vcigpLCAxKTsKKyAgICBBU1NFUlRf
RVEoTGF5b3V0VW5pdCgxLjEpLmZsb29yKCksIDEpOworICAgIAorICAgIEFTU0VSVF9FUShMYXlv
dXRVbml0KC0wLjEpLmZsb29yKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC41
KS5mbG9vcigpLCAtMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuOSkuZmxvb3IoKSwg
LTEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjApLmZsb29yKCksIC0xKTsKKyAgICAK
KyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KS5mbG9vcigpLCBp
bnRNYXhGb3JMYXlvdXRVbml0KTsKKworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1pbkZv
ckxheW91dFVuaXQpLmZsb29yKCksIGludE1pbkZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KSArIExheW91dFVuaXQoMC41KSkuZmxv
b3IoKSwgaW50TWluRm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGlu
dE1pbkZvckxheW91dFVuaXQpICsgTGF5b3V0VW5pdCgxKSkuZmxvb3IoKSwgaW50TWluRm9yTGF5
b3V0VW5pdCArIDEpOworfQorCitURVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0UGl4
ZWxTbmFwcGluZykKK3sKKyAgICBmb3IgKGludCBpID0gLTEwMDAwMDsgaSA8PSAxMDAwMDA7ICsr
aSkgeworICAgICAgICBBU1NFUlRfRVEocm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQoaSks
IDEpLCBpKTsKKyAgICAgICAgQVNTRVJUX0VRKHJvdW5kVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0
KGkpLCAyKSwgaSk7CisgICAgICAgIEFTU0VSVF9FUShyb3VuZFRvRGV2aWNlUGl4ZWwoTGF5b3V0
VW5pdChpKSwgMyksIGkpOworICAgIH0KKworICAgIGZvciAoZmxvYXQgaSA9IC0xMDAwMDsgaSA8
IDA7IGkgPSBpICsgMC41KQorICAgICAgICBBU1NFUlRfRkxPQVRfRVEocm91bmRUb0RldmljZVBp
eGVsKExheW91dFVuaXQoaSksIDIpLCBpKTsKKworICAgIGZvciAoZmxvYXQgaSA9IC0xMDAwMC4y
NTsgaSA8IDA7IGkgPSBpICsgMC41KQorICAgICAgICBBU1NFUlRfRkxPQVRfRVEocm91bmRUb0Rl
dmljZVBpeGVsKExheW91dFVuaXQoaSksIDIpLCBpICsgMC4yNSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399580</attachid>
            <date>2020-05-16 18:18:29 -0700</date>
            <delta_ts>2020-05-16 19:57:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211992-20200516181828.patch</filename>
            <type>text/plain</type>
            <size>232717</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzY3ODY1NzMyMmU3OTJmNDAyNTZkYjQ5MDBkMDYyMDgz
YThmYzg5Ni4uZmNkOGU0M2E3N2FjZWVkYjBlZDM0MGQxYzEzN2E3M2VjODRiZTkxZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDIwLTA1LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBzb21lIEFQSSB0ZXN0IGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE5OTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJJ20gdGlyZWQgb2YgUXVpY2sgT3BlbiBvZiBD
b2xvci5jcHAgb3BlbmluZyB0aGUgdGVzdCBmaWxlIHJhdGhlciB0aGFuIHRoZSBvbmUgSSB3YW50
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHA6IFJlbmFt
ZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3IuY3BwLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3Bw
OiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVk
Q29sb3IuY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GbG9hdFBv
aW50VGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Zsb2F0UG9pbnQuY3BwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GbG9hdFJlY3RUZXN0cy5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmxvYXRSZWN0LmNwcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmxvYXRTaXplVGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0U2l6ZS5jcHAuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ludFBvaW50VGVzdHMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFBvaW50LmNwcC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UmVjdFRlc3RzLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0LmNwcC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50U2l6ZVRlc3RzLmNwcDogUmVuYW1lZCBmcm9tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRTaXplLmNwcC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdFRlc3RzLmNwcDogUmVuYW1lZCBm
cm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcC4KKwog
MjAyMC0wNS0xNCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdHRyaWJ1dGUgbm9uLW5ldHdvcmsgbG9hZHMgYW5kIGxvYWRzIHdpdGggaHRtbCBz
dHJpbmdzIGFzIGF1dG9tYXRpY2FsbHkgYXBwLWJvdW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBmZDU4ZmEzNGNiYWU1OWNkZWE4NThkNWRhZjU2M2ExYmZhOWZmOTQ5Li5jMTIy
NjY0OTU0ZWI2OTlmMzNlYWMzMWEzMGExMjdkZTg3OWU3MzY2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKQEAgLTEzMCwxOCArMTMwLDIwIEBAIGlmIChFTkFCTEVfV0VCQ09SRSkKICAg
ICAgICAgVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUv
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCisgICAgICAgIFRlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAKKyAgICAg
ICAgVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCiAgICAgICAgIFRlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwCi0gICAgICAgIFRlc3RzL1dlYkNvcmUvRmxvYXRQb2ludC5j
cHAKLSAgICAgICAgVGVzdHMvV2ViQ29yZS9GbG9hdFJlY3QuY3BwCi0gICAgICAgIFRlc3RzL1dl
YkNvcmUvRmxvYXRTaXplLmNwcAorICAgICAgICBUZXN0cy9XZWJDb3JlL0Zsb2F0UG9pbnRUZXN0
cy5jcHAKKyAgICAgICAgVGVzdHMvV2ViQ29yZS9GbG9hdFJlY3RUZXN0cy5jcHAKKyAgICAgICAg
VGVzdHMvV2ViQ29yZS9GbG9hdFNpemVUZXN0cy5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9H
cmlkUG9zaXRpb24uY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKLSAgICAgICAgVGVzdHMv
V2ViQ29yZS9JbnRQb2ludC5jcHAKLSAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRSZWN0LmNwcAot
ICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFNpemUuY3BwCisgICAgICAgIFRlc3RzL1dlYkNvcmUv
SW50UG9pbnRUZXN0cy5jcHAKKyAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVzdHMuY3Bw
CisgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50U2l6ZVRlc3RzLmNwcAogICAgICAgICBUZXN0cy9X
ZWJDb3JlL0tleWVkQ29kaW5nLmNwcAotICAgICAgICBUZXN0cy9XZWJDb3JlL0xheW91dFVuaXQu
Y3BwCisgICAgICAgIFRlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdFRlc3RzLmNwcAogICAgICAgICBU
ZXN0cy9XZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUv
UGFyc2VkQ29udGVudFJhbmdlLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL1B1YmxpY1N1ZmZp
eC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI3MWU1MTA4ZDYyOWE3YTFlZDk1ODc4
OTY5YTUzODFlM2FkYjllMS4uZDU0YjdkOWVhNDQzMmE3MTFkNmI3MDZjNGRmMDllMDVhN2I5ZGYw
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4OCw3ICsxODgsNyBAQAogCQkzMTI4QTgx
MzIzNzYzRkFDMDBEOTBENDAgLyogbGluay13aXRoLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOEE4MTIyMzc2M0YwQjAw
RDkwRDQwIC8qIGxpbmstd2l0aC1pbWFnZS5odG1sICovOyB9OwogCQkzMTI4QTgxNTIzNzY0MTMz
MDBEOTBENDAgLyogaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4QTgxNDIzNzY0MEZEMDBEOTBENDAgLyogaW1hZ2UuaHRt
bCAqLzsgfTsKIAkJMzEzQzNBMDIyMUU1NjdDMzAwREJBODZFIC8qIFN5c3RlbVByZXZpZXdCbG9i
TmFtaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEzQzNBMDEyMUU1Njc3QTAwREJBODZFIC8qIFN5c3RlbVByZXZpZXdCbG9iTmFt
aW5nLmh0bWwgKi87IH07Ci0JCTMxNTExODEwMURCMUFFNDAwMDE3NjMwNCAvKiBFeHRlbmRlZENv
bG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
NTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBFeHRlbmRlZENvbG9yLmNwcCAqLzsgfTsKKwkJMzE1
MTE4MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3JUZXN0cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTUxMTgwRjFEQjFBREQ1MDAx
NzYzMDQgLyogRXh0ZW5kZWRDb2xvclRlc3RzLmNwcCAqLzsgfTsKIAkJMzFCNzZFNDMyMzI5OEUy
QzAwN0ZFRDJDIC8qIFN5c3RlbVByZXZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUI3NkU0MjIzMjk4RTJCMDA3RkVEMkMgLyogU3lzdGVtUHJl
dmlldy5tbSAqLzsgfTsKIAkJMzFCNzZFNDUyMzI5OUJEQzAwN0ZFRDJDIC8qIHN5c3RlbS1wcmV2
aWV3LXRyaWdnZXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUI3NkU0NDIzMjk5QkEzMDA3RkVEMkMgLyogc3lzdGVtLXByZXZpZXct
dHJpZ2dlci5odG1sICovOyB9OwogCQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VN
b3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVy
Q3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTUwNSwxMiArNTA1LDEyIEBACiAJCTdBODlCQjY3
MjMzMTY0MzIwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTg5QkI2NTIzMzE2MzVEMDA0MkNCMUUg
LyogQnVuZGxlRm9ybURlbGVnYXRlLm1tICovOyB9OwogCQk3QTg5QkI2ODIzMzE2NDNBMDA0MkNC
MUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E4OUJCNjYyMzMxNjM1RDAwNDJDQjFFIC8qIEJ1bmRs
ZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbSAqLzsgfTsKIAkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4
IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTkwOUE2RjFEODc3NDc1MDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3Jt
LmNwcCAqLzsgfTsKLQkJN0E5MDlBN0UxRDg3NzQ4MDAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MDlBNzAx
RDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3BwICovOyB9OwotCQk3QTkwOUE3RjFEODc3
NDgwMDA3RTEwRjggLyogRmxvYXRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTA5QTcxMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3Qu
Y3BwICovOyB9OwotCQk3QTkwOUE4MDFEODc3NDgwMDA3RTEwRjggLyogRmxvYXRTaXplLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTA5QTcyMUQ4
Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFNpemUuY3BwICovOyB9OwotCQk3QTkwOUE4MTFEODc3NDgw
MDA3RTEwRjggLyogSW50UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E5MDlBNzMxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFBvaW50LmNwcCAq
LzsgfTsKLQkJN0E5MDlBODIxRDg3NzQ4MDAwN0UxMEY4IC8qIEludFJlY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MDlBNzQxRDg3NzQ3NTAw
N0UxMEY4IC8qIEludFJlY3QuY3BwICovOyB9OwotCQk3QTkwOUE4MzFEODc3NDgwMDA3RTEwRjgg
LyogSW50U2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QTkwOUE3NTFEODc3NDc1MDA3RTEwRjggLyogSW50U2l6ZS5jcHAgKi87IH07CisJCTdB
OTA5QTdFMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFBvaW50VGVzdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MDlBNzAxRDg3NzQ3NTAwN0Ux
MEY4IC8qIEZsb2F0UG9pbnRUZXN0cy5jcHAgKi87IH07CisJCTdBOTA5QTdGMUQ4Nzc0ODAwMDdF
MTBGOCAvKiBGbG9hdFJlY3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTkwOUE3MTFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRSZWN0VGVz
dHMuY3BwICovOyB9OworCQk3QTkwOUE4MDFEODc3NDgwMDA3RTEwRjggLyogRmxvYXRTaXplVGVz
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5
MDlBNzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZVRlc3RzLmNwcCAqLzsgfTsKKwkJN0E5
MDlBODExRDg3NzQ4MDAwN0UxMEY4IC8qIEludFBvaW50VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MDlBNzMxRDg3NzQ3NTAwN0UxMEY4
IC8qIEludFBvaW50VGVzdHMuY3BwICovOyB9OworCQk3QTkwOUE4MjFEODc3NDgwMDA3RTEwRjgg
LyogSW50UmVjdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBOTA5QTc0MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRSZWN0VGVzdHMuY3BwICov
OyB9OworCQk3QTkwOUE4MzFEODc3NDgwMDA3RTEwRjggLyogSW50U2l6ZVRlc3RzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTA5QTc1MUQ4Nzc0
NzUwMDdFMTBGOCAvKiBJbnRTaXplVGVzdHMuY3BwICovOyB9OwogCQk3QTk1QkRFMTFFOUJFQzVG
MDA4NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTVCREUwMUU5QkVDNDAwMDg2NTQ5OCAv
KiBJbmplY3RlZEJ1bmRsZUFwcGxlRXZlbnQuY3BwICovOyB9OwogCQk3QTk1QkRFMjFFOUJFQzc0
MDA4NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTk1QkRERjFFOUJFQzQwMDA4
NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTdB
QzdCNTZEMjBEOTc2OUYwMDJDMDlBMCAvKiBDdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUM3QjU2QzIwRDk3NjhG
MDAyQzA5QTAgLyogQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tICovOyB9OwpAQCAtNTIyLDcgKzUy
Miw3IEBACiAJCTdBRUFENDdGMUUyMDExNkMwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVT
Y2hlbWVBY2Nlc3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUVBRDQ3QzFFMjAxMTM4MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1l
QWNjZXNzLm1tICovOyB9OwogCQk3QUVBRDQ4MTFFMjAxMjI3MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0
aXRpb25GaWxlU2NoZW1lQWNjZXNzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFQUQ0N0QxRTIwMTE0RTAwNDE2RUZFIC8qIENyb3Nz
UGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sICovOyB9OwogCQk3QzFBRjc5NTFFOERDQkFC
MDAyNjQ1QjkgLyogUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUFGNzkzMUU4RENCQUIwMDI2NDVCOSAvKiBQ
cmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tICovOyB9OwotCQk3QzM5NjUwNjFDREQ3NEY5MDA5NERC
QjggLyogQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLzsgfTsKKwkJN0Mz
OTY1MDYxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8q
IENvbG9yVGVzdHMuY3BwICovOyB9OwogCQk3QzNEQjhFNDFEMTIxMjlCMDBBRThDQzMgLyogQ29t
bWFuZEJhY2tGb3J3YXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5t
bSAqLzsgfTsKIAkJN0M0MTdGMzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHRO
YXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzQxN0YzMTFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5h
dmlnYXRpb25EZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJN0M0ODZCQTExQUExMjU2NzAwM0Y2RjlCIC8q
IGJ1bmRsZS1maWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M0ODZCQTAxQUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0
bWwgKi87IH07CkBAIC02NjEsNyArNjYxLDcgQEAKIAkJN0NDRTdFREIxQTQxMUE5MjAwNDQ3QzRD
IC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsK
IAkJN0NDRTdFREMxQTQxMUE5MjAwNDQ3QzRDIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNzIwRTUxOEYxQTBF
ODAwQTg0OEUxIC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovOyB9OwogCQk3Q0NFN0VERDFBNDEx
QTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyQzcxNDE3OTcwODlEMDBFNjI3RkIgLyogVGltZVJhbmdl
cy5jcHAgKi87IH07Ci0JCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRVbml0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDY0MDEy
MTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0LmNwcCAqLzsgfTsKKwkJN0NDRTdFREYxQTQx
MUE5MjAwNDQ3QzRDIC8qIExheW91dFVuaXRUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5
b3V0VW5pdFRlc3RzLmNwcCAqLzsgfTsKIAkJN0NDRTdFRTAxQTQxMUE5QTAwNDQ3QzRDIC8qIEVk
aXRvckNvbW1hbmRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNBQTQ4NTcxNEEwNDRENDAwODhGQUM0IC8qIEVkaXRvckNvbW1hbmRzLm1tICovOyB9
OwogCQk3Q0NFN0VFMTFBNDExQTlBMDA0NDdDNEMgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBDNUQzQkMx
NDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSAqLzsgfTsKIAkJN0ND
RTdFRTIxQTQxMUE5QTAwNDQ3QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2gu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRjk5
NDgxN0EwOUY1MzAwOTk4RUYwIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3Bw
ICovOyB9OwpAQCAtMTY1Miw3ICsxNjUyLDcgQEAKIAkJMTFCN0ZEMjEyMTlGNDZERDAwNjlCMjdG
IC8qIEZpcnN0TWVhbmluZ2Z1bFBhaW50TWlsZXN0b25lX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaXJzdE1lYW5pbmdmdWxQYWludE1pbGVzdG9uZV9C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUI3RkQyMjIxOUY0NkRE
MDA2OUIyN0YgLyogRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlyc3RNZWFuaW5nZnVsUGFpbnRNaWxlc3RvbmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUMyNTk4QzIxRkE2MThEMDA0QzlF
MjMgLyogYXN5bmMtc2NyaXB0LWxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJhc3luYy1zY3JpcHQtbG9hZC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0VGVzdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VW5pdFRlc3Rz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RDQwRUMyMjFCNDZBNzAwNEI0
NzRGIC8qIFVVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJ
RC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RjNCMTEyMTVFNDVFQUIwMDIx
MDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAv
KiBmaW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBmaW5kLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA0LDcgKzE4MDQsNyBAQAogCQkzMTI4QTgxMjIz
NzYzRjBCMDBEOTBENDAgLyogbGluay13aXRoLWltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13
aXRoLWltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4QTgxNDIz
NzY0MEZEMDBEOTBENDAgLyogaW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGltYWdlLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxM0MzQTAxMjFFNTY3N0EwMERCQTg2RSAvKiBTeXN0
ZW1QcmV2aWV3QmxvYk5hbWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gU3lz
dGVtUHJldmlld0Jsb2JOYW1pbmcuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5kZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxNTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBFeHRlbmRlZENv
bG9yVGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5k
ZWRDb2xvclRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFCNzZFNDIy
MzI5OEUyQjAwN0ZFRDJDIC8qIFN5c3RlbVByZXZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1QcmV2aWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMUI3NkU0NDIzMjk5QkEzMDA3RkVEMkMgLyogc3lzdGVtLXByZXZpZXctdHJp
Z2dlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gInN5c3RlbS1wcmV2aWV3LXRyaWdnZXIuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2
ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJldmVudEVtcHR5VXNlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxOTAsMTIgKzIxOTAsMTIgQEAKIAkJN0E4OUJCNjYyMzMxNjM1RDAwNDJDQjFFIC8qIEJ1
bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEJ1bmRsZUZvcm1EZWxlZ2F0ZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0E4OUJCNjkyMzMxNjU2NTAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxlZ2F0
ZVByb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZUZvcm1EZWxlZ2F0ZVByb3RvY29sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTA5QTZGMUQ4Nzc0NzUwMDdFMTBGOCAv
KiBBZmZpbmVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0E5
MDlBNzAxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdBOTA5QTcxMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRSZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0E5MDlBNzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QTkwOUE3MzFEODc3NDc1MDA3RTEwRjgg
LyogSW50UG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QTkwOUE3NDFEODc3NDc1
MDA3RTEwRjggLyogSW50UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0E5MDlBNzUx
RDg3NzQ3NTAwN0UxMEY4IC8qIEludFNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdB
OTA5QTcwMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFBvaW50VGVzdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRQb2ludFRlc3RzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVj
dFRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UmVj
dFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5MDlBNzIxRDg3NzQ3
NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZVRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZsb2F0U2l6ZVRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0E5MDlBNzMxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFBvaW50VGVzdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UG9pbnRUZXN0cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOTA5QTc0MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRS
ZWN0VGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVj
dFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5MDlBNzUxRDg3NzQ3
NTAwN0UxMEY4IC8qIEludFNpemVUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRTaXplVGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QTk1QkRERjFFOUJFQzQwMDA4NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50X0J1
bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZUFwcGxlRXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E5NUJERTAxRTlCRUM0MDAwODY1NDk4IC8qIEluamVjdGVkQnVuZGxlQXBwbGVFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUFwcGxl
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTk5RDk5MzFBRDRBMjlE
MDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTEsNyArMjIxMSw3IEBACiAJCTdBRUFENDdDMUUy
MDExMzgwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDcm9zc1BhcnRpdGlvbkZpbGVTY2hl
bWVBY2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUFENDdEMUUyMDEx
NEUwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgbmFtZSA9IENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1s
OyBwYXRoID0gVGVzdHMvbWFjL0Nyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdDMUFGNzkzMUU4RENCQUIwMDI2NDVCOSAv
KiBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yVGVzdHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JUZXN0cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0RCOEUyMUQxMjEyOUIwMEFFOENDMyAvKiBD
b21tYW5kQmFja0ZvcndhcmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBDb21tYW5kQmFja0ZvcndhcmQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNDE3RjMxMUQxOUUxNDgwMEI4RUY1MyAvKiBXS1dlYlZpZXdEZWZhdWx0TmF2aWdhdGlvbkRl
bGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M0ODZCQTAxQUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiYnVuZGxlLWZpbGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MzAzLDcgKzMzMDMsNyBAQAogCQkJCTU3MzAzQkMyMjAwNzFFMjIwMDM1NTk2NSAvKiBDQk9SUmVh
ZGVyVGVzdC5jcHAgKi8sCiAJCQkJNTczMDNCQUMyMDA2QzU2MDAwMzU1OTY1IC8qIENCT1JWYWx1
ZVRlc3QuY3BwICovLAogCQkJCTU3MzAzQkFCMjAwNkM1NTQwMDM1NTk2NSAvKiBDQk9SV3JpdGVy
VGVzdC5jcHAgKi8sCi0JCQkJN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAq
LywKKwkJCQk3QzM5NjUwNTFDREQ3NEY5MDA5NERCQjggLyogQ29sb3JUZXN0cy5jcHAgKi8sCiAJ
CQkJMUM5RUI4NDAxRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAg
Ki8sCiAJCQkJN0NCMTg0QzQxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNw
cCAqLywKIAkJCQlDRDU0NTFFOTE5RTQxRjlEMDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLywK
QEAgLTMzMTQsMjQgKzMzMTQsMjQgQEAKIAkJCQkyNjBCQTU3ODFCMUQyRTdCMDA0RkEwN0MgLyog
REZBQ29tYmluZXIuY3BwICovLAogCQkJCTI2MEJBNTdBMUIxRDJFRTIwMDRGQTA3QyAvKiBERkFI
ZWxwZXJzLmggKi8sCiAJCQkJMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXpl
ci5jcHAgKi8sCi0JCQkJMzE1MTE4MEYxREIxQURENTAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3Iu
Y3BwICovLAorCQkJCTMxNTExODBGMURCMUFERDUwMDE3NjMwNCAvKiBFeHRlbmRlZENvbG9yVGVz
dHMuY3BwICovLAogCQkJCTU3OTY1MUU2MjE2QkZENTMwMDZFQkZFNSAvKiBGaWRvSGlkTWVzc2Fn
ZVRlc3QuY3BwICovLAogCQkJCTU3MkI0MDM1MjE3NkEwMjkwMDBBRDQzRSAvKiBGaWRvVGVzdERh
dGEuaCAqLywKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3Bw
ICovLAotCQkJCTdBOTA5QTcwMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFBvaW50LmNwcCAqLywK
LQkJCQk3QTkwOUE3MTFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRSZWN0LmNwcCAqLywKLQkJCQk3
QTkwOUE3MjFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRTaXplLmNwcCAqLywKKwkJCQk3QTkwOUE3
MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludFRlc3RzLmNwcCAqLywKKwkJCQk3QTkwOUE3
MTFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRSZWN0VGVzdHMuY3BwICovLAorCQkJCTdBOTA5QTcy
MUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFNpemVUZXN0cy5jcHAgKi8sCiAJCQkJOEU0QTg1MzYx
RTFEMUFBMTAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAgKi8sCiAJCQkJODNCODhBMzMxQzgw
MDU2RDAwQkIyNDE4IC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovLAogCQkJCTVDQTFERUM3MUY3
MUY0MDcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICovLAogCQkJCTQ2RkEyRkVEMjM4
NDZDOUEwMDBDQ0IwQyAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLywKIAkJCQk2QjlBQkUxMTIwODY5
NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3BwICovLAotCQkJCTdBOTA5QTczMUQ4Nzc0NzUw
MDdFMTBGOCAvKiBJbnRQb2ludC5jcHAgKi8sCi0JCQkJN0E5MDlBNzQxRDg3NzQ3NTAwN0UxMEY4
IC8qIEludFJlY3QuY3BwICovLAotCQkJCTdBOTA5QTc1MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRT
aXplLmNwcCAqLywKKwkJCQk3QTkwOUE3MzFEODc3NDc1MDA3RTEwRjggLyogSW50UG9pbnRUZXN0
cy5jcHAgKi8sCisJCQkJN0E5MDlBNzQxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFJlY3RUZXN0cy5j
cHAgKi8sCisJCQkJN0E5MDlBNzUxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFNpemVUZXN0cy5jcHAg
Ki8sCiAJCQkJQ0Q1RkY0OTYyMTYyRTI3RTAwNEJEODZGIC8qIElTT0JveC5jcHAgKi8sCiAJCQkJ
Mjc4RTNFMTgyM0NEODJGQTAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLywKLQkJCQkxNDQ2
NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCisJCQkJMTQ0NjQwMTIx
NjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXRUZXN0cy5jcHAgKi8sCiAJCQkJNkJGNEE2ODIy
MzlFRDRDRDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNwcCAqLywKIAkJCQkwNzZFNTA3RTFG
NDUwMzFFMDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJQ0UxODY2NDcxRjcyRThGMTAw
QTBDQUI2IC8qIE1hcmtlZFRleHQuY3BwICovLApAQCAtNDgzMCw3ICs0ODMwLDcgQEAKIAkJCQlD
REYwQjc4QTIxNkQ0OERDMDA0MjFFQ0MgLyogQ2xvc2VXZWJWaWV3RHVyaW5nRW50ZXJGdWxsc2Ny
ZWVuLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNkIzMDYxMDYyMThBMzcyOTAwRjVBODAyIC8qIENs
b3NpbmdXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkExRDBBNjRGQjAwRkVC
Q0YzIC8qIENvZGluZy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDMzk2NTA2MUNERDc0RjkwMDk0
REJCOCAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzM5NjUwNjFDREQ3NEY5MDA5
NERCQjggLyogQ29sb3JUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNEQjhFNDFEMTIx
MjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUM5RUI4NDExRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1QzRBODQ5NTFGN0VFRkZDMDBBQ0ZDNTQgLyogQ29uZmlndXJhdGlv
bi5tbSBpbiBTb3VyY2VzICovLApAQCAtNDkxMSw3ICs0OTExLDcgQEAKIAkJCQk1Qzc5NjQxMDFF
QjAyNzhEMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBMjlCMjkyMEZEMkE5OTAwRjE1Q0VEIC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFEMTJCRUMwMjQ1QkVGODUwMDRDMEI3QSAvKiBFeGl0UGlQT25T
dXNwZW5kVmlkZW9FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE1MTE4MTAxREIxQUU0
MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE1MTE4
MTAxREIxQUU0MDAwMTc2MzA0IC8qIEV4dGVuZGVkQ29sb3JUZXN0cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VGMTFBNDExQUU2MDA0NDdDNEMgLyogRmFpbGVkTG9hZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1Nzk2NTFFNzIxNkJGREVEMDA2RUJGRTUgLyogRmlkb0hpZE1lc3NhZ2VU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMzJENzRBMUYwMjE1MTUwMDE2MkM0NCAvKiBG
aWxlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ5MjQsOSArNDkyNCw5IEBACiAJCQkJ
QzlFNkREMzUxRUE5N0QwODAwREQ3OEFBIC8qIEZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxMTgxNTM0ODIyMDhCQURGMDBCMkNDRDIgLyogRmlyc3RWaXN1
YWxseU5vbkVtcHR5TWlsZXN0b25lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkMxRDBB
NjUwNzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdB
OTA5QTdFMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTdBOTA5QTdGMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFJlY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJN0E5MDlBODAxRDg3NzQ4MDAwN0UxMEY4IC8qIEZsb2F0U2l6ZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk3QTkwOUE3RTFEODc3NDgwMDA3RTEwRjggLyogRmxvYXRQb2ludFRlc3Rz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBOTA5QTdGMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9h
dFJlY3RUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTkwOUE4MDFEODc3NDgwMDA3RTEw
RjggLyogRmxvYXRTaXplVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRCQzBCMTQyMTQ2
Qzg0OTAwMkEwNDc4IC8qIEZvY3VzUHJlc2VydmF0aW9uVGVzdHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRTkyQjhGQTIxNjRBMEMxMDA1QjY0RjAgLyogRm9udEF0dHJpYnV0ZXMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGNDU2QUIxQzIxM0VEQkEzMDBDQjJDRUYgLyogRm9udE1hbmFnZXJUZXN0
cy5tbSBpbiBTb3VyY2VzICovLApAQCAtNDk4NSw5ICs0OTg1LDkgQEAKIAkJCQlGNDRBNTMxMTIx
Qjg5OTAzMDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RURBMUE0MTFBODcwMDQ0N0M0QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRCMDIzMkYxRTRFODcxODAwNzA3MTIzIC8qIEludGVy
YWN0aW9uRGVhZGxvY2tBZnRlckNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJN0E5MDlBODEx
RDg3NzQ4MDAwN0UxMEY4IC8qIEludFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdBOTA5
QTgyMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdB
OTA5QTgzMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRTaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdBOTA5QTgxMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRQb2ludFRlc3RzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdBOTA5QTgyMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRSZWN0VGVzdHMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0E5MDlBODMxRDg3NzQ4MDAwN0UxMEY4IC8qIEludFNpemVUZXN0
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExNkUxMzIzRTBDQjNBMDAyMDg5MDAgLyogaU9T
TW91c2VTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwQkY4OTMxREQ1OTlCRDAwQjAw
MzI4IC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RDVGRjQ5RjIxNjJFOTQzMDA0QkQ4NkYgLyogSVNPQm94LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTAwMCw3ICs1MDAwLDcgQEAKIAkJCQlGNDVFMTU3MzIxMTJDRTI5MDAzMDdFODIgLyogS2V5Ym9h
cmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc4RTNFMTkyM0NEODQyRjAw
NUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA2MUE0
MTFBRTYwMDQ0N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENvbnRlbnRJbkZyYW1lLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBMYXlvdXRV
bml0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBM
YXlvdXRVbml0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRCRkE2OEUxRTRBRDA4MDAw
MTU0Mjk4IC8qIExlZ2FjeURyYWdBbmREcm9wVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
QTdCMEU3RjFFQUZFNEMzMDA2QUI4QUUgLyogTGltaXRUaXRsZVNpemUubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDMjVDQ0EwNjFFNTEzODBCMDAyNkNCOEEgLyogTGluZUJyZWFraW5nLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29sb3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzExMDVlMDMyN2NmZTVkMDQwYzVkZDA2YjQ5
NTkyYzBlZDQxZjBiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3IuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xv
ci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewotCi1URVNUKENvbG9yLCBSR0JUb0hTVl9XaGl0ZSkKLXsKLSAgICBDb2xvciBjb2xvciA9
IENvbG9yOjp3aGl0ZTsKLSAgICAKLSAgICBkb3VibGUgaCA9IDA7Ci0gICAgZG91YmxlIHMgPSAw
OwotICAgIGRvdWJsZSB2ID0gMDsKLSAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7Ci0KLSAgICBF
WFBFQ1RfRE9VQkxFX0VRKDAsIGgpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgcyk7Ci0gICAg
RVhQRUNUX0RPVUJMRV9FUSgxLCB2KTsKLX0KLQotVEVTVChDb2xvciwgUkdCVG9IU1ZfQmxhY2sp
Ci17Ci0gICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgCi0gICAgZG91YmxlIGgg
PSAwOwotICAgIGRvdWJsZSBzID0gMDsKLSAgICBkb3VibGUgdiA9IDA7Ci0gICAgY29sb3IuZ2V0
SFNWKGgsIHMsIHYpOwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBoKTsKLSAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDAsIHMpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgdik7Ci19Ci0KLVRFU1Qo
Q29sb3IsIFJHQlRvSFNWX1JlZCkKLXsKLSAgICBDb2xvciBjb2xvcigyNTUsIDAsIDApOwotICAg
IAotICAgIGRvdWJsZSBoID0gMDsKLSAgICBkb3VibGUgcyA9IDA7Ci0gICAgZG91YmxlIHYgPSAw
OwotICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsKLQotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwg
aCk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBzKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEs
IHYpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTVl9HcmVlbikKLXsKLSAgICBDb2xvciBjb2xv
cigwLCAyNTUsIDApOwotICAgIAotICAgIGRvdWJsZSBoID0gMDsKLSAgICBkb3VibGUgcyA9IDA7
Ci0gICAgZG91YmxlIHYgPSAwOwotICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsKLQotICAgIEVY
UEVDVF9ET1VCTEVfRVEoMC4zMzMzMzMzMzMzMzMzMzMzMSwgaCk7Ci0gICAgRVhQRUNUX0RPVUJM
RV9FUSgxLCBzKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHYpOwotfQotCi1URVNUKENvbG9y
LCBSR0JUb0hTVl9CbHVlKQotewotICAgIENvbG9yIGNvbG9yKDAsIDAsIDI1NSk7Ci0gICAgCi0g
ICAgZG91YmxlIGggPSAwOwotICAgIGRvdWJsZSBzID0gMDsKLSAgICBkb3VibGUgdiA9IDA7Ci0g
ICAgY29sb3IuZ2V0SFNWKGgsIHMsIHYpOwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjY2NjY2
NjY2NjY2NjY2NjYzLCBoKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHMpOwotICAgIEVYUEVD
VF9ET1VCTEVfRVEoMSwgdik7Ci19Ci0KLVRFU1QoQ29sb3IsIFJHQlRvSFNWX0RhcmtHcmF5KQot
ewotICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmRhcmtHcmF5OwotICAgIAotICAgIGRvdWJsZSBo
ID0gMDsKLSAgICBkb3VibGUgcyA9IDA7Ci0gICAgZG91YmxlIHYgPSAwOwotICAgIGNvbG9yLmdl
dEhTVihoLCBzLCB2KTsKLQotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7Ci0gICAgRVhQRUNU
X0RPVUJMRV9FUSgwLCBzKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNTAxOTYwNzg0MzEzNzI1
NDgsIHYpOwotfQotCi1URVNUKENvbG9yLCBSR0JUb0hTVl9HcmF5KQotewotICAgIENvbG9yIGNv
bG9yID0gQ29sb3I6OmdyYXk7Ci0gICAgCi0gICAgZG91YmxlIGggPSAwOwotICAgIGRvdWJsZSBz
ID0gMDsKLSAgICBkb3VibGUgdiA9IDA7Ci0gICAgY29sb3IuZ2V0SFNWKGgsIHMsIHYpOwotCi0g
ICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBoKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHMpOwot
ICAgIEVYUEVDVF9ET1VCTEVfRVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwgdik7Ci19Ci0KLVRFU1Qo
Q29sb3IsIFJHQlRvSFNWX0xpZ2h0R3JheSkKLXsKLSAgICBDb2xvciBjb2xvciA9IENvbG9yOjps
aWdodEdyYXk7Ci0gICAgCi0gICAgZG91YmxlIGggPSAwOwotICAgIGRvdWJsZSBzID0gMDsKLSAg
ICBkb3VibGUgdiA9IDA7Ci0gICAgY29sb3IuZ2V0SFNWKGgsIHMsIHYpOwotCi0gICAgRVhQRUNU
X0RPVUJMRV9FUSgwLCBoKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHMpOwotICAgIEVYUEVD
VF9ET1VCTEVfRVEoMC43NTI5NDExNzY0NzA1ODgyMiwgdik7Ci19Ci0KLVRFU1QoQ29sb3IsIFJH
QlRvSFNMX1doaXRlKQotewotICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OndoaXRlOwotCi0gICAg
ZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUs
IHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0KLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7
Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBzYXR1cmF0aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxF
X0VRKDEsIGxpZ2h0bmVzcyk7Ci19Ci0KLVRFU1QoQ29sb3IsIFJHQlRvSFNMX0JsYWNrKQotewot
ICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmJsYWNrOwotCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJh
dGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0
bmVzcyk7Ci0KLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJM
RV9FUSgwLCBzYXR1cmF0aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGxpZ2h0bmVzcyk7
Ci19Ci0KLVRFU1QoQ29sb3IsIFJHQlRvSFNMX1JlZCkKLXsKLSAgICBDb2xvciBjb2xvcigyNTUs
IDAsIDApOwotCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNv
bG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0KLSAgICBFWFBFQ1RfRE9V
QkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBzYXR1cmF0aW9uKTsKLSAg
ICBFWFBFQ1RfRE9VQkxFX0VRKDAuNSwgbGlnaHRuZXNzKTsKLX0KLQotVEVTVChDb2xvciwgUkdC
VG9IU0xfR3JlZW4pCi17Ci0gICAgQ29sb3IgY29sb3IoMCwgMjU1LCAwKTsKLQotICAgIGRvdWJs
ZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1
cmF0aW9uLCBsaWdodG5lc3MpOwotCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgyLCBodWUpOwotICAg
IEVYUEVDVF9ET1VCTEVfRVEoMSwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgw
LjUsIGxpZ2h0bmVzcyk7Ci19Ci0KLVRFU1QoQ29sb3IsIFJHQlRvSFNMX0JsdWUpCi17Ci0gICAg
Q29sb3IgY29sb3IoMCwgMCwgMjU1KTsKLQotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxp
Z2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwot
Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSg0LCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwg
c2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUsIGxpZ2h0bmVzcyk7Ci19Ci0K
LVRFU1QoQ29sb3IsIFJHQlRvSFNMX0RhcmtHcmF5KQotewotICAgIENvbG9yIGNvbG9yID0gQ29s
b3I6OmRhcmtHcmF5OwotCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwot
ICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0KLSAgICBFWFBF
Q1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBzYXR1cmF0aW9u
KTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNTAxOTYwNzg0MzEzNzI1NDgsIGxpZ2h0bmVzcyk7
Ci19Ci0KLVRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyYXkpCi17Ci0gICAgQ29sb3IgY29sb3IgPSBD
b2xvcjo6Z3JheTsKLQotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAg
ICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwotCi0gICAgRVhQRUNU
X0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7
Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjYyNzQ1MDk4MDM5MjE1Njg1LCBsaWdodG5lc3MpOwot
fQotCi1URVNUKENvbG9yLCBSR0JUb0hTTF9MaWdodEdyYXkpCi17Ci0gICAgQ29sb3IgY29sb3Ig
PSBDb2xvcjo6bGlnaHRHcmF5OwotCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRu
ZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0KLSAg
ICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBzYXR1
cmF0aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNzUyOTQxMTc2NDcwNTg4MjIsIGxpZ2h0
bmVzcyk7Ci19Ci0KLVRFU1QoQ29sb3IsIFZhbGlkaXR5KQotewotICAgIENvbG9yIGludmFsaWRD
b2xvcjsKLSAgICBFWFBFQ1RfRkFMU0UoaW52YWxpZENvbG9yLmlzVmFsaWQoKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKGludmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwotCi0gICAgQ29sb3Igb3RoZXJJ
bnZhbGlkQ29sb3IgPSBpbnZhbGlkQ29sb3I7Ci0gICAgRVhQRUNUX0ZBTFNFKG90aGVySW52YWxp
ZENvbG9yLmlzVmFsaWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG90aGVySW52YWxpZENvbG9yLmlz
RXh0ZW5kZWQoKSk7Ci0KLSAgICBDb2xvciB2YWxpZENvbG9yKDI1NSwgMCwgMCk7Ci0gICAgRVhQ
RUNUX1RSVUUodmFsaWRDb2xvci5pc1ZhbGlkKCkpOwotICAgIEVYUEVDVF9GQUxTRSh2YWxpZENv
bG9yLmlzRXh0ZW5kZWQoKSk7Ci0KLSAgICBDb2xvciBvdGhlclZhbGlkQ29sb3IgPSB2YWxpZENv
bG9yOwotICAgIEVYUEVDVF9UUlVFKG90aGVyVmFsaWRDb2xvci5pc1ZhbGlkKCkpOwotICAgIEVY
UEVDVF9GQUxTRShvdGhlclZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKLQotICAgIHZhbGlkQ29s
b3IgPSBDb2xvcigxLCAyLCAzLCA0KTsKLSAgICBFWFBFQ1RfVFJVRSh2YWxpZENvbG9yLmlzVmFs
aWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKLSAgICBF
WFBFQ1RfRVEodmFsaWRDb2xvci5yZWQoKSwgMSk7Ci0gICAgRVhQRUNUX0VRKHZhbGlkQ29sb3Iu
Z3JlZW4oKSwgMik7Ci0gICAgRVhQRUNUX0VRKHZhbGlkQ29sb3IuYmx1ZSgpLCAzKTsKLSAgICBF
WFBFQ1RfRVEodmFsaWRDb2xvci5hbHBoYSgpLCA0KTsKLQotICAgIENvbG9yIHlldEFub3RoZXJW
YWxpZENvbG9yKFdURk1vdmUodmFsaWRDb2xvcikpOwotICAgIEVYUEVDVF9UUlVFKHlldEFub3Ro
ZXJWYWxpZENvbG9yLmlzVmFsaWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHlldEFub3RoZXJWYWxp
ZENvbG9yLmlzRXh0ZW5kZWQoKSk7Ci0gICAgRVhQRUNUX0VRKHlldEFub3RoZXJWYWxpZENvbG9y
LnJlZCgpLCAxKTsKLSAgICBFWFBFQ1RfRVEoeWV0QW5vdGhlclZhbGlkQ29sb3IuZ3JlZW4oKSwg
Mik7Ci0gICAgRVhQRUNUX0VRKHlldEFub3RoZXJWYWxpZENvbG9yLmJsdWUoKSwgMyk7Ci0gICAg
RVhQRUNUX0VRKHlldEFub3RoZXJWYWxpZENvbG9yLmFscGhhKCksIDQpOwotCi0gICAgb3RoZXJW
YWxpZENvbG9yID0gV1RGTW92ZSh5ZXRBbm90aGVyVmFsaWRDb2xvcik7Ci0gICAgRVhQRUNUX1RS
VUUob3RoZXJWYWxpZENvbG9yLmlzVmFsaWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG90aGVyVmFs
aWRDb2xvci5pc0V4dGVuZGVkKCkpOwotICAgIEVYUEVDVF9FUShvdGhlclZhbGlkQ29sb3IucmVk
KCksIDEpOwotICAgIEVYUEVDVF9FUShvdGhlclZhbGlkQ29sb3IuZ3JlZW4oKSwgMik7Ci0gICAg
RVhQRUNUX0VRKG90aGVyVmFsaWRDb2xvci5ibHVlKCksIDMpOwotICAgIEVYUEVDVF9FUShvdGhl
clZhbGlkQ29sb3IuYWxwaGEoKSwgNCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRl
c3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMTEwNWUwMzI3Y2ZlNWQwNDBjNWRkMDZiNDk1OTJjMGVkNDFmMGJlCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9y
VGVzdHMuY3BwCkBAIC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyLCAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworVEVTVChDb2xvciwgUkdCVG9IU1ZfV2hpdGUpCit7CisgICAgQ29sb3IgY29s
b3IgPSBDb2xvcjo6d2hpdGU7CisgICAgCisgICAgZG91YmxlIGggPSAwOworICAgIGRvdWJsZSBz
ID0gMDsKKyAgICBkb3VibGUgdiA9IDA7CisgICAgY29sb3IuZ2V0SFNWKGgsIHMsIHYpOworCisg
ICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBoKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHMpOwor
ICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgdik7Cit9CisKK1RFU1QoQ29sb3IsIFJHQlRvSFNWX0Js
YWNrKQoreworICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmJsYWNrOworICAgIAorICAgIGRvdWJs
ZSBoID0gMDsKKyAgICBkb3VibGUgcyA9IDA7CisgICAgZG91YmxlIHYgPSAwOworICAgIGNvbG9y
LmdldEhTVihoLCBzLCB2KTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7CisgICAgRVhQ
RUNUX0RPVUJMRV9FUSgwLCBzKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHYpOworfQorCitU
RVNUKENvbG9yLCBSR0JUb0hTVl9SZWQpCit7CisgICAgQ29sb3IgY29sb3IoMjU1LCAwLCAwKTsK
KyAgICAKKyAgICBkb3VibGUgaCA9IDA7CisgICAgZG91YmxlIHMgPSAwOworICAgIGRvdWJsZSB2
ID0gMDsKKyAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VR
KDAsIGgpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9F
USgxLCB2KTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU1ZfR3JlZW4pCit7CisgICAgQ29sb3Ig
Y29sb3IoMCwgMjU1LCAwKTsKKyAgICAKKyAgICBkb3VibGUgaCA9IDA7CisgICAgZG91YmxlIHMg
PSAwOworICAgIGRvdWJsZSB2ID0gMDsKKyAgICBjb2xvci5nZXRIU1YoaCwgcywgdik7CisKKyAg
ICBFWFBFQ1RfRE9VQkxFX0VRKDAuMzMzMzMzMzMzMzMzMzMzMzEsIGgpOworICAgIEVYUEVDVF9E
T1VCTEVfRVEoMSwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgxLCB2KTsKK30KKworVEVTVChD
b2xvciwgUkdCVG9IU1ZfQmx1ZSkKK3sKKyAgICBDb2xvciBjb2xvcigwLCAwLCAyNTUpOworICAg
IAorICAgIGRvdWJsZSBoID0gMDsKKyAgICBkb3VibGUgcyA9IDA7CisgICAgZG91YmxlIHYgPSAw
OworICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMC42
NjY2NjY2NjY2NjY2NjY2MywgaCk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBzKTsKKyAgICBF
WFBFQ1RfRE9VQkxFX0VRKDEsIHYpOworfQorCitURVNUKENvbG9yLCBSR0JUb0hTVl9EYXJrR3Jh
eSkKK3sKKyAgICBDb2xvciBjb2xvciA9IENvbG9yOjpkYXJrR3JheTsKKyAgICAKKyAgICBkb3Vi
bGUgaCA9IDA7CisgICAgZG91YmxlIHMgPSAwOworICAgIGRvdWJsZSB2ID0gMDsKKyAgICBjb2xv
ci5nZXRIU1YoaCwgcywgdik7CisKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGgpOworICAgIEVY
UEVDVF9ET1VCTEVfRVEoMCwgcyk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUwMTk2MDc4NDMx
MzcyNTQ4LCB2KTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU1ZfR3JheSkKK3sKKyAgICBDb2xv
ciBjb2xvciA9IENvbG9yOjpncmF5OworICAgIAorICAgIGRvdWJsZSBoID0gMDsKKyAgICBkb3Vi
bGUgcyA9IDA7CisgICAgZG91YmxlIHYgPSAwOworICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsK
KworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaCk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBz
KTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNjI3NDUwOTgwMzkyMTU2ODUsIHYpOworfQorCitU
RVNUKENvbG9yLCBSR0JUb0hTVl9MaWdodEdyYXkpCit7CisgICAgQ29sb3IgY29sb3IgPSBDb2xv
cjo6bGlnaHRHcmF5OworICAgIAorICAgIGRvdWJsZSBoID0gMDsKKyAgICBkb3VibGUgcyA9IDA7
CisgICAgZG91YmxlIHYgPSAwOworICAgIGNvbG9yLmdldEhTVihoLCBzLCB2KTsKKworICAgIEVY
UEVDVF9ET1VCTEVfRVEoMCwgaCk7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBzKTsKKyAgICBF
WFBFQ1RfRE9VQkxFX0VRKDAuNzUyOTQxMTc2NDcwNTg4MjIsIHYpOworfQorCitURVNUKENvbG9y
LCBSR0JUb0hTTF9XaGl0ZSkKK3sKKyAgICBDb2xvciBjb2xvciA9IENvbG9yOjp3aGl0ZTsKKwor
ICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKKyAgICBjb2xvci5nZXRIU0wo
aHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworCisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBo
dWUpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7CisgICAgRVhQRUNUX0RP
VUJMRV9FUSgxLCBsaWdodG5lc3MpOworfQorCitURVNUKENvbG9yLCBSR0JUb0hTTF9CbGFjaykK
K3sKKyAgICBDb2xvciBjb2xvciA9IENvbG9yOjpibGFjazsKKworICAgIGRvdWJsZSBodWUsIHNh
dHVyYXRpb24sIGxpZ2h0bmVzczsKKyAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3MpOworCisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOworICAgIEVYUEVDVF9E
T1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBsaWdodG5l
c3MpOworfQorCitURVNUKENvbG9yLCBSR0JUb0hTTF9SZWQpCit7CisgICAgQ29sb3IgY29sb3Io
MjU1LCAwLCAwKTsKKworICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKKyAg
ICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworCisgICAgRVhQRUNU
X0RPVUJMRV9FUSgwLCBodWUpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgc2F0dXJhdGlvbik7
CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUsIGxpZ2h0bmVzcyk7Cit9CisKK1RFU1QoQ29sb3Is
IFJHQlRvSFNMX0dyZWVuKQoreworICAgIENvbG9yIGNvbG9yKDAsIDI1NSwgMCk7CisKKyAgICBk
b3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwg
c2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoMiwgaHVlKTsK
KyAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9ET1VCTEVf
RVEoMC41LCBsaWdodG5lc3MpOworfQorCitURVNUKENvbG9yLCBSR0JUb0hTTF9CbHVlKQorewor
ICAgIENvbG9yIGNvbG9yKDAsIDAsIDI1NSk7CisKKyAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9u
LCBsaWdodG5lc3M7CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNz
KTsKKworICAgIEVYUEVDVF9ET1VCTEVfRVEoNCwgaHVlKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VR
KDEsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMC41LCBsaWdodG5lc3MpOwor
fQorCitURVNUKENvbG9yLCBSR0JUb0hTTF9EYXJrR3JheSkKK3sKKyAgICBDb2xvciBjb2xvciA9
IENvbG9yOjpkYXJrR3JheTsKKworICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVz
czsKKyAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworCisgICAg
RVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgc2F0dXJh
dGlvbik7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUwMTk2MDc4NDMxMzcyNTQ4LCBsaWdodG5l
c3MpOworfQorCitURVNUKENvbG9yLCBSR0JUb0hTTF9HcmF5KQoreworICAgIENvbG9yIGNvbG9y
ID0gQ29sb3I6OmdyYXk7CisKKyAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7
CisgICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKworICAgIEVY
UEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRp
b24pOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwgbGlnaHRuZXNz
KTsKK30KKworVEVTVChDb2xvciwgUkdCVG9IU0xfTGlnaHRHcmF5KQoreworICAgIENvbG9yIGNv
bG9yID0gQ29sb3I6OmxpZ2h0R3JheTsKKworICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxp
Z2h0bmVzczsKKyAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOwor
CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOworICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwg
c2F0dXJhdGlvbik7CisgICAgRVhQRUNUX0RPVUJMRV9FUSgwLjc1Mjk0MTE3NjQ3MDU4ODIyLCBs
aWdodG5lc3MpOworfQorCitURVNUKENvbG9yLCBWYWxpZGl0eSkKK3sKKyAgICBDb2xvciBpbnZh
bGlkQ29sb3I7CisgICAgRVhQRUNUX0ZBTFNFKGludmFsaWRDb2xvci5pc1ZhbGlkKCkpOworICAg
IEVYUEVDVF9GQUxTRShpbnZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9yIG90
aGVySW52YWxpZENvbG9yID0gaW52YWxpZENvbG9yOworICAgIEVYUEVDVF9GQUxTRShvdGhlcklu
dmFsaWRDb2xvci5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxTRShvdGhlckludmFsaWRDb2xv
ci5pc0V4dGVuZGVkKCkpOworCisgICAgQ29sb3IgdmFsaWRDb2xvcigyNTUsIDAsIDApOworICAg
IEVYUEVDVF9UUlVFKHZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodmFs
aWRDb2xvci5pc0V4dGVuZGVkKCkpOworCisgICAgQ29sb3Igb3RoZXJWYWxpZENvbG9yID0gdmFs
aWRDb2xvcjsKKyAgICBFWFBFQ1RfVFJVRShvdGhlclZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uob3RoZXJWYWxpZENvbG9yLmlzRXh0ZW5kZWQoKSk7CisKKyAgICB2YWxp
ZENvbG9yID0gQ29sb3IoMSwgMiwgMywgNCk7CisgICAgRVhQRUNUX1RSVUUodmFsaWRDb2xvci5p
c1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxTRSh2YWxpZENvbG9yLmlzRXh0ZW5kZWQoKSk7Cisg
ICAgRVhQRUNUX0VRKHZhbGlkQ29sb3IucmVkKCksIDEpOworICAgIEVYUEVDVF9FUSh2YWxpZENv
bG9yLmdyZWVuKCksIDIpOworICAgIEVYUEVDVF9FUSh2YWxpZENvbG9yLmJsdWUoKSwgMyk7Cisg
ICAgRVhQRUNUX0VRKHZhbGlkQ29sb3IuYWxwaGEoKSwgNCk7CisKKyAgICBDb2xvciB5ZXRBbm90
aGVyVmFsaWRDb2xvcihXVEZNb3ZlKHZhbGlkQ29sb3IpKTsKKyAgICBFWFBFQ1RfVFJVRSh5ZXRB
bm90aGVyVmFsaWRDb2xvci5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxTRSh5ZXRBbm90aGVy
VmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOworICAgIEVYUEVDVF9FUSh5ZXRBbm90aGVyVmFsaWRD
b2xvci5yZWQoKSwgMSk7CisgICAgRVhQRUNUX0VRKHlldEFub3RoZXJWYWxpZENvbG9yLmdyZWVu
KCksIDIpOworICAgIEVYUEVDVF9FUSh5ZXRBbm90aGVyVmFsaWRDb2xvci5ibHVlKCksIDMpOwor
ICAgIEVYUEVDVF9FUSh5ZXRBbm90aGVyVmFsaWRDb2xvci5hbHBoYSgpLCA0KTsKKworICAgIG90
aGVyVmFsaWRDb2xvciA9IFdURk1vdmUoeWV0QW5vdGhlclZhbGlkQ29sb3IpOworICAgIEVYUEVD
VF9UUlVFKG90aGVyVmFsaWRDb2xvci5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9GQUxTRShvdGhl
clZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKKyAgICBFWFBFQ1RfRVEob3RoZXJWYWxpZENvbG9y
LnJlZCgpLCAxKTsKKyAgICBFWFBFQ1RfRVEob3RoZXJWYWxpZENvbG9yLmdyZWVuKCksIDIpOwor
ICAgIEVYUEVDVF9FUShvdGhlclZhbGlkQ29sb3IuYmx1ZSgpLCAzKTsKKyAgICBFWFBFQ1RfRVEo
b3RoZXJWYWxpZENvbG9yLmFscGhhKCksIDQpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0
ZW5kZWRDb2xvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5k
ZWRDb2xvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MTJhZDc4ODI2MTFi
NmM4MDZlYTA2ODIzY2QwYmE5ZDU2OWZmOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVu
ZGVkQ29sb3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJUZXN0LmgiCi0jaW5jbHVkZSAiV1RG
U3RyaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUKEV4
dGVuZGVkQ29sb3IsIENvbnN0cnVjdG9yKQotewotICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1
LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7Ci0gICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRl
bmRlZCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMS5hc0V4dGVuZGVkKCkucmVkKCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMxLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzEuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEuMCwgYzEuYXNFeHRlbmRlZCgpLmFscGhhKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOwotICAgIEVYUEVDVF9FUShjMS5jc3NU
ZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Ci19Ci0KLVRFU1QoRXh0ZW5k
ZWRDb2xvciwgQ29weUNvbnN0cnVjdG9yKQotewotICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1
LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7Ci0gICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRl
bmRlZCgpKTsKLQotICAgIENvbG9yIGMyKGMxKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAs
IGMyLmFzRXh0ZW5kZWQoKS5yZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzIuYXNF
eHRlbmRlZCgpLmdyZWVuKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBjMi5hc0V4dGVu
ZGVkKCkuYmx1ZSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCku
YWxwaGEoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBjMS5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7
Ci0gICAgRVhQRUNUX0VRKDJ1LCBjMi5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7Ci0gICAgRVhQ
RUNUX0VRKGMyLmNzc1RleHQoKSwgImNvbG9yKGRpc3BsYXktcDMgMSAwLjUgMC4yNSkiKTsKLX0K
LQotVEVTVChFeHRlbmRlZENvbG9yLCBBc3NpZ25tZW50KQotewotICAgIENvbG9yIGMxKDEuMCwg
MC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7Ci0gICAgRVhQRUNUX1RSVUUo
YzEuaXNFeHRlbmRlZCgpKTsKLQotICAgIENvbG9yIGMyID0gYzE7Ci0KLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgw
LjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwg
YzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNF
eHRlbmRlZCgpLmFscGhhKCkpOwotICAgIEVYUEVDVF9FUSgydSwgYzEuYXNFeHRlbmRlZCgpLnJl
ZkNvdW50KCkpOwotICAgIEVYUEVDVF9FUSgydSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkp
OwotICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAu
MjUpIik7Ci19Ci0KLVRFU1QoRXh0ZW5kZWRDb2xvciwgTW92ZUNvbnN0cnVjdG9yKQotewotICAg
IENvbG9yIGMxKDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7Ci0g
ICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRlbmRlZCgpKTsKLQotICAgIENvbG9yIGMyKFdURk1vdmUo
YzEpKTsKLSAgICAvLyBXZSBzaG91bGQgaGF2ZSBtb3ZlZCB0aGUgZXh0ZW5kZWQgY29sb3IgcG9p
bnRlciBpbnRvIGMyLAotICAgIC8vIGFuZCBzZXQgYzEgdG8gaW52YWxpZCBzbyB0aGF0IGl0IGRv
ZXNuJ3QgY2F1c2UgZGVsZXRpb24uCi0gICAgRVhQRUNUX0ZBTFNFKGMxLmlzRXh0ZW5kZWQoKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGMxLmlzVmFsaWQoKSk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEo
MS4wLCBjMi5hc0V4dGVuZGVkKCkucmVkKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMy
LmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNF
eHRlbmRlZCgpLmJsdWUoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRl
ZCgpLmFscGhhKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50
KCkpOwotICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41
IDAuMjUpIik7Ci19Ci0KLVRFU1QoRXh0ZW5kZWRDb2xvciwgTW92ZUFzc2lnbm1lbnQpCi17Ci0g
ICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUsIDEuMCwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsK
LSAgICBFWFBFQ1RfVFJVRShjMS5pc0V4dGVuZGVkKCkpOwotCi0gICAgQ29sb3IgYzIgPSBXVEZN
b3ZlKGMxKTsKLQotICAgIC8vIFdlIHNob3VsZCBoYXZlIG1vdmVkIHRoZSBleHRlbmRlZCBjb2xv
ciBwb2ludGVyIGludG8gYzIsCi0gICAgLy8gYW5kIHNldCBjMSB0byBpbnZhbGlkIHNvIHRoYXQg
aXQgZG9lc24ndCBjYXVzZSBkZWxldGlvbi4KLSAgICBFWFBFQ1RfRkFMU0UoYzEuaXNFeHRlbmRl
ZCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoYzEuaXNWYWxpZCgpKTsKLQotICAgIEVYUEVDVF9GTE9B
VF9FUSgxLjAsIGMyLmFzRXh0ZW5kZWQoKS5yZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAu
NSwgYzIuYXNFeHRlbmRlZCgpLmdyZWVuKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBj
Mi5hc0V4dGVuZGVkKCkuYmx1ZSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4
dGVuZGVkKCkuYWxwaGEoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBjMi5hc0V4dGVuZGVkKCkucmVm
Q291bnQoKSk7Ci0gICAgRVhQRUNUX0VRKGMyLmNzc1RleHQoKSwgImNvbG9yKGRpc3BsYXktcDMg
MSAwLjUgMC4yNSkiKTsKLX0KLQotVEVTVChFeHRlbmRlZENvbG9yLCBCYXNpY1JlZmVyZW5jZUNv
dW50aW5nKQotewotICAgIENvbG9yKiBjMSA9IG5ldyBDb2xvcigxLjAsIDAuNSwgMC4yNSwgMS4w
LCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOwotICAgIEVYUEVDVF9UUlVFKGMxLT5pc0V4dGVuZGVk
KCkpOwotCi0gICAgQ29sb3IqIGMyID0gbmV3IENvbG9yKCpjMSk7Ci0gICAgQ29sb3IqIGMzID0g
bmV3IENvbG9yKCpjMik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi0+YXNFeHRlbmRl
ZCgpLnJlZCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC41LCBjMi0+YXNFeHRlbmRlZCgpLmdy
ZWVuKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBjMi0+YXNFeHRlbmRlZCgpLmJsdWUo
KSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzItPmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsK
LSAgICBFWFBFQ1RfRVEoM3UsIGMyLT5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7Ci0gICAgRVhQ
RUNUX0VRKGMyLT5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Ci0K
LSAgICBkZWxldGUgYzE7Ci0gICAgRVhQRUNUX0VRKDJ1LCBjMi0+YXNFeHRlbmRlZCgpLnJlZkNv
dW50KCkpOwotCi0gICAgZGVsZXRlIGMyOwotICAgIEVYUEVDVF9FUSgxdSwgYzMtPmFzRXh0ZW5k
ZWQoKS5yZWZDb3VudCgpKTsKLQotICAgIGRlbGV0ZSBjMzsKLX0KLQotQ29sb3IgbWFrZUNvbG9y
KCkKLXsKLSAgICBDb2xvciBjMSgxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNw
bGF5UDMpOwotICAgIEVYUEVDVF9UUlVFKGMxLmlzRXh0ZW5kZWQoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBjMS5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7Ci0KLSAgICByZXR1cm4gYzE7Ci19Ci0K
LVRFU1QoRXh0ZW5kZWRDb2xvciwgUmV0dXJuVmFsdWVzKQotewotICAgIENvbG9yIGMyID0gbWFr
ZUNvbG9yKCk7Ci0gICAgRVhQRUNUX1RSVUUoYzIuaXNFeHRlbmRlZCgpKTsKLQotICAgIEVYUEVD
VF9FUSgxdSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOwotICAgIEVYUEVDVF9FUShjMi5j
c3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Ci19Ci0KLQotfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTEyYWQ3
ODgyNjExYjZjODA2ZWEwNjgyM2NkMGJhOWQ1NjlmZjhmCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKQEAg
LTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJUZXN0LmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitURVNUKEV4dGVuZGVkQ29sb3IsIENvbnN0cnVjdG9yKQorewor
ICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7
CisgICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRlbmRlZCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MS4wLCBjMS5hc0V4dGVuZGVkKCkucmVkKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMx
LmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzEuYXNF
eHRlbmRlZCgpLmJsdWUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzEuYXNFeHRlbmRl
ZCgpLmFscGhhKCkpOworICAgIEVYUEVDVF9FUSgxdSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50
KCkpOworICAgIEVYUEVDVF9FUShjMS5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41
IDAuMjUpIik7Cit9CisKK1RFU1QoRXh0ZW5kZWRDb2xvciwgQ29weUNvbnN0cnVjdG9yKQorewor
ICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7
CisgICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9yIGMyKGMxKTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLmFzRXh0ZW5kZWQoKS5yZWQoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzIuYXNFeHRlbmRlZCgpLmdyZWVuKCkpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgwLjI1LCBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkuYWxwaGEoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBj
MS5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBjMi5hc0V4dGVu
ZGVkKCkucmVmQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKGMyLmNzc1RleHQoKSwgImNvbG9yKGRp
c3BsYXktcDMgMSAwLjUgMC4yNSkiKTsKK30KKworVEVTVChFeHRlbmRlZENvbG9yLCBBc3NpZ25t
ZW50KQoreworICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1LCAxLjAsIENvbG9yU3BhY2U6OkRp
c3BsYXlQMyk7CisgICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRlbmRlZCgpKTsKKworICAgIENvbG9y
IGMyID0gYzE7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkucmVk
KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworICAgIEVYUEVD
VF9FUSgydSwgYzEuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVYUEVDVF9FUSgydSwg
YzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCks
ICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Cit9CisKK1RFU1QoRXh0ZW5kZWRDb2xv
ciwgTW92ZUNvbnN0cnVjdG9yKQoreworICAgIENvbG9yIGMxKDEuMCwgMC41LCAwLjI1LCAxLjAs
IENvbG9yU3BhY2U6OkRpc3BsYXlQMyk7CisgICAgRVhQRUNUX1RSVUUoYzEuaXNFeHRlbmRlZCgp
KTsKKworICAgIENvbG9yIGMyKFdURk1vdmUoYzEpKTsKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBt
b3ZlZCB0aGUgZXh0ZW5kZWQgY29sb3IgcG9pbnRlciBpbnRvIGMyLAorICAgIC8vIGFuZCBzZXQg
YzEgdG8gaW52YWxpZCBzbyB0aGF0IGl0IGRvZXNuJ3QgY2F1c2UgZGVsZXRpb24uCisgICAgRVhQ
RUNUX0ZBTFNFKGMxLmlzRXh0ZW5kZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGMxLmlzVmFsaWQo
KSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkucmVkKCkpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGMyLmFzRXh0ZW5kZWQoKS5ncmVlbigpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMC4yNSwgYzIuYXNFeHRlbmRlZCgpLmJsdWUoKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDEuMCwgYzIuYXNFeHRlbmRlZCgpLmFscGhhKCkpOworICAgIEVYUEVDVF9FUSgx
dSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0
KCksICJjb2xvcihkaXNwbGF5LXAzIDEgMC41IDAuMjUpIik7Cit9CisKK1RFU1QoRXh0ZW5kZWRD
b2xvciwgTW92ZUFzc2lnbm1lbnQpCit7CisgICAgQ29sb3IgYzEoMS4wLCAwLjUsIDAuMjUsIDEu
MCwgQ29sb3JTcGFjZTo6RGlzcGxheVAzKTsKKyAgICBFWFBFQ1RfVFJVRShjMS5pc0V4dGVuZGVk
KCkpOworCisgICAgQ29sb3IgYzIgPSBXVEZNb3ZlKGMxKTsKKworICAgIC8vIFdlIHNob3VsZCBo
YXZlIG1vdmVkIHRoZSBleHRlbmRlZCBjb2xvciBwb2ludGVyIGludG8gYzIsCisgICAgLy8gYW5k
IHNldCBjMSB0byBpbnZhbGlkIHNvIHRoYXQgaXQgZG9lc24ndCBjYXVzZSBkZWxldGlvbi4KKyAg
ICBFWFBFQ1RfRkFMU0UoYzEuaXNFeHRlbmRlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYzEuaXNW
YWxpZCgpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxLjAsIGMyLmFzRXh0ZW5kZWQoKS5yZWQo
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgYzIuYXNFeHRlbmRlZCgpLmdyZWVuKCkpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgwLjI1LCBjMi5hc0V4dGVuZGVkKCkuYmx1ZSgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMS4wLCBjMi5hc0V4dGVuZGVkKCkuYWxwaGEoKSk7CisgICAgRVhQRUNU
X0VRKDF1LCBjMi5hc0V4dGVuZGVkKCkucmVmQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKGMyLmNz
c1RleHQoKSwgImNvbG9yKGRpc3BsYXktcDMgMSAwLjUgMC4yNSkiKTsKK30KKworVEVTVChFeHRl
bmRlZENvbG9yLCBCYXNpY1JlZmVyZW5jZUNvdW50aW5nKQoreworICAgIENvbG9yKiBjMSA9IG5l
dyBDb2xvcigxLjAsIDAuNSwgMC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOworICAg
IEVYUEVDVF9UUlVFKGMxLT5pc0V4dGVuZGVkKCkpOworCisgICAgQ29sb3IqIGMyID0gbmV3IENv
bG9yKCpjMSk7CisgICAgQ29sb3IqIGMzID0gbmV3IENvbG9yKCpjMik7CisKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMS4wLCBjMi0+YXNFeHRlbmRlZCgpLnJlZCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMC41LCBjMi0+YXNFeHRlbmRlZCgpLmdyZWVuKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgw
LjI1LCBjMi0+YXNFeHRlbmRlZCgpLmJsdWUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwg
YzItPmFzRXh0ZW5kZWQoKS5hbHBoYSgpKTsKKyAgICBFWFBFQ1RfRVEoM3UsIGMyLT5hc0V4dGVu
ZGVkKCkucmVmQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKGMyLT5jc3NUZXh0KCksICJjb2xvcihk
aXNwbGF5LXAzIDEgMC41IDAuMjUpIik7CisKKyAgICBkZWxldGUgYzE7CisgICAgRVhQRUNUX0VR
KDJ1LCBjMi0+YXNFeHRlbmRlZCgpLnJlZkNvdW50KCkpOworCisgICAgZGVsZXRlIGMyOworICAg
IEVYUEVDVF9FUSgxdSwgYzMtPmFzRXh0ZW5kZWQoKS5yZWZDb3VudCgpKTsKKworICAgIGRlbGV0
ZSBjMzsKK30KKworQ29sb3IgbWFrZUNvbG9yKCkKK3sKKyAgICBDb2xvciBjMSgxLjAsIDAuNSwg
MC4yNSwgMS4wLCBDb2xvclNwYWNlOjpEaXNwbGF5UDMpOworICAgIEVYUEVDVF9UUlVFKGMxLmlz
RXh0ZW5kZWQoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBjMS5hc0V4dGVuZGVkKCkucmVmQ291bnQo
KSk7CisKKyAgICByZXR1cm4gYzE7Cit9CisKK1RFU1QoRXh0ZW5kZWRDb2xvciwgUmV0dXJuVmFs
dWVzKQoreworICAgIENvbG9yIGMyID0gbWFrZUNvbG9yKCk7CisgICAgRVhQRUNUX1RSVUUoYzIu
aXNFeHRlbmRlZCgpKTsKKworICAgIEVYUEVDVF9FUSgxdSwgYzIuYXNFeHRlbmRlZCgpLnJlZkNv
dW50KCkpOworICAgIEVYUEVDVF9FUShjMi5jc3NUZXh0KCksICJjb2xvcihkaXNwbGF5LXAzIDEg
MC41IDAuMjUpIik7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0UG9pbnQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0UG9pbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGMwZmY5ZTNkYjk0NTI5NzgwNmRmMTcyNzBjNTE4NWFi
ODhiM2YxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GbG9hdFBvaW50LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDU5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvSW50UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0KLSNpZiBVU0UoQ0cpCi0jaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShXSU4pCi0jaW5jbHVkZSA8ZDJkMS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIHZvaWQgdGVzdEdldEFuZFNldChXZWJDb3JlOjpGbG9hdFBvaW50IHBv
aW50KQotewotICAgIHBvaW50LnNldFgoMS4xZik7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEuMWYs
IHBvaW50LngoKSk7Ci0gICAgcG9pbnQuc2V0WSgyLjJmKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
Mi4yZiwgcG9pbnQueSgpKTsKLQotICAgIHBvaW50LnNldCg5LjlmLCA4LjhmKTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoOS45ZiwgcG9pbnQueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoOC44Ziwg
cG9pbnQueSgpKTsKLX0KLQotVEVTVChGbG9hdFBvaW50LCBEZWZhdWx0Q29uc3RydWN0aW9uKQot
ewotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVzdDsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgw
LCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHRlc3QueSgpKTsKLQotICAgIHRl
c3RHZXRBbmRTZXQodGVzdCk7Ci19Ci0KLVRFU1QoRmxvYXRQb2ludCwgVmFsdWVDb25zdHJ1Y3Rp
b24pCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0KDkuOWYsIDguOGYpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDkuOWYsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoOC44
ZiwgdGVzdC55KCkpOwotCi0gICAgdGVzdEdldEFuZFNldCh0ZXN0KTsKLX0KLQotVEVTVChGbG9h
dFBvaW50LCBaZXJvQ29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVz
dCA9IFdlYkNvcmU6OkZsb2F0UG9pbnQ6Onplcm8oKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgw
LCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHRlc3QueSgpKTsKLX0KLQotVEVT
VChGbG9hdFBvaW50LCBJbnRQb2ludENvbnN0cnVjdGlvbikKLXsKLSAgICBXZWJDb3JlOjpJbnRQ
b2ludCB0ZXN0SW5wdXQoMjAwMywgMTk5Nyk7Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0
ID0gV2ViQ29yZTo6RmxvYXRQb2ludCh0ZXN0SW5wdXQpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VR
KDIwMDMuMGYsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTk5Ny4wZiwgdGVzdC55
KCkpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIEZsb2F0U2l6ZUNvbnN0cnVjdGlvbikKLXsKLSAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdElucHV0KDUwMC43ZiwgMzAwLjJmKTsKLSAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHRlc3QgPSBXZWJDb3JlOjpGbG9hdFBvaW50KHRlc3RJbnB1dCk7Ci0K
LSAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLjcsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMzAwLjIsIHRlc3QueSgpKTsKLX0KLQotVEVTVChGbG9hdFBvaW50LCBNb3ZlQnlGbG9hdCkK
LXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QoMTAwLjBmLCAyMDAuMGYpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
MDAuMGYsIHRlc3QueSgpKTsKLQotICAgIHRlc3QubW92ZSgyMC4yZiwgMzAuM2YpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDEyMC4yZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
MzAuM2YsIHRlc3QueSgpKTsKLQotICAgIHRlc3QubW92ZSgtODEuM2YsIDEwLjBmKTsKLQotICAg
IEVYUEVDVF9GTE9BVF9FUSgzOC45ZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
NDAuM2YsIHRlc3QueSgpKTsKLQotICAgIHRlc3QubW92ZSgxMS4xZiwgLTMzLjJmKTsKLQotICAg
IEVYUEVDVF9GTE9BVF9FUSg1MC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
MDcuMWYsIHRlc3QueSgpKTsKLQotICAgIHRlc3QubW92ZSgtNS42ZiwgLTkuOGYpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDQ0LjRmLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE5
Ny4zZiwgdGVzdC55KCkpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIE1vdmVCeUludFNpemUpCi17
Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0KDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIEVY
UEVDVF9GTE9BVF9FUSgxMDAuMGYsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAw
LjBmLCB0ZXN0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIGZpcnN0KDIwLCAzMCk7Ci0K
LSAgICB0ZXN0Lm1vdmUoZmlyc3QpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEyMC4wZiwgdGVz
dC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAuMGYsIHRlc3QueSgpKTsKLQotICAgIFdl
YkNvcmU6OkludFNpemUgc2Vjb25kKC04MSwgMTApOwotCi0gICAgdGVzdC5tb3ZlKHNlY29uZCk7
Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzkuMGYsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMjQwLjBmLCB0ZXN0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHRoaXJkKDEx
LCAtMzMpOwotCi0gICAgdGVzdC5tb3ZlKHRoaXJkKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSg1
MC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDcuMGYsIHRlc3QueSgpKTsK
LQotICAgIFdlYkNvcmU6OkludFNpemUgZm91cnRoKC02LCAtMTApOwotCi0gICAgdGVzdC5tb3Zl
KGZvdXJ0aCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoNDQuMGYsIHRlc3QueCgpKTsKLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMTk3LjBmLCB0ZXN0LnkoKSk7Ci19Ci0KLVRFU1QoRmxvYXRQb2ludCwg
TW92ZUJ5RmxvYXRTaXplKQotewotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVzdCgxMDAuMGYs
IDIwMC4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCB0ZXN0LngoKSk7Ci0gICAg
RVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRT
aXplIGZpcnN0KDIwLjJmLCAzMC4zZik7Ci0KLSAgICB0ZXN0Lm1vdmUoZmlyc3QpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDEyMC4yZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
MzAuM2YsIHRlc3QueSgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzZWNvbmQoLTgxLjNm
LCAxMC4wZik7Ci0KLSAgICB0ZXN0Lm1vdmUoc2Vjb25kKTsKLQotICAgIEVYUEVDVF9GTE9BVF9F
USgzOC45ZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyNDAuM2YsIHRlc3QueSgp
KTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0aGlyZCgxMS4xZiwgLTMzLjJmKTsKLQotICAg
IHRlc3QubW92ZSh0aGlyZCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoNTAuMGYsIHRlc3QueCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjA3LjFmLCB0ZXN0LnkoKSk7Ci0KLSAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgZm91cnRoKC01LjZmLCAtOS44Zik7Ci0KLSAgICB0ZXN0Lm1vdmUoZm91cnRo
KTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSg0NC40ZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgxOTcuM2YsIHRlc3QueSgpKTsKLX0KLQotVEVTVChGbG9hdFBvaW50LCBNb3ZlQnlJ
bnRQb2ludCkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QoMTAwLjBmLCAyMDAuMGYp
OwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgyMDAuMGYsIHRlc3QueSgpKTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50IGZpcnN0
KDIwLCAzMCk7Ci0KLSAgICB0ZXN0Lm1vdmVCeShmaXJzdCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMTIwLjBmLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIzMC4wZiwgdGVzdC55
KCkpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgc2Vjb25kKC04MSwgMTApOwotCi0gICAgdGVz
dC5tb3ZlQnkoc2Vjb25kKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgzOS4wZiwgdGVzdC54KCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgyNDAuMGYsIHRlc3QueSgpKTsKLQotICAgIFdlYkNvcmU6
OkludFBvaW50IHRoaXJkKDExLCAtMzMpOwotCi0gICAgdGVzdC5tb3ZlQnkodGhpcmQpOwotCi0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VR
KDIwNy4wZiwgdGVzdC55KCkpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgZm91cnRoKC02LCAt
MTApOwotCi0gICAgdGVzdC5tb3ZlQnkoZm91cnRoKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSg0
NC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxOTcuMGYsIHRlc3QueSgpKTsK
LX0KLQotVEVTVChGbG9hdFBvaW50LCBNb3ZlQnlGbG9hdFBvaW50KQotewotICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgdGVzdCgxMDAuMGYsIDIwMC4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEo
MTAwLjBmLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkp
OwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBmaXJzdCgyMC4yZiwgMzAuM2YpOwotCi0gICAg
dGVzdC5tb3ZlQnkoZmlyc3QpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEyMC4yZiwgdGVzdC54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAuM2YsIHRlc3QueSgpKTsKLQotICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQgc2Vjb25kKC04MS4zZiwgMTAuMGYpOwotCi0gICAgdGVzdC5tb3ZlQnko
c2Vjb25kKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgzOC45ZiwgdGVzdC54KCkpOwotICAgIEVY
UEVDVF9GTE9BVF9FUSgyNDAuM2YsIHRlc3QueSgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgdGhpcmQoMTEuMWYsIC0zMy4yZik7Ci0KLSAgICB0ZXN0Lm1vdmVCeSh0aGlyZCk7Ci0KLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoNTAuMGYsIHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
MjA3LjFmLCB0ZXN0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGZvdXJ0aCgtNS42
ZiwgLTkuOGYpOwotCi0gICAgdGVzdC5tb3ZlQnkoZm91cnRoKTsKLQotICAgIEVYUEVDVF9GTE9B
VF9FUSg0NC40ZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxOTcuM2YsIHRlc3Qu
eSgpKTsKLX0KLQotVEVTVChGbG9hdFBvaW50LCBTY2FsZSkKLXsKLSAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IHRlc3QoMTAwLjBmLCAyMDAuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4w
ZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRlc3QueSgpKTsKLQot
ICAgIHRlc3Quc2NhbGUoMi4wZiwgMi4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBm
LCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDQwMC4wZiwgdGVzdC55KCkpOwotCi0g
ICAgdGVzdC5zY2FsZSgwLjVmLCAwLjVmKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYs
IHRlc3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0ZXN0LnkoKSk7Ci0KLSAg
ICB0ZXN0LnNjYWxlKDIpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC54KCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAuMGYsIHRlc3QueSgpKTsKLQotICAgIHRlc3Quc2Nh
bGUoMS4wZiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0ZXN0LngoKSk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkpOwotfQotCi1URVNUKEZsb2F0
UG9pbnQsIE5vcm1hbGl6ZSkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGEoMzAuMGYsIDQw
LjBmKTsKLQotICAgIGEubm9ybWFsaXplKCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC42LCBh
LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAuOCwgYS55KCkpOwotfQotCi1URVNUKEZsb2F0
UG9pbnQsIERvdCkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGEoMTAwLjBmLCAyMDAuMGYp
OwotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYigyLjBmLCA0LjBmKTsKLSAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IGMoMS4wZiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfTkVBUigxMDAwLjBmLCBhLmRv
dChiKSwgMC4wMDAxZik7Ci0gICAgRVhQRUNUX05FQVIoMjAwLjBmLCBhLmRvdChjKSwgMC4wMDAx
Zik7Ci19Ci0KLVRFU1QoRmxvYXRQb2ludCwgTGVuZ3RoU3F1YXJlZCkKLXsKLSAgICBXZWJDb3Jl
OjpGbG9hdFBvaW50IHRlc3QoMTAwLjBmLCAyMDAuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VR
KDEwMC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRlc3QueSgp
KTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAwMC4wZiwgdGVzdC5sZW5ndGhTcXVhcmVkKCkp
OwotfQotCi1URVNUKEZsb2F0UG9pbnQsIENvbnN0cmFpbmVkQmV0d2VlbikKLXsKLSAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IGxlZnQoMTAuMGYsIDIwLjBmKTsKLSAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IHJpZ2h0KDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVz
dDEoNTAuMGYsIDgwLjBmKTsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QyKDguMGYsIDgw
LjBmKTsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QzKDUwLjBmLCAyMjAuMGYpOwotCi0g
ICAgYXV0byBjb25zdHJhaW5lZDEgPSB0ZXN0MS5jb25zdHJhaW5lZEJldHdlZW4obGVmdCwgcmln
aHQpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg1MC4wZiwgY29uc3RyYWluZWQxLngoKSk7Ci0gICAg
RVhQRUNUX0ZMT0FUX0VRKDgwLjBmLCBjb25zdHJhaW5lZDEueSgpKTsKLQotICAgIGF1dG8gY29u
c3RyYWluZWQyID0gdGVzdDIuY29uc3RyYWluZWRCZXR3ZWVuKGxlZnQsIHJpZ2h0KTsKLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMTAuMGYsIGNvbnN0cmFpbmVkMi54KCkpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSg4MC4wZiwgY29uc3RyYWluZWQyLnkoKSk7Ci0KLSAgICBhdXRvIGNvbnN0cmFpbmVkMyA9
IHRlc3QzLmNvbnN0cmFpbmVkQmV0d2VlbihsZWZ0LCByaWdodCk7Ci0gICAgRVhQRUNUX0ZMT0FU
X0VRKDUwLjBmLCBjb25zdHJhaW5lZDMueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBm
LCBjb25zdHJhaW5lZDMueSgpKTsKLX0KLQotVEVTVChGbG9hdFBvaW50LCBTaHJ1bmtUbykKLXsK
LSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJpZygxMDAuMGYsIDIwMC4wZik7Ci0gICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBzbWFsbGVyKDEwLjBmLCA4MC4wZik7Ci0KLSAgICBhdXRvIHNocnVua1Rv
ID0gYmlnLnNocnVua1RvKHNtYWxsZXIpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCBz
aHJ1bmtUby54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg4MC4wZiwgc2hydW5rVG8ueSgpKTsK
LQotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYmlnaXNoKDguMGYsIDIwMC4wZik7Ci0KLSAgICBh
dXRvIHNocnVua1RvMiA9IGJpZ2lzaC5zaHJ1bmtUbyhzbWFsbGVyKTsKLQotICAgIEVYUEVDVF9G
TE9BVF9FUSg4LjBmLCBzaHJ1bmtUbzIueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoODAuMGYs
IHNocnVua1RvMi55KCkpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIEV4cGFuZGVkVG8pCi17Ci0g
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBiaWcoMTAwLjBmLCAyMDAuMGYpOwotICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgc21hbGxlcigxMC4wZiwgODAuMGYpOwotCi0gICAgYXV0byBleHBhbmRlZFRv
ID0gc21hbGxlci5leHBhbmRlZFRvKGJpZyk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBm
LCBleHBhbmRlZFRvLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgZXhwYW5kZWRU
by55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBiaWdpc2goOC4wZiwgMzAwLjBmKTsK
LQotICAgIGF1dG8gZXhwYW5kZWRUbzIgPSBiaWdpc2guZXhwYW5kZWRUbyhiaWcpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgZXhwYW5kZWRUbzIueCgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMzAwLjBmLCBleHBhbmRlZFRvMi55KCkpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIFRy
YW5zcG9zZSkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QoMTAwLjBmLCAyMDAuMGYp
OwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgyMDAuMGYsIHRlc3QueSgpKTsKLQotICAgIGF1dG8gdHJhbnNwb3NlZCA9IHRlc3Qu
dHJhbnNwb3NlZFBvaW50KCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0cmFuc3Bv
c2VkLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdHJhbnNwb3NlZC55KCkpOwot
fQotCi1URVNUKEZsb2F0UG9pbnQsIFRyYW5zZm9ybXMpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCB0ZXN0KDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSBhZmZpbmU7Ci0KLSAgICBhdXRvIHRyYW5zZm9ybWVkMSA9IHRlc3QubWF0cml4VHJhbnNmb3Jt
KGFmZmluZSk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCB0cmFuc2Zvcm1lZDEueCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0cmFuc2Zvcm1lZDEueSgpKTsKLQotICAg
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSBhZmZpbmUyKDIuMCwgMC4wLCAwLjAsIDIuMCwgMC4w
LCAwLjApOwotCi0gICAgYXV0byB0cmFuc2Zvcm1lZDIgPSB0ZXN0Lm1hdHJpeFRyYW5zZm9ybShh
ZmZpbmUyKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRyYW5zZm9ybWVkMi54KCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAuMGYsIHRyYW5zZm9ybWVkMi55KCkpOwotCi0gICAg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwotCi0gICAgYXV0byB0cmFuc2Zv
cm1lZDMgPSB0ZXN0Lm1hdHJpeFRyYW5zZm9ybShtYXRyaXgpOwotCi0gICAgRVhQRUNUX0ZMT0FU
X0VRKDEwMC4wZiwgdHJhbnNmb3JtZWQzLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4w
ZiwgdHJhbnNmb3JtZWQzLnkoKSk7Ci0KLSAgICBhdXRvIHRyYW5zZm9ybWVkNCA9IHRlc3QubWF0
cml4VHJhbnNmb3JtKGFmZmluZTIudG9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKLQotICAgIEVY
UEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRyYW5zZm9ybWVkNC54KCkpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSg0MDAuMGYsIHRyYW5zZm9ybWVkNC55KCkpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIE1h
dGgpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhKDEwMC4wZiwgMjAwLjBmKTsKLSAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IGIoMTAwLjBmLCAyMDAuMGYpOwotCi0gICAgYSArPSBiOwotCi0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgYS54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg0
MDAuMGYsIGEueSgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjKDUwLjBmLCA1MC4wZik7
Ci0KLSAgICBhICs9IGM7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjUwLjBmLCBhLngoKSk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDQ1MC4wZiwgYS55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRT
aXplIGQoMTAuMGYsIDIwMC4wZik7Ci0KLSAgICBhIC09IGQ7Ci0KLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMjQwLjBmLCBhLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDI1MC4wZiwgYS55KCkpOwot
Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGUoMTAwLjBmLCAyMDAuMGYpOwotCi0gICAgYXV0byBm
ID0gYiArIGU7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCBmLngoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDQwMC4wZiwgZi55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBn
KDEwLjBmLCAyMC4wZik7Ci0KLSAgICBhdXRvIGggPSBiICsgZzsKLQotICAgIEVYUEVDVF9GTE9B
VF9FUSgxMTAuMGYsIGgueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLjBmLCBoLnkoKSk7
Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgaSA9IGIgLSBnOwotCi0gICAgRVhQRUNUX0ZMT0FU
X0VRKDkwLjBmLCBpLndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxODAuMGYsIGkuaGVp
Z2h0KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBqID0gYiAtIGU7Ci0KLSAgICBFWFBF
Q1RfRkxPQVRfRVEoMC4wZiwgai54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLjBmLCBqLnko
KSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG5lZ2F0ZWQgPSAtYjsKLQotICAgIEVYUEVD
VF9GTE9BVF9FUSgtMTAwLjBmLCBuZWdhdGVkLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKC0y
MDAuMGYsIG5lZ2F0ZWQueSgpKTsKLQotICAgIGZsb2F0IHZhbHVlID0gYiAqIGc7Ci0KLSAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAwMC4wZiwgdmFsdWUpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIEVx
dWFsaXR5KQotewotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYSgxMDAuMGYsIDIwMC4wZik7Ci0g
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBiKDEwMC4wZiwgMjAwLjBmKTsKLSAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IGMoMTAuMGYsIDIwLjBmKTsKLQotICAgIEFTU0VSVF9UUlVFKGEgPT0gYik7Ci0g
ICAgQVNTRVJUX0ZBTFNFKGEgPT0gYyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGEgIT0gYik7Ci0gICAg
QVNTRVJUX1RSVUUoYSAhPSBjKTsKLQotICAgIEFTU0VSVF9UUlVFKFdlYkNvcmU6OmFyZUVzc2Vu
dGlhbGx5RXF1YWwoYSwgYikpOwotICAgIEFTU0VSVF9GQUxTRShXZWJDb3JlOjphcmVFc3NlbnRp
YWxseUVxdWFsKGEsIGMpKTsKLX0KLQotVEVTVChGbG9hdFBvaW50LCBGbG9vcnMpCi17Ci0gICAg
V2ViQ29yZTo6RmxvYXRQb2ludCBhKDEwMC42ZiwgMTk5LjlmKTsKLQotICAgIFdlYkNvcmU6Oklu
dFNpemUgZmxvb3JlZFNpemUgPSBXZWJDb3JlOjpmbG9vcmVkSW50U2l6ZShhKTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoMTAwLCBmbG9vcmVkU2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMTk5LCBmbG9vcmVkU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRQb2ludCBm
bG9vcmVkUG9pbnQgPSBXZWJDb3JlOjpmbG9vcmVkSW50UG9pbnQoYSk7Ci0gICAgRVhQRUNUX0ZM
T0FUX0VRKDEwMCwgZmxvb3JlZFBvaW50LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE5OSwg
Zmxvb3JlZFBvaW50LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGZsb29yZWRQb2lu
dDF4ID0gV2ViQ29yZTo6Zmxvb3JQb2ludFRvRGV2aWNlUGl4ZWxzKGEsIDEuMCk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEwMC4wZiwgZmxvb3JlZFBvaW50MXgueCgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMTk5LjBmLCBmbG9vcmVkUG9pbnQxeC55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBmbG9vcmVkUG9pbnQyeCA9IFdlYkNvcmU6OmZsb29yUG9pbnRUb0RldmljZVBpeGVscyhh
LCAyLjApOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuNWYsIGZsb29yZWRQb2ludDJ4LngoKSk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE5OS41ZiwgZmxvb3JlZFBvaW50MngueSgpKTsKLX0KLQot
VEVTVChGbG9hdFBvaW50LCBSb3VuZGluZykKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGEo
MTAwLjRmLCAxOTkuOWYpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgcm91bmRlZFBvaW50ID0g
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGEpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAsIHJv
dW5kZWRQb2ludC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAsIHJvdW5kZWRQb2ludC55
KCkpOwotfQotCi1URVNUKEZsb2F0UG9pbnQsIENlaWxpbmcpCi17Ci0gICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBhKDEwMC40ZiwgMTk5LjlmKTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50IGNlaWxp
bmdQb2ludCA9IFdlYkNvcmU6OmNlaWxlZEludFBvaW50KGEpOwotICAgIEVYUEVDVF9GTE9BVF9F
USgxMDEsIGNlaWxpbmdQb2ludC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAsIGNlaWxp
bmdQb2ludC55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjZWlsaW5nUG9pbnQxeCA9
IFdlYkNvcmU6OmNlaWxQb2ludFRvRGV2aWNlUGl4ZWxzKGEsIDEuMCk7Ci0gICAgRVhQRUNUX0ZM
T0FUX0VRKDEwMS4wZiwgY2VpbGluZ1BvaW50MXgueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
MjAwLjBmLCBjZWlsaW5nUG9pbnQxeC55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBj
ZWlsaW5nUG9pbnQyeCA9IFdlYkNvcmU6OmNlaWxQb2ludFRvRGV2aWNlUGl4ZWxzKGEsIDIuMCk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC41ZiwgY2VpbGluZ1BvaW50MngueCgpKTsKLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCBjZWlsaW5nUG9pbnQyeC55KCkpOwotfQotCi1URVNUKEZs
b2F0UG9pbnQsIENhc3RpbmcpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhKDEwMC40Ziwg
MTk5LjlmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmbG9hdFNpemUgPSBXZWJDb3JlOjp0
b0Zsb2F0U2l6ZShhKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjRmLCBmbG9hdFNpemUud2lk
dGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE5OS45ZiwgZmxvYXRTaXplLmhlaWdodCgpKTsK
LQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBiKDk5LjZmLCAyOTkuMWYpOwotCi0gICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBmbG9hdFBvaW50ID0gV2ViQ29yZTo6dG9GbG9hdFBvaW50KGIpOwotICAg
IEVYUEVDVF9GTE9BVF9FUSg5OS42ZiwgZmxvYXRQb2ludC54KCkpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSgyOTkuMWYsIGZsb2F0UG9pbnQueSgpKTsKLQotI2lmIFVTRShDRykKLSAgICBDR1BvaW50
IGNnUG9pbnQgPSBhOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC40ZiwgY2dQb2ludC54KTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoMTk5LjlmLCBjZ1BvaW50LnkpOwotCi0gICAgQ0dQb2ludCBj
Z1BvaW50MiA9IENHUG9pbnRNYWtlKC0yMi4zZiwgMTQuMmYpOwotCi0gICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCB0ZXN0Q0coY2dQb2ludDIpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKC0yMi4zZiwg
dGVzdENHLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE0LjJmLCB0ZXN0Q0cueSgpKTsKLSNl
bmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIEQyRF9QT0lOVF8yRiBkMmRQb2ludCA9IGE7
Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjRmLCBkMmRQb2ludC54KTsKLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTk5LjlmLCBkMmRQb2ludC55KTsKLQotICAgIEQyRF9QT0lOVF8yRiBkMmRQb2lu
dDIgPSBEMkQxOjpQb2ludDJGKC0yMi4zZiwgMTQuMmYpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCB0ZXN0RDJEKGQyZFBvaW50Mik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoLTIyLjNmLCB0
ZXN0RDJELngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE0LjJmLCB0ZXN0RDJELnkoKSk7Ci0j
ZW5kaWYKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Zsb2F0UG9pbnRUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmxvYXRQb2ludFRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGMwZmY5ZTNkYjk0NTI5NzgwNmRm
MTcyNzBjNTE4NWFiODhiM2YxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Zsb2F0UG9pbnRUZXN0cy5jcHAKQEAgLTAsMCArMSw1OTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FmZmlu
ZVRyYW5zZm9ybS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdy
YXBoaWNzLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxkMmQxLmg+
CisjZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCB0ZXN0
R2V0QW5kU2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCit7CisgICAgcG9pbnQuc2V0WCgx
LjFmKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMS4xZiwgcG9pbnQueCgpKTsKKyAgICBwb2ludC5z
ZXRZKDIuMmYpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyLjJmLCBwb2ludC55KCkpOworCisgICAg
cG9pbnQuc2V0KDkuOWYsIDguOGYpOworICAgIEVYUEVDVF9GTE9BVF9FUSg5LjlmLCBwb2ludC54
KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg4LjhmLCBwb2ludC55KCkpOworfQorCitURVNUKEZs
b2F0UG9pbnQsIERlZmF1bHRDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCB0ZXN0OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMCwgdGVzdC55KCkpOworCisgICAgdGVzdEdldEFuZFNldCh0ZXN0KTsKK30KKwor
VEVTVChGbG9hdFBvaW50LCBWYWx1ZUNvbnN0cnVjdGlvbikKK3sKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IHRlc3QoOS45ZiwgOC44Zik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoOS45ZiwgdGVz
dC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg4LjhmLCB0ZXN0LnkoKSk7CisKKyAgICB0ZXN0
R2V0QW5kU2V0KHRlc3QpOworfQorCitURVNUKEZsb2F0UG9pbnQsIFplcm9Db25zdHJ1Y3Rpb24p
Cit7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0ID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6
emVybygpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMCwgdGVzdC55KCkpOworfQorCitURVNUKEZsb2F0UG9pbnQsIEludFBvaW50Q29u
c3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkludFBvaW50IHRlc3RJbnB1dCgyMDAzLCAxOTk3
KTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QgPSBXZWJDb3JlOjpGbG9hdFBvaW50KHRl
c3RJbnB1dCk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwMy4wZiwgdGVzdC54KCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxOTk3LjBmLCB0ZXN0LnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2lu
dCwgRmxvYXRTaXplQ29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0ZXN0
SW5wdXQoNTAwLjdmLCAzMDAuMmYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVzdCA9IFdl
YkNvcmU6OkZsb2F0UG9pbnQodGVzdElucHV0KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAu
NywgdGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMDAuMiwgdGVzdC55KCkpOworfQor
CitURVNUKEZsb2F0UG9pbnQsIE1vdmVCeUZsb2F0KQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgdGVzdCgxMDAuMGYsIDIwMC4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCB0
ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkpOworCisgICAg
dGVzdC5tb3ZlKDIwLjJmLCAzMC4zZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjJmLCB0
ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIzMC4zZiwgdGVzdC55KCkpOworCisgICAg
dGVzdC5tb3ZlKC04MS4zZiwgMTAuMGYpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDM4LjlmLCB0
ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI0MC4zZiwgdGVzdC55KCkpOworCisgICAg
dGVzdC5tb3ZlKDExLjFmLCAtMzMuMmYpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCB0
ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwNy4xZiwgdGVzdC55KCkpOworCisgICAg
dGVzdC5tb3ZlKC01LjZmLCAtOS44Zik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDQuNGYsIHRl
c3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTk3LjNmLCB0ZXN0LnkoKSk7Cit9CisKK1RF
U1QoRmxvYXRQb2ludCwgTW92ZUJ5SW50U2l6ZSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50
IHRlc3QoMTAwLjBmLCAyMDAuMGYpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdGVz
dC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRlc3QueSgpKTsKKworICAgIFdl
YkNvcmU6OkludFNpemUgZmlyc3QoMjAsIDMwKTsKKworICAgIHRlc3QubW92ZShmaXJzdCk7CisK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDIzMC4wZiwgdGVzdC55KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBzZWNvbmQoLTgx
LCAxMCk7CisKKyAgICB0ZXN0Lm1vdmUoc2Vjb25kKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgz
OS4wZiwgdGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNDAuMGYsIHRlc3QueSgpKTsK
KworICAgIFdlYkNvcmU6OkludFNpemUgdGhpcmQoMTEsIC0zMyk7CisKKyAgICB0ZXN0Lm1vdmUo
dGhpcmQpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDIwNy4wZiwgdGVzdC55KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBm
b3VydGgoLTYsIC0xMCk7CisKKyAgICB0ZXN0Lm1vdmUoZm91cnRoKTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSg0NC4wZiwgdGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxOTcuMGYsIHRl
c3QueSgpKTsKK30KKworVEVTVChGbG9hdFBvaW50LCBNb3ZlQnlGbG9hdFNpemUpCit7CisgICAg
V2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0KDEwMC4wZiwgMjAwLjBmKTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSgxMDAuMGYsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0
ZXN0LnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZmlyc3QoMjAuMmYsIDMwLjNmKTsK
KworICAgIHRlc3QubW92ZShmaXJzdCk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjJmLCB0
ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIzMC4zZiwgdGVzdC55KCkpOworCisgICAg
V2ViQ29yZTo6RmxvYXRTaXplIHNlY29uZCgtODEuM2YsIDEwLjBmKTsKKworICAgIHRlc3QubW92
ZShzZWNvbmQpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDM4LjlmLCB0ZXN0LngoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDI0MC4zZiwgdGVzdC55KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRT
aXplIHRoaXJkKDExLjFmLCAtMzMuMmYpOworCisgICAgdGVzdC5tb3ZlKHRoaXJkKTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSg1MC4wZiwgdGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgy
MDcuMWYsIHRlc3QueSgpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBmb3VydGgoLTUuNmYs
IC05LjhmKTsKKworICAgIHRlc3QubW92ZShmb3VydGgpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ0LjRmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDE5Ny4zZiwgdGVzdC55KCkp
OworfQorCitURVNUKEZsb2F0UG9pbnQsIE1vdmVCeUludFBvaW50KQoreworICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgdGVzdCgxMDAuMGYsIDIwMC4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MTAwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkp
OworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmlyc3QoMjAsIDMwKTsKKworICAgIHRlc3QubW92
ZUJ5KGZpcnN0KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMjAuMGYsIHRlc3QueCgpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjMwLjBmLCB0ZXN0LnkoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBzZWNvbmQoLTgxLCAxMCk7CisKKyAgICB0ZXN0Lm1vdmVCeShzZWNvbmQpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDM5LjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI0
MC4wZiwgdGVzdC55KCkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgdGhpcmQoMTEsIC0zMyk7
CisKKyAgICB0ZXN0Lm1vdmVCeSh0aGlyZCk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAuMGYs
IHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjA3LjBmLCB0ZXN0LnkoKSk7CisKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBmb3VydGgoLTYsIC0xMCk7CisKKyAgICB0ZXN0Lm1vdmVCeShm
b3VydGgpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ0LjBmLCB0ZXN0LngoKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDE5Ny4wZiwgdGVzdC55KCkpOworfQorCitURVNUKEZsb2F0UG9pbnQsIE1v
dmVCeUZsb2F0UG9pbnQpCit7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0KDEwMC4wZiwg
MjAwLjBmKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYsIHRlc3QueCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0ZXN0LnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IGZpcnN0KDIwLjJmLCAzMC4zZik7CisKKyAgICB0ZXN0Lm1vdmVCeShmaXJzdCk7CisKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjJmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIzMC4zZiwgdGVzdC55KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzZWNvbmQoLTgx
LjNmLCAxMC4wZik7CisKKyAgICB0ZXN0Lm1vdmVCeShzZWNvbmQpOworCisgICAgRVhQRUNUX0ZM
T0FUX0VRKDM4LjlmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI0MC4zZiwgdGVz
dC55KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0aGlyZCgxMS4xZiwgLTMzLjJmKTsK
KworICAgIHRlc3QubW92ZUJ5KHRoaXJkKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg1MC4wZiwg
dGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDcuMWYsIHRlc3QueSgpKTsKKworICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgZm91cnRoKC01LjZmLCAtOS44Zik7CisKKyAgICB0ZXN0Lm1v
dmVCeShmb3VydGgpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ0LjRmLCB0ZXN0LngoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDE5Ny4zZiwgdGVzdC55KCkpOworfQorCitURVNUKEZsb2F0UG9p
bnQsIFNjYWxlKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVzdCgxMDAuMGYsIDIwMC4w
Zik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkpOworCisgICAgdGVzdC5zY2FsZSgyLjBmLCAyLjBm
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDAwLjBmLCB0ZXN0LnkoKSk7CisKKyAgICB0ZXN0LnNjYWxlKDAuNWYsIDAuNWYp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdGVzdC54KCkpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgyMDAuMGYsIHRlc3QueSgpKTsKKworICAgIHRlc3Quc2NhbGUoMik7CisKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQw
MC4wZiwgdGVzdC55KCkpOworCisgICAgdGVzdC5zY2FsZSgxLjBmLCAwLjVmKTsKKworICAgIEVY
UEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAw
LjBmLCB0ZXN0LnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgTm9ybWFsaXplKQoreworICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgYSgzMC4wZiwgNDAuMGYpOworCisgICAgYS5ub3JtYWxpemUo
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjYsIGEueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMC44LCBhLnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgRG90KQoreworICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQgYSgxMDAuMGYsIDIwMC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBiKDIuMGYsIDQuMGYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYygxLjBmLCAwLjVmKTsK
KworICAgIEVYUEVDVF9ORUFSKDEwMDAuMGYsIGEuZG90KGIpLCAwLjAwMDFmKTsKKyAgICBFWFBF
Q1RfTkVBUigyMDAuMGYsIGEuZG90KGMpLCAwLjAwMDFmKTsKK30KKworVEVTVChGbG9hdFBvaW50
LCBMZW5ndGhTcXVhcmVkKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdGVzdCgxMDAuMGYs
IDIwMC4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCB0ZXN0LngoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDUwMDAwLjBmLCB0ZXN0Lmxlbmd0aFNxdWFyZWQoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwg
Q29uc3RyYWluZWRCZXR3ZWVuKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbGVmdCgxMC4w
ZiwgMjAuMGYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcmlnaHQoMTAwLjBmLCAyMDAuMGYp
OworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0ZXN0MSg1MC4wZiwgODAuMGYpOworICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgdGVzdDIoOC4wZiwgODAuMGYpOworICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgdGVzdDMoNTAuMGYsIDIyMC4wZik7CisKKyAgICBhdXRvIGNvbnN0cmFpbmVkMSA9IHRl
c3QxLmNvbnN0cmFpbmVkQmV0d2VlbihsZWZ0LCByaWdodCk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDUwLjBmLCBjb25zdHJhaW5lZDEueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoODAuMGYsIGNv
bnN0cmFpbmVkMS55KCkpOworCisgICAgYXV0byBjb25zdHJhaW5lZDIgPSB0ZXN0Mi5jb25zdHJh
aW5lZEJldHdlZW4obGVmdCwgcmlnaHQpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgY29u
c3RyYWluZWQyLngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDgwLjBmLCBjb25zdHJhaW5lZDIu
eSgpKTsKKworICAgIGF1dG8gY29uc3RyYWluZWQzID0gdGVzdDMuY29uc3RyYWluZWRCZXR3ZWVu
KGxlZnQsIHJpZ2h0KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAuMGYsIGNvbnN0cmFpbmVkMy54
KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIGNvbnN0cmFpbmVkMy55KCkpOworfQor
CitURVNUKEZsb2F0UG9pbnQsIFNocnVua1RvKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
YmlnKDEwMC4wZiwgMjAwLjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNtYWxsZXIoMTAu
MGYsIDgwLjBmKTsKKworICAgIGF1dG8gc2hydW5rVG8gPSBiaWcuc2hydW5rVG8oc21hbGxlcik7
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIHNocnVua1RvLngoKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDgwLjBmLCBzaHJ1bmtUby55KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBiaWdpc2goOC4wZiwgMjAwLjBmKTsKKworICAgIGF1dG8gc2hydW5rVG8yID0gYmlnaXNoLnNo
cnVua1RvKHNtYWxsZXIpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDguMGYsIHNocnVua1RvMi54
KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg4MC4wZiwgc2hydW5rVG8yLnkoKSk7Cit9CisKK1RF
U1QoRmxvYXRQb2ludCwgRXhwYW5kZWRUbykKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJp
ZygxMDAuMGYsIDIwMC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzbWFsbGVyKDEwLjBm
LCA4MC4wZik7CisKKyAgICBhdXRvIGV4cGFuZGVkVG8gPSBzbWFsbGVyLmV4cGFuZGVkVG8oYmln
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYsIGV4cGFuZGVkVG8ueCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCBleHBhbmRlZFRvLnkoKSk7CisKKyAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IGJpZ2lzaCg4LjBmLCAzMDAuMGYpOworCisgICAgYXV0byBleHBhbmRlZFRvMiA9
IGJpZ2lzaC5leHBhbmRlZFRvKGJpZyk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCBl
eHBhbmRlZFRvMi54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMDAuMGYsIGV4cGFuZGVkVG8y
LnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgVHJhbnNwb3NlKQoreworICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgdGVzdCgxMDAuMGYsIDIwMC4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MTAwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdGVzdC55KCkp
OworCisgICAgYXV0byB0cmFuc3Bvc2VkID0gdGVzdC50cmFuc3Bvc2VkUG9pbnQoKTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHRyYW5zcG9zZWQueCgpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMTAwLjBmLCB0cmFuc3Bvc2VkLnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgVHJh
bnNmb3JtcykKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3QoMTAwLjBmLCAyMDAuMGYp
OworCisgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKKworICAgIGF1dG8gdHJh
bnNmb3JtZWQxID0gdGVzdC5tYXRyaXhUcmFuc2Zvcm0oYWZmaW5lKTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSgxMDAuMGYsIHRyYW5zZm9ybWVkMS54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgy
MDAuMGYsIHRyYW5zZm9ybWVkMS55KCkpOworCisgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
IGFmZmluZTIoMi4wLCAwLjAsIDAuMCwgMi4wLCAwLjAsIDAuMCk7CisKKyAgICBhdXRvIHRyYW5z
Zm9ybWVkMiA9IHRlc3QubWF0cml4VHJhbnNmb3JtKGFmZmluZTIpOworCisgICAgRVhQRUNUX0ZM
T0FUX0VRKDIwMC4wZiwgdHJhbnNmb3JtZWQyLngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQw
MC4wZiwgdHJhbnNmb3JtZWQyLnkoKSk7CisKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtYXRyaXg7CisKKyAgICBhdXRvIHRyYW5zZm9ybWVkMyA9IHRlc3QubWF0cml4VHJhbnNm
b3JtKG1hdHJpeCk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCB0cmFuc2Zvcm1lZDMu
eCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCB0cmFuc2Zvcm1lZDMueSgpKTsKKwor
ICAgIGF1dG8gdHJhbnNmb3JtZWQ0ID0gdGVzdC5tYXRyaXhUcmFuc2Zvcm0oYWZmaW5lMi50b1Ry
YW5zZm9ybWF0aW9uTWF0cml4KCkpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgdHJh
bnNmb3JtZWQ0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMC4wZiwgdHJhbnNmb3JtZWQ0
LnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgTWF0aCkKK3sKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IGEoMTAwLjBmLCAyMDAuMGYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYigxMDAu
MGYsIDIwMC4wZik7CisKKyAgICBhICs9IGI7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBm
LCBhLngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMC4wZiwgYS55KCkpOworCisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIGMoNTAuMGYsIDUwLjBmKTsKKworICAgIGEgKz0gYzsKKworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNTAuMGYsIGEueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDUwLjBm
LCBhLnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZCgxMC4wZiwgMjAwLjBmKTsKKwor
ICAgIGEgLT0gZDsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNDAuMGYsIGEueCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjUwLjBmLCBhLnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUg
ZSgxMDAuMGYsIDIwMC4wZik7CisKKyAgICBhdXRvIGYgPSBiICsgZTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSgyMDAuMGYsIGYueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLjBmLCBmLnko
KSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGcoMTAuMGYsIDIwLjBmKTsKKworICAgIGF1
dG8gaCA9IGIgKyBnOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDExMC4wZiwgaC54KCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgyMjAuMGYsIGgueSgpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBpID0gYiAtIGc7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoOTAuMGYsIGkud2lkdGgoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDE4MC4wZiwgaS5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IGogPSBiIC0gZTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjBmLCBqLngoKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMGYsIGoueSgpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgbmVnYXRlZCA9IC1iOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKC0xMDAuMGYsIG5lZ2F0
ZWQueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoLTIwMC4wZiwgbmVnYXRlZC55KCkpOworCisg
ICAgZmxvYXQgdmFsdWUgPSBiICogZzsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAwLjBmLCB2
YWx1ZSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgRXF1YWxpdHkpCit7CisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBhKDEwMC4wZiwgMjAwLjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGIo
MTAwLjBmLCAyMDAuMGYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYygxMC4wZiwgMjAuMGYp
OworCisgICAgQVNTRVJUX1RSVUUoYSA9PSBiKTsKKyAgICBBU1NFUlRfRkFMU0UoYSA9PSBjKTsK
KyAgICBBU1NFUlRfRkFMU0UoYSAhPSBiKTsKKyAgICBBU1NFUlRfVFJVRShhICE9IGMpOworCisg
ICAgQVNTRVJUX1RSVUUoV2ViQ29yZTo6YXJlRXNzZW50aWFsbHlFcXVhbChhLCBiKSk7CisgICAg
QVNTRVJUX0ZBTFNFKFdlYkNvcmU6OmFyZUVzc2VudGlhbGx5RXF1YWwoYSwgYykpOworfQorCitU
RVNUKEZsb2F0UG9pbnQsIEZsb29ycykKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGEoMTAw
LjZmLCAxOTkuOWYpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBmbG9vcmVkU2l6ZSA9IFdlYkNv
cmU6OmZsb29yZWRJbnRTaXplKGEpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAsIGZsb29yZWRT
aXplLndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxOTksIGZsb29yZWRTaXplLmhlaWdo
dCgpKTsKKworICAgIFdlYkNvcmU6OkludFBvaW50IGZsb29yZWRQb2ludCA9IFdlYkNvcmU6OmZs
b29yZWRJbnRQb2ludChhKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLCBmbG9vcmVkUG9pbnQu
eCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTk5LCBmbG9vcmVkUG9pbnQueSgpKTsKKworICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgZmxvb3JlZFBvaW50MXggPSBXZWJDb3JlOjpmbG9vclBvaW50
VG9EZXZpY2VQaXhlbHMoYSwgMS4wKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCBmbG9v
cmVkUG9pbnQxeC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxOTkuMGYsIGZsb29yZWRQb2lu
dDF4LnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGZsb29yZWRQb2ludDJ4ID0gV2Vi
Q29yZTo6Zmxvb3JQb2ludFRvRGV2aWNlUGl4ZWxzKGEsIDIuMCk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDEwMC41ZiwgZmxvb3JlZFBvaW50MngueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTk5
LjVmLCBmbG9vcmVkUG9pbnQyeC55KCkpOworfQorCitURVNUKEZsb2F0UG9pbnQsIFJvdW5kaW5n
KQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYSgxMDAuNGYsIDE5OS45Zik7CisKKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCByb3VuZGVkUG9pbnQgPSBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
YSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMCwgcm91bmRlZFBvaW50LngoKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDIwMCwgcm91bmRlZFBvaW50LnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2lu
dCwgQ2VpbGluZykKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGEoMTAwLjRmLCAxOTkuOWYp
OworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgY2VpbGluZ1BvaW50ID0gV2ViQ29yZTo6Y2VpbGVk
SW50UG9pbnQoYSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMSwgY2VpbGluZ1BvaW50LngoKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwMCwgY2VpbGluZ1BvaW50LnkoKSk7CisKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IGNlaWxpbmdQb2ludDF4ID0gV2ViQ29yZTo6Y2VpbFBvaW50VG9EZXZp
Y2VQaXhlbHMoYSwgMS4wKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAxLjBmLCBjZWlsaW5nUG9p
bnQxeC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIGNlaWxpbmdQb2ludDF4Lnko
KSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNlaWxpbmdQb2ludDJ4ID0gV2ViQ29yZTo6
Y2VpbFBvaW50VG9EZXZpY2VQaXhlbHMoYSwgMi4wKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAw
LjVmLCBjZWlsaW5nUG9pbnQyeC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIGNl
aWxpbmdQb2ludDJ4LnkoKSk7Cit9CisKK1RFU1QoRmxvYXRQb2ludCwgQ2FzdGluZykKK3sKKyAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50IGEoMTAwLjRmLCAxOTkuOWYpOworCisgICAgV2ViQ29yZTo6
RmxvYXRTaXplIGZsb2F0U2l6ZSA9IFdlYkNvcmU6OnRvRmxvYXRTaXplKGEpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgxMDAuNGYsIGZsb2F0U2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMTk5LjlmLCBmbG9hdFNpemUuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IGIoOTkuNmYsIDI5OS4xZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGZsb2F0UG9pbnQg
PSBXZWJDb3JlOjp0b0Zsb2F0UG9pbnQoYik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDk5LjZmLCBm
bG9hdFBvaW50LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI5OS4xZiwgZmxvYXRQb2ludC55
KCkpOworCisjaWYgVVNFKENHKQorICAgIENHUG9pbnQgY2dQb2ludCA9IGE7CisKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMTAwLjRmLCBjZ1BvaW50LngpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxOTku
OWYsIGNnUG9pbnQueSk7CisKKyAgICBDR1BvaW50IGNnUG9pbnQyID0gQ0dQb2ludE1ha2UoLTIy
LjNmLCAxNC4yZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3RDRyhjZ1BvaW50Mik7
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoLTIyLjNmLCB0ZXN0Q0cueCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTQuMmYsIHRlc3RDRy55KCkpOworI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4p
CisgICAgRDJEX1BPSU5UXzJGIGQyZFBvaW50ID0gYTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgx
MDAuNGYsIGQyZFBvaW50LngpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxOTkuOWYsIGQyZFBvaW50
LnkpOworCisgICAgRDJEX1BPSU5UXzJGIGQyZFBvaW50MiA9IEQyRDE6OlBvaW50MkYoLTIyLjNm
LCAxNC4yZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3REMkQoZDJkUG9pbnQyKTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgtMjIuM2YsIHRlc3REMkQueCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTQuMmYsIHRlc3REMkQueSgpKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmxvYXRSZWN0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GbG9hdFJlY3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyOWJhNTVhOWRhYmYzOWMzMGY5ZjU3YWQ1M2RjZThjMWMzOWVhOGU4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GbG9hdFJlY3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNzk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+Ci0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGlj
cy5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8ZDJkMS5oPgotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIHZvaWQgdGVzdEdldEFu
ZFNldChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKLXsKLSAgICByZWN0LnNldFgoMS4xZik7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEuMWYsIHJlY3QueCgpKTsKLSAgICByZWN0LnNldFkoMi4yZik7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIuMmYsIHJlY3QueSgpKTsKLSAgICByZWN0LnNldFdpZHRo
KDIwMy4yZik7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMy4yZiwgcmVjdC53aWR0aCgpKTsKLSAg
ICByZWN0LnNldEhlaWdodCg3Mi45Zik7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDcyLjlmLCByZWN0
LmhlaWdodCgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdEVtcHR5UmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHJlY3QueCgpKTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgw
LCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLCByZWN0LmhlaWdodCgpKTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9GTE9BVF9F
USgwLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVjdC5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9UUlVFKHJlY3QuaXNaZXJvKCkpOwotICAgIEVYUEVDVF9GQUxTRShyZWN0LmlzSW5m
aW5pdGUoKSk7Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBEZWZhdWx0Q29uc3RydWN0aW9uKQotewot
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB0ZXN0OwotCi0gICAgdGVzdEVtcHR5UmVjdCh0ZXN0KTsK
LQotICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Ci0KLSAgICBhdXRvIGxvY2F0aW9uID0gdGVzdC5s
b2NhdGlvbigpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBsb2NhdGlvbi54KCkpOwotICAgIEVY
UEVDVF9GTE9BVF9FUSgwLCBsb2NhdGlvbi55KCkpOwotCi0gICAgYXV0byBzaXplID0gdGVzdC5z
aXplKCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHNpemUud2lkdGgoKSk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDAsIHNpemUuaGVpZ2h0KCkpOwotfQotCi1URVNUKEZsb2F0UmVjdCwgVmFsdWVD
b25zdHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHRlc3QoMTAuMGYsIDIwLjBm
LCAxMDAuMGYsIDUwLjBmKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgdGVzdC54KCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgdGVzdC55KCkpOwotICAgIEVYUEVDVF9GTE9B
VF9FUSgxMDAuMGYsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCB0
ZXN0LmhlaWdodCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTEwLjBmLCB0ZXN0Lm1heFgoKSk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDcwLjBmLCB0ZXN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHRlc3QuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc1plcm8oKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNJbmZpbml0ZSgpKTsKLQotICAgIGF1dG8gbG9jYXRpb24g
PSB0ZXN0LmxvY2F0aW9uKCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCBsb2NhdGlvbi54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgbG9jYXRpb24ueSgpKTsKLQotICAgIGF1
dG8gc2l6ZSA9IHRlc3Quc2l6ZSgpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYsIHNpemUu
d2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCBzaXplLmhlaWdodCgpKTsKLX0K
LQotVEVTVChGbG9hdFJlY3QsIFBvaW50U2l6ZUNvbnN0cnVjdGlvbikKLXsKLSAgICBXZWJDb3Jl
OjpGbG9hdFBvaW50IGxvY2F0aW9uKDIwLjBmLCAzMC4wZik7Ci0gICAgV2ViQ29yZTo6RmxvYXRT
aXplIHNpemUoMTAwLjBmLCA1MC4wZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdGVzdChs
b2NhdGlvbiwgc2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHRlc3QueCgpKTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuMGYsIHRlc3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMTAwLjBmLCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg1MC4wZiwgdGVz
dC5oZWlnaHQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEyMC4wZiwgdGVzdC5tYXhYKCkpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSg4MC4wZiwgdGVzdC5tYXhZKCkpOwotICAgIEVYUEVDVF9GQUxT
RSh0ZXN0LmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNaZXJvKCkpOwotICAg
IEVYUEVDVF9GQUxTRSh0ZXN0LmlzSW5maW5pdGUoKSk7Ci0KLSAgICBhdXRvIGxvY2F0aW9uMiA9
IHRlc3QubG9jYXRpb24oKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIGxvY2F0aW9uMi54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgbG9jYXRpb24yLnkoKSk7Ci0KLSAgICBh
dXRvIHNpemUyID0gdGVzdC5zaXplKCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgc2l6
ZTIud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCBzaXplMi5oZWlnaHQoKSk7
Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBUd29Qb2ludENvbnN0cnVjdGlvbikKLXsKLSAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHBvaW50MSgyMC4wZiwgMzAuMGYpOwotICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgcG9pbnQyKDE1MC4wZiwgMjUwLjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB0
ZXN0KHBvaW50MSwgcG9pbnQyKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgdGVzdC54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgdGVzdC55KCkpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgxMzAuMGYsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIyMC4w
ZiwgdGVzdC5oZWlnaHQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDE1MC4wZiwgdGVzdC5tYXhY
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyNTAuMGYsIHRlc3QubWF4WSgpKTsKLSAgICBFWFBF
Q1RfRkFMU0UodGVzdC5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzWmVybygp
KTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc0luZmluaXRlKCkpOwotCi0gICAgYXV0byBsb2Nh
dGlvbiA9IHRlc3QubG9jYXRpb24oKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIGxvY2F0
aW9uLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCBsb2NhdGlvbi55KCkpOwotCi0g
ICAgYXV0byBzaXplID0gdGVzdC5zaXplKCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEzMC4wZiwg
c2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLjBmLCBzaXplLmhlaWdodCgp
KTsKLX0KLQotVEVTVChGbG9hdFJlY3QsIEludFJlY3RDb25zdHJ1Y3Rpb24pCi17Ci0gICAgV2Vi
Q29yZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTUwLCAzMDApOwotCi0gICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHRlc3QocmVjdCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHRlc3QueCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuMGYsIHRlc3QueSgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMTUwLjBmLCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzMDAuMGYs
IHRlc3QuaGVpZ2h0KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxNzAuMGYsIHRlc3QubWF4WCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzMwLjBmLCB0ZXN0Lm1heFkoKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc1plcm8oKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNJbmZpbml0ZSgpKTsKLQotICAgIGF1dG8gbG9jYXRp
b24gPSB0ZXN0LmxvY2F0aW9uKCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCBsb2NhdGlv
bi54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgbG9jYXRpb24ueSgpKTsKLQotICAg
IGF1dG8gc2l6ZSA9IHRlc3Quc2l6ZSgpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxNTAuMGYsIHNp
emUud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwMC4wZiwgc2l6ZS5oZWlnaHQoKSk7
Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBTZXRMb2NhdGlvbkFuZFNpemUpCi17Ci0gICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHJlY3Q7Ci0KLSAgICB0ZXN0RW1wdHlSZWN0KHJlY3QpOwotCi0gICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbigxMC4wZiwgMjAuMGYpOwotCi0gICAgcmVjdC5zZXRM
b2NhdGlvbihsb2NhdGlvbik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIHJlY3QueCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMC4wZiwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMC4wZiwgcmVj
dC5oZWlnaHQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCByZWN0Lm1heFgoKSk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
cmVjdC5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKHJlY3QuaXNaZXJvKCkpOwotICAgIEVY
UEVDVF9GQUxTRShyZWN0LmlzSW5maW5pdGUoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUg
c2l6ZSgxMDAuMGYsIDIwMC4wZik7Ci0KLSAgICByZWN0LnNldFNpemUoc2l6ZSk7Ci0KLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMTAuMGYsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAu
MGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCByZWN0LndpZHRoKCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHJlY3QuaGVpZ2h0KCkpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSgxMTAuMGYsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjIw
LjBmLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJlY3QuaXNFbXB0eSgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocmVjdC5pc1plcm8oKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJlY3QuaXNJ
bmZpbml0ZSgpKTsKLX0KLQotVEVTVChGbG9hdFJlY3QsIENlbnRlcikKLXsKLSAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIGF1
dG8gY2VudGVyID0gcmVjdC5jZW50ZXIoKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSg3MC4wZiwg
Y2VudGVyLngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEzMC4wZiwgY2VudGVyLnkoKSk7Ci19
Ci0KLVRFU1QoRmxvYXRSZWN0LCBNb3ZlKQotewotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0
KDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRTaXpl
IGRlbHRhKDEwLjBmLCAyMC4wZik7Ci0KLSAgICByZWN0Lm1vdmUoZGVsdGEpOwotCi0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDMwLjBmLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBm
LCByZWN0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGRlbHRhUG9pbnQoLTIwLjBm
LCAtNDAuMGYpOwotCi0gICAgcmVjdC5tb3ZlQnkoZGVsdGFQb2ludCk7Ci0KLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTAuMGYsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIHJl
Y3QueSgpKTsKLQotICAgIHJlY3QubW92ZSgtMTAuMGYsIDIyLjBmKTsKLQotICAgIEVYUEVDVF9G
TE9BVF9FUSgwLjBmLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMyLjBmLCByZWN0
LnkoKSk7Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBFeHBhbmQpCi17Ci0gICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QoMjAuMGYsIDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7Ci0KLSAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgc2l6ZSgxMDAuMGYsIDEwMC4wZik7Ci0KLSAgICByZWN0LmV4cGFuZChzaXpl
KTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDMwMC4wZiwgcmVjdC5oZWlnaHQoKSk7Ci0KLSAgICByZWN0LmV4cGFuZCg1
NS4wZiwgMjIuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDI1NS4wZiwgcmVjdC53aWR0aCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzIyLjBmLCByZWN0LmhlaWdodCgpKTsKLQotICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBzaXplMigtMTAuMGYsIC0yMC4wZik7Ci0KLSAgICByZWN0LmV4cGFu
ZChzaXplMik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjQ1LjBmLCByZWN0LndpZHRoKCkpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgzMDIuMGYsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAgcmVjdC5l
eHBhbmQoLTUuMGYsIC0yLjBmKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyNDAuMGYsIHJlY3Qu
d2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwMC4wZiwgcmVjdC5oZWlnaHQoKSk7Ci0K
LSAgICBFWFBFQ1RfRkFMU0UocmVjdC5pc0luZmluaXRlKCkpOwotfQotCi1URVNUKEZsb2F0UmVj
dCwgQ29udHJhY3QpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAuMGYsIDMwLjBm
LCAxMDAuMGYsIDIwMC4wZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSg1MC4wZiwg
MTAwLjBmKTsKLQotICAgIHJlY3QuY29udHJhY3Qoc2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRf
RVEoNTAuMGYsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgcmVj
dC5oZWlnaHQoKSk7Ci0KLSAgICByZWN0LmNvbnRyYWN0KDI1LjBmLCAyMi4wZik7Ci0KLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMjUuMGYsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VR
KDc4LjBmLCByZWN0LmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplMigt
MTAuMGYsIC0yMC4wZik7Ci0KLSAgICByZWN0LmNvbnRyYWN0KHNpemUyKTsKLQotICAgIEVYUEVD
VF9GTE9BVF9FUSgzNS4wZiwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoOTgu
MGYsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAgcmVjdC5jb250cmFjdCgtNS4wZiwgLTIuMGYpOwot
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjBmLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgxMDAuMGYsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKHJlY3Qu
aXNJbmZpbml0ZSgpKTsKLX0KLQotVEVTVChGbG9hdFJlY3QsIFNoaWZ0WEVkZ2UpCi17Ci0gICAg
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAuMGYsIDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7Ci0K
LSAgICByZWN0LnNoaWZ0WEVkZ2VUbyg3Ny4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoNzcu
MGYsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCByZWN0Lm1heFgoKSk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0ZMT0FU
X0VRKDIzMC4wZiwgcmVjdC5tYXhZKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg0My4wZiwgcmVj
dC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCByZWN0LmhlaWdodCgpKTsK
LQotICAgIHJlY3Quc2hpZnRNYXhYRWRnZVRvKDIwMC4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRf
RVEoNzcuMGYsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCByZWN0Lm1h
eFgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDIzMC4wZiwgcmVjdC5tYXhZKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMjMu
MGYsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwMC4wZiwgcmVjdC5oZWln
aHQoKSk7Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBTaGlmdFlFZGdlKQotewotICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCByZWN0KDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOwotCi0gICAgcmVj
dC5zaGlmdFlFZGdlVG8oNTkuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCByZWN0
LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEyMC4wZiwgcmVjdC5tYXhYKCkpOwotICAgIEVY
UEVDVF9GTE9BVF9FUSg1OS4wZiwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAu
MGYsIHJlY3QubWF4WSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCByZWN0LndpZHRo
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxNzEuMGYsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAg
cmVjdC5zaGlmdE1heFlFZGdlVG8oMjcwLjBmKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4w
ZiwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMjAuMGYsIHJlY3QubWF4WCgpKTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoNTkuMGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMjcwLjBmLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgcmVj
dC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjExLjBmLCByZWN0LmhlaWdodCgpKTsK
LX0KLQotVEVTVChGbG9hdFJlY3QsIEluZmxhdGUpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3QoMjAuMGYsIDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7Ci0KLSAgICByZWN0LmluZmxhdGVY
KDUuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDE1LjBmLCByZWN0LngoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDEyNS4wZiwgcmVjdC5tYXhYKCkpOwotCi0gICAgcmVjdC5pbmZsYXRlWSg0
LjBmKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyNi4wZiwgcmVjdC55KCkpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSgyMzQuMGYsIHJlY3QubWF4WSgpKTsKLQotICAgIHJlY3QuaW5mbGF0ZSgxMC4w
Zik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoNS4wZiwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSgxMzUuMGYsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTYuMGYs
IHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjQ0LjBmLCByZWN0Lm1heFkoKSk7Ci0K
LSAgICBFWFBFQ1RfRkFMU0UocmVjdC5pc0luZmluaXRlKCkpOwotfQotCi1URVNUKEZsb2F0UmVj
dCwgQ29ybmVycykKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYs
IDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdG9wTGVmdCA9IHJl
Y3QubWluWE1pbllDb3JuZXIoKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHRvcExlZnQu
eCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuMGYsIHRvcExlZnQueSgpKTsKLQotICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgdG9wUmlnaHQgPSByZWN0Lm1heFhNaW5ZQ29ybmVyKCk7Ci0gICAg
RVhQRUNUX0ZMT0FUX0VRKDEyMC4wZiwgdG9wUmlnaHQueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEoMzAuMGYsIHRvcFJpZ2h0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJvdHRv
bUxlZnQgPSByZWN0Lm1pblhNYXhZQ29ybmVyKCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBm
LCBib3R0b21MZWZ0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIzMC4wZiwgYm90dG9tTGVm
dC55KCkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBib3R0b21SaWdodCA9IHJlY3QubWF4
WE1heFlDb3JuZXIoKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCBib3R0b21SaWdodC54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAuMGYsIGJvdHRvbVJpZ2h0LnkoKSk7Ci19Ci0K
LVRFU1QoRmxvYXRSZWN0LCBDb250YWlucykKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVj
dCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb250YWluZWQoMzAuMGYsIDQwLjBmLCA1MC4wZiwgMTAwLjBmKTsKLQotICAgIEFTU0VSVF9U
UlVFKHJlY3QuY29udGFpbnMoY29udGFpbmVkKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
b3V0c2lkZSgxMjAuMGYsIDIzMC4wZiwgNTAuMGYsIDEwMC4wZik7Ci0KLSAgICBBU1NFUlRfRkFM
U0UocmVjdC5jb250YWlucyhvdXRzaWRlKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgaW50
ZXJzZWN0cygxMC4wZiwgMjAuMGYsIDkwLjBmLCAxODAuMGYpOwotCi0gICAgQVNTRVJUX0ZBTFNF
KHJlY3QuY29udGFpbnMoaW50ZXJzZWN0cykpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBw
b2ludEluc2lkZSg2MC4wZiwgNzAuMGYpOwotCi0gICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlu
cyhwb2ludEluc2lkZSkpOwotICAgIEFTU0VSVF9UUlVFKHJlY3QuY29udGFpbnMocG9pbnRJbnNp
ZGUsIFdlYkNvcmU6OkZsb2F0UmVjdDo6SW5zaWRlQnV0Tm90T25TdHJva2UpKTsKLQotICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgcG9pbnRPdXRzaWRlKDE2MC4wZiwgMjcwLjBmKTsKLQotICAgIEFT
U0VSVF9GQUxTRShyZWN0LmNvbnRhaW5zKHBvaW50T3V0c2lkZSkpOwotICAgIEFTU0VSVF9GQUxT
RShyZWN0LmNvbnRhaW5zKHBvaW50T3V0c2lkZSwgV2ViQ29yZTo6RmxvYXRSZWN0OjpJbnNpZGVC
dXROb3RPblN0cm9rZSkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludE9uTGluZSgy
MC4wZiwgMzAuMGYpOwotCi0gICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlucyhwb2ludE9uTGlu
ZSkpOwotICAgIEFTU0VSVF9GQUxTRShyZWN0LmNvbnRhaW5zKHBvaW50T3V0c2lkZSwgV2ViQ29y
ZTo6RmxvYXRSZWN0OjpJbnNpZGVCdXROb3RPblN0cm9rZSkpOwotCi0gICAgQVNTRVJUX1RSVUUo
cmVjdC5jb250YWlucyg2MC4wZiwgNzAuMGYpKTsKLSAgICBBU1NFUlRfRkFMU0UocmVjdC5jb250
YWlucygxNjAuMGYsIDI3MC4wZikpOwotfQotCi1URVNUKEZsb2F0UmVjdCwgSW50ZXJzZWN0cykK
LXsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAw
LjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb250YWluZWQoMzAuMGYsIDQwLjBmLCA1
MC4wZiwgMTAwLjBmKTsKLQotICAgIEFTU0VSVF9UUlVFKHJlY3QuaW50ZXJzZWN0cyhjb250YWlu
ZWQpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBvdXRzaWRlKDEyMC4wZiwgMjMwLjBmLCA1
MC4wZiwgMTAwLjBmKTsKLQotICAgIEFTU0VSVF9GQUxTRShyZWN0LmludGVyc2VjdHMob3V0c2lk
ZSkpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGludGVyc2VjdHMoMTAuMGYsIDIwLjBmLCA5
MC4wZiwgMTgwLjBmKTsKLQotICAgIEFTU0VSVF9UUlVFKHJlY3QuaW50ZXJzZWN0cyhpbnRlcnNl
Y3RzKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RJbnRlcnNlY3RSZXN1bHQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiByZWN0KQotewotICAgIEVYUEVDVF9GTE9BVF9FUSg3MC4wZiwgcmVjdC54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMjAuMGYsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoODAuMGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjMwLjBm
LCByZWN0Lm1heFkoKSk7Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBJbnRlcnNlY3QpCi17Ci0gICAg
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RBKDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOwot
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0Qig3MC4wZiwgODAuMGYsIDEwMC4wZiwgMjAwLjBm
KTsKLQotICAgIHJlY3RBLmludGVyc2VjdChyZWN0Qik7Ci0KLSAgICB0ZXN0SW50ZXJzZWN0UmVz
dWx0KHJlY3RBKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0QygyMC4wZiwgMzAuMGYs
IDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIGF1dG8gaW50ZXJzZWN0ZWQgPSBXZWJDb3JlOjppbnRl
cnNlY3Rpb24ocmVjdEMsIHJlY3RCKTsKLQotICAgIHRlc3RJbnRlcnNlY3RSZXN1bHQoaW50ZXJz
ZWN0ZWQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0VW5pdGVkUmVjdHMoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB1bml0ZWQpCi17Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCB1bml0ZWQu
eCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTcwLjBmLCB1bml0ZWQubWF4WCgpKTsKLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMzAuMGYsIHVuaXRlZC55KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgy
ODAuMGYsIHVuaXRlZC5tYXhZKCkpOwotfQotCi1URVNUKEZsb2F0UmVjdCwgVW5pdGUpCi17Ci0g
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RBKDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYp
OwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0Qig3MC4wZiwgODAuMGYsIDEwMC4wZiwgMjAw
LjBmKTsKLQotICAgIHJlY3RBLnVuaXRlKHJlY3RCKTsKLQotICAgIHRlc3RVbml0ZWRSZWN0cyhy
ZWN0QSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEMoMjAuMGYsIDMwLjBmLCAxMDAu
MGYsIDIwMC4wZik7Ci0KLSAgICBhdXRvIHVuaXRlZCA9IFdlYkNvcmU6OnVuaW9uUmVjdChyZWN0
QywgcmVjdEIpOwotCi0gICAgdGVzdFVuaXRlZFJlY3RzKHVuaXRlZCk7Ci19Ci0KLVRFU1QoRmxv
YXRSZWN0LCBFeHRlbmQpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAuMGYsIDMw
LjBmLCAxMDAuMGYsIDIwMC4wZik7Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCgxNzAu
MGYsIDI4MC4wZik7Ci0KLSAgICByZWN0LmV4dGVuZChwb2ludCk7Ci0KLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMjAuMGYsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTcwLjBmLCByZWN0
Lm1heFgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCByZWN0LnkoKSk7Ci0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDI4MC4wZiwgcmVjdC5tYXhZKCkpOwotfQotCi1URVNUKEZsb2F0UmVjdCwg
T3ZlcmxhcHMpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAuMGYsIDMwLjBmLCAx
MDAuMGYsIDIwMC4wZik7Ci0KLSAgICBBU1NFUlRfRkFMU0UocmVjdC5vdmVybGFwc1hSYW5nZSgw
LjBmLCAxMC4wZikpOwotICAgIEFTU0VSVF9UUlVFKHJlY3Qub3ZlcmxhcHNYUmFuZ2UoMTAuMGYs
IDMwLjBmKSk7Ci0gICAgQVNTRVJUX1RSVUUocmVjdC5vdmVybGFwc1hSYW5nZSg0MC4wZiwgNzAu
MGYpKTsKLSAgICBBU1NFUlRfVFJVRShyZWN0Lm92ZXJsYXBzWFJhbmdlKDExMC4wZiwgMTMwLjBm
KSk7Ci0gICAgQVNTRVJUX0ZBTFNFKHJlY3Qub3ZlcmxhcHNYUmFuZ2UoMTQwLjBmLCA2MDAuMGYp
KTsKLQotICAgIEFTU0VSVF9GQUxTRShyZWN0Lm92ZXJsYXBzWVJhbmdlKDAuMGYsIDEwLjBmKSk7
Ci0gICAgQVNTRVJUX1RSVUUocmVjdC5vdmVybGFwc1lSYW5nZSgxMC4wZiwgNDAuMGYpKTsKLSAg
ICBBU1NFUlRfVFJVRShyZWN0Lm92ZXJsYXBzWVJhbmdlKDQwLjBmLCA3MC4wZikpOwotICAgIEFT
U0VSVF9UUlVFKHJlY3Qub3ZlcmxhcHNZUmFuZ2UoMjIwLjBmLCAyNTAuMGYpKTsKLSAgICBBU1NF
UlRfRkFMU0UocmVjdC5vdmVybGFwc1lSYW5nZSgyNTAuMGYsIDYwMC4wZikpOwotfQotCi1URVNU
KEZsb2F0UmVjdCwgU2NhbGUpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAuMGYs
IDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7Ci0KLSAgICByZWN0LnNjYWxlKDIuMGYpOwotCi0gICAg
RVhQRUNUX0ZMT0FUX0VRKDQwLjBmLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDI0
MC4wZiwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg2MC4wZiwgcmVjdC55KCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSg0NjAuMGYsIHJlY3QubWF4WSgpKTsKLQotICAgIHJlY3Qu
c2NhbGUoMC41ZiwgMi4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHJlY3QueCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCByZWN0Lm1heFgoKSk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDEyMC4wZiwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg5MjAuMGYs
IHJlY3QubWF4WSgpKTsKLQotICAgIHJlY3Quc2NhbGUoMS4wZiwgMC4yNWYpOwotCi0gICAgRVhQ
RUNUX0ZMT0FUX0VRKDIwLjBmLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEyMC4w
ZiwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgcmVjdC55KCkpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAuMGYsIHJlY3QubWF4WSgpKTsKLX0KLQotVEVTVChGbG9h
dFJlY3QsIFRyYW5zcG9zZSkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwg
MzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKLQotICAgIGF1dG8gdHJhbnNwb3NlZCA9IHJlY3QudHJh
bnNwb3NlZFJlY3QoKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgdHJhbnNwb3NlZC54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAuMGYsIHRyYW5zcG9zZWQubWF4WCgpKTsKLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHRyYW5zcG9zZWQueSgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMTIwLjBmLCB0cmFuc3Bvc2VkLm1heFkoKSk7Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBG
aXRUb1BvaW50cykKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgxMC4wZiwgMjAuMGYs
IDMwLjBmLCA0MC4wZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHAwKDIwLjBmLCAzMC4w
Zik7Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBwMSg3MC4wZiwgMTMwLjBmKTsKLSAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHAyKDUwLjBmLCAyMC4wZik7Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBwMyg5MC4wZiwgMTkwLjBmKTsKLQotICAgIHJlY3QuZml0VG9Qb2ludHMocDAsIHAxKTsKLQot
ICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9F
USg3MC4wZiwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgcmVjdC55
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMzAuMGYsIHJlY3QubWF4WSgpKTsKLQotICAgIHJl
Y3QuZml0VG9Qb2ludHMocDAsIHAxLCBwMik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYs
IHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoNzAuMGYsIHJlY3QubWF4WCgpKTsKLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
MTMwLjBmLCByZWN0Lm1heFkoKSk7Ci0KLSAgICByZWN0LmZpdFRvUG9pbnRzKHAwLCBwMSwgcDIs
IHAzKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgcmVjdC54KCkpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSg5MC4wZiwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4w
ZiwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxOTAuMGYsIHJlY3QubWF4WSgpKTsK
LX0KLQotI2lmIFVTRShDRykgfHwgUExBVEZPUk0oV0lOKQotc3RhdGljIHZvaWQgY2hlY2tDYXN0
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgRVhQRUNUX0ZMT0FU
X0VRKDEwLjBmLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjBmLCByZWN0Lm1h
eFgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDYwLjBmLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBm
LCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg0MC4wZiwgcmVjdC5oZWlnaHQo
KSk7Ci19Ci0jZW5kaWYKLQotVEVTVChGbG9hdFJlY3QsIENhc3RpbmcpCi17Ci0gICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHJlY3QoMTAuMGYsIDIwLjBmLCAzMC4wZiwgNDAuMGYpOwotCi0jaWYgVVNF
KENHKQotICAgIENHUmVjdCBjZ1JlY3QgPSByZWN0OwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEw
LjBmLCBjZ1JlY3Qub3JpZ2luLngpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgY2dSZWN0
Lm9yaWdpbi55KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuMGYsIGNnUmVjdC5zaXplLndpZHRo
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuMGYsIGNnUmVjdC5zaXplLmhlaWdodCk7Ci0KLSAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEZyb21DR1JlY3QoY2dSZWN0KTsKLQotICAgIGNoZWNr
Q2FzdFJlY3QocmVjdEZyb21DR1JlY3QpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0g
ICAgRDJEMV9SRUNUX0YgZDJkUmVjdCA9IHJlY3Q7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAu
MGYsIGQyZFJlY3QubGVmdCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCBkMmRSZWN0LnRv
cCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjBmLCBkMmRSZWN0LnJpZ2h0KTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoNjAuMGYsIGQyZFJlY3QuYm90dG9tKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0RnJvbUQyRFJlY3QoZDJkUmVjdCk7Ci0KLSAgICBjaGVja0Nhc3RSZWN0KHJlY3RG
cm9tRDJEUmVjdCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgY2hlY2tBZGRpdGlvblJlc3Vs
dDEoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KQotewotICAgIEVYUEVDVF9GTE9BVF9F
USgxMC4wZiwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMzAuMGYsIHJlY3QubWF4
WCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjIwLjBmLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEyMC4w
ZiwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCByZWN0LmhlaWdo
dCgpKTsKLX0KLQotc3RhdGljIHZvaWQgY2hlY2tBZGRpdGlvblJlc3VsdDIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiByZWN0KQotewotICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgcmVjdC54
KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyNTAuMGYsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBF
Q1RfRkxPQVRfRVEoMjAuMGYsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjQwLjBm
LCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDI0MC4wZiwgcmVjdC53aWR0aCgp
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLjBmLCByZWN0LmhlaWdodCgpKTsKLX0KLQotVEVT
VChGbG9hdFJlY3QsIEFkZGl0aW9uKQotewotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDEw
LjBmLCAyMC4wZiwgMTAwLjBmLCAxMDAuMGYpOwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByaWdo
dFNpZGUoMC4wZiwgMC4wZiwgMjAuMGYsIDEwMC4wZik7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0
IGJvdHRvbSgwLjBmLCAwLjBmLCAxMjAuMGYsIDIwLjBmKTsKLQotICAgIGF1dG8gY29tYmluZWQg
PSByZWN0ICsgcmlnaHRTaWRlOwotCi0gICAgY2hlY2tBZGRpdGlvblJlc3VsdDEoY29tYmluZWQp
OwotCi0gICAgYXV0byBjb21iaW5lZDIgPSBjb21iaW5lZCArIGJvdHRvbTsKLQotICAgIGNoZWNr
QWRkaXRpb25SZXN1bHQyKGNvbWJpbmVkMik7Ci0KLSAgICByZWN0ICs9IHJpZ2h0U2lkZTsKLSAg
ICByZWN0ICs9IGJvdHRvbTsKLQotICAgIGNoZWNrQWRkaXRpb25SZXN1bHQyKHJlY3QpOwotfQot
Ci1URVNUKEZsb2F0UmVjdCwgRXF1YWxpdHkpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJl
Y3QoMTAuMGYsIDIwLjBmLCAxMDAuMGYsIDEwMC4wZik7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3QyKDEwLjBmLCAyMC4wZiwgMTAwLjBmLCAxMDAuMGYpOwotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByaWdodFNpZGUoMTEwLjBmLCAyMC4wZiwgMjAuMGYsIDEwMC4wZik7Ci0KLSAgICBBU1NF
UlRfVFJVRShyZWN0ID09IHJlY3QyKTsKLSAgICBBU1NFUlRfRkFMU0UocmVjdCAhPSByZWN0Mik7
Ci0gICAgQVNTRVJUX1RSVUUocmVjdCAhPSByaWdodFNpZGUpOwotICAgIEFTU0VSVF9GQUxTRShy
ZWN0ID09IHJpZ2h0U2lkZSk7Ci19Ci0KLVRFU1QoRmxvYXRSZWN0LCBJbmZpbml0ZVJlY3QpCi17
Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IGluZmluaXRlID0gV2ViQ29yZTo6RmxvYXRSZWN0Ojpp
bmZpbml0ZVJlY3QoKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgtc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46Om1heCgpIC8gMiwgaW5maW5pdGUueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEo
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsIGluZmluaXRlLnkoKSk7Ci0g
ICAgRVhQRUNUX0ZMT0FUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSwgaW5m
aW5pdGUud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKSwgaW5maW5pdGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gRklYTUU6IFdlIGhh
dmUgYW4gdW51c3VhbCByZXByZXNlbnRhdGlvbiBmb3Igb3VyIGluZmluaXRlIHJlY3QuCi0gICAg
Ly8gV2ViQ29yZTo6RmxvYXQ6OmluZmluaXRlUmVjdCBpcyAobmVnYXRpdmUgaW5maW5pdHkpLzIg
Zm9yIHRoZSB1cHBlciBsZWZ0IGNvcm5lciwKLSAgICAvLyB3aGlsZSBDb3JlR3JhcGhpY3MgYW5k
IEQyRCB1c2UgKG5lZ2F0aXZlIGluZmluaXR5KS4KLQotI2lmIFVTRShDRykKLSAgICBDR1JlY3Qg
Y2dJbmZpbml0ZVJlY3QgPSBDR1JlY3RJbmZpbml0ZTsKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBFWFBFQ1RfRkxPQVRfRVEoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIs
IGNnSW5maW5pdGVSZWN0Lm9yaWdpbi54KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsIGNnSW5maW5pdGVSZWN0Lm9yaWdpbi55KTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBj
Z0luZmluaXRlUmVjdC5zaXplLndpZHRoKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBjZ0luZmluaXRlUmVjdC5zaXplLmhlaWdodCk7Ci0j
ZWxzZQotICAgIEVYUEVDVF9GTE9BVF9FUSgtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1h
eCgpLCBjZ0luZmluaXRlUmVjdC5vcmlnaW4ueCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKC1zdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGNnSW5maW5pdGVSZWN0Lm9yaWdpbi55KTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBj
Z0luZmluaXRlUmVjdC5vcmlnaW4ueCArIGNnSW5maW5pdGVSZWN0LnNpemUud2lkdGgpOwotICAg
IEVYUEVDVF9GTE9BVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGNnSW5m
aW5pdGVSZWN0Lm9yaWdpbi55ICsgY2dJbmZpbml0ZVJlY3Quc2l6ZS5oZWlnaHQpOwotI2VuZGlm
Ci0gICAgLy8gQVNTRVJUX1RSVUUoaW5maW5pdGUgPT0gY2dJbmZpbml0ZVJlY3QpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgRDJEMV9SRUNUX0YgZDJkSW5maW5pdGVSZWN0ID0g
RDJEMTo6SW5maW5pdGVSZWN0KCk7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptYXgoKSwgZDJkSW5maW5pdGVSZWN0LmxlZnQpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSgtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBkMmRJbmZpbml0
ZVJlY3QudG9wKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpLCBkMmRJbmZpbml0ZVJlY3QucmlnaHQpOwotICAgIEVYUEVDVF9GTE9BVF9FUShz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGQyZEluZmluaXRlUmVjdC5ib3R0b20p
OwotICAgIC8vIEFTU0VSVF9UUlVFKGluZmluaXRlID09IGQyZEluZmluaXRlUmVjdCk7Ci0jZW5k
aWYKLX0KLQotVEVTVChGbG9hdFJlY3QsIEVuY2xvc2luZ0FuZFJvdW5kaW5nKQotewotICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCByZWN0KDEwLjBmLCAyMC4wZiwgMTAyNC4zZiwgNzY4LjNmKTsKLQot
ICAgIGF1dG8gZW5jbG9zZWQgPSBXZWJDb3JlOjplbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHJl
Y3QsIDEuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCBlbmNsb3NlZC54KCkpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgZW5jbG9zZWQueSgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMTAzNS4wZiwgZW5jbG9zZWQubWF4WCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoNzg5
LjBmLCBlbmNsb3NlZC5tYXhZKCkpOwotCi0gICAgYXV0byBlbmNsb3NlZDIgPSBXZWJDb3JlOjpl
bmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHJlY3QsIDIuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FU
X0VRKDEwLjBmLCBlbmNsb3NlZDIueCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIGVu
Y2xvc2VkMi55KCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDM0LjVmLCBlbmNsb3NlZDIubWF4
WCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoNzg4LjVmLCBlbmNsb3NlZDIubWF4WSgpKTsKLX0K
LQotVEVTVChGbG9hdFJlY3QsIEVuY2xvc2luZ0ludFJlY3QpCi17Ci0gICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QoMTAuMGYsIDIwLjBmLCAxMDI0LjNmLCA3NjguNmYpOwotCi0gICAgYXV0byBl
bmNsb3NlZCA9IFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdCk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMTAsIGVuY2xvc2VkLngoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBlbmNsb3NlZC55KCkpOwot
ICAgIEVYUEVDVF9FUSgxMDM1LCBlbmNsb3NlZC5tYXhYKCkpOwotICAgIEVYUEVDVF9FUSg3ODks
IGVuY2xvc2VkLm1heFkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbWF4SW50UmVjdChJ
TlRfTUlOLCBJTlRfTUlOLCAwLCAwKTsKLSAgICBtYXhJbnRSZWN0LnNoaWZ0TWF4WEVkZ2VUbygz
MCk7Ci0gICAgbWF4SW50UmVjdC5zaGlmdE1heFlFZGdlVG8oMzApOwotCi0gICAgYXV0byBlbmNs
b3NlZDIgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KG1heEludFJlY3QpOwotCi0gICAgRVhQ
RUNUX0VRKElOVF9NSU4sIGVuY2xvc2VkMi54KCkpOwotICAgIEVYUEVDVF9FUShJTlRfTUlOLCBl
bmNsb3NlZDIueSgpKTsKLSAgICBFWFBFQ1RfRVEoSU5UX01BWCwgZW5jbG9zZWQyLndpZHRoKCkp
OwotICAgIEVYUEVDVF9FUShJTlRfTUFYLCBlbmNsb3NlZDIuaGVpZ2h0KCkpOwotfQotCi1URVNU
KEZsb2F0UmVjdCwgUm91bmRlZEludFJlY3QpCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJl
Y3QoMTAuMGYsIDIwLjBmLCAxMDI0LjNmLCA3NjguNmYpOwotCi0gICAgYXV0byBlbmNsb3NlZCA9
IFdlYkNvcmU6OnJvdW5kZWRJbnRSZWN0KHJlY3QpOwotCi0gICAgRVhQRUNUX0VRKDEwLCBlbmNs
b3NlZC54KCkpOwotICAgIEVYUEVDVF9FUSgyMCwgZW5jbG9zZWQueSgpKTsKLSAgICBFWFBFQ1Rf
RVEoMTAzNCwgZW5jbG9zZWQubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoNzg5LCBlbmNsb3NlZC5t
YXhZKCkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmxvYXRSZWN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Zsb2F0UmVjdFRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWJhNTVhOWRhYmYzOWMzMGY5ZjU3
YWQ1M2RjZThjMWMzOWVhOGU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Zsb2F0UmVjdFRlc3RzLmNwcApAQCAtMCwwICsxLDc5NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQ
b2ludC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFNpemUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKworI2lmIFVTRShD
RykKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxkMmQxLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCB0ZXN0R2V0QW5kU2V0KFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0KQoreworICAgIHJlY3Quc2V0WCgxLjFmKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MS4xZiwgcmVjdC54KCkpOworICAgIHJlY3Quc2V0WSgyLjJmKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMi4yZiwgcmVjdC55KCkpOworICAgIHJlY3Quc2V0V2lkdGgoMjAzLjJmKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMjAzLjJmLCByZWN0LndpZHRoKCkpOworICAgIHJlY3Quc2V0SGVpZ2h0KDcy
LjlmKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNzIuOWYsIHJlY3QuaGVpZ2h0KCkpOworfQorCitz
dGF0aWMgdm9pZCB0ZXN0RW1wdHlSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkK
K3sKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9F
USgwLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHJlY3Qud2lkdGgoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHJlY3QuaGVpZ2h0KCkpOworICAgIEVYUEVDVF9GTE9BVF9F
USgwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIHJlY3QubWF4WSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShyZWN0LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUocmVjdC5p
c1plcm8oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlY3QuaXNJbmZpbml0ZSgpKTsKK30KKworVEVT
VChGbG9hdFJlY3QsIERlZmF1bHRDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IHRlc3Q7CisKKyAgICB0ZXN0RW1wdHlSZWN0KHRlc3QpOworCisgICAgdGVzdEdldEFuZFNl
dCh0ZXN0KTsKKworICAgIGF1dG8gbG9jYXRpb24gPSB0ZXN0LmxvY2F0aW9uKCk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDAsIGxvY2F0aW9uLngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIGxv
Y2F0aW9uLnkoKSk7CisKKyAgICBhdXRvIHNpemUgPSB0ZXN0LnNpemUoKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMCwgc2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgc2l6ZS5o
ZWlnaHQoKSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBWYWx1ZUNvbnN0cnVjdGlvbikKK3sKKyAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgdGVzdCgxMC4wZiwgMjAuMGYsIDEwMC4wZiwgNTAuMGYpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDIwLjBmLCB0ZXN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgdGVzdC53
aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAuMGYsIHRlc3QuaGVpZ2h0KCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxMTAuMGYsIHRlc3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNzAuMGYsIHRlc3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzWmVybygpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVz
dC5pc0luZmluaXRlKCkpOworCisgICAgYXV0byBsb2NhdGlvbiA9IHRlc3QubG9jYXRpb24oKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIGxvY2F0aW9uLngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDIwLjBmLCBsb2NhdGlvbi55KCkpOworCisgICAgYXV0byBzaXplID0gdGVzdC5zaXpl
KCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgc2l6ZS53aWR0aCgpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNTAuMGYsIHNpemUuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0UmVjdCwg
UG9pbnRTaXplQ29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRp
b24oMjAuMGYsIDMwLjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgxMDAuMGYsIDUw
LjBmKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB0ZXN0KGxvY2F0aW9uLCBzaXplKTsKKwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgdGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9F
USgzMC4wZiwgdGVzdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYsIHRlc3Qud2lk
dGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwLjBmLCB0ZXN0LmhlaWdodCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCB0ZXN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDgwLjBmLCB0ZXN0Lm1heFkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc1plcm8oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3Qu
aXNJbmZpbml0ZSgpKTsKKworICAgIGF1dG8gbG9jYXRpb24yID0gdGVzdC5sb2NhdGlvbigpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgbG9jYXRpb24yLngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDMwLjBmLCBsb2NhdGlvbjIueSgpKTsKKworICAgIGF1dG8gc2l6ZTIgPSB0ZXN0LnNp
emUoKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCBzaXplMi53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAuMGYsIHNpemUyLmhlaWdodCgpKTsKK30KKworVEVTVChGbG9hdFJl
Y3QsIFR3b1BvaW50Q29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9p
bnQxKDIwLjBmLCAzMC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludDIoMTUwLjBm
LCAyNTAuMGYpOworCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHRlc3QocG9pbnQxLCBwb2ludDIp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDMwLjBmLCB0ZXN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEzMC4wZiwgdGVz
dC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLjBmLCB0ZXN0LmhlaWdodCgpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMTUwLjBmLCB0ZXN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1MC4wZiwgdGVzdC5tYXhZKCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzRW1w
dHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNaZXJvKCkpOworICAgIEVYUEVDVF9GQUxT
RSh0ZXN0LmlzSW5maW5pdGUoKSk7CisKKyAgICBhdXRvIGxvY2F0aW9uID0gdGVzdC5sb2NhdGlv
bigpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgbG9jYXRpb24ueCgpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMzAuMGYsIGxvY2F0aW9uLnkoKSk7CisKKyAgICBhdXRvIHNpemUgPSB0ZXN0
LnNpemUoKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTMwLjBmLCBzaXplLndpZHRoKCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgyMjAuMGYsIHNpemUuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0
UmVjdCwgSW50UmVjdENvbnN0cnVjdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qo
MjAsIDMwLCAxNTAsIDMwMCk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdGVzdChyZWN0KTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgdGVzdC54KCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMC4wZiwgdGVzdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTAuMGYsIHRlc3Qu
d2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwMC4wZiwgdGVzdC5oZWlnaHQoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDE3MC4wZiwgdGVzdC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMzAuMGYsIHRlc3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc0VtcHR5
KCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzWmVybygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
dGVzdC5pc0luZmluaXRlKCkpOworCisgICAgYXV0byBsb2NhdGlvbiA9IHRlc3QubG9jYXRpb24o
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIGxvY2F0aW9uLngoKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDMwLjBmLCBsb2NhdGlvbi55KCkpOworCisgICAgYXV0byBzaXplID0gdGVzdC5z
aXplKCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDE1MC4wZiwgc2l6ZS53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMzAwLjBmLCBzaXplLmhlaWdodCgpKTsKK30KKworVEVTVChGbG9hdFJl
Y3QsIFNldExvY2F0aW9uQW5kU2l6ZSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDsK
KworICAgIHRlc3RFbXB0eVJlY3QocmVjdCk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGxv
Y2F0aW9uKDEwLjBmLCAyMC4wZik7CisKKyAgICByZWN0LnNldExvY2F0aW9uKGxvY2F0aW9uKTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgcmVjdC54KCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgyMC4wZiwgcmVjdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjBmLCByZWN0Lndp
ZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjBmLCByZWN0LmhlaWdodCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMTAuMGYsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MjAuMGYsIHJlY3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfVFJVRShyZWN0LmlzRW1wdHkoKSk7Cisg
ICAgRVhQRUNUX1RSVUUocmVjdC5pc1plcm8oKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlY3QuaXNJ
bmZpbml0ZSgpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKDEwMC4wZiwgMjAwLjBm
KTsKKworICAgIHJlY3Quc2V0U2l6ZShzaXplKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4w
ZiwgcmVjdC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgcmVjdC55KCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDIwMC4wZiwgcmVjdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDExMC4wZiwg
cmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAuMGYsIHJlY3QubWF4WSgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UocmVjdC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9GQUxTRShyZWN0
LmlzWmVybygpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVjdC5pc0luZmluaXRlKCkpOworfQorCitU
RVNUKEZsb2F0UmVjdCwgQ2VudGVyKQoreworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDIw
LjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOworCisgICAgYXV0byBjZW50ZXIgPSByZWN0LmNl
bnRlcigpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDcwLjBmLCBjZW50ZXIueCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMTMwLjBmLCBjZW50ZXIueSgpKTsKK30KKworVEVTVChGbG9hdFJlY3Qs
IE1vdmUpCit7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAuMGYsIDMwLjBmLCAxMDAu
MGYsIDIwMC4wZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVsdGEoMTAuMGYsIDIwLjBm
KTsKKworICAgIHJlY3QubW92ZShkZWx0YSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuMGYs
IHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAuMGYsIHJlY3QueSgpKTsKKworICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgZGVsdGFQb2ludCgtMjAuMGYsIC00MC4wZik7CisKKyAgICBy
ZWN0Lm1vdmVCeShkZWx0YVBvaW50KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgcmVj
dC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgcmVjdC55KCkpOworCisgICAgcmVj
dC5tb3ZlKC0xMC4wZiwgMjIuMGYpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuMGYsIHJlY3Qu
eCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIuMGYsIHJlY3QueSgpKTsKK30KKworVEVTVChG
bG9hdFJlY3QsIEV4cGFuZCkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwg
MzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKDEw
MC4wZiwgMTAwLjBmKTsKKworICAgIHJlY3QuZXhwYW5kKHNpemUpOworCisgICAgRVhQRUNUX0ZM
T0FUX0VRKDIwMC4wZiwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAwLjBm
LCByZWN0LmhlaWdodCgpKTsKKworICAgIHJlY3QuZXhwYW5kKDU1LjBmLCAyMi4wZik7CisKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjU1LjBmLCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMjIuMGYsIHJlY3QuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNp
emUyKC0xMC4wZiwgLTIwLjBmKTsKKworICAgIHJlY3QuZXhwYW5kKHNpemUyKTsKKworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNDUuMGYsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDMwMi4wZiwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0LmV4cGFuZCgtNS4wZiwgLTIuMGYp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI0MC4wZiwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMzAwLjBmLCByZWN0LmhlaWdodCgpKTsKKworICAgIEVYUEVDVF9GQUxTRShy
ZWN0LmlzSW5maW5pdGUoKSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBDb250cmFjdCkKK3sKKyAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsK
KworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKDUwLjBmLCAxMDAuMGYpOworCisgICAgcmVj
dC5jb250cmFjdChzaXplKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg1MC4wZiwgcmVjdC53aWR0
aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCByZWN0LmhlaWdodCgpKTsKKworICAg
IHJlY3QuY29udHJhY3QoMjUuMGYsIDIyLjBmKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNS4w
ZiwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNzguMGYsIHJlY3QuaGVpZ2h0
KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUyKC0xMC4wZiwgLTIwLjBmKTsKKwor
ICAgIHJlY3QuY29udHJhY3Qoc2l6ZTIpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1LjBmLCBy
ZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg5OC4wZiwgcmVjdC5oZWlnaHQoKSk7
CisKKyAgICByZWN0LmNvbnRyYWN0KC01LjBmLCAtMi4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDAuMGYsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMC4wZiwgcmVj
dC5oZWlnaHQoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UocmVjdC5pc0luZmluaXRlKCkpOworfQor
CitURVNUKEZsb2F0UmVjdCwgU2hpZnRYRWRnZSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKKworICAgIHJlY3Quc2hpZnRYRWRn
ZVRvKDc3LjBmKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg3Ny4wZiwgcmVjdC54KCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxMjAuMGYsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzAuMGYsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjMwLjBmLCByZWN0Lm1h
eFkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQzLjBmLCByZWN0LndpZHRoKCkpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgyMDAuMGYsIHJlY3QuaGVpZ2h0KCkpOworCisgICAgcmVjdC5zaGlmdE1h
eFhFZGdlVG8oMjAwLjBmKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg3Ny4wZiwgcmVjdC54KCkp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzAuMGYsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjMwLjBmLCBy
ZWN0Lm1heFkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEyMy4wZiwgcmVjdC53aWR0aCgpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAwLjBmLCByZWN0LmhlaWdodCgpKTsKK30KKworVEVTVChG
bG9hdFJlY3QsIFNoaWZ0WUVkZ2UpCit7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMjAu
MGYsIDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7CisKKyAgICByZWN0LnNoaWZ0WUVkZ2VUbyg1OS4w
Zik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTIwLjBmLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDU5LjBm
LCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIzMC4wZiwgcmVjdC5tYXhZKCkpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgxMDAuMGYsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDE3MS4wZiwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0LnNoaWZ0TWF4WUVkZ2VU
bygyNzAuMGYpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCByZWN0LngoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEyMC4wZiwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9F
USg1OS4wZiwgcmVjdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNzAuMGYsIHJlY3QubWF4
WSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAwLjBmLCByZWN0LndpZHRoKCkpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgyMTEuMGYsIHJlY3QuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0UmVj
dCwgSW5mbGF0ZSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYs
IDEwMC4wZiwgMjAwLjBmKTsKKworICAgIHJlY3QuaW5mbGF0ZVgoNS4wZik7CisKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMTUuMGYsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTI1LjBm
LCByZWN0Lm1heFgoKSk7CisKKyAgICByZWN0LmluZmxhdGVZKDQuMGYpOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDI2LjBmLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIzNC4wZiwg
cmVjdC5tYXhZKCkpOworCisgICAgcmVjdC5pbmZsYXRlKDEwLjBmKTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSg1LjBmLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEzNS4wZiwgcmVj
dC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNi4wZiwgcmVjdC55KCkpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNDQuMGYsIHJlY3QubWF4WSgpKTsKKworICAgIEVYUEVDVF9GQUxTRShy
ZWN0LmlzSW5maW5pdGUoKSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBDb3JuZXJzKQoreworICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOwor
CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0b3BMZWZ0ID0gcmVjdC5taW5YTWluWUNvcm5lcigp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgdG9wTGVmdC54KCkpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgzMC4wZiwgdG9wTGVmdC55KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0
b3BSaWdodCA9IHJlY3QubWF4WE1pbllDb3JuZXIoKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIw
LjBmLCB0b3BSaWdodC54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4wZiwgdG9wUmlnaHQu
eSgpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYm90dG9tTGVmdCA9IHJlY3QubWluWE1h
eFlDb3JuZXIoKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIGJvdHRvbUxlZnQueCgpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMjMwLjBmLCBib3R0b21MZWZ0LnkoKSk7CisKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IGJvdHRvbVJpZ2h0ID0gcmVjdC5tYXhYTWF4WUNvcm5lcigpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxMjAuMGYsIGJvdHRvbVJpZ2h0LngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDIzMC4wZiwgYm90dG9tUmlnaHQueSgpKTsKK30KKworVEVTVChGbG9hdFJlY3QsIENv
bnRhaW5zKQoreworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDIwLjBmLCAzMC4wZiwgMTAw
LjBmLCAyMDAuMGYpOworCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnRhaW5lZCgzMC4wZiwg
NDAuMGYsIDUwLjBmLCAxMDAuMGYpOworCisgICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlucyhj
b250YWluZWQpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBvdXRzaWRlKDEyMC4wZiwgMjMw
LjBmLCA1MC4wZiwgMTAwLjBmKTsKKworICAgIEFTU0VSVF9GQUxTRShyZWN0LmNvbnRhaW5zKG91
dHNpZGUpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBpbnRlcnNlY3RzKDEwLjBmLCAyMC4w
ZiwgOTAuMGYsIDE4MC4wZik7CisKKyAgICBBU1NFUlRfRkFMU0UocmVjdC5jb250YWlucyhpbnRl
cnNlY3RzKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50SW5zaWRlKDYwLjBmLCA3
MC4wZik7CisKKyAgICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKHBvaW50SW5zaWRlKSk7Cisg
ICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlucyhwb2ludEluc2lkZSwgV2ViQ29yZTo6RmxvYXRS
ZWN0OjpJbnNpZGVCdXROb3RPblN0cm9rZSkpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBw
b2ludE91dHNpZGUoMTYwLjBmLCAyNzAuMGYpOworCisgICAgQVNTRVJUX0ZBTFNFKHJlY3QuY29u
dGFpbnMocG9pbnRPdXRzaWRlKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlY3QuY29udGFpbnMocG9p
bnRPdXRzaWRlLCBXZWJDb3JlOjpGbG9hdFJlY3Q6Okluc2lkZUJ1dE5vdE9uU3Ryb2tlKSk7CisK
KyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50T25MaW5lKDIwLjBmLCAzMC4wZik7CisKKyAg
ICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKHBvaW50T25MaW5lKSk7CisgICAgQVNTRVJUX0ZB
TFNFKHJlY3QuY29udGFpbnMocG9pbnRPdXRzaWRlLCBXZWJDb3JlOjpGbG9hdFJlY3Q6Okluc2lk
ZUJ1dE5vdE9uU3Ryb2tlKSk7CisKKyAgICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKDYwLjBm
LCA3MC4wZikpOworICAgIEFTU0VSVF9GQUxTRShyZWN0LmNvbnRhaW5zKDE2MC4wZiwgMjcwLjBm
KSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBJbnRlcnNlY3RzKQoreworICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCByZWN0KDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOworCisgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IGNvbnRhaW5lZCgzMC4wZiwgNDAuMGYsIDUwLjBmLCAxMDAuMGYpOworCisg
ICAgQVNTRVJUX1RSVUUocmVjdC5pbnRlcnNlY3RzKGNvbnRhaW5lZCkpOworCisgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IG91dHNpZGUoMTIwLjBmLCAyMzAuMGYsIDUwLjBmLCAxMDAuMGYpOworCisg
ICAgQVNTRVJUX0ZBTFNFKHJlY3QuaW50ZXJzZWN0cyhvdXRzaWRlKSk7CisKKyAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgaW50ZXJzZWN0cygxMC4wZiwgMjAuMGYsIDkwLjBmLCAxODAuMGYpOworCisg
ICAgQVNTRVJUX1RSVUUocmVjdC5pbnRlcnNlY3RzKGludGVyc2VjdHMpKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdEludGVyc2VjdFJlc3VsdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3Qp
Cit7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDcwLjBmLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDEyMC4wZiwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg4MC4wZiwg
cmVjdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMzAuMGYsIHJlY3QubWF4WSgpKTsKK30K
KworVEVTVChGbG9hdFJlY3QsIEludGVyc2VjdCkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdEEoMjAuMGYsIDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IHJlY3RCKDcwLjBmLCA4MC4wZiwgMTAwLjBmLCAyMDAuMGYpOworCisgICAgcmVjdEEuaW50
ZXJzZWN0KHJlY3RCKTsKKworICAgIHRlc3RJbnRlcnNlY3RSZXN1bHQocmVjdEEpOworCisgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RDKDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAuMGYpOwor
CisgICAgYXV0byBpbnRlcnNlY3RlZCA9IFdlYkNvcmU6OmludGVyc2VjdGlvbihyZWN0QywgcmVj
dEIpOworCisgICAgdGVzdEludGVyc2VjdFJlc3VsdChpbnRlcnNlY3RlZCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRlc3RVbml0ZWRSZWN0cyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVuaXRlZCkK
K3sKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIHVuaXRlZC54KCkpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgxNzAuMGYsIHVuaXRlZC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC4w
ZiwgdW5pdGVkLnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI4MC4wZiwgdW5pdGVkLm1heFko
KSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBVbml0ZSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgcmVjdEEoMjAuMGYsIDMwLjBmLCAxMDAuMGYsIDIwMC4wZik7CisgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3RCKDcwLjBmLCA4MC4wZiwgMTAwLjBmLCAyMDAuMGYpOworCisgICAgcmVjdEEu
dW5pdGUocmVjdEIpOworCisgICAgdGVzdFVuaXRlZFJlY3RzKHJlY3RBKTsKKworICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCByZWN0QygyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKKworICAg
IGF1dG8gdW5pdGVkID0gV2ViQ29yZTo6dW5pb25SZWN0KHJlY3RDLCByZWN0Qik7CisKKyAgICB0
ZXN0VW5pdGVkUmVjdHModW5pdGVkKTsKK30KKworVEVTVChGbG9hdFJlY3QsIEV4dGVuZCkKK3sK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBm
KTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KDE3MC4wZiwgMjgwLjBmKTsKKworICAg
IHJlY3QuZXh0ZW5kKHBvaW50KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgcmVjdC54
KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNzAuMGYsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMzAuMGYsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjgwLjBm
LCByZWN0Lm1heFkoKSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBPdmVybGFwcykKK3sKKyAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAwLjBmKTsKKwor
ICAgIEFTU0VSVF9GQUxTRShyZWN0Lm92ZXJsYXBzWFJhbmdlKDAuMGYsIDEwLjBmKSk7CisgICAg
QVNTRVJUX1RSVUUocmVjdC5vdmVybGFwc1hSYW5nZSgxMC4wZiwgMzAuMGYpKTsKKyAgICBBU1NF
UlRfVFJVRShyZWN0Lm92ZXJsYXBzWFJhbmdlKDQwLjBmLCA3MC4wZikpOworICAgIEFTU0VSVF9U
UlVFKHJlY3Qub3ZlcmxhcHNYUmFuZ2UoMTEwLjBmLCAxMzAuMGYpKTsKKyAgICBBU1NFUlRfRkFM
U0UocmVjdC5vdmVybGFwc1hSYW5nZSgxNDAuMGYsIDYwMC4wZikpOworCisgICAgQVNTRVJUX0ZB
TFNFKHJlY3Qub3ZlcmxhcHNZUmFuZ2UoMC4wZiwgMTAuMGYpKTsKKyAgICBBU1NFUlRfVFJVRShy
ZWN0Lm92ZXJsYXBzWVJhbmdlKDEwLjBmLCA0MC4wZikpOworICAgIEFTU0VSVF9UUlVFKHJlY3Qu
b3ZlcmxhcHNZUmFuZ2UoNDAuMGYsIDcwLjBmKSk7CisgICAgQVNTRVJUX1RSVUUocmVjdC5vdmVy
bGFwc1lSYW5nZSgyMjAuMGYsIDI1MC4wZikpOworICAgIEFTU0VSVF9GQUxTRShyZWN0Lm92ZXJs
YXBzWVJhbmdlKDI1MC4wZiwgNjAwLjBmKSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBTY2FsZSkK
K3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwgMzAuMGYsIDEwMC4wZiwgMjAw
LjBmKTsKKworICAgIHJlY3Quc2NhbGUoMi4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAu
MGYsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjQwLjBmLCByZWN0Lm1heFgoKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDYwLjBmLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDQ2MC4wZiwgcmVjdC5tYXhZKCkpOworCisgICAgcmVjdC5zY2FsZSgwLjVmLCAyLjBmKTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgcmVjdC54KCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgxMjAuMGYsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCBy
ZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDkyMC4wZiwgcmVjdC5tYXhZKCkpOworCisg
ICAgcmVjdC5zY2FsZSgxLjBmLCAwLjI1Zik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYs
IHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCByZWN0Lm1heFgoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIzMC4wZiwgcmVjdC5tYXhZKCkpOworfQorCitURVNUKEZsb2F0UmVjdCwgVHJhbnNwb3NlKQor
eworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDIwLjBmLCAzMC4wZiwgMTAwLjBmLCAyMDAu
MGYpOworCisgICAgYXV0byB0cmFuc3Bvc2VkID0gcmVjdC50cmFuc3Bvc2VkUmVjdCgpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCB0cmFuc3Bvc2VkLngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDIzMC4wZiwgdHJhbnNwb3NlZC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgy
MC4wZiwgdHJhbnNwb3NlZC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMjAuMGYsIHRyYW5z
cG9zZWQubWF4WSgpKTsKK30KKworVEVTVChGbG9hdFJlY3QsIEZpdFRvUG9pbnRzKQoreworICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDEwLjBmLCAyMC4wZiwgMzAuMGYsIDQwLjBmKTsKKwor
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcDAoMjAuMGYsIDMwLjBmKTsKKyAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IHAxKDcwLjBmLCAxMzAuMGYpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcDIo
NTAuMGYsIDIwLjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHAzKDkwLjBmLCAxOTAuMGYp
OworCisgICAgcmVjdC5maXRUb1BvaW50cyhwMCwgcDEpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIwLjBmLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDcwLjBmLCByZWN0Lm1heFgo
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjBmLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDEzMC4wZiwgcmVjdC5tYXhZKCkpOworCisgICAgcmVjdC5maXRUb1BvaW50cyhwMCwg
cDEsIHAyKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgcmVjdC54KCkpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg3MC4wZiwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgy
MC4wZiwgcmVjdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMzAuMGYsIHJlY3QubWF4WSgp
KTsKKworICAgIHJlY3QuZml0VG9Qb2ludHMocDAsIHAxLCBwMiwgcDMpOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDIwLjBmLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDkwLjBmLCBy
ZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCByZWN0LnkoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDE5MC4wZiwgcmVjdC5tYXhZKCkpOworfQorCisjaWYgVVNFKENHKSB8
fCBQTEFURk9STShXSU4pCitzdGF0aWMgdm9pZCBjaGVja0Nhc3RSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIHJlY3QueCgp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuMGYsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjAuMGYsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNjAuMGYsIHJl
Y3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuMGYsIHJlY3Qud2lkdGgoKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjBmLCByZWN0LmhlaWdodCgpKTsKK30KKyNlbmRpZgorCitU
RVNUKEZsb2F0UmVjdCwgQ2FzdGluZykKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgx
MC4wZiwgMjAuMGYsIDMwLjBmLCA0MC4wZik7CisKKyNpZiBVU0UoQ0cpCisgICAgQ0dSZWN0IGNn
UmVjdCA9IHJlY3Q7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIGNnUmVjdC5vcmlnaW4u
eCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCBjZ1JlY3Qub3JpZ2luLnkpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMC4wZiwgY2dSZWN0LnNpemUud2lkdGgpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg0MC4wZiwgY2dSZWN0LnNpemUuaGVpZ2h0KTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0RnJvbUNHUmVjdChjZ1JlY3QpOworCisgICAgY2hlY2tDYXN0UmVjdChyZWN0RnJvbUNH
UmVjdCk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBEMkQxX1JFQ1RfRiBkMmRS
ZWN0ID0gcmVjdDsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgZDJkUmVjdC5sZWZ0KTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuMGYsIGQyZFJlY3QudG9wKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNDAuMGYsIGQyZFJlY3QucmlnaHQpOworICAgIEVYUEVDVF9GTE9BVF9FUSg2MC4wZiwg
ZDJkUmVjdC5ib3R0b20pOworCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3RGcm9tRDJEUmVj
dChkMmRSZWN0KTsKKworICAgIGNoZWNrQ2FzdFJlY3QocmVjdEZyb21EMkRSZWN0KTsKKyNlbmRp
ZgorfQorCitzdGF0aWMgdm9pZCBjaGVja0FkZGl0aW9uUmVzdWx0MShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHJlY3QpCit7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCByZWN0LngoKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEzMC4wZiwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgyMC4wZiwgcmVjdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAuMGYsIHJl
Y3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTIwLjBmLCByZWN0LndpZHRoKCkpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgyMDAuMGYsIHJlY3QuaGVpZ2h0KCkpOworfQorCitzdGF0aWMg
dm9pZCBjaGVja0FkZGl0aW9uUmVzdWx0Mihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3Qp
Cit7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjBmLCByZWN0LngoKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1MC4wZiwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwg
cmVjdC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNDAuMGYsIHJlY3QubWF4WSgpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjQwLjBmLCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgyMjAuMGYsIHJlY3QuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0UmVjdCwgQWRkaXRp
b24pCit7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMTAuMGYsIDIwLjBmLCAxMDAuMGYs
IDEwMC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJpZ2h0U2lkZSgwLjBmLCAwLjBmLCAy
MC4wZiwgMTAwLjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm90dG9tKDAuMGYsIDAuMGYs
IDEyMC4wZiwgMjAuMGYpOworCisgICAgYXV0byBjb21iaW5lZCA9IHJlY3QgKyByaWdodFNpZGU7
CisKKyAgICBjaGVja0FkZGl0aW9uUmVzdWx0MShjb21iaW5lZCk7CisKKyAgICBhdXRvIGNvbWJp
bmVkMiA9IGNvbWJpbmVkICsgYm90dG9tOworCisgICAgY2hlY2tBZGRpdGlvblJlc3VsdDIoY29t
YmluZWQyKTsKKworICAgIHJlY3QgKz0gcmlnaHRTaWRlOworICAgIHJlY3QgKz0gYm90dG9tOwor
CisgICAgY2hlY2tBZGRpdGlvblJlc3VsdDIocmVjdCk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBF
cXVhbGl0eSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgxMC4wZiwgMjAuMGYsIDEw
MC4wZiwgMTAwLjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDIoMTAuMGYsIDIwLjBm
LCAxMDAuMGYsIDEwMC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJpZ2h0U2lkZSgxMTAu
MGYsIDIwLjBmLCAyMC4wZiwgMTAwLjBmKTsKKworICAgIEFTU0VSVF9UUlVFKHJlY3QgPT0gcmVj
dDIpOworICAgIEFTU0VSVF9GQUxTRShyZWN0ICE9IHJlY3QyKTsKKyAgICBBU1NFUlRfVFJVRShy
ZWN0ICE9IHJpZ2h0U2lkZSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlY3QgPT0gcmlnaHRTaWRlKTsK
K30KKworVEVTVChGbG9hdFJlY3QsIEluZmluaXRlUmVjdCkKK3sKKyAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgaW5maW5pdGUgPSBXZWJDb3JlOjpGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAy
LCBpbmZpbml0ZS54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgtc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46Om1heCgpIC8gMiwgaW5maW5pdGUueSgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBpbmZpbml0ZS53aWR0aCgpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBpbmZp
bml0ZS5oZWlnaHQoKSk7CisKKyAgICAvLyBGSVhNRTogV2UgaGF2ZSBhbiB1bnVzdWFsIHJlcHJl
c2VudGF0aW9uIGZvciBvdXIgaW5maW5pdGUgcmVjdC4KKyAgICAvLyBXZWJDb3JlOjpGbG9hdDo6
aW5maW5pdGVSZWN0IGlzIChuZWdhdGl2ZSBpbmZpbml0eSkvMiBmb3IgdGhlIHVwcGVyIGxlZnQg
Y29ybmVyLAorICAgIC8vIHdoaWxlIENvcmVHcmFwaGljcyBhbmQgRDJEIHVzZSAobmVnYXRpdmUg
aW5maW5pdHkpLgorCisjaWYgVVNFKENHKQorICAgIENHUmVjdCBjZ0luZmluaXRlUmVjdCA9IENH
UmVjdEluZmluaXRlOworCisjaWYgUExBVEZPUk0oV0lOKQorICAgIEVYUEVDVF9GTE9BVF9FUSgt
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpIC8gMiwgY2dJbmZpbml0ZVJlY3Qub3Jp
Z2luLngpOworICAgIEVYUEVDVF9GTE9BVF9FUSgtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
Om1heCgpIC8gMiwgY2dJbmZpbml0ZVJlY3Qub3JpZ2luLnkpOworICAgIEVYUEVDVF9GTE9BVF9F
UShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGNnSW5maW5pdGVSZWN0LnNpemUu
d2lkdGgpOworICAgIEVYUEVDVF9GTE9BVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bWF4KCksIGNnSW5maW5pdGVSZWN0LnNpemUuaGVpZ2h0KTsKKyNlbHNlCisgICAgRVhQRUNUX0ZM
T0FUX0VRKC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGNnSW5maW5pdGVSZWN0
Lm9yaWdpbi54KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoLXN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKSwgY2dJbmZpbml0ZVJlY3Qub3JpZ2luLnkpOworICAgIEVYUEVDVF9GTE9BVF9F
UShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGNnSW5maW5pdGVSZWN0Lm9yaWdp
bi54ICsgY2dJbmZpbml0ZVJlY3Quc2l6ZS53aWR0aCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSwgY2dJbmZpbml0ZVJlY3Qub3JpZ2luLnkg
KyBjZ0luZmluaXRlUmVjdC5zaXplLmhlaWdodCk7CisjZW5kaWYKKyAgICAvLyBBU1NFUlRfVFJV
RShpbmZpbml0ZSA9PSBjZ0luZmluaXRlUmVjdCk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJ
TikKKyAgICBEMkQxX1JFQ1RfRiBkMmRJbmZpbml0ZVJlY3QgPSBEMkQxOjpJbmZpbml0ZVJlY3Qo
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1h
eCgpLCBkMmRJbmZpbml0ZVJlY3QubGVmdCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGQyZEluZmluaXRlUmVjdC50b3ApOworICAgIEVY
UEVDVF9GTE9BVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIGQyZEluZmlu
aXRlUmVjdC5yaWdodCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKSwgZDJkSW5maW5pdGVSZWN0LmJvdHRvbSk7CisgICAgLy8gQVNTRVJUX1RS
VUUoaW5maW5pdGUgPT0gZDJkSW5maW5pdGVSZWN0KTsKKyNlbmRpZgorfQorCitURVNUKEZsb2F0
UmVjdCwgRW5jbG9zaW5nQW5kUm91bmRpbmcpCit7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJl
Y3QoMTAuMGYsIDIwLjBmLCAxMDI0LjNmLCA3NjguM2YpOworCisgICAgYXV0byBlbmNsb3NlZCA9
IFdlYkNvcmU6OmVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHMocmVjdCwgMS4wZik7CisKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMTAuMGYsIGVuY2xvc2VkLngoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIwLjBmLCBlbmNsb3NlZC55KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDM1LjBmLCBlbmNs
b3NlZC5tYXhYKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg3ODkuMGYsIGVuY2xvc2VkLm1heFko
KSk7CisKKyAgICBhdXRvIGVuY2xvc2VkMiA9IFdlYkNvcmU6OmVuY2xvc2VSZWN0VG9EZXZpY2VQ
aXhlbHMocmVjdCwgMi4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYsIGVuY2xvc2Vk
Mi54KCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgZW5jbG9zZWQyLnkoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEwMzQuNWYsIGVuY2xvc2VkMi5tYXhYKCkpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg3ODguNWYsIGVuY2xvc2VkMi5tYXhZKCkpOworfQorCitURVNUKEZsb2F0UmVjdCwg
RW5jbG9zaW5nSW50UmVjdCkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgxMC4wZiwg
MjAuMGYsIDEwMjQuM2YsIDc2OC42Zik7CisKKyAgICBhdXRvIGVuY2xvc2VkID0gV2ViQ29yZTo6
ZW5jbG9zaW5nSW50UmVjdChyZWN0KTsKKworICAgIEVYUEVDVF9FUSgxMCwgZW5jbG9zZWQueCgp
KTsKKyAgICBFWFBFQ1RfRVEoMjAsIGVuY2xvc2VkLnkoKSk7CisgICAgRVhQRUNUX0VRKDEwMzUs
IGVuY2xvc2VkLm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDc4OSwgZW5jbG9zZWQubWF4WSgpKTsK
KworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtYXhJbnRSZWN0KElOVF9NSU4sIElOVF9NSU4sIDAs
IDApOworICAgIG1heEludFJlY3Quc2hpZnRNYXhYRWRnZVRvKDMwKTsKKyAgICBtYXhJbnRSZWN0
LnNoaWZ0TWF4WUVkZ2VUbygzMCk7CisKKyAgICBhdXRvIGVuY2xvc2VkMiA9IFdlYkNvcmU6OmVu
Y2xvc2luZ0ludFJlY3QobWF4SW50UmVjdCk7CisKKyAgICBFWFBFQ1RfRVEoSU5UX01JTiwgZW5j
bG9zZWQyLngoKSk7CisgICAgRVhQRUNUX0VRKElOVF9NSU4sIGVuY2xvc2VkMi55KCkpOworICAg
IEVYUEVDVF9FUShJTlRfTUFYLCBlbmNsb3NlZDIud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKElO
VF9NQVgsIGVuY2xvc2VkMi5oZWlnaHQoKSk7Cit9CisKK1RFU1QoRmxvYXRSZWN0LCBSb3VuZGVk
SW50UmVjdCkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgxMC4wZiwgMjAuMGYsIDEw
MjQuM2YsIDc2OC42Zik7CisKKyAgICBhdXRvIGVuY2xvc2VkID0gV2ViQ29yZTo6cm91bmRlZElu
dFJlY3QocmVjdCk7CisKKyAgICBFWFBFQ1RfRVEoMTAsIGVuY2xvc2VkLngoKSk7CisgICAgRVhQ
RUNUX0VRKDIwLCBlbmNsb3NlZC55KCkpOworICAgIEVYUEVDVF9FUSgxMDM0LCBlbmNsb3NlZC5t
YXhYKCkpOworICAgIEVYUEVDVF9FUSg3ODksIGVuY2xvc2VkLm1heFkoKSk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GbG9hdFNpemUuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0U2l6ZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NmU3NmYxZGJhYzllNjhjODYzYmNkNWYyZjljYjNj
YTZiNmUxZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0U2l6ZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRQ
b2ludC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotCi0jaWYgVVNFKENHKQotI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oV0lOKQotI2luY2x1ZGUgPGQyZDEuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7Ci0KLXN0YXRpYyB2b2lkIHRlc3RHZXRBbmRTZXQoV2ViQ29yZTo6RmxvYXRTaXplIHNp
emUpCi17Ci0gICAgc2l6ZS5zZXRXaWR0aCgxMDEuMWYpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgx
MDEuMWYsIHNpemUud2lkdGgoKSk7Ci0gICAgc2l6ZS5zZXRIZWlnaHQoMjE4LjJmKTsKLSAgICBF
WFBFQ1RfRkxPQVRfRVEoMjE4LjJmLCBzaXplLmhlaWdodCgpKTsKLX0KLQotVEVTVChGbG9hdFNp
emUsIERlZmF1bHRDb25zdHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIHRlc3Q7
Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgdGVzdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMCwgdGVzdC5oZWlnaHQoKSk7Ci0KLSAgICBBU1NFUlRfVFJVRSh0ZXN0LmlzRW1wdHko
KSk7Ci0gICAgQVNTRVJUX1RSVUUodGVzdC5pc1plcm8oKSk7Ci0KLSAgICB0ZXN0R2V0QW5kU2V0
KHRlc3QpOwotfQotCi1URVNUKEZsb2F0U2l6ZSwgVmFsdWVDb25zdHJ1Y3Rpb24pCi17Ci0gICAg
V2ViQ29yZTo6RmxvYXRTaXplIHRlc3QoMTAyNC4wZiwgNzY4LjBmKTsKLQotICAgIEVYUEVDVF9G
TE9BVF9FUSgxMDI0LjBmLCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg3Njgu
MGYsIHRlc3QuaGVpZ2h0KCkpOwotCi0gICAgQVNTRVJUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsK
LSAgICBBU1NFUlRfRkFMU0UodGVzdC5pc1plcm8oKSk7Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxv
YXQgZXBzaWxvbiA9IDAuMDAwMWY7Ci0gICAgRVhQRUNUX05FQVIoMS4zMzMzZiwgdGVzdC5hc3Bl
Y3RSYXRpbygpLCBlcHNpbG9uKTsKLQotICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Ci19Ci0KLVRF
U1QoRmxvYXRTaXplLCBJbnRTaXplQ29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkludFNp
emUgc2l6ZSgxMDI0LCA3NjgpOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0ZXN0KHNpemUpOwot
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNU
X0ZMT0FUX0VRKDc2OC4wZiwgdGVzdC5oZWlnaHQoKSk7Ci0KLSAgICBBU1NFUlRfRkFMU0UodGVz
dC5pc0VtcHR5KCkpOwotICAgIEFTU0VSVF9GQUxTRSh0ZXN0LmlzWmVybygpKTsKLQotICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgZXBzaWxvbiA9IDAuMDAwMTsKLSAgICBFWFBFQ1RfTkVBUigxLjMz
MzNmLCB0ZXN0LmFzcGVjdFJhdGlvKCksIGVwc2lsb24pOwotCi0gICAgdGVzdEdldEFuZFNldCh0
ZXN0KTsKLX0KLQotVEVTVChGbG9hdFNpemUsIFNjYWxlKQotewotICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSB0ZXN0KDEwMjQuMGYsIDc2OC4wZik7Ci0KLSAgICB0ZXN0LnNjYWxlKDIuMGYpOwotCi0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDIwNDguMGYsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZM
T0FUX0VRKDE1MzYuMGYsIHRlc3QuaGVpZ2h0KCkpOwotCi0gICAgdGVzdC5zY2FsZSgwLjVmKTsK
LQotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDI0LjBmLCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVD
VF9GTE9BVF9FUSg3NjguMGYsIHRlc3QuaGVpZ2h0KCkpOwotCi0gICAgdGVzdC5zY2FsZSgyLjBm
LCAwLjVmKTsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgyMDQ4LjBmLCB0ZXN0LndpZHRoKCkpOwot
ICAgIEVYUEVDVF9GTE9BVF9FUSgzODQuMGYsIHRlc3QuaGVpZ2h0KCkpOwotfQotCi1URVNUKEZs
b2F0U2l6ZSwgRXhwYW5kKQotewotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0ZXN0KDEwMjQuMGYs
IDc2OC4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTAyNC4wZiwgdGVzdC53aWR0aCgpKTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoNzY4LjBmLCB0ZXN0LmhlaWdodCgpKTsKLQotICAgIHRlc3Qu
ZXhwYW5kKDEwMC4wZiwgNTAuMGYpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDExMjQuMGYsIHRl
c3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDgxOC4wZiwgdGVzdC5oZWlnaHQoKSk7
Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgb3RoZXIoMjA0OC4wZiwgNzAwLjBmKTsKLQotICAg
IGF1dG8gZXhwYW5kZWQgPSB0ZXN0LmV4cGFuZGVkVG8ob3RoZXIpOwotCi0gICAgRVhQRUNUX0ZM
T0FUX0VRKDIwNDguMGYsIGV4cGFuZGVkLndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg4
MTguMGYsIGV4cGFuZGVkLmhlaWdodCgpKTsKLX0KLQotVEVTVChGbG9hdFNpemUsIFNocmluaykK
LXsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdCgxMDI0LjBmLCA3NjguMGYpOwotICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBvdGhlcigxMDAwLjBmLCA3MDAuMGYpOwotCi0gICAgYXV0byBzaHJ1
bmtlbiA9IHRlc3Quc2hydW5rVG8ob3RoZXIpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMDAu
MGYsIHNocnVua2VuLndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg3MDAuMGYsIHNocnVu
a2VuLmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdGhlcjIoMjAwMC4wZiwg
NzAwLjBmKTsKLQotICAgIGF1dG8gc2hydW5rZW4yID0gdGVzdC5zaHJ1bmtUbyhvdGhlcjIpOwot
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIHNocnVua2VuMi53aWR0aCgpKTsKLSAgICBF
WFBFQ1RfRkxPQVRfRVEoNzAwLjBmLCBzaHJ1bmtlbjIuaGVpZ2h0KCkpOwotfQotCi1URVNUKEZs
b2F0U2l6ZSwgRGlhZ29uYWxMZW5ndGhBbmRBcmVhKQotewotICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSB0ZXN0KDEwMjQuMGYsIDc2OC4wZik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTI4MC4wZiwg
dGVzdC5kaWFnb25hbExlbmd0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMTYzODQwMC4wZiwg
dGVzdC5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDc4NjQz
Mi4wZiwgdGVzdC5hcmVhKCkpOwotfQotCi1URVNUKEZsb2F0U2l6ZSwgVHJhbnNwb3NlZFNpemUp
Ci17Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIHRlc3QoMTAyNC4wZiwgNzY4LjBmKTsKLQotICAg
IGF1dG8gdHJhbnNwb3NlZFNpemUgPSB0ZXN0LnRyYW5zcG9zZWRTaXplKCk7Ci0KLSAgICBFWFBF
Q1RfRkxPQVRfRVEoNzY4LjBmLCB0cmFuc3Bvc2VkU2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTAyNC4wZiwgdHJhbnNwb3NlZFNpemUuaGVpZ2h0KCkpOwotfQotCi1URVNUKEZs
b2F0U2l6ZSwgQ2FzdGluZykKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdCgxMDI0LjBm
LCA3NjguMGYpOwotCi0jaWYgVVNFKENHKQotICAgIENHU2l6ZSBjZ1NpemUgPSB0ZXN0OwotCi0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIGNnU2l6ZS53aWR0aCk7Ci0gICAgRVhQRUNUX0ZM
T0FUX0VRKDc2OC4wZiwgY2dTaXplLmhlaWdodCk7Ci0KLSAgICBDR1NpemUgY2dTaXplMiA9IENH
U2l6ZU1ha2UoLTIyLjNmLCAxNC4yZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdENH
KGNnU2l6ZTIpOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKC0yMi4zZiwgdGVzdENHLndpZHRoKCkp
OwotICAgIEVYUEVDVF9GTE9BVF9FUSgxNC4yZiwgdGVzdENHLmhlaWdodCgpKTsKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIEQyRDFfU0laRV9GIGQyZFNpemUgPSB0ZXN0OwotCi0g
ICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIGQyZFNpemUud2lkdGgpOwotICAgIEVYUEVDVF9G
TE9BVF9FUSg3NjguMGYsIGQyZFNpemUuaGVpZ2h0KTsKLQotICAgIEQyRDFfU0laRV9GIGQyZFNp
emUyID0gRDJEMTo6U2l6ZUYoLTIyLjNmLCAxNC4yZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNp
emUgdGVzdEQyRChkMmRTaXplMik7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoLTIyLjNmLCB0ZXN0
RDJELndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgxNC4yZiwgdGVzdEQyRC5oZWlnaHQo
KSk7Ci0jZW5kaWYKLX0KLQotVEVTVChGbG9hdFNpemUsIEFkZFN1YnRyYWN0KQotewotICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBhKDUxMi4wZiwgMzg0LjBmKTsKLSAgICBXZWJDb3JlOjpGbG9hdFNp
emUgYigxMDAuMGYsIDEwMC4wZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgYyA9IGEgKyBi
OwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDYxMi4wZiwgYy53aWR0aCgpKTsKLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDg0LjBmLCBjLmhlaWdodCgpKTsKLQotICAgIGEgKz0gYjsKLQotICAgIEVYUEVD
VF9GTE9BVF9FUSg2MTIuMGYsIGEud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDQ4NC4w
ZiwgYS5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgYTIoNTEyLjBmLCAzODQu
MGYpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIGQgPSBhMiAtIGI7Ci0KLSAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDEyLjBmLCBkLndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyODQuMGYs
IGQuaGVpZ2h0KCkpOwotCi0gICAgYTIgLT0gYjsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSg0MTIu
MGYsIGEyLndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSgyODQuMGYsIGEyLmhlaWdodCgp
KTsKLX0KLQotVEVTVChGbG9hdFNpemUsIE5lZ2F0aW9uKQotewotICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBhKDUxMi4wZiwgMzg0LjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBuZWdhdGVk
ID0gLWE7Ci0KLSAgICBFWFBFQ1RfRkxPQVRfRVEoLTUxMi4wZiwgbmVnYXRlZC53aWR0aCgpKTsK
LSAgICBFWFBFQ1RfRkxPQVRfRVEoLTM4NC4wZiwgbmVnYXRlZC5oZWlnaHQoKSk7Ci19Ci0KLVRF
U1QoRmxvYXRTaXplLCBNdWx0aXBseSkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgYSg1MTIu
MGYsIDM4NC4wZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbXVsdGlwbGllZCA9IGEgKiAy
LjBmOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIG11bHRpcGxpZWQud2lkdGgoKSk7
Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDc2OC4wZiwgbXVsdGlwbGllZC5oZWlnaHQoKSk7Ci0KLSAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgbXVsdGlwbGllZDIgPSAzLjBmICogYTsKLQotICAgIEVYUEVD
VF9GTE9BVF9FUSgxNTM2LjBmLCBtdWx0aXBsaWVkMi53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxP
QVRfRVEoMTE1Mi4wZiwgbXVsdGlwbGllZDIuaGVpZ2h0KCkpOwotCi0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIGIoMTAyNC4wZiwgNzY4LjBmKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtdWx0
aXBsaWVkMyA9IGEgKiBiOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDUyNDI4OC4wZiwgbXVsdGlw
bGllZDMud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDI5NDkxMi4wZiwgbXVsdGlwbGll
ZDMuaGVpZ2h0KCkpOwotfQotCi1URVNUKEZsb2F0U2l6ZSwgRGl2aWRlKQotewotICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBhKDEwMjQuMGYsIDc2OC4wZik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFNp
emUgZGl2aWRlZCA9IGEgLyAyLjBmOwotCi0gICAgRVhQRUNUX0ZMT0FUX0VRKDUxMi4wZiwgZGl2
aWRlZC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEoMzg0LjBmLCBkaXZpZGVkLmhlaWdo
dCgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBiKDUxMi4wZiwgMjU2LjBmKTsKLQotICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBkaXZpZGVkMiA9IDEwMjQuMGYgLyBiOwotCi0gICAgRVhQRUNU
X0ZMT0FUX0VRKDIuMGYsIGRpdmlkZWQyLndpZHRoKCkpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg0
LjBmLCBkaXZpZGVkMi5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoRmxvYXRTaXplLCBFcXVhbGl0eSkK
LXsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgYSgxMDI0LjBmLCA3NjguMGYpOwotICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBiKDEwMjQuMGYsIDc2OC4wZik7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXpl
IGMoNzY4LjBmLCA1MzQuMEYpOwotCi0gICAgQVNTRVJUX1RSVUUoYSA9PSBiKTsKLSAgICBBU1NF
UlRfRkFMU0UoYSAhPSBiKTsKLSAgICBBU1NFUlRfRkFMU0UoYSA9PSBjKTsKLSAgICBBU1NFUlRf
VFJVRShhICE9IGMpOwotCi0gICAgQVNTRVJUX1RSVUUoV2ViQ29yZTo6YXJlRXNzZW50aWFsbHlF
cXVhbChhLCBiKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKFdlYkNvcmU6OmFyZUVzc2VudGlhbGx5RXF1
YWwoYSwgYykpOwotfQotCi1URVNUKEZsb2F0U2l6ZSwgRmxvb3JzKQotewotICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBhKDEwMjQuNGYsIDc2OC44Zik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIGZs
b29yU2l6ZSA9IFdlYkNvcmU6OmZsb29yZWRJbnRTaXplKGEpOwotCi0gICAgRVhQRUNUX0VRKDEw
MjQsIGZsb29yU2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNzY4LCBmbG9vclNpemUuaGVp
Z2h0KCkpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgZmxvb3JQb2ludCA9IFdlYkNvcmU6OmZs
b29yZWRJbnRQb2ludChhKTsKLQotICAgIEVYUEVDVF9FUSgxMDI0LCBmbG9vclBvaW50LngoKSk7
Ci0gICAgRVhQRUNUX0VRKDc2OCwgZmxvb3JQb2ludC55KCkpOwotfQotCi1URVNUKEZsb2F0U2l6
ZSwgUm91bmRlZCkKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgYSgxMDI0LjRmLCA3NjguOGYp
OwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSByb3VuZGVkU2l6ZSA9IFdlYkNvcmU6OnJvdW5kZWRJ
bnRTaXplKGEpOwotCi0gICAgRVhQRUNUX0VRKDEwMjQsIHJvdW5kZWRTaXplLndpZHRoKCkpOwot
ICAgIEVYUEVDVF9FUSg3NjksIHJvdW5kZWRTaXplLmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6
OkludFNpemUgZXhwYW5kZWRTaXplID0gV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKGEpOwotCi0g
ICAgRVhQRUNUX0VRKDEwMjUsIGV4cGFuZGVkU2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEo
NzY5LCBleHBhbmRlZFNpemUuaGVpZ2h0KCkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmxvYXRTaXplVGVzdHMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0U2l6ZVRlc3RzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NTZlNzZmMWRiYWM5ZTY4Yzg2M2JjZDVmMmY5Y2IzY2E2YjZlMWVkCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zsb2F0U2l6ZVRlc3RzLmNwcApA
QCAtMCwwICsxLDMyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lO
KQorI2luY2x1ZGUgPGQyZDEuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyB2b2lkIHRlc3RHZXRBbmRTZXQoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCit7
CisgICAgc2l6ZS5zZXRXaWR0aCgxMDEuMWYpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDEuMWYs
IHNpemUud2lkdGgoKSk7CisgICAgc2l6ZS5zZXRIZWlnaHQoMjE4LjJmKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjE4LjJmLCBzaXplLmhlaWdodCgpKTsKK30KKworVEVTVChGbG9hdFNpemUsIERl
ZmF1bHRDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHRlc3Q7CisKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMCwgdGVzdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MCwgdGVzdC5oZWlnaHQoKSk7CisKKyAgICBBU1NFUlRfVFJVRSh0ZXN0LmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUX1RSVUUodGVzdC5pc1plcm8oKSk7CisKKyAgICB0ZXN0R2V0QW5kU2V0KHRlc3Qp
OworfQorCitURVNUKEZsb2F0U2l6ZSwgVmFsdWVDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIHRlc3QoMTAyNC4wZiwgNzY4LjBmKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgxMDI0LjBmLCB0ZXN0LndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg3NjguMGYsIHRl
c3QuaGVpZ2h0KCkpOworCisgICAgQVNTRVJUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlRfRkFMU0UodGVzdC5pc1plcm8oKSk7CisKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgZXBz
aWxvbiA9IDAuMDAwMWY7CisgICAgRVhQRUNUX05FQVIoMS4zMzMzZiwgdGVzdC5hc3BlY3RSYXRp
bygpLCBlcHNpbG9uKTsKKworICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Cit9CisKK1RFU1QoRmxv
YXRTaXplLCBJbnRTaXplQ29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkludFNpemUgc2l6
ZSgxMDI0LCA3NjgpOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0ZXN0KHNpemUpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDc2OC4wZiwgdGVzdC5oZWlnaHQoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UodGVzdC5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVF9GQUxTRSh0ZXN0LmlzWmVybygpKTsKKworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgZXBzaWxvbiA9IDAuMDAwMTsKKyAgICBFWFBFQ1RfTkVBUigxLjMzMzNmLCB0
ZXN0LmFzcGVjdFJhdGlvKCksIGVwc2lsb24pOworCisgICAgdGVzdEdldEFuZFNldCh0ZXN0KTsK
K30KKworVEVTVChGbG9hdFNpemUsIFNjYWxlKQoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0
ZXN0KDEwMjQuMGYsIDc2OC4wZik7CisKKyAgICB0ZXN0LnNjYWxlKDIuMGYpOworCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDIwNDguMGYsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDE1MzYuMGYsIHRlc3QuaGVpZ2h0KCkpOworCisgICAgdGVzdC5zY2FsZSgwLjVmKTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgxMDI0LjBmLCB0ZXN0LndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg3NjguMGYsIHRlc3QuaGVpZ2h0KCkpOworCisgICAgdGVzdC5zY2FsZSgyLjBmLCAwLjVm
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyMDQ4LjBmLCB0ZXN0LndpZHRoKCkpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzODQuMGYsIHRlc3QuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0U2l6
ZSwgRXhwYW5kKQoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0ZXN0KDEwMjQuMGYsIDc2OC4w
Zik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAyNC4wZiwgdGVzdC53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNzY4LjBmLCB0ZXN0LmhlaWdodCgpKTsKKworICAgIHRlc3QuZXhwYW5k
KDEwMC4wZiwgNTAuMGYpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDExMjQuMGYsIHRlc3Qud2lk
dGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDgxOC4wZiwgdGVzdC5oZWlnaHQoKSk7CisKKyAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgb3RoZXIoMjA0OC4wZiwgNzAwLjBmKTsKKworICAgIGF1dG8g
ZXhwYW5kZWQgPSB0ZXN0LmV4cGFuZGVkVG8ob3RoZXIpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIwNDguMGYsIGV4cGFuZGVkLndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg4MTguMGYs
IGV4cGFuZGVkLmhlaWdodCgpKTsKK30KKworVEVTVChGbG9hdFNpemUsIFNocmluaykKK3sKKyAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdCgxMDI0LjBmLCA3NjguMGYpOworICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBvdGhlcigxMDAwLjBmLCA3MDAuMGYpOworCisgICAgYXV0byBzaHJ1bmtlbiA9
IHRlc3Quc2hydW5rVG8ob3RoZXIpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMDAuMGYsIHNo
cnVua2VuLndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg3MDAuMGYsIHNocnVua2VuLmhl
aWdodCgpKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdGhlcjIoMjAwMC4wZiwgNzAwLjBm
KTsKKworICAgIGF1dG8gc2hydW5rZW4yID0gdGVzdC5zaHJ1bmtUbyhvdGhlcjIpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIHNocnVua2VuMi53aWR0aCgpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNzAwLjBmLCBzaHJ1bmtlbjIuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0U2l6
ZSwgRGlhZ29uYWxMZW5ndGhBbmRBcmVhKQoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB0ZXN0
KDEwMjQuMGYsIDc2OC4wZik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTI4MC4wZiwgdGVzdC5k
aWFnb25hbExlbmd0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTYzODQwMC4wZiwgdGVzdC5k
aWFnb25hbExlbmd0aFNxdWFyZWQoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDc4NjQzMi4wZiwg
dGVzdC5hcmVhKCkpOworfQorCitURVNUKEZsb2F0U2l6ZSwgVHJhbnNwb3NlZFNpemUpCit7Cisg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIHRlc3QoMTAyNC4wZiwgNzY4LjBmKTsKKworICAgIGF1dG8g
dHJhbnNwb3NlZFNpemUgPSB0ZXN0LnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNzY4LjBmLCB0cmFuc3Bvc2VkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMTAyNC4wZiwgdHJhbnNwb3NlZFNpemUuaGVpZ2h0KCkpOworfQorCitURVNUKEZsb2F0U2l6
ZSwgQ2FzdGluZykKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdCgxMDI0LjBmLCA3Njgu
MGYpOworCisjaWYgVVNFKENHKQorICAgIENHU2l6ZSBjZ1NpemUgPSB0ZXN0OworCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDEwMjQuMGYsIGNnU2l6ZS53aWR0aCk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDc2OC4wZiwgY2dTaXplLmhlaWdodCk7CisKKyAgICBDR1NpemUgY2dTaXplMiA9IENHU2l6ZU1h
a2UoLTIyLjNmLCAxNC4yZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGVzdENHKGNnU2l6
ZTIpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKC0yMi4zZiwgdGVzdENHLndpZHRoKCkpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxNC4yZiwgdGVzdENHLmhlaWdodCgpKTsKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oV0lOKQorICAgIEQyRDFfU0laRV9GIGQyZFNpemUgPSB0ZXN0OworCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDEwMjQuMGYsIGQyZFNpemUud2lkdGgpOworICAgIEVYUEVDVF9GTE9BVF9F
USg3NjguMGYsIGQyZFNpemUuaGVpZ2h0KTsKKworICAgIEQyRDFfU0laRV9GIGQyZFNpemUyID0g
RDJEMTo6U2l6ZUYoLTIyLjNmLCAxNC4yZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdGVz
dEQyRChkMmRTaXplMik7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoLTIyLjNmLCB0ZXN0RDJELndp
ZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNC4yZiwgdGVzdEQyRC5oZWlnaHQoKSk7Cisj
ZW5kaWYKK30KKworVEVTVChGbG9hdFNpemUsIEFkZFN1YnRyYWN0KQoreworICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBhKDUxMi4wZiwgMzg0LjBmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgYigx
MDAuMGYsIDEwMC4wZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgYyA9IGEgKyBiOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDYxMi4wZiwgYy53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDg0LjBmLCBjLmhlaWdodCgpKTsKKworICAgIGEgKz0gYjsKKworICAgIEVYUEVDVF9GTE9B
VF9FUSg2MTIuMGYsIGEud2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ4NC4wZiwgYS5o
ZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgYTIoNTEyLjBmLCAzODQuMGYpOwor
CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGQgPSBhMiAtIGI7CisKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDEyLjBmLCBkLndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyODQuMGYsIGQuaGVp
Z2h0KCkpOworCisgICAgYTIgLT0gYjsKKworICAgIEVYUEVDVF9GTE9BVF9FUSg0MTIuMGYsIGEy
LndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyODQuMGYsIGEyLmhlaWdodCgpKTsKK30K
KworVEVTVChGbG9hdFNpemUsIE5lZ2F0aW9uKQoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBh
KDUxMi4wZiwgMzg0LjBmKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBuZWdhdGVkID0gLWE7
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoLTUxMi4wZiwgbmVnYXRlZC53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoLTM4NC4wZiwgbmVnYXRlZC5oZWlnaHQoKSk7Cit9CisKK1RFU1QoRmxv
YXRTaXplLCBNdWx0aXBseSkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgYSg1MTIuMGYsIDM4
NC4wZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbXVsdGlwbGllZCA9IGEgKiAyLjBmOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwMjQuMGYsIG11bHRpcGxpZWQud2lkdGgoKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDc2OC4wZiwgbXVsdGlwbGllZC5oZWlnaHQoKSk7CisKKyAgICBXZWJD
b3JlOjpGbG9hdFNpemUgbXVsdGlwbGllZDIgPSAzLjBmICogYTsKKworICAgIEVYUEVDVF9GTE9B
VF9FUSgxNTM2LjBmLCBtdWx0aXBsaWVkMi53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MTE1Mi4wZiwgbXVsdGlwbGllZDIuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IGIoMTAyNC4wZiwgNzY4LjBmKTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtdWx0aXBsaWVk
MyA9IGEgKiBiOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDUyNDI4OC4wZiwgbXVsdGlwbGllZDMu
d2lkdGgoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI5NDkxMi4wZiwgbXVsdGlwbGllZDMuaGVp
Z2h0KCkpOworfQorCitURVNUKEZsb2F0U2l6ZSwgRGl2aWRlKQoreworICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBhKDEwMjQuMGYsIDc2OC4wZik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGl2
aWRlZCA9IGEgLyAyLjBmOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDUxMi4wZiwgZGl2aWRlZC53
aWR0aCgpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzg0LjBmLCBkaXZpZGVkLmhlaWdodCgpKTsK
KworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBiKDUxMi4wZiwgMjU2LjBmKTsKKworICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBkaXZpZGVkMiA9IDEwMjQuMGYgLyBiOworCisgICAgRVhQRUNUX0ZMT0FU
X0VRKDIuMGYsIGRpdmlkZWQyLndpZHRoKCkpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0LjBmLCBk
aXZpZGVkMi5oZWlnaHQoKSk7Cit9CisKK1RFU1QoRmxvYXRTaXplLCBFcXVhbGl0eSkKK3sKKyAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgYSgxMDI0LjBmLCA3NjguMGYpOworICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBiKDEwMjQuMGYsIDc2OC4wZik7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGMoNzY4
LjBmLCA1MzQuMEYpOworCisgICAgQVNTRVJUX1RSVUUoYSA9PSBiKTsKKyAgICBBU1NFUlRfRkFM
U0UoYSAhPSBiKTsKKyAgICBBU1NFUlRfRkFMU0UoYSA9PSBjKTsKKyAgICBBU1NFUlRfVFJVRShh
ICE9IGMpOworCisgICAgQVNTRVJUX1RSVUUoV2ViQ29yZTo6YXJlRXNzZW50aWFsbHlFcXVhbChh
LCBiKSk7CisgICAgQVNTRVJUX0ZBTFNFKFdlYkNvcmU6OmFyZUVzc2VudGlhbGx5RXF1YWwoYSwg
YykpOworfQorCitURVNUKEZsb2F0U2l6ZSwgRmxvb3JzKQoreworICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBhKDEwMjQuNGYsIDc2OC44Zik7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIGZsb29yU2l6
ZSA9IFdlYkNvcmU6OmZsb29yZWRJbnRTaXplKGEpOworCisgICAgRVhQRUNUX0VRKDEwMjQsIGZs
b29yU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNzY4LCBmbG9vclNpemUuaGVpZ2h0KCkp
OworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgZmxvb3JQb2ludCA9IFdlYkNvcmU6OmZsb29yZWRJ
bnRQb2ludChhKTsKKworICAgIEVYUEVDVF9FUSgxMDI0LCBmbG9vclBvaW50LngoKSk7CisgICAg
RVhQRUNUX0VRKDc2OCwgZmxvb3JQb2ludC55KCkpOworfQorCitURVNUKEZsb2F0U2l6ZSwgUm91
bmRlZCkKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgYSgxMDI0LjRmLCA3NjguOGYpOworCisg
ICAgV2ViQ29yZTo6SW50U2l6ZSByb3VuZGVkU2l6ZSA9IFdlYkNvcmU6OnJvdW5kZWRJbnRTaXpl
KGEpOworCisgICAgRVhQRUNUX0VRKDEwMjQsIHJvdW5kZWRTaXplLndpZHRoKCkpOworICAgIEVY
UEVDVF9FUSg3NjksIHJvdW5kZWRTaXplLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6OkludFNp
emUgZXhwYW5kZWRTaXplID0gV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKGEpOworCisgICAgRVhQ
RUNUX0VRKDEwMjUsIGV4cGFuZGVkU2l6ZS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNzY5LCBl
eHBhbmRlZFNpemUuaGVpZ2h0KCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ludFBvaW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWEzMzJlNWMzNzE0MzQ2NGEyNjg0ODU2YTg1NTM1NzdiOWNkMzMxYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvSW50UG9pbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjgzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9JbnRTaXplLmg+Ci0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVH
cmFwaGljcy5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8ZDJkMS5o
PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIHZvaWQgdGVz
dEdldEFuZFNldChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKLXsKLSAgICBwb2ludC5zZXRYKDEp
OwotICAgIEVYUEVDVF9FUSgxLCBwb2ludC54KCkpOwotICAgIHBvaW50LnNldFkoMik7Ci0gICAg
RVhQRUNUX0VRKDIsIHBvaW50LnkoKSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIERlZmF1bHRDb25z
dHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgdGVzdDsKLQotICAgIEVYUEVDVF9F
USgwLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHRlc3QueSgpKTsKLSAgICBBU1NFUlRf
VFJVRSh0ZXN0LmlzWmVybygpKTsKLQotICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Ci19Ci0KLVRF
U1QoSW50UG9pbnQsIFZhbHVlQ29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkludFBvaW50
IHRlc3QoMTAsIDkpOwotCi0gICAgRVhQRUNUX0VRKDEwLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNU
X0VRKDksIHRlc3QueSgpKTsKLQotICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Ci19Ci0KLVRFU1Qo
SW50UG9pbnQsIFplcm9Db25zdHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgdGVz
dCA9IFdlYkNvcmU6OkludFBvaW50Ojp6ZXJvKCk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgdGVzdC54
KCkpOwotICAgIEVYUEVDVF9FUSgwLCB0ZXN0LnkoKSk7Ci0gICAgQVNTRVJUX1RSVUUodGVzdC5p
c1plcm8oKSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIEludFNpemVDb25zdHJ1Y3Rpb24pCi17Ci0g
ICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0SW5wdXQoMjAwMywgMTk5Nyk7Ci0gICAgV2ViQ29yZTo6
SW50UG9pbnQgdGVzdCh0ZXN0SW5wdXQpOwotCi0gICAgRVhQRUNUX0VRKDIwMDMsIHRlc3QueCgp
KTsKLSAgICBFWFBFQ1RfRVEoMTk5NywgdGVzdC55KCkpOwotICAgIEFTU0VSVF9GQUxTRSh0ZXN0
LmlzWmVybygpKTsKLX0KLQotVEVTVChJbnRQb2ludCwgRmxvYXRQb2ludENvbnN0cnVjdGlvbikK
LXsKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRlc3RJbnB1dCgyMDAzLjJmLCAxOTk3LjNmKTsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0KHRlc3RJbnB1dCk7Ci0KLSAgICBFWFBFQ1RfRVEo
MjAwMywgdGVzdC54KCkpOwotICAgIEVYUEVDVF9FUSgxOTk3LCB0ZXN0LnkoKSk7Ci0gICAgQVNT
RVJUX0ZBTFNFKHRlc3QuaXNaZXJvKCkpOwotfQotCi1URVNUKEludFBvaW50LCBNb3ZlKQotewot
ICAgIFdlYkNvcmU6OkludFBvaW50IHRlc3QoMTAsIDIwKTsKLSAgICBXZWJDb3JlOjpJbnRTaXpl
IHNpemUoMzAsIDUwKTsKLQotICAgIHRlc3QubW92ZShzaXplKTsKLQotICAgIEVYUEVDVF9FUSg0
MCwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9FUSg3MCwgdGVzdC55KCkpOwotCi0gICAgdGVzdC5t
b3ZlKC0yLCA4KTsKLQotICAgIEVYUEVDVF9FUSgzOCwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9F
USg3OCwgdGVzdC55KCkpOwotCi0gICAgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KDEwMCwgMTAw
KTsKLQotICAgIHRlc3QubW92ZUJ5KG9mZnNldCk7Ci0KLSAgICBFWFBFQ1RfRVEoMTM4LCB0ZXN0
LngoKSk7Ci0gICAgRVhQRUNUX0VRKDE3OCwgdGVzdC55KCkpOwotfQotCi1URVNUKEludFBvaW50
LCBTY2FsZSkKLXsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0KDEwLCAyMCk7Ci0KLSAgICB0
ZXN0LnNjYWxlKDIuMCk7Ci0KLSAgICBFWFBFQ1RfRVEoMjAsIHRlc3QueCgpKTsKLSAgICBFWFBF
Q1RfRVEoNDAsIHRlc3QueSgpKTsKLQotICAgIHRlc3Quc2NhbGUoMy4wLCAxLjUpOwotCi0gICAg
RVhQRUNUX0VRKDYwLCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDYwLCB0ZXN0LnkoKSk7Ci19
Ci0KLVRFU1QoSW50UG9pbnQsIEV4cGFuZCkKLXsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBhKDEw
LCAyMCk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYigyMCwgNDApOwotCi0gICAgYXV0byBjID0g
YS5leHBhbmRlZFRvKGIpOwotCi0gICAgRVhQRUNUX0VRKDIwLCBjLngoKSk7Ci0gICAgRVhQRUNU
X0VRKDQwLCBjLnkoKSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIFNocmluaykKLXsKLSAgICBXZWJD
b3JlOjpJbnRQb2ludCBhKDEwLCAyMCk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYigyMCwgNDAp
OwotCi0gICAgYXV0byBjID0gYi5zaHJ1bmtUbyhhKTsKLQotICAgIEVYUEVDVF9FUSgxMCwgYy54
KCkpOwotICAgIEVYUEVDVF9FUSgyMCwgYy55KCkpOwotfQotCi1URVNUKEludFBvaW50LCBUcmFu
c3Bvc2UpCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMCwgMjApOwotCi0gICAgYXV0byBi
ID0gYS50cmFuc3Bvc2VkUG9pbnQoKTsKLQotICAgIEVYUEVDVF9FUSgyMCwgYi54KCkpOwotICAg
IEVYUEVDVF9FUSgxMCwgYi55KCkpOwotfQotCi1URVNUKEludFBvaW50LCBDYXN0KQotewotICAg
IFdlYkNvcmU6OkludFBvaW50IGEoMTAsIDIwKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgYXMg
PSBXZWJDb3JlOjp0b0ludFNpemUoYSk7Ci0gICAgRVhQRUNUX0VRKDEwLCBhcy53aWR0aCgpKTsK
LSAgICBFWFBFQ1RfRVEoMjAsIGFzLmhlaWdodCgpKTsKLQotI2lmIFVTRShDRykKLSAgICBDR1Bv
aW50IGNnUG9pbnQgPSBhOwotCi0gICAgQVNTRVJUX0ZMT0FUX0VRKDEwLjBmLCBjZ1BvaW50Lngp
OwotICAgIEFTU0VSVF9GTE9BVF9FUSgyMC4wZiwgY2dQb2ludC55KTsKLQotICAgIFdlYkNvcmU6
OkludFBvaW50IGZyb21DR1BvaW50KGNnUG9pbnQpOwotICAgIEVYUEVDVF9FUSgxMCwgZnJvbUNH
UG9pbnQueCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGZyb21DR1BvaW50LnkoKSk7Ci0gICAgQVNT
RVJUX1RSVUUoYSA9PSBmcm9tQ0dQb2ludCk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikK
LSAgICBQT0lOVCBnZGlQb2ludCA9IGE7Ci0KLSAgICBBU1NFUlRfRkxPQVRfRVEoMTAuMGYsIGdk
aVBvaW50LngpOwotICAgIEFTU0VSVF9GTE9BVF9FUSgyMC4wZiwgZ2RpUG9pbnQueSk7Ci0KLSAg
ICBXZWJDb3JlOjpJbnRQb2ludCBmcm9tR0RJUG9pbnQoZ2RpUG9pbnQpOwotICAgIEVYUEVDVF9F
USgxMCwgZnJvbUdESVBvaW50LngoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBmcm9tR0RJUG9pbnQu
eSgpKTsKLSAgICBBU1NFUlRfVFJVRShhID09IGZyb21HRElQb2ludCk7Ci0KLSAgICBEMkQxX1BP
SU5UXzJGIGQyZFBvaW50RiA9IGE7Ci0KLSAgICBBU1NFUlRfRkxPQVRfRVEoMTAuMGYsIGQyZFBv
aW50Ri54KTsKLSAgICBBU1NFUlRfRkxPQVRfRVEoMjAuMGYsIGQyZFBvaW50Ri55KTsKLQotICAg
IFdlYkNvcmU6OkludFBvaW50IGZyb21EMkRQb2ludEYoZDJkUG9pbnRGKTsKLSAgICBFWFBFQ1Rf
RVEoMTAsIGZyb21EMkRQb2ludEYueCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGZyb21EMkRQb2lu
dEYueSgpKTsKLSAgICBBU1NFUlRfVFJVRShhID09IGZyb21EMkRQb2ludEYpOwotCi0gICAgRDJE
MV9QT0lOVF8yVSBkMmRQb2ludFUgPSBhOwotCi0gICAgQVNTRVJUX0ZMT0FUX0VRKDEwLjBmLCBk
MmRQb2ludFUueCk7Ci0gICAgQVNTRVJUX0ZMT0FUX0VRKDIwLjBmLCBkMmRQb2ludFUueSk7Ci0K
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBmcm9tRDJEUG9pbnRVKGQyZFBvaW50VSk7Ci0gICAgRVhQ
RUNUX0VRKDEwLCBmcm9tRDJEUG9pbnRVLngoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBmcm9tRDJE
UG9pbnRVLnkoKSk7Ci0gICAgQVNTRVJUX1RSVUUoYSA9PSBmcm9tRDJEUG9pbnRVKTsKLSNlbmRp
ZgotfQotCi1URVNUKEludFBvaW50LCBBZGRpdGlvbikKLXsKLSAgICBXZWJDb3JlOjpJbnRQb2lu
dCBhKDEwLCAyMCk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYig1MCwgNjApOwotICAgIFdlYkNv
cmU6OkludFNpemUgYnMoNTAsIDYwKTsKLQotICAgIGF1dG8gYyA9IGEgKyBiOwotCi0gICAgRVhQ
RUNUX0VRKDYwLCBjLngoKSk7Ci0gICAgRVhQRUNUX0VRKDgwLCBjLnkoKSk7Ci0KLSAgICBhICs9
IGJzOwotCi0gICAgRVhQRUNUX0VRKDYwLCBhLngoKSk7Ci0gICAgRVhQRUNUX0VRKDgwLCBhLnko
KSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIFN1YnRyYWN0aW9uKQotewotICAgIFdlYkNvcmU6Oklu
dFBvaW50IGEoMTAwLCA4MCk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYig1MCwgNjApOwotICAg
IFdlYkNvcmU6OkludFNpemUgYnMoNTAsIDYwKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgYyA9
IGEgLSBiOwotCi0gICAgRVhQRUNUX0VRKDUwLCBjLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgy
MCwgYy5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRQb2ludCBkID0gYSAtIGJzOwotCi0g
ICAgRVhQRUNUX0VRKDUwLCBkLngoKSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBkLnkoKSk7Ci0KLSAg
ICBhIC09IGJzOwotCi0gICAgRVhQRUNUX0VRKDUwLCBhLngoKSk7Ci0gICAgRVhQRUNUX0VRKDIw
LCBhLnkoKSk7Ci19Ci0KLVRFU1QoSW50UG9pbnQsIE5lZ2F0aW9uKQotewotICAgIFdlYkNvcmU6
OkludFBvaW50IGEoMTAwLCA4MCk7Ci0gICAgYXV0byBiID0gLWE7Ci0KLSAgICBFWFBFQ1RfRVEo
LTEwMCwgYi54KCkpOwotICAgIEVYUEVDVF9FUSgtODAsIGIueSgpKTsKLX0KLQotVEVTVChJbnRQ
b2ludCwgRXF1YWxpdHkpCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMDAsIDgwKTsKLSAg
ICBXZWJDb3JlOjpJbnRQb2ludCBiKDcwLCA1MCk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgYygx
MDAsIDgwKTsKLQotICAgIEFTU0VSVF9UUlVFKGEgPT0gYyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGEg
PT0gYik7Ci0gICAgQVNTRVJUX0ZBTFNFKGEgIT0gYyk7Ci0gICAgQVNTRVJUX1RSVUUoYSAhPSBi
KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ludFBvaW50VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0lu
dFBvaW50VGVzdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMzMyZTVjMzcxNDM0NjRhMjY4NDg1NmE4NTUz
NTc3YjljZDMzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvSW50UG9pbnRUZXN0cy5jcHAKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXpl
Lmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5o
PgorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8ZDJkMS5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgdGVzdEdldEFuZFNl
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKK3sKKyAgICBwb2ludC5zZXRYKDEpOworICAgIEVY
UEVDVF9FUSgxLCBwb2ludC54KCkpOworICAgIHBvaW50LnNldFkoMik7CisgICAgRVhQRUNUX0VR
KDIsIHBvaW50LnkoKSk7Cit9CisKK1RFU1QoSW50UG9pbnQsIERlZmF1bHRDb25zdHJ1Y3Rpb24p
Cit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgdGVzdDsKKworICAgIEVYUEVDVF9FUSgwLCB0ZXN0
LngoKSk7CisgICAgRVhQRUNUX0VRKDAsIHRlc3QueSgpKTsKKyAgICBBU1NFUlRfVFJVRSh0ZXN0
LmlzWmVybygpKTsKKworICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Cit9CisKK1RFU1QoSW50UG9p
bnQsIFZhbHVlQ29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkludFBvaW50IHRlc3QoMTAs
IDkpOworCisgICAgRVhQRUNUX0VRKDEwLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0VRKDksIHRl
c3QueSgpKTsKKworICAgIHRlc3RHZXRBbmRTZXQodGVzdCk7Cit9CisKK1RFU1QoSW50UG9pbnQs
IFplcm9Db25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgdGVzdCA9IFdlYkNv
cmU6OkludFBvaW50Ojp6ZXJvKCk7CisKKyAgICBFWFBFQ1RfRVEoMCwgdGVzdC54KCkpOworICAg
IEVYUEVDVF9FUSgwLCB0ZXN0LnkoKSk7CisgICAgQVNTRVJUX1RSVUUodGVzdC5pc1plcm8oKSk7
Cit9CisKK1RFU1QoSW50UG9pbnQsIEludFNpemVDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29y
ZTo6SW50U2l6ZSB0ZXN0SW5wdXQoMjAwMywgMTk5Nyk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
dGVzdCh0ZXN0SW5wdXQpOworCisgICAgRVhQRUNUX0VRKDIwMDMsIHRlc3QueCgpKTsKKyAgICBF
WFBFQ1RfRVEoMTk5NywgdGVzdC55KCkpOworICAgIEFTU0VSVF9GQUxTRSh0ZXN0LmlzWmVybygp
KTsKK30KKworVEVTVChJbnRQb2ludCwgRmxvYXRQb2ludENvbnN0cnVjdGlvbikKK3sKKyAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IHRlc3RJbnB1dCgyMDAzLjJmLCAxOTk3LjNmKTsKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCB0ZXN0KHRlc3RJbnB1dCk7CisKKyAgICBFWFBFQ1RfRVEoMjAwMywgdGVz
dC54KCkpOworICAgIEVYUEVDVF9FUSgxOTk3LCB0ZXN0LnkoKSk7CisgICAgQVNTRVJUX0ZBTFNF
KHRlc3QuaXNaZXJvKCkpOworfQorCitURVNUKEludFBvaW50LCBNb3ZlKQoreworICAgIFdlYkNv
cmU6OkludFBvaW50IHRlc3QoMTAsIDIwKTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoMzAs
IDUwKTsKKworICAgIHRlc3QubW92ZShzaXplKTsKKworICAgIEVYUEVDVF9FUSg0MCwgdGVzdC54
KCkpOworICAgIEVYUEVDVF9FUSg3MCwgdGVzdC55KCkpOworCisgICAgdGVzdC5tb3ZlKC0yLCA4
KTsKKworICAgIEVYUEVDVF9FUSgzOCwgdGVzdC54KCkpOworICAgIEVYUEVDVF9FUSg3OCwgdGVz
dC55KCkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KDEwMCwgMTAwKTsKKworICAg
IHRlc3QubW92ZUJ5KG9mZnNldCk7CisKKyAgICBFWFBFQ1RfRVEoMTM4LCB0ZXN0LngoKSk7Cisg
ICAgRVhQRUNUX0VRKDE3OCwgdGVzdC55KCkpOworfQorCitURVNUKEludFBvaW50LCBTY2FsZSkK
K3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCB0ZXN0KDEwLCAyMCk7CisKKyAgICB0ZXN0LnNjYWxl
KDIuMCk7CisKKyAgICBFWFBFQ1RfRVEoMjAsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoNDAs
IHRlc3QueSgpKTsKKworICAgIHRlc3Quc2NhbGUoMy4wLCAxLjUpOworCisgICAgRVhQRUNUX0VR
KDYwLCB0ZXN0LngoKSk7CisgICAgRVhQRUNUX0VRKDYwLCB0ZXN0LnkoKSk7Cit9CisKK1RFU1Qo
SW50UG9pbnQsIEV4cGFuZCkKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhKDEwLCAyMCk7Cisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgYigyMCwgNDApOworCisgICAgYXV0byBjID0gYS5leHBhbmRl
ZFRvKGIpOworCisgICAgRVhQRUNUX0VRKDIwLCBjLngoKSk7CisgICAgRVhQRUNUX0VRKDQwLCBj
LnkoKSk7Cit9CisKK1RFU1QoSW50UG9pbnQsIFNocmluaykKK3sKKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBhKDEwLCAyMCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYigyMCwgNDApOworCisgICAg
YXV0byBjID0gYi5zaHJ1bmtUbyhhKTsKKworICAgIEVYUEVDVF9FUSgxMCwgYy54KCkpOworICAg
IEVYUEVDVF9FUSgyMCwgYy55KCkpOworfQorCitURVNUKEludFBvaW50LCBUcmFuc3Bvc2UpCit7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMCwgMjApOworCisgICAgYXV0byBiID0gYS50cmFu
c3Bvc2VkUG9pbnQoKTsKKworICAgIEVYUEVDVF9FUSgyMCwgYi54KCkpOworICAgIEVYUEVDVF9F
USgxMCwgYi55KCkpOworfQorCitURVNUKEludFBvaW50LCBDYXN0KQoreworICAgIFdlYkNvcmU6
OkludFBvaW50IGEoMTAsIDIwKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgYXMgPSBXZWJDb3Jl
Ojp0b0ludFNpemUoYSk7CisgICAgRVhQRUNUX0VRKDEwLCBhcy53aWR0aCgpKTsKKyAgICBFWFBF
Q1RfRVEoMjAsIGFzLmhlaWdodCgpKTsKKworI2lmIFVTRShDRykKKyAgICBDR1BvaW50IGNnUG9p
bnQgPSBhOworCisgICAgQVNTRVJUX0ZMT0FUX0VRKDEwLjBmLCBjZ1BvaW50LngpOworICAgIEFT
U0VSVF9GTE9BVF9FUSgyMC4wZiwgY2dQb2ludC55KTsKKworICAgIFdlYkNvcmU6OkludFBvaW50
IGZyb21DR1BvaW50KGNnUG9pbnQpOworICAgIEVYUEVDVF9FUSgxMCwgZnJvbUNHUG9pbnQueCgp
KTsKKyAgICBFWFBFQ1RfRVEoMjAsIGZyb21DR1BvaW50LnkoKSk7CisgICAgQVNTRVJUX1RSVUUo
YSA9PSBmcm9tQ0dQb2ludCk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBQT0lO
VCBnZGlQb2ludCA9IGE7CisKKyAgICBBU1NFUlRfRkxPQVRfRVEoMTAuMGYsIGdkaVBvaW50Lngp
OworICAgIEFTU0VSVF9GTE9BVF9FUSgyMC4wZiwgZ2RpUG9pbnQueSk7CisKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBmcm9tR0RJUG9pbnQoZ2RpUG9pbnQpOworICAgIEVYUEVDVF9FUSgxMCwgZnJv
bUdESVBvaW50LngoKSk7CisgICAgRVhQRUNUX0VRKDIwLCBmcm9tR0RJUG9pbnQueSgpKTsKKyAg
ICBBU1NFUlRfVFJVRShhID09IGZyb21HRElQb2ludCk7CisKKyAgICBEMkQxX1BPSU5UXzJGIGQy
ZFBvaW50RiA9IGE7CisKKyAgICBBU1NFUlRfRkxPQVRfRVEoMTAuMGYsIGQyZFBvaW50Ri54KTsK
KyAgICBBU1NFUlRfRkxPQVRfRVEoMjAuMGYsIGQyZFBvaW50Ri55KTsKKworICAgIFdlYkNvcmU6
OkludFBvaW50IGZyb21EMkRQb2ludEYoZDJkUG9pbnRGKTsKKyAgICBFWFBFQ1RfRVEoMTAsIGZy
b21EMkRQb2ludEYueCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAsIGZyb21EMkRQb2ludEYueSgpKTsK
KyAgICBBU1NFUlRfVFJVRShhID09IGZyb21EMkRQb2ludEYpOworCisgICAgRDJEMV9QT0lOVF8y
VSBkMmRQb2ludFUgPSBhOworCisgICAgQVNTRVJUX0ZMT0FUX0VRKDEwLjBmLCBkMmRQb2ludFUu
eCk7CisgICAgQVNTRVJUX0ZMT0FUX0VRKDIwLjBmLCBkMmRQb2ludFUueSk7CisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBmcm9tRDJEUG9pbnRVKGQyZFBvaW50VSk7CisgICAgRVhQRUNUX0VRKDEw
LCBmcm9tRDJEUG9pbnRVLngoKSk7CisgICAgRVhQRUNUX0VRKDIwLCBmcm9tRDJEUG9pbnRVLnko
KSk7CisgICAgQVNTRVJUX1RSVUUoYSA9PSBmcm9tRDJEUG9pbnRVKTsKKyNlbmRpZgorfQorCitU
RVNUKEludFBvaW50LCBBZGRpdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhKDEwLCAy
MCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYig1MCwgNjApOworICAgIFdlYkNvcmU6OkludFNp
emUgYnMoNTAsIDYwKTsKKworICAgIGF1dG8gYyA9IGEgKyBiOworCisgICAgRVhQRUNUX0VRKDYw
LCBjLngoKSk7CisgICAgRVhQRUNUX0VRKDgwLCBjLnkoKSk7CisKKyAgICBhICs9IGJzOworCisg
ICAgRVhQRUNUX0VRKDYwLCBhLngoKSk7CisgICAgRVhQRUNUX0VRKDgwLCBhLnkoKSk7Cit9CisK
K1RFU1QoSW50UG9pbnQsIFN1YnRyYWN0aW9uKQoreworICAgIFdlYkNvcmU6OkludFBvaW50IGEo
MTAwLCA4MCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYig1MCwgNjApOworICAgIFdlYkNvcmU6
OkludFNpemUgYnMoNTAsIDYwKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgYyA9IGEgLSBiOwor
CisgICAgRVhQRUNUX0VRKDUwLCBjLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgyMCwgYy5oZWln
aHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBkID0gYSAtIGJzOworCisgICAgRVhQRUNU
X0VRKDUwLCBkLngoKSk7CisgICAgRVhQRUNUX0VRKDIwLCBkLnkoKSk7CisKKyAgICBhIC09IGJz
OworCisgICAgRVhQRUNUX0VRKDUwLCBhLngoKSk7CisgICAgRVhQRUNUX0VRKDIwLCBhLnkoKSk7
Cit9CisKK1RFU1QoSW50UG9pbnQsIE5lZ2F0aW9uKQoreworICAgIFdlYkNvcmU6OkludFBvaW50
IGEoMTAwLCA4MCk7CisgICAgYXV0byBiID0gLWE7CisKKyAgICBFWFBFQ1RfRVEoLTEwMCwgYi54
KCkpOworICAgIEVYUEVDVF9FUSgtODAsIGIueSgpKTsKK30KKworVEVTVChJbnRQb2ludCwgRXF1
YWxpdHkpCit7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYSgxMDAsIDgwKTsKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBiKDcwLCA1MCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYygxMDAsIDgwKTsK
KworICAgIEFTU0VSVF9UUlVFKGEgPT0gYyk7CisgICAgQVNTRVJUX0ZBTFNFKGEgPT0gYik7Cisg
ICAgQVNTRVJUX0ZBTFNFKGEgIT0gYyk7CisgICAgQVNTRVJUX1RSVUUoYSAhPSBiKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFJlY3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFJlY3QuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzkzZWFhOGFmOTc2NGQzNTIyYmYxNzdkZDA3M2Iy
YjU5YjM2YTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDYxOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
SW50UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemUuaD4KLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29y
ZUdyYXBoaWNzLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxkMmQx
Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgdm9pZCB0
ZXN0R2V0QW5kU2V0KFdlYkNvcmU6OkludFJlY3QgcmVjdCkKLXsKLSAgICByZWN0LnNldFgoMSk7
Ci0gICAgRVhQRUNUX0VRKDEsIHJlY3QueCgpKTsKLSAgICByZWN0LnNldFkoMik7Ci0gICAgRVhQ
RUNUX0VRKDIsIHJlY3QueSgpKTsKLSAgICByZWN0LnNldFdpZHRoKDIwMyk7Ci0gICAgRVhQRUNU
X0VRKDIwMywgcmVjdC53aWR0aCgpKTsKLSAgICByZWN0LnNldEhlaWdodCg3Myk7Ci0gICAgRVhQ
RUNUX0VRKDczLCByZWN0LmhlaWdodCgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdEVtcHR5UmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIEVYUEVDVF9FUSgwLCByZWN0
LngoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVj
dC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgRVhQRUNU
X0VRKDAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVjdC5tYXhZKCkpOwotICAg
IEVYUEVDVF9UUlVFKHJlY3QuaXNFbXB0eSgpKTsKLX0KLQotVEVTVChJbnRSZWN0LCBEZWZhdWx0
Q29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkludFJlY3QgdGVzdDsKLQotICAgIHRlc3RF
bXB0eVJlY3QodGVzdCk7Ci0KLSAgICB0ZXN0R2V0QW5kU2V0KHRlc3QpOwotCi0gICAgYXV0byBs
b2NhdGlvbiA9IHRlc3QubG9jYXRpb24oKTsKLSAgICBFWFBFQ1RfRVEoMCwgbG9jYXRpb24ueCgp
KTsKLSAgICBFWFBFQ1RfRVEoMCwgbG9jYXRpb24ueSgpKTsKLQotICAgIGF1dG8gc2l6ZSA9IHRl
c3Quc2l6ZSgpOwotICAgIEVYUEVDVF9FUSgwLCBzaXplLndpZHRoKCkpOwotICAgIEVYUEVDVF9F
USgwLCBzaXplLmhlaWdodCgpKTsKLX0KLQotVEVTVChJbnRSZWN0LCBWYWx1ZUNvbnN0cnVjdGlv
bikKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHRlc3QoMTAsIDIwLCAxMDAsIDUwKTsKLQotICAg
IEVYUEVDVF9FUSgxMCwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9FUSgyMCwgdGVzdC55KCkpOwot
ICAgIEVYUEVDVF9FUSgxMDAsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDUwLCB0ZXN0
LmhlaWdodCgpKTsKLSAgICBFWFBFQ1RfRVEoMTEwLCB0ZXN0Lm1heFgoKSk7Ci0gICAgRVhQRUNU
X0VRKDcwLCB0ZXN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsK
LQotICAgIGF1dG8gbG9jYXRpb24gPSB0ZXN0LmxvY2F0aW9uKCk7Ci0gICAgRVhQRUNUX0VRKDEw
LCBsb2NhdGlvbi54KCkpOwotICAgIEVYUEVDVF9FUSgyMCwgbG9jYXRpb24ueSgpKTsKLQotICAg
IGF1dG8gc2l6ZSA9IHRlc3Quc2l6ZSgpOwotICAgIEVYUEVDVF9FUSgxMDAsIHNpemUud2lkdGgo
KSk7Ci0gICAgRVhQRUNUX0VRKDUwLCBzaXplLmhlaWdodCgpKTsKLX0KLQotVEVTVChJbnRSZWN0
LCBQb2ludFNpemVDb25zdHJ1Y3Rpb24pCi17Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgbG9jYXRp
b24oMjAsIDMwKTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoMTAwLCA1MCk7Ci0KLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHRlc3QobG9jYXRpb24sIHNpemUpOwotCi0gICAgRVhQRUNUX0VRKDIw
LCB0ZXN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDMwLCB0ZXN0LnkoKSk7Ci0gICAgRVhQRUNUX0VR
KDEwMCwgdGVzdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNTAsIHRlc3QuaGVpZ2h0KCkpOwot
ICAgIEVYUEVDVF9FUSgxMjAsIHRlc3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoODAsIHRlc3Qu
bWF4WSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdC5pc0VtcHR5KCkpOwotCi0gICAgYXV0byBs
b2NhdGlvbjIgPSB0ZXN0LmxvY2F0aW9uKCk7Ci0gICAgRVhQRUNUX0VRKDIwLCBsb2NhdGlvbjIu
eCgpKTsKLSAgICBFWFBFQ1RfRVEoMzAsIGxvY2F0aW9uMi55KCkpOwotCi0gICAgYXV0byBzaXpl
MiA9IHRlc3Quc2l6ZSgpOwotICAgIEVYUEVDVF9FUSgxMDAsIHNpemUyLndpZHRoKCkpOwotICAg
IEVYUEVDVF9FUSg1MCwgc2l6ZTIuaGVpZ2h0KCkpOwotfQotCi1URVNUKEludFJlY3QsIEZsb2F0
UmVjdENvbnN0cnVjdGlvbikKLXsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgyMC4wZiwg
MzAuMGYsIDE1MC4wZiwgMzAwLjBmKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgdGVzdChyZWN0
KTsKLQotICAgIEVYUEVDVF9FUSgyMCwgdGVzdC54KCkpOwotICAgIEVYUEVDVF9FUSgzMCwgdGVz
dC55KCkpOwotICAgIEVYUEVDVF9FUSgxNTAsIHRlc3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VR
KDMwMCwgdGVzdC5oZWlnaHQoKSk7Ci0gICAgRVhQRUNUX0VRKDE3MCwgdGVzdC5tYXhYKCkpOwot
ICAgIEVYUEVDVF9FUSgzMzAsIHRlc3QubWF4WSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdC5p
c0VtcHR5KCkpOwotCi0gICAgYXV0byBsb2NhdGlvbiA9IHRlc3QubG9jYXRpb24oKTsKLSAgICBF
WFBFQ1RfRVEoMjAsIGxvY2F0aW9uLngoKSk7Ci0gICAgRVhQRUNUX0VRKDMwLCBsb2NhdGlvbi55
KCkpOwotCi0gICAgYXV0byBzaXplID0gdGVzdC5zaXplKCk7Ci0gICAgRVhQRUNUX0VRKDE1MCwg
c2l6ZS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMzAwLCBzaXplLmhlaWdodCgpKTsKLX0KLQot
VEVTVChJbnRSZWN0LCBTZXRMb2NhdGlvbkFuZFNpemUpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVj
dCByZWN0OwotCi0gICAgdGVzdEVtcHR5UmVjdChyZWN0KTsKLQotICAgIFdlYkNvcmU6OkludFBv
aW50IGxvY2F0aW9uKDEwLCAyMCk7Ci0KLSAgICByZWN0LnNldExvY2F0aW9uKGxvY2F0aW9uKTsK
LQotICAgIEVYUEVDVF9FUSgxMCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSgyMCwgcmVjdC55
KCkpOwotICAgIEVYUEVDVF9FUSgwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgwLCBy
ZWN0LmhlaWdodCgpKTsKLSAgICBFWFBFQ1RfRVEoMTAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBF
Q1RfRVEoMjAsIHJlY3QubWF4WSgpKTsKLSAgICBFWFBFQ1RfVFJVRShyZWN0LmlzRW1wdHkoKSk7
Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoMTAwLCAyMDApOwotCi0gICAgcmVjdC5zZXRT
aXplKHNpemUpOwotCi0gICAgRVhQRUNUX0VRKDEwLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0VR
KDIwLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53aWR0aCgpKTsKLSAgICBF
WFBFQ1RfRVEoMjAwLCByZWN0LmhlaWdodCgpKTsKLSAgICBFWFBFQ1RfRVEoMTEwLCByZWN0Lm1h
eFgoKSk7Ci0gICAgRVhQRUNUX0VRKDIyMCwgcmVjdC5tYXhZKCkpOwotICAgIEVYUEVDVF9GQUxT
RShyZWN0LmlzRW1wdHkoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgQ2VudGVyKQotewotICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdCgyMCwgNDAsIDEwMCwgMjAwKTsKLQotICAgIGF1dG8gY2VudGVy
ID0gcmVjdC5jZW50ZXIoKTsKLQotICAgIEVYUEVDVF9FUSg3MCwgY2VudGVyLngoKSk7Ci0gICAg
RVhQRUNUX0VRKDE0MCwgY2VudGVyLnkoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgTW92ZSkKLXsK
LSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAgICBXZWJD
b3JlOjpJbnRTaXplIGRlbHRhKDEwLCAyMCk7Ci0KLSAgICByZWN0Lm1vdmUoZGVsdGEpOwotCi0g
ICAgRVhQRUNUX0VRKDMwLCByZWN0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDUwLCByZWN0LnkoKSk7
Ci0KLSAgICBXZWJDb3JlOjpJbnRQb2ludCBkZWx0YVBvaW50KC0yMCwgLTQwKTsKLQotICAgIHJl
Y3QubW92ZUJ5KGRlbHRhUG9pbnQpOwotCi0gICAgRVhQRUNUX0VRKDEwLCByZWN0LngoKSk7Ci0g
ICAgRVhQRUNUX0VRKDEwLCByZWN0LnkoKSk7Ci0KLSAgICByZWN0Lm1vdmUoLTEwLCAyMik7Ci0K
LSAgICBFWFBFQ1RfRVEoMCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSgzMiwgcmVjdC55KCkp
OwotfQotCi1URVNUKEludFJlY3QsIEV4cGFuZCkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QoMjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoMTAwLCAx
MDApOwotCi0gICAgcmVjdC5leHBhbmQoc2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMjAwLCByZWN0
LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgzMDAsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAgcmVj
dC5leHBhbmQoNTUsIDIyKTsKLQotICAgIEVYUEVDVF9FUSgyNTUsIHJlY3Qud2lkdGgoKSk7Ci0g
ICAgRVhQRUNUX0VRKDMyMiwgcmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXpl
IHNpemUyKC0xMCwgLTIwKTsKLQotICAgIHJlY3QuZXhwYW5kKHNpemUyKTsKLQotICAgIEVYUEVD
VF9FUSgyNDUsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDMwMiwgcmVjdC5oZWlnaHQo
KSk7Ci0KLSAgICByZWN0LmV4cGFuZCgtNSwgLTIpOwotCi0gICAgRVhQRUNUX0VRKDI0MCwgcmVj
dC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMzAwLCByZWN0LmhlaWdodCgpKTsKLX0KLQotVEVT
VChJbnRSZWN0LCBDb250cmFjdCkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMw
LCAxMDAsIDIwMCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoNTAsIDEwMCk7Ci0KLSAg
ICByZWN0LmNvbnRyYWN0KHNpemUpOwotCi0gICAgRVhQRUNUX0VRKDUwLCByZWN0LndpZHRoKCkp
OwotICAgIEVYUEVDVF9FUSgxMDAsIHJlY3QuaGVpZ2h0KCkpOwotCi0gICAgcmVjdC5jb250cmFj
dCgyNSwgMjIpOwotCi0gICAgRVhQRUNUX0VRKDI1LCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVD
VF9FUSg3OCwgcmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUyKC0x
MCwgLTIwKTsKLQotICAgIHJlY3QuY29udHJhY3Qoc2l6ZTIpOwotCi0gICAgRVhQRUNUX0VRKDM1
LCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg5OCwgcmVjdC5oZWlnaHQoKSk7Ci0KLSAg
ICByZWN0LmNvbnRyYWN0KC01LCAtMik7Ci0KLSAgICBFWFBFQ1RfRVEoNDAsIHJlY3Qud2lkdGgo
KSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgcmVjdC5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50UmVj
dCwgU2hpZnRYRWRnZSkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAs
IDIwMCk7Ci0KLSAgICByZWN0LnNoaWZ0WEVkZ2VUbyg3Nyk7Ci0KLSAgICBFWFBFQ1RfRVEoNzcs
IHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMTIwLCByZWN0Lm1heFgoKSk7Ci0gICAgRVhQRUNU
X0VRKDMwLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDIzMCwgcmVjdC5tYXhZKCkpOwotICAg
IEVYUEVDVF9FUSg0MywgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAwLCByZWN0Lmhl
aWdodCgpKTsKLQotICAgIHJlY3Quc2hpZnRNYXhYRWRnZVRvKDIwMCk7Ci0KLSAgICBFWFBFQ1Rf
RVEoNzcsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAwLCByZWN0Lm1heFgoKSk7Ci0gICAg
RVhQRUNUX0VRKDMwLCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDIzMCwgcmVjdC5tYXhZKCkp
OwotICAgIEVYUEVDVF9FUSgxMjMsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDIwMCwg
cmVjdC5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgU2hpZnRZRWRnZSkKLXsKLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAgICByZWN0LnNoaWZ0
WUVkZ2VUbyg1OS4wZik7Ci0KLSAgICBFWFBFQ1RfRVEoMjAsIHJlY3QueCgpKTsKLSAgICBFWFBF
Q1RfRVEoMTIwLCByZWN0Lm1heFgoKSk7Ci0gICAgRVhQRUNUX0VRKDU5LCByZWN0LnkoKSk7Ci0g
ICAgRVhQRUNUX0VRKDIzMCwgcmVjdC5tYXhZKCkpOwotICAgIEVYUEVDVF9FUSgxMDAsIHJlY3Qu
d2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDE3MSwgcmVjdC5oZWlnaHQoKSk7Ci0KLSAgICByZWN0
LnNoaWZ0TWF4WUVkZ2VUbygyNzAuMGYpOwotCi0gICAgRVhQRUNUX0VRKDIwLCByZWN0LngoKSk7
Ci0gICAgRVhQRUNUX0VRKDEyMCwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9FUSg1OSwgcmVj
dC55KCkpOwotICAgIEVYUEVDVF9FUSgyNzAsIHJlY3QubWF4WSgpKTsKLSAgICBFWFBFQ1RfRVEo
MTAwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgyMTEsIHJlY3QuaGVpZ2h0KCkpOwot
fQotCi1URVNUKEludFJlY3QsIEluZmxhdGUpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0
KDIwLCAzMCwgMTAwLCAyMDApOwotCi0gICAgcmVjdC5pbmZsYXRlWCg1KTsKLQotICAgIEVYUEVD
VF9FUSgxNSwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSgxMjUsIHJlY3QubWF4WCgpKTsKLQot
ICAgIHJlY3QuaW5mbGF0ZVkoNCk7Ci0KLSAgICBFWFBFQ1RfRVEoMjYsIHJlY3QueSgpKTsKLSAg
ICBFWFBFQ1RfRVEoMjM0LCByZWN0Lm1heFkoKSk7Ci0KLSAgICByZWN0LmluZmxhdGUoMTApOwot
Ci0gICAgRVhQRUNUX0VRKDUsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEoMTM1LCByZWN0Lm1h
eFgoKSk7Ci0gICAgRVhQRUNUX0VRKDE2LCByZWN0LnkoKSk7Ci0gICAgRVhQRUNUX0VRKDI0NCwg
cmVjdC5tYXhZKCkpOwotfQotCi1URVNUKEludFJlY3QsIENvcm5lcnMpCi17Ci0gICAgV2ViQ29y
ZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCB0b3BMZWZ0ID0gcmVjdC5taW5YTWluWUNvcm5lcigpOwotICAgIEVYUEVDVF9FUSgyMCwg
dG9wTGVmdC54KCkpOwotICAgIEVYUEVDVF9FUSgzMCwgdG9wTGVmdC55KCkpOwotCi0gICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCB0b3BSaWdodCA9IHJlY3QubWF4WE1pbllDb3JuZXIoKTsKLSAgICBF
WFBFQ1RfRVEoMTIwLCB0b3BSaWdodC54KCkpOwotICAgIEVYUEVDVF9FUSgzMCwgdG9wUmlnaHQu
eSgpKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYm90dG9tTGVmdCA9IHJlY3QubWluWE1h
eFlDb3JuZXIoKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGJvdHRvbUxlZnQueCgpKTsKLSAgICBFWFBF
Q1RfRVEoMjMwLCBib3R0b21MZWZ0LnkoKSk7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJv
dHRvbVJpZ2h0ID0gcmVjdC5tYXhYTWF4WUNvcm5lcigpOwotICAgIEVYUEVDVF9FUSgxMjAsIGJv
dHRvbVJpZ2h0LngoKSk7Ci0gICAgRVhQRUNUX0VRKDIzMCwgYm90dG9tUmlnaHQueSgpKTsKLX0K
LQotVEVTVChJbnRSZWN0LCBDb250YWlucykKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qo
MjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IGNvbnRhaW5lZCgzMCwg
NDAsIDUwLCAxMDApOwotCi0gICAgQVNTRVJUX1RSVUUocmVjdC5jb250YWlucyhjb250YWluZWQp
KTsKLQotICAgIFdlYkNvcmU6OkludFJlY3Qgb3V0c2lkZSgxMjAsIDIzMCwgNTAsIDEwMCk7Ci0K
LSAgICBBU1NFUlRfRkFMU0UocmVjdC5jb250YWlucyhvdXRzaWRlKSk7Ci0KLSAgICBXZWJDb3Jl
OjpJbnRSZWN0IGludGVyc2VjdHMoMTAsIDIwLCA5MCwgMTgwKTsKLQotICAgIEFTU0VSVF9GQUxT
RShyZWN0LmNvbnRhaW5zKGludGVyc2VjdHMpKTsKLQotICAgIFdlYkNvcmU6OkludFBvaW50IHBv
aW50SW5zaWRlKDYwLCA3MCk7Ci0KLSAgICBBU1NFUlRfVFJVRShyZWN0LmNvbnRhaW5zKHBvaW50
SW5zaWRlKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludE91dHNpZGUoMTYwLCAyNzAp
OwotCi0gICAgQVNTRVJUX0ZBTFNFKHJlY3QuY29udGFpbnMocG9pbnRPdXRzaWRlKSk7Ci0KLSAg
ICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludE9uTGluZSgyMCwgMzApOwotCi0gICAgQVNTRVJUX1RS
VUUocmVjdC5jb250YWlucyhwb2ludE9uTGluZSkpOwotCi0gICAgQVNTRVJUX1RSVUUocmVjdC5j
b250YWlucyg2MCwgNzApKTsKLSAgICBBU1NFUlRfRkFMU0UocmVjdC5jb250YWlucygxNjAsIDI3
MCkpOwotfQotCi1URVNUKEludFJlY3QsIEludGVyc2VjdHMpCi17Ci0gICAgV2ViQ29yZTo6SW50
UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBjb250
YWluZWQoMzAsIDQwLCA1MCwgMTAwKTsKLQotICAgIEFTU0VSVF9UUlVFKHJlY3QuaW50ZXJzZWN0
cyhjb250YWluZWQpKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3Qgb3V0c2lkZSgxMjAsIDIzMCwg
NTAsIDEwMCk7Ci0KLSAgICBBU1NFUlRfRkFMU0UocmVjdC5pbnRlcnNlY3RzKG91dHNpZGUpKTsK
LQotICAgIFdlYkNvcmU6OkludFJlY3QgaW50ZXJzZWN0cygxMCwgMjAsIDkwLCAxODApOwotCi0g
ICAgQVNTRVJUX1RSVUUocmVjdC5pbnRlcnNlY3RzKGludGVyc2VjdHMpKTsKLX0KLQotc3RhdGlj
IHZvaWQgdGVzdEludGVyc2VjdFJlc3VsdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQot
ewotICAgIEVYUEVDVF9FUSg3MCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSgxMjAsIHJlY3Qu
bWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoODAsIHJlY3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoMjMw
LCByZWN0Lm1heFkoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgSW50ZXJzZWN0KQotewotICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdEEoMjAsIDMwLCAxMDAsIDIwMCk7Ci0gICAgV2ViQ29yZTo6SW50
UmVjdCByZWN0Qig3MCwgODAsIDEwMCwgMjAwKTsKLQotICAgIHJlY3RBLmludGVyc2VjdChyZWN0
Qik7Ci0KLSAgICB0ZXN0SW50ZXJzZWN0UmVzdWx0KHJlY3RBKTsKLQotICAgIFdlYkNvcmU6Oklu
dFJlY3QgcmVjdEMoMjAsIDMwLCAxMDAsIDIwMCk7Ci0KLSAgICBhdXRvIGludGVyc2VjdGVkID0g
V2ViQ29yZTo6aW50ZXJzZWN0aW9uKHJlY3RDLCByZWN0Qik7Ci0KLSAgICB0ZXN0SW50ZXJzZWN0
UmVzdWx0KGludGVyc2VjdGVkKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFVuaXRlZFJlY3RzKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHVuaXRlZCkKLXsKLSAgICBFWFBFQ1RfRVEoMjAsIHVuaXRl
ZC54KCkpOwotICAgIEVYUEVDVF9FUSgxNzAsIHVuaXRlZC5tYXhYKCkpOwotICAgIEVYUEVDVF9F
USgzMCwgdW5pdGVkLnkoKSk7Ci0gICAgRVhQRUNUX0VRKDI4MCwgdW5pdGVkLm1heFkoKSk7Ci19
Ci0KLVRFU1QoSW50UmVjdCwgVW5pdGUpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0QSgy
MCwgMzAsIDEwMCwgMjAwKTsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RCKDcwLCA4MCwgMTAw
LCAyMDApOwotCi0gICAgcmVjdEEudW5pdGUocmVjdEIpOwotCi0gICAgdGVzdFVuaXRlZFJlY3Rz
KHJlY3RBKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEMoMjAsIDMwLCAxMDAsIDIwMCk7
Ci0KLSAgICBhdXRvIHVuaXRlZCA9IFdlYkNvcmU6OnVuaW9uUmVjdChyZWN0QywgcmVjdEIpOwot
Ci0gICAgdGVzdFVuaXRlZFJlY3RzKHVuaXRlZCk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgU2NhbGUp
Ci17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOwotCi0gICAg
cmVjdC5zY2FsZSgyLjBmKTsKLQotICAgIEVYUEVDVF9FUSg0MCwgcmVjdC54KCkpOwotICAgIEVY
UEVDVF9FUSgyNDAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoNjAsIHJlY3QueSgpKTsK
LSAgICBFWFBFQ1RfRVEoNDYwLCByZWN0Lm1heFkoKSk7Ci19Ci0KLVRFU1QoSW50UmVjdCwgVHJh
bnNwb3NlKQotewotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsK
LQotICAgIGF1dG8gdHJhbnNwb3NlZCA9IHJlY3QudHJhbnNwb3NlZFJlY3QoKTsKLQotICAgIEVY
UEVDVF9FUSgzMCwgdHJhbnNwb3NlZC54KCkpOwotICAgIEVYUEVDVF9FUSgyMzAsIHRyYW5zcG9z
ZWQubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIHRyYW5zcG9zZWQueSgpKTsKLSAgICBFWFBF
Q1RfRVEoMTIwLCB0cmFuc3Bvc2VkLm1heFkoKSk7Ci19Ci0KLSNpZiBVU0UoQ0cpIHx8IFBMQVRG
T1JNKFdJTikKLXN0YXRpYyB2b2lkIGNoZWNrQ2FzdFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCkKLXsKLSAgICBFWFBFQ1RfRVEoMTAsIHJlY3QueCgpKTsKLSAgICBFWFBFQ1RfRVEo
NDAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoMjAsIHJlY3QueSgpKTsKLSAgICBFWFBF
Q1RfRVEoNjAsIHJlY3QubWF4WSgpKTsKLSAgICBFWFBFQ1RfRVEoMzAsIHJlY3Qud2lkdGgoKSk7
Ci0gICAgRVhQRUNUX0VRKDQwLCByZWN0LmhlaWdodCgpKTsKLX0KLSNlbmRpZgotCi1URVNUKElu
dFJlY3QsIENhc3RpbmcpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDEwLCAyMCwgMzAs
IDQwKTsKLQotI2lmIFVTRShDRykKLSAgICBDR1JlY3QgY2dSZWN0ID0gQ0dSZWN0TWFrZSgxMC4w
LCAyMC4wLCAzMC4wLCA0MC4wKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZyb21DR1Jl
Y3QoY2dSZWN0KTsKLQotICAgIGNoZWNrQ2FzdFJlY3QocmVjdEZyb21DR1JlY3QpOwotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgUkVDVCBnZGlSZWN0ID0gcmVjdDsKLQotICAgIEVY
UEVDVF9FUSgxMCwgZ2RpUmVjdC5sZWZ0KTsKLSAgICBFWFBFQ1RfRVEoMjAsIGdkaVJlY3QudG9w
KTsKLSAgICBFWFBFQ1RfRVEoNDAsIGdkaVJlY3QucmlnaHQpOwotICAgIEVYUEVDVF9FUSg2MCwg
Z2RpUmVjdC5ib3R0b20pOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0RnJvbUdESVJlY3Qo
Z2RpUmVjdCk7Ci0KLSAgICBjaGVja0Nhc3RSZWN0KHJlY3RGcm9tR0RJUmVjdCk7Ci0KLSAgICBE
MkQxX1JFQ1RfVSBkMmRSZWN0VSA9IHJlY3Q7Ci0KLSAgICBFWFBFQ1RfRVEoMTAsIGQyZFJlY3RV
LmxlZnQpOwotICAgIEVYUEVDVF9FUSgyMCwgZDJkUmVjdFUudG9wKTsKLSAgICBFWFBFQ1RfRVEo
NDAsIGQyZFJlY3RVLnJpZ2h0KTsKLSAgICBFWFBFQ1RfRVEoNjAsIGQyZFJlY3RVLmJvdHRvbSk7
Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGcm9tRDJEUmVjdFUoZDJkUmVjdFUpOwotCi0g
ICAgY2hlY2tDYXN0UmVjdChyZWN0RnJvbUQyRFJlY3RVKTsKLQotICAgIEQyRDFfUkVDVF9GIGQy
ZFJlY3RGID0gcmVjdDsKLQotICAgIEVYUEVDVF9GTE9BVF9FUSgxMC4wZiwgZDJkUmVjdEYubGVm
dCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjBmLCBkMmRSZWN0Ri50b3ApOwotICAgIEVYUEVD
VF9GTE9BVF9FUSg0MC4wZiwgZDJkUmVjdEYucmlnaHQpOwotICAgIEVYUEVDVF9GTE9BVF9FUSg2
MC4wZiwgZDJkUmVjdEYuYm90dG9tKTsKLQotICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZyb21E
MkRSZWN0RihkMmRSZWN0Rik7Ci0KLSAgICBjaGVja0Nhc3RSZWN0KHJlY3RGcm9tRDJEUmVjdEYp
OwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGNoZWNrU3VidHJhY3Rpb25SZXN1bHQxKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCi17Ci0gICAgRVhQRUNUX0VRKC0xMCwgcmVjdC54KCkp
OwotICAgIEVYUEVDVF9FUSg5MCwgcmVjdC5tYXhYKCkpOwotICAgIEVYUEVDVF9FUSgtMTAsIHJl
Y3QueSgpKTsKLSAgICBFWFBFQ1RfRVEoOTAsIHJlY3QubWF4WSgpKTsKLSAgICBFWFBFQ1RfRVEo
MTAwLCByZWN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgxMDAsIHJlY3QuaGVpZ2h0KCkpOwot
fQotCi1zdGF0aWMgdm9pZCBjaGVja1N1YnRyYWN0aW9uUmVzdWx0Mihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KQotewotICAgIEVYUEVDVF9FUSgtNDAsIHJlY3QueCgpKTsKLSAgICBFWFBF
Q1RfRVEoNjAsIHJlY3QubWF4WCgpKTsKLSAgICBFWFBFQ1RfRVEoLTUwLCByZWN0LnkoKSk7Ci0g
ICAgRVhQRUNUX0VRKDUwLCByZWN0Lm1heFkoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53
aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMTAwLCByZWN0LmhlaWdodCgpKTsKLX0KLQotVEVTVChJ
bnRSZWN0LCBTdWJ0cmFjdGlvbikKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMTAsIDIw
LCAxMDAsIDEwMCk7Ci0gICAgV2ViQ29yZTo6SW50UG9pbnQgcmlnaHRTaWRlKDIwLCAzMCk7Ci0K
LSAgICByZWN0IC09IHJpZ2h0U2lkZTsKLQotICAgIGNoZWNrU3VidHJhY3Rpb25SZXN1bHQxKHJl
Y3QpOwotCi0gICAgYXV0byByZWN0MiA9IHJlY3QgLSBXZWJDb3JlOjpJbnRQb2ludCgzMCwgNDAp
OwotICAgIGNoZWNrU3VidHJhY3Rpb25SZXN1bHQyKHJlY3QyKTsKLX0KLQotVEVTVChJbnRSZWN0
LCBFcXVhbGl0eSkKLXsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMTAsIDIwLCAxMDAsIDEw
MCk7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0MigxMCwgMjAsIDEwMCwgMTAwKTsKLSAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJpZ2h0U2lkZSgxMTAsIDIwLCAyMCwgMTAwKTsKLQotICAgIEFTU0VS
VF9UUlVFKHJlY3QgPT0gcmVjdDIpOwotICAgIEFTU0VSVF9GQUxTRShyZWN0ICE9IHJlY3QyKTsK
LSAgICBBU1NFUlRfVFJVRShyZWN0ICE9IHJpZ2h0U2lkZSk7Ci0gICAgQVNTRVJUX0ZBTFNFKHJl
Y3QgPT0gcmlnaHRTaWRlKTsKLX0KLQotI2lmIFVTRShDRykKLXN0YXRpYyB2b2lkIGNoZWNrRW5j
bG9zaW5nSW50UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIEVYUEVD
VF9FUSgxMCwgcmVjdC54KCkpOwotICAgIEVYUEVDVF9FUSg0MSwgcmVjdC5tYXhYKCkpOwotICAg
IEVYUEVDVF9FUSgyMSwgcmVjdC55KCkpOwotICAgIEVYUEVDVF9FUSg2MiwgcmVjdC5tYXhZKCkp
OwotICAgIEVYUEVDVF9FUSgzMSwgcmVjdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNDEsIHJl
Y3QuaGVpZ2h0KCkpOwotfQotI2VuZGlmCi0KLVRFU1QoSW50UmVjdCwgRW5jbG9zaW5nSW50UmVj
dCkKLXsKLSNpZiBVU0UoQ0cpCi0gICAgQ0dSZWN0IGNnUmVjdCA9IENHUmVjdE1ha2UoMTAuNSwg
MjEuMywgMzAuMSwgNDAuMCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IGVuY2xvc2luZ0NHID0g
V2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChjZ1JlY3QpOwotCi0gICAgY2hlY2tFbmNsb3NpbmdJ
bnRSZWN0KGVuY2xvc2luZ0NHKTsKLSNlbmRpZgotfQotCi1URVNUKEludFJlY3QsIEFyZWFBbmRE
aXN0YW5jZXMpCi17Ci0gICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDEwLCAyMCwgMTAwLCAxMDAp
OwotCi0gICAgRVhQRUNUX0VRKDEwMDAwVSwgcmVjdC5hcmVhKCkudW5zYWZlR2V0KCkpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW50UmVj
dFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRSZWN0VGVz
dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3OTNlYWE4YWY5NzY0ZDM1MjJiZjE3N2RkMDczYjJiNTliMzZh
NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
SW50UmVjdFRlc3RzLmNwcApAQCAtMCwwICsxLDYxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pCisj
aW5jbHVkZSA8ZDJkMS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
c3RhdGljIHZvaWQgdGVzdEdldEFuZFNldChXZWJDb3JlOjpJbnRSZWN0IHJlY3QpCit7CisgICAg
cmVjdC5zZXRYKDEpOworICAgIEVYUEVDVF9FUSgxLCByZWN0LngoKSk7CisgICAgcmVjdC5zZXRZ
KDIpOworICAgIEVYUEVDVF9FUSgyLCByZWN0LnkoKSk7CisgICAgcmVjdC5zZXRXaWR0aCgyMDMp
OworICAgIEVYUEVDVF9FUSgyMDMsIHJlY3Qud2lkdGgoKSk7CisgICAgcmVjdC5zZXRIZWlnaHQo
NzMpOworICAgIEVYUEVDVF9FUSg3MywgcmVjdC5oZWlnaHQoKSk7Cit9CisKK3N0YXRpYyB2b2lk
IHRlc3RFbXB0eVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3sKKyAgICBFWFBF
Q1RfRVEoMCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgwLCByZWN0LnkoKSk7CisgICAgRVhQ
RUNUX0VRKDAsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHJlY3QuaGVpZ2h0KCkp
OworICAgIEVYUEVDVF9FUSgwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHJlY3Qu
bWF4WSgpKTsKKyAgICBFWFBFQ1RfVFJVRShyZWN0LmlzRW1wdHkoKSk7Cit9CisKK1RFU1QoSW50
UmVjdCwgRGVmYXVsdENvbnN0cnVjdGlvbikKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHRlc3Q7
CisKKyAgICB0ZXN0RW1wdHlSZWN0KHRlc3QpOworCisgICAgdGVzdEdldEFuZFNldCh0ZXN0KTsK
KworICAgIGF1dG8gbG9jYXRpb24gPSB0ZXN0LmxvY2F0aW9uKCk7CisgICAgRVhQRUNUX0VRKDAs
IGxvY2F0aW9uLngoKSk7CisgICAgRVhQRUNUX0VRKDAsIGxvY2F0aW9uLnkoKSk7CisKKyAgICBh
dXRvIHNpemUgPSB0ZXN0LnNpemUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgc2l6ZS53aWR0aCgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgc2l6ZS5oZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgVmFs
dWVDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCB0ZXN0KDEwLCAyMCwgMTAw
LCA1MCk7CisKKyAgICBFWFBFQ1RfRVEoMTAsIHRlc3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAs
IHRlc3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCB0ZXN0LndpZHRoKCkpOworICAgIEVYUEVD
VF9FUSg1MCwgdGVzdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDExMCwgdGVzdC5tYXhYKCkp
OworICAgIEVYUEVDVF9FUSg3MCwgdGVzdC5tYXhZKCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0
LmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGxvY2F0aW9uID0gdGVzdC5sb2NhdGlvbigpOworICAg
IEVYUEVDVF9FUSgxMCwgbG9jYXRpb24ueCgpKTsKKyAgICBFWFBFQ1RfRVEoMjAsIGxvY2F0aW9u
LnkoKSk7CisKKyAgICBhdXRvIHNpemUgPSB0ZXN0LnNpemUoKTsKKyAgICBFWFBFQ1RfRVEoMTAw
LCBzaXplLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg1MCwgc2l6ZS5oZWlnaHQoKSk7Cit9CisK
K1RFU1QoSW50UmVjdCwgUG9pbnRTaXplQ29uc3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6Oklu
dFBvaW50IGxvY2F0aW9uKDIwLCAzMCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKDEwMCwg
NTApOworCisgICAgV2ViQ29yZTo6SW50UmVjdCB0ZXN0KGxvY2F0aW9uLCBzaXplKTsKKworICAg
IEVYUEVDVF9FUSgyMCwgdGVzdC54KCkpOworICAgIEVYUEVDVF9FUSgzMCwgdGVzdC55KCkpOwor
ICAgIEVYUEVDVF9FUSgxMDAsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDUwLCB0ZXN0
LmhlaWdodCgpKTsKKyAgICBFWFBFQ1RfRVEoMTIwLCB0ZXN0Lm1heFgoKSk7CisgICAgRVhQRUNU
X0VRKDgwLCB0ZXN0Lm1heFkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsK
KworICAgIGF1dG8gbG9jYXRpb24yID0gdGVzdC5sb2NhdGlvbigpOworICAgIEVYUEVDVF9FUSgy
MCwgbG9jYXRpb24yLngoKSk7CisgICAgRVhQRUNUX0VRKDMwLCBsb2NhdGlvbjIueSgpKTsKKwor
ICAgIGF1dG8gc2l6ZTIgPSB0ZXN0LnNpemUoKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzaXplMi53
aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNTAsIHNpemUyLmhlaWdodCgpKTsKK30KKworVEVTVChJ
bnRSZWN0LCBGbG9hdFJlY3RDb25zdHJ1Y3Rpb24pCit7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3QoMjAuMGYsIDMwLjBmLCAxNTAuMGYsIDMwMC4wZik7CisKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IHRlc3QocmVjdCk7CisKKyAgICBFWFBFQ1RfRVEoMjAsIHRlc3QueCgpKTsKKyAgICBFWFBF
Q1RfRVEoMzAsIHRlc3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoMTUwLCB0ZXN0LndpZHRoKCkpOwor
ICAgIEVYUEVDVF9FUSgzMDAsIHRlc3QuaGVpZ2h0KCkpOworICAgIEVYUEVDVF9FUSgxNzAsIHRl
c3QubWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoMzMwLCB0ZXN0Lm1heFkoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsKKworICAgIGF1dG8gbG9jYXRpb24gPSB0ZXN0LmxvY2F0
aW9uKCk7CisgICAgRVhQRUNUX0VRKDIwLCBsb2NhdGlvbi54KCkpOworICAgIEVYUEVDVF9FUSgz
MCwgbG9jYXRpb24ueSgpKTsKKworICAgIGF1dG8gc2l6ZSA9IHRlc3Quc2l6ZSgpOworICAgIEVY
UEVDVF9FUSgxNTAsIHNpemUud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDMwMCwgc2l6ZS5oZWln
aHQoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgU2V0TG9jYXRpb25BbmRTaXplKQoreworICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdDsKKworICAgIHRlc3RFbXB0eVJlY3QocmVjdCk7CisKKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCBsb2NhdGlvbigxMCwgMjApOworCisgICAgcmVjdC5zZXRMb2NhdGlv
bihsb2NhdGlvbik7CisKKyAgICBFWFBFQ1RfRVEoMTAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1Rf
RVEoMjAsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgcmVjdC53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgcmVjdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDEwLCByZWN0Lm1heFgo
KSk7CisgICAgRVhQRUNUX0VRKDIwLCByZWN0Lm1heFkoKSk7CisgICAgRVhQRUNUX1RSVUUocmVj
dC5pc0VtcHR5KCkpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKDEwMCwgMjAwKTsKKwor
ICAgIHJlY3Quc2V0U2l6ZShzaXplKTsKKworICAgIEVYUEVDVF9FUSgxMCwgcmVjdC54KCkpOwor
ICAgIEVYUEVDVF9FUSgyMCwgcmVjdC55KCkpOworICAgIEVYUEVDVF9FUSgxMDAsIHJlY3Qud2lk
dGgoKSk7CisgICAgRVhQRUNUX0VRKDIwMCwgcmVjdC5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VR
KDExMCwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSgyMjAsIHJlY3QubWF4WSgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UocmVjdC5pc0VtcHR5KCkpOworfQorCitURVNUKEludFJlY3QsIENlbnRl
cikKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDQwLCAxMDAsIDIwMCk7CisKKyAg
ICBhdXRvIGNlbnRlciA9IHJlY3QuY2VudGVyKCk7CisKKyAgICBFWFBFQ1RfRVEoNzAsIGNlbnRl
ci54KCkpOworICAgIEVYUEVDVF9FUSgxNDAsIGNlbnRlci55KCkpOworfQorCitURVNUKEludFJl
Y3QsIE1vdmUpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDAp
OworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBkZWx0YSgxMCwgMjApOworCisgICAgcmVjdC5tb3Zl
KGRlbHRhKTsKKworICAgIEVYUEVDVF9FUSgzMCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSg1
MCwgcmVjdC55KCkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgZGVsdGFQb2ludCgtMjAsIC00
MCk7CisKKyAgICByZWN0Lm1vdmVCeShkZWx0YVBvaW50KTsKKworICAgIEVYUEVDVF9FUSgxMCwg
cmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgxMCwgcmVjdC55KCkpOworCisgICAgcmVjdC5tb3Zl
KC0xMCwgMjIpOworCisgICAgRVhQRUNUX0VRKDAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEo
MzIsIHJlY3QueSgpKTsKK30KKworVEVTVChJbnRSZWN0LCBFeHBhbmQpCit7CisgICAgV2ViQ29y
ZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgV2ViQ29yZTo6SW50U2l6
ZSBzaXplKDEwMCwgMTAwKTsKKworICAgIHJlY3QuZXhwYW5kKHNpemUpOworCisgICAgRVhQRUNU
X0VRKDIwMCwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMzAwLCByZWN0LmhlaWdodCgp
KTsKKworICAgIHJlY3QuZXhwYW5kKDU1LCAyMik7CisKKyAgICBFWFBFQ1RfRVEoMjU1LCByZWN0
LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgzMjIsIHJlY3QuaGVpZ2h0KCkpOworCisgICAgV2Vi
Q29yZTo6SW50U2l6ZSBzaXplMigtMTAsIC0yMCk7CisKKyAgICByZWN0LmV4cGFuZChzaXplMik7
CisKKyAgICBFWFBFQ1RfRVEoMjQ1LCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgzMDIs
IHJlY3QuaGVpZ2h0KCkpOworCisgICAgcmVjdC5leHBhbmQoLTUsIC0yKTsKKworICAgIEVYUEVD
VF9FUSgyNDAsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDMwMCwgcmVjdC5oZWlnaHQo
KSk7Cit9CisKK1RFU1QoSW50UmVjdCwgQ29udHJhY3QpCit7CisgICAgV2ViQ29yZTo6SW50UmVj
dCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKDUw
LCAxMDApOworCisgICAgcmVjdC5jb250cmFjdChzaXplKTsKKworICAgIEVYUEVDVF9FUSg1MCwg
cmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCByZWN0LmhlaWdodCgpKTsKKworICAg
IHJlY3QuY29udHJhY3QoMjUsIDIyKTsKKworICAgIEVYUEVDVF9FUSgyNSwgcmVjdC53aWR0aCgp
KTsKKyAgICBFWFBFQ1RfRVEoNzgsIHJlY3QuaGVpZ2h0KCkpOworCisgICAgV2ViQ29yZTo6SW50
U2l6ZSBzaXplMigtMTAsIC0yMCk7CisKKyAgICByZWN0LmNvbnRyYWN0KHNpemUyKTsKKworICAg
IEVYUEVDVF9FUSgzNSwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoOTgsIHJlY3QuaGVp
Z2h0KCkpOworCisgICAgcmVjdC5jb250cmFjdCgtNSwgLTIpOworCisgICAgRVhQRUNUX0VRKDQw
LCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgxMDAsIHJlY3QuaGVpZ2h0KCkpOworfQor
CitURVNUKEludFJlY3QsIFNoaWZ0WEVkZ2UpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0
KDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgcmVjdC5zaGlmdFhFZGdlVG8oNzcpOworCisgICAg
RVhQRUNUX0VRKDc3LCByZWN0LngoKSk7CisgICAgRVhQRUNUX0VRKDEyMCwgcmVjdC5tYXhYKCkp
OworICAgIEVYUEVDVF9FUSgzMCwgcmVjdC55KCkpOworICAgIEVYUEVDVF9FUSgyMzAsIHJlY3Qu
bWF4WSgpKTsKKyAgICBFWFBFQ1RfRVEoNDMsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VR
KDIwMCwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0LnNoaWZ0TWF4WEVkZ2VUbygyMDApOwor
CisgICAgRVhQRUNUX0VRKDc3LCByZWN0LngoKSk7CisgICAgRVhQRUNUX0VRKDIwMCwgcmVjdC5t
YXhYKCkpOworICAgIEVYUEVDVF9FUSgzMCwgcmVjdC55KCkpOworICAgIEVYUEVDVF9FUSgyMzAs
IHJlY3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRVEoMTIzLCByZWN0LndpZHRoKCkpOworICAgIEVY
UEVDVF9FUSgyMDAsIHJlY3QuaGVpZ2h0KCkpOworfQorCitURVNUKEludFJlY3QsIFNoaWZ0WUVk
Z2UpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOworCisg
ICAgcmVjdC5zaGlmdFlFZGdlVG8oNTkuMGYpOworCisgICAgRVhQRUNUX0VRKDIwLCByZWN0Lngo
KSk7CisgICAgRVhQRUNUX0VRKDEyMCwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSg1OSwg
cmVjdC55KCkpOworICAgIEVYUEVDVF9FUSgyMzAsIHJlY3QubWF4WSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMTAwLCByZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgxNzEsIHJlY3QuaGVpZ2h0KCkp
OworCisgICAgcmVjdC5zaGlmdE1heFlFZGdlVG8oMjcwLjBmKTsKKworICAgIEVYUEVDVF9FUSgy
MCwgcmVjdC54KCkpOworICAgIEVYUEVDVF9FUSgxMjAsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBF
Q1RfRVEoNTksIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoMjcwLCByZWN0Lm1heFkoKSk7Cisg
ICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMjExLCByZWN0
LmhlaWdodCgpKTsKK30KKworVEVTVChJbnRSZWN0LCBJbmZsYXRlKQoreworICAgIFdlYkNvcmU6
OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKKworICAgIHJlY3QuaW5mbGF0ZVgoNSk7
CisKKyAgICBFWFBFQ1RfRVEoMTUsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoMTI1LCByZWN0
Lm1heFgoKSk7CisKKyAgICByZWN0LmluZmxhdGVZKDQpOworCisgICAgRVhQRUNUX0VRKDI2LCBy
ZWN0LnkoKSk7CisgICAgRVhQRUNUX0VRKDIzNCwgcmVjdC5tYXhZKCkpOworCisgICAgcmVjdC5p
bmZsYXRlKDEwKTsKKworICAgIEVYUEVDVF9FUSg1LCByZWN0LngoKSk7CisgICAgRVhQRUNUX0VR
KDEzNSwgcmVjdC5tYXhYKCkpOworICAgIEVYUEVDVF9FUSgxNiwgcmVjdC55KCkpOworICAgIEVY
UEVDVF9FUSgyNDQsIHJlY3QubWF4WSgpKTsKK30KKworVEVTVChJbnRSZWN0LCBDb3JuZXJzKQor
eworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKKworICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgdG9wTGVmdCA9IHJlY3QubWluWE1pbllDb3JuZXIoKTsKKyAgICBF
WFBFQ1RfRVEoMjAsIHRvcExlZnQueCgpKTsKKyAgICBFWFBFQ1RfRVEoMzAsIHRvcExlZnQueSgp
KTsKKworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdG9wUmlnaHQgPSByZWN0Lm1heFhNaW5ZQ29y
bmVyKCk7CisgICAgRVhQRUNUX0VRKDEyMCwgdG9wUmlnaHQueCgpKTsKKyAgICBFWFBFQ1RfRVEo
MzAsIHRvcFJpZ2h0LnkoKSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJvdHRvbUxlZnQg
PSByZWN0Lm1pblhNYXhZQ29ybmVyKCk7CisgICAgRVhQRUNUX0VRKDIwLCBib3R0b21MZWZ0Lngo
KSk7CisgICAgRVhQRUNUX0VRKDIzMCwgYm90dG9tTGVmdC55KCkpOworCisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBib3R0b21SaWdodCA9IHJlY3QubWF4WE1heFlDb3JuZXIoKTsKKyAgICBFWFBF
Q1RfRVEoMTIwLCBib3R0b21SaWdodC54KCkpOworICAgIEVYUEVDVF9FUSgyMzAsIGJvdHRvbVJp
Z2h0LnkoKSk7Cit9CisKK1RFU1QoSW50UmVjdCwgQ29udGFpbnMpCit7CisgICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0KDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBj
b250YWluZWQoMzAsIDQwLCA1MCwgMTAwKTsKKworICAgIEFTU0VSVF9UUlVFKHJlY3QuY29udGFp
bnMoY29udGFpbmVkKSk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG91dHNpZGUoMTIwLCAyMzAs
IDUwLCAxMDApOworCisgICAgQVNTRVJUX0ZBTFNFKHJlY3QuY29udGFpbnMob3V0c2lkZSkpOwor
CisgICAgV2ViQ29yZTo6SW50UmVjdCBpbnRlcnNlY3RzKDEwLCAyMCwgOTAsIDE4MCk7CisKKyAg
ICBBU1NFUlRfRkFMU0UocmVjdC5jb250YWlucyhpbnRlcnNlY3RzKSk7CisKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludEluc2lkZSg2MCwgNzApOworCisgICAgQVNTRVJUX1RSVUUocmVjdC5j
b250YWlucyhwb2ludEluc2lkZSkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnRPdXRz
aWRlKDE2MCwgMjcwKTsKKworICAgIEFTU0VSVF9GQUxTRShyZWN0LmNvbnRhaW5zKHBvaW50T3V0
c2lkZSkpOworCisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnRPbkxpbmUoMjAsIDMwKTsKKwor
ICAgIEFTU0VSVF9UUlVFKHJlY3QuY29udGFpbnMocG9pbnRPbkxpbmUpKTsKKworICAgIEFTU0VS
VF9UUlVFKHJlY3QuY29udGFpbnMoNjAsIDcwKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlY3QuY29u
dGFpbnMoMTYwLCAyNzApKTsKK30KKworVEVTVChJbnRSZWN0LCBJbnRlcnNlY3RzKQoreworICAg
IFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwgMjAwKTsKKworICAgIFdlYkNvcmU6
OkludFJlY3QgY29udGFpbmVkKDMwLCA0MCwgNTAsIDEwMCk7CisKKyAgICBBU1NFUlRfVFJVRShy
ZWN0LmludGVyc2VjdHMoY29udGFpbmVkKSk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG91dHNp
ZGUoMTIwLCAyMzAsIDUwLCAxMDApOworCisgICAgQVNTRVJUX0ZBTFNFKHJlY3QuaW50ZXJzZWN0
cyhvdXRzaWRlKSk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGludGVyc2VjdHMoMTAsIDIwLCA5
MCwgMTgwKTsKKworICAgIEFTU0VSVF9UUlVFKHJlY3QuaW50ZXJzZWN0cyhpbnRlcnNlY3RzKSk7
Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RJbnRlcnNlY3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKK3sKKyAgICBFWFBFQ1RfRVEoNzAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1Rf
RVEoMTIwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDgwLCByZWN0LnkoKSk7CisgICAg
RVhQRUNUX0VRKDIzMCwgcmVjdC5tYXhZKCkpOworfQorCitURVNUKEludFJlY3QsIEludGVyc2Vj
dCkKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RBKDIwLCAzMCwgMTAwLCAyMDApOworICAg
IFdlYkNvcmU6OkludFJlY3QgcmVjdEIoNzAsIDgwLCAxMDAsIDIwMCk7CisKKyAgICByZWN0QS5p
bnRlcnNlY3QocmVjdEIpOworCisgICAgdGVzdEludGVyc2VjdFJlc3VsdChyZWN0QSk7CisKKyAg
ICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RDKDIwLCAzMCwgMTAwLCAyMDApOworCisgICAgYXV0byBp
bnRlcnNlY3RlZCA9IFdlYkNvcmU6OmludGVyc2VjdGlvbihyZWN0QywgcmVjdEIpOworCisgICAg
dGVzdEludGVyc2VjdFJlc3VsdChpbnRlcnNlY3RlZCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RV
bml0ZWRSZWN0cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB1bml0ZWQpCit7CisgICAgRVhQRUNU
X0VRKDIwLCB1bml0ZWQueCgpKTsKKyAgICBFWFBFQ1RfRVEoMTcwLCB1bml0ZWQubWF4WCgpKTsK
KyAgICBFWFBFQ1RfRVEoMzAsIHVuaXRlZC55KCkpOworICAgIEVYUEVDVF9FUSgyODAsIHVuaXRl
ZC5tYXhZKCkpOworfQorCitURVNUKEludFJlY3QsIFVuaXRlKQoreworICAgIFdlYkNvcmU6Oklu
dFJlY3QgcmVjdEEoMjAsIDMwLCAxMDAsIDIwMCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0
Qig3MCwgODAsIDEwMCwgMjAwKTsKKworICAgIHJlY3RBLnVuaXRlKHJlY3RCKTsKKworICAgIHRl
c3RVbml0ZWRSZWN0cyhyZWN0QSk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RDKDIwLCAz
MCwgMTAwLCAyMDApOworCisgICAgYXV0byB1bml0ZWQgPSBXZWJDb3JlOjp1bmlvblJlY3QocmVj
dEMsIHJlY3RCKTsKKworICAgIHRlc3RVbml0ZWRSZWN0cyh1bml0ZWQpOworfQorCitURVNUKElu
dFJlY3QsIFNjYWxlKQoreworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgyMCwgMzAsIDEwMCwg
MjAwKTsKKworICAgIHJlY3Quc2NhbGUoMi4wZik7CisKKyAgICBFWFBFQ1RfRVEoNDAsIHJlY3Qu
eCgpKTsKKyAgICBFWFBFQ1RfRVEoMjQwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDYw
LCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0VRKDQ2MCwgcmVjdC5tYXhZKCkpOworfQorCitURVNU
KEludFJlY3QsIFRyYW5zcG9zZSkKK3sKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QoMjAsIDMw
LCAxMDAsIDIwMCk7CisKKyAgICBhdXRvIHRyYW5zcG9zZWQgPSByZWN0LnRyYW5zcG9zZWRSZWN0
KCk7CisKKyAgICBFWFBFQ1RfRVEoMzAsIHRyYW5zcG9zZWQueCgpKTsKKyAgICBFWFBFQ1RfRVEo
MjMwLCB0cmFuc3Bvc2VkLm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDIwLCB0cmFuc3Bvc2VkLnko
KSk7CisgICAgRVhQRUNUX0VRKDEyMCwgdHJhbnNwb3NlZC5tYXhZKCkpOworfQorCisjaWYgVVNF
KENHKSB8fCBQTEFURk9STShXSU4pCitzdGF0aWMgdm9pZCBjaGVja0Nhc3RSZWN0KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCit7CisgICAgRVhQRUNUX0VRKDEwLCByZWN0LngoKSk7Cisg
ICAgRVhQRUNUX0VRKDQwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKDIwLCByZWN0Lnko
KSk7CisgICAgRVhQRUNUX0VRKDYwLCByZWN0Lm1heFkoKSk7CisgICAgRVhQRUNUX0VRKDMwLCBy
ZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg0MCwgcmVjdC5oZWlnaHQoKSk7Cit9CisjZW5k
aWYKKworVEVTVChJbnRSZWN0LCBDYXN0aW5nKQoreworICAgIFdlYkNvcmU6OkludFJlY3QgcmVj
dCgxMCwgMjAsIDMwLCA0MCk7CisKKyNpZiBVU0UoQ0cpCisgICAgQ0dSZWN0IGNnUmVjdCA9IENH
UmVjdE1ha2UoMTAuMCwgMjAuMCwgMzAuMCwgNDAuMCk7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlY3RGcm9tQ0dSZWN0KGNnUmVjdCk7CisKKyAgICBjaGVja0Nhc3RSZWN0KHJlY3RGcm9tQ0dS
ZWN0KTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQorICAgIFJFQ1QgZ2RpUmVjdCA9IHJl
Y3Q7CisKKyAgICBFWFBFQ1RfRVEoMTAsIGdkaVJlY3QubGVmdCk7CisgICAgRVhQRUNUX0VRKDIw
LCBnZGlSZWN0LnRvcCk7CisgICAgRVhQRUNUX0VRKDQwLCBnZGlSZWN0LnJpZ2h0KTsKKyAgICBF
WFBFQ1RfRVEoNjAsIGdkaVJlY3QuYm90dG9tKTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgcmVj
dEZyb21HRElSZWN0KGdkaVJlY3QpOworCisgICAgY2hlY2tDYXN0UmVjdChyZWN0RnJvbUdESVJl
Y3QpOworCisgICAgRDJEMV9SRUNUX1UgZDJkUmVjdFUgPSByZWN0OworCisgICAgRVhQRUNUX0VR
KDEwLCBkMmRSZWN0VS5sZWZ0KTsKKyAgICBFWFBFQ1RfRVEoMjAsIGQyZFJlY3RVLnRvcCk7Cisg
ICAgRVhQRUNUX0VRKDQwLCBkMmRSZWN0VS5yaWdodCk7CisgICAgRVhQRUNUX0VRKDYwLCBkMmRS
ZWN0VS5ib3R0b20pOworCisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0RnJvbUQyRFJlY3RVKGQy
ZFJlY3RVKTsKKworICAgIGNoZWNrQ2FzdFJlY3QocmVjdEZyb21EMkRSZWN0VSk7CisKKyAgICBE
MkQxX1JFQ1RfRiBkMmRSZWN0RiA9IHJlY3Q7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuMGYs
IGQyZFJlY3RGLmxlZnQpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC4wZiwgZDJkUmVjdEYudG9w
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuMGYsIGQyZFJlY3RGLnJpZ2h0KTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNjAuMGYsIGQyZFJlY3RGLmJvdHRvbSk7CisKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3RGcm9tRDJEUmVjdEYoZDJkUmVjdEYpOworCisgICAgY2hlY2tDYXN0UmVjdChyZWN0
RnJvbUQyRFJlY3RGKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBjaGVja1N1YnRyYWN0aW9u
UmVzdWx0MShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQoreworICAgIEVYUEVDVF9FUSgt
MTAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoOTAsIHJlY3QubWF4WCgpKTsKKyAgICBFWFBF
Q1RfRVEoLTEwLCByZWN0LnkoKSk7CisgICAgRVhQRUNUX0VRKDkwLCByZWN0Lm1heFkoKSk7Cisg
ICAgRVhQRUNUX0VRKDEwMCwgcmVjdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCByZWN0
LmhlaWdodCgpKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tTdWJ0cmFjdGlvblJlc3VsdDIoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3sKKyAgICBFWFBFQ1RfRVEoLTQwLCByZWN0Lngo
KSk7CisgICAgRVhQRUNUX0VRKDYwLCByZWN0Lm1heFgoKSk7CisgICAgRVhQRUNUX0VRKC01MCwg
cmVjdC55KCkpOworICAgIEVYUEVDVF9FUSg1MCwgcmVjdC5tYXhZKCkpOworICAgIEVYUEVDVF9F
USgxMDAsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDEwMCwgcmVjdC5oZWlnaHQoKSk7
Cit9CisKK1RFU1QoSW50UmVjdCwgU3VidHJhY3Rpb24pCit7CisgICAgV2ViQ29yZTo6SW50UmVj
dCByZWN0KDEwLCAyMCwgMTAwLCAxMDApOworICAgIFdlYkNvcmU6OkludFBvaW50IHJpZ2h0U2lk
ZSgyMCwgMzApOworCisgICAgcmVjdCAtPSByaWdodFNpZGU7CisKKyAgICBjaGVja1N1YnRyYWN0
aW9uUmVzdWx0MShyZWN0KTsKKworICAgIGF1dG8gcmVjdDIgPSByZWN0IC0gV2ViQ29yZTo6SW50
UG9pbnQoMzAsIDQwKTsKKyAgICBjaGVja1N1YnRyYWN0aW9uUmVzdWx0MihyZWN0Mik7Cit9CisK
K1RFU1QoSW50UmVjdCwgRXF1YWxpdHkpCit7CisgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0KDEw
LCAyMCwgMTAwLCAxMDApOworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdDIoMTAsIDIwLCAxMDAs
IDEwMCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCByaWdodFNpZGUoMTEwLCAyMCwgMjAsIDEwMCk7
CisKKyAgICBBU1NFUlRfVFJVRShyZWN0ID09IHJlY3QyKTsKKyAgICBBU1NFUlRfRkFMU0UocmVj
dCAhPSByZWN0Mik7CisgICAgQVNTRVJUX1RSVUUocmVjdCAhPSByaWdodFNpZGUpOworICAgIEFT
U0VSVF9GQUxTRShyZWN0ID09IHJpZ2h0U2lkZSk7Cit9CisKKyNpZiBVU0UoQ0cpCitzdGF0aWMg
dm9pZCBjaGVja0VuY2xvc2luZ0ludFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkK
K3sKKyAgICBFWFBFQ1RfRVEoMTAsIHJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoNDEsIHJlY3Qu
bWF4WCgpKTsKKyAgICBFWFBFQ1RfRVEoMjEsIHJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoNjIs
IHJlY3QubWF4WSgpKTsKKyAgICBFWFBFQ1RfRVEoMzEsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQ
RUNUX0VRKDQxLCByZWN0LmhlaWdodCgpKTsKK30KKyNlbmRpZgorCitURVNUKEludFJlY3QsIEVu
Y2xvc2luZ0ludFJlY3QpCit7CisjaWYgVVNFKENHKQorICAgIENHUmVjdCBjZ1JlY3QgPSBDR1Jl
Y3RNYWtlKDEwLjUsIDIxLjMsIDMwLjEsIDQwLjApOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBl
bmNsb3NpbmdDRyA9IFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QoY2dSZWN0KTsKKworICAgIGNo
ZWNrRW5jbG9zaW5nSW50UmVjdChlbmNsb3NpbmdDRyk7CisjZW5kaWYKK30KKworVEVTVChJbnRS
ZWN0LCBBcmVhQW5kRGlzdGFuY2VzKQoreworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCgxMCwg
MjAsIDEwMCwgMTAwKTsKKworICAgIEVYUEVDVF9FUSgxMDAwMFUsIHJlY3QuYXJlYSgpLnVuc2Fm
ZUdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ludFNpemUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0lu
dFNpemUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTU5NDJmNzRlNGFjOTE4
ZmRmNDk1MjU5NTYwOGRjN2JjZTFhNWM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRTaXpl
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgPGQyZDEuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0
YXRpYyB2b2lkIHRlc3RHZXRBbmRTZXQoV2ViQ29yZTo6SW50U2l6ZSByZWN0KQotewotICAgIHJl
Y3Quc2V0V2lkdGgoMjAzKTsKLSAgICBFWFBFQ1RfRVEoMjAzLCByZWN0LndpZHRoKCkpOwotICAg
IHJlY3Quc2V0SGVpZ2h0KDczKTsKLSAgICBFWFBFQ1RfRVEoNzMsIHJlY3QuaGVpZ2h0KCkpOwot
fQotCi1zdGF0aWMgdm9pZCB0ZXN0RW1wdHlTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHJl
Y3QpCi17Ci0gICAgRVhQRUNUX0VRKDAsIHJlY3Qud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDAs
IHJlY3QuaGVpZ2h0KCkpOwotICAgIEVYUEVDVF9UUlVFKHJlY3QuaXNFbXB0eSgpKTsKLSAgICBF
WFBFQ1RfVFJVRShyZWN0LmlzWmVybygpKTsKLX0KLQotVEVTVChJbnRTaXplLCBEZWZhdWx0Q29u
c3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkludFNpemUgdGVzdDsKLQotICAgIHRlc3RFbXB0
eVNpemUodGVzdCk7Ci0KLSAgICB0ZXN0R2V0QW5kU2V0KHRlc3QpOwotfQotCi1URVNUKEludFNp
emUsIFZhbHVlQ29uc3RydWN0aW9uKQotewotICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDAs
IDIwMCk7Ci0KLSAgICBFWFBFQ1RfRVEoMTAwLCB0ZXN0LndpZHRoKCkpOwotICAgIEVYUEVDVF9F
USgyMDAsIHRlc3QuaGVpZ2h0KCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzRW1wdHkoKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3QuaXNaZXJvKCkpOwotCi0gICAgc3RhdGljIGNvbnN0IGZs
b2F0IGVwc2lsb24gPSAwLjAwMDFmOwotICAgIEVYUEVDVF9ORUFSKDAuNWYsIHRlc3QuYXNwZWN0
UmF0aW8oKSwgZXBzaWxvbik7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgRmxvYXRTaXplQ29uc3RydWN0
aW9uKQotewotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKDEwMjQuMiwgNzY3LjgpOwotICAg
IFdlYkNvcmU6OkludFNpemUgdGVzdChzaXplKTsKLQotICAgIEVYUEVDVF9FUSgxMDI0LCB0ZXN0
LndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg3NjcsIHRlc3QuaGVpZ2h0KCkpOwotCi0gICAgQVNT
RVJUX0ZBTFNFKHRlc3QuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlRfRkFMU0UodGVzdC5pc1plcm8o
KSk7Ci0KLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIGVwc2lsb24gPSAwLjAwMTsKLSAgICBFWFBF
Q1RfTkVBUigxLjMzNWYsIHRlc3QuYXNwZWN0UmF0aW8oKSwgZXBzaWxvbik7Ci0KLSAgICB0ZXN0
R2V0QW5kU2V0KHRlc3QpOwotfQotCi1URVNUKEludFNpemUsIERpYWdvbmFsTGVuZ3RoQW5kQXJl
YSkKLXsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsKLQotICAgIEVYUEVD
VF9FUSgxNjM4NDAwLCB0ZXN0LmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpKTsKLSAgICBFWFBFQ1Rf
RVEoNzg2NDMyVSwgdGVzdC5hcmVhKCkudW5zYWZlR2V0KCkpOwotfQotCi1URVNUKEludFNpemUs
IFNjYWxlKQotewotICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDI0LCA3NjgpOwotCi0gICAg
dGVzdC5zY2FsZSgyLjBmKTsKLQotICAgIEVYUEVDVF9FUSgyMDQ4LCB0ZXN0LndpZHRoKCkpOwot
ICAgIEVYUEVDVF9FUSgxNTM2LCB0ZXN0LmhlaWdodCgpKTsKLQotICAgIHRlc3Quc2NhbGUoMC41
Zik7Ci0KLSAgICBFWFBFQ1RfRVEoMTAyNCwgdGVzdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEo
NzY4LCB0ZXN0LmhlaWdodCgpKTsKLQotICAgIHRlc3Quc2NhbGUoMi4wZiwgMC41Zik7Ci0KLSAg
ICBFWFBFQ1RfRVEoMjA0OCwgdGVzdC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMzg0LCB0ZXN0
LmhlaWdodCgpKTsKLX0KLQotVEVTVChJbnRTaXplLCBFeHBhbmQpCi17Ci0gICAgV2ViQ29yZTo6
SW50U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7Ci0KLSAgICBFWFBFQ1RfRVEoMTAyNCwgdGVzdC53aWR0
aCgpKTsKLSAgICBFWFBFQ1RfRVEoNzY4LCB0ZXN0LmhlaWdodCgpKTsKLQotICAgIHRlc3QuZXhw
YW5kKDEwMCwgNTApOwotCi0gICAgRVhQRUNUX0VRKDExMjQsIHRlc3Qud2lkdGgoKSk7Ci0gICAg
RVhQRUNUX0VRKDgxOCwgdGVzdC5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIG90
aGVyKDIwNDgsIDcwMCk7Ci0KLSAgICBhdXRvIGV4cGFuZGVkID0gdGVzdC5leHBhbmRlZFRvKG90
aGVyKTsKLQotICAgIEVYUEVDVF9FUSgyMDQ4LCBleHBhbmRlZC53aWR0aCgpKTsKLSAgICBFWFBF
Q1RfRVEoODE4LCBleHBhbmRlZC5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgU2hyaW5r
KQotewotICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDI0LCA3NjgpOwotICAgIFdlYkNvcmU6
OkludFNpemUgb3RoZXIoMTAwMCwgNzAwKTsKLQotICAgIGF1dG8gc2hydW5rZW4gPSB0ZXN0LnNo
cnVua1RvKG90aGVyKTsKLQotICAgIEVYUEVDVF9FUSgxMDAwLCBzaHJ1bmtlbi53aWR0aCgpKTsK
LSAgICBFWFBFQ1RfRVEoNzAwLCBzaHJ1bmtlbi5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJ
bnRTaXplIG90aGVyMigyMDAwLjBmLCA3MDAuMGYpOwotCi0gICAgYXV0byBzaHJ1bmtlbjIgPSB0
ZXN0LnNocnVua1RvKG90aGVyMik7Ci0KLSAgICBFWFBFQ1RfRVEoMTAyNCwgc2hydW5rZW4yLndp
ZHRoKCkpOwotICAgIEVYUEVDVF9FUSg3MDAsIHNocnVua2VuMi5oZWlnaHQoKSk7Ci19Ci0KLVRF
U1QoSW50U2l6ZSwgVHJhbnNwb3NlZFNpemUpCi17Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0
KDEwMjQsIDc2OCk7Ci0KLSAgICBhdXRvIHRyYW5zcG9zZWRTaXplID0gdGVzdC50cmFuc3Bvc2Vk
U2l6ZSgpOwotCi0gICAgRVhQRUNUX0VRKDc2OCwgdHJhbnNwb3NlZFNpemUud2lkdGgoKSk7Ci0g
ICAgRVhQRUNUX0VRKDEwMjQsIHRyYW5zcG9zZWRTaXplLmhlaWdodCgpKTsKLX0KLQotVEVTVChJ
bnRTaXplLCBDYXN0aW5nKQotewotICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDI0LCA3Njgp
OwotCi0jaWYgVVNFKENHKQotICAgIENHU2l6ZSBjZ1NpemUgPSB0ZXN0OwotCi0gICAgRVhQRUNU
X0ZMT0FUX0VRKDEwMjQuMGYsIGNnU2l6ZS53aWR0aCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDc2
OC4wZiwgY2dTaXplLmhlaWdodCk7Ci0KLSAgICBDR1NpemUgY2dTaXplMiA9IENHU2l6ZU1ha2Uo
LTIyLjNmLCAxNC42Zik7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3RDRyhjZ1NpemUyKTsK
LQotICAgIEVYUEVDVF9FUSgtMjIsIHRlc3RDRy53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMTQs
IHRlc3RDRy5oZWlnaHQoKSk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBEMkQx
X1NJWkVfVSBkMmRTaXplVSA9IHRlc3Q7Ci0gICAgRVhQRUNUX0VRKDEwMjQsIGQyZFNpemVVLndp
ZHRoKTsKLSAgICBFWFBFQ1RfRVEoNzY4LCBkMmRTaXplVS5oZWlnaHQpOwotCi0gICAgRDJEMV9T
SVpFX0YgZDJkU2l6ZUYgPSB0ZXN0OwotICAgIEVYUEVDVF9GTE9BVF9FUSgxMDI0LjBmLCBkMmRT
aXplRi53aWR0aCk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKDc2OC4wZiwgZDJkU2l6ZUYuaGVpZ2h0
KTsKLQotICAgIEQyRDFfU0laRV9GIGQyZFNpemVGMiA9IEQyRDE6OlNpemVGKC0yMi4zZiwgMTQu
NmYpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0RDJEKGQyZFNpemVGMik7Ci0KLSAgICBF
WFBFQ1RfRVEoLTIyLCB0ZXN0RDJELndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgxNCwgdGVzdEQy
RC5oZWlnaHQoKSk7Ci0KLSAgICBEMkQxX1NJWkVfRiBkMmRTaXplVTIgPSBEMkQxOjpTaXplRigt
MjMsIDE2KTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgdGVzdEQyRDIoZDJkU2l6ZVUyKTsKLQot
ICAgIEVYUEVDVF9FUSgtMjMsIHRlc3REMkQyLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgxNiwg
dGVzdEQyRDIuaGVpZ2h0KCkpOwotI2VuZGlmCi19Ci0KLVRFU1QoSW50U2l6ZSwgQWRkU3VidHJh
Y3QpCi17Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBhKDUxMiwgMzg0KTsKLSAgICBXZWJDb3JlOjpJ
bnRTaXplIGIoMTAwLCAxMDApOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBjID0gYSArIGI7Ci0K
LSAgICBFWFBFQ1RfRVEoNjEyLCBjLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg0ODQsIGMuaGVp
Z2h0KCkpOwotCi0gICAgYSArPSBiOwotCi0gICAgRVhQRUNUX0VRKDYxMiwgYS53aWR0aCgpKTsK
LSAgICBFWFBFQ1RfRVEoNDg0LCBhLmhlaWdodCgpKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUg
YTIoNTEyLCAzODQpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBkID0gYTIgLSBiOwotCi0gICAg
RVhQRUNUX0VRKDQxMiwgZC53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoMjg0LCBkLmhlaWdodCgp
KTsKLQotICAgIGEyIC09IGI7Ci0KLSAgICBFWFBFQ1RfRVEoNDEyLCBhMi53aWR0aCgpKTsKLSAg
ICBFWFBFQ1RfRVEoMjg0LCBhMi5oZWlnaHQoKSk7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgTmVnYXRp
b24pCi17Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBhKDUxMiwgMzg0KTsKLQotICAgIFdlYkNvcmU6
OkludFNpemUgbmVnYXRlZCA9IC1hOwotCi0gICAgRVhQRUNUX0VRKC01MTIsIG5lZ2F0ZWQud2lk
dGgoKSk7Ci0gICAgRVhQRUNUX0VRKC0zODQsIG5lZ2F0ZWQuaGVpZ2h0KCkpOwotfQotCi1URVNU
KEludFNpemUsIEVxdWFsaXR5KQotewotICAgIFdlYkNvcmU6OkludFNpemUgYSgxMDI0LCA3Njgp
OwotICAgIFdlYkNvcmU6OkludFNpemUgYigxMDI0LCA3NjgpOwotICAgIFdlYkNvcmU6OkludFNp
emUgYyg3NjgsIDUzNCk7Ci0KLSAgICBBU1NFUlRfVFJVRShhID09IGIpOwotICAgIEFTU0VSVF9G
QUxTRShhICE9IGIpOwotICAgIEFTU0VSVF9GQUxTRShhID09IGMpOwotICAgIEFTU0VSVF9UUlVF
KGEgIT0gYyk7Ci19Ci0KLVRFU1QoSW50U2l6ZSwgQ29udHJhY3QpCi17Ci0gICAgV2ViQ29yZTo6
SW50U2l6ZSBhKDEwMjQsIDc2OCk7Ci0KLSAgICBhLmNvbnRyYWN0KDEwMCwgNTApOwotCi0gICAg
RVhQRUNUX0VRKDkyNCwgYS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEoNzE4LCBhLmhlaWdodCgp
KTsKLX0KLQotVEVTVChJbnRTaXplLCBDbGFtcCkKLXsKLSAgICBXZWJDb3JlOjpJbnRTaXplIGEo
MTAyNCwgNzY4KTsKLQotICAgIGEuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotCi0gICAgRVhQRUNU
X0VRKDEwMjQsIGEud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDc2OCwgYS5oZWlnaHQoKSk7Ci0K
LSAgICBXZWJDb3JlOjpJbnRTaXplIGIoLTEwMjQsIC03NjgpOwotCi0gICAgYi5jbGFtcE5lZ2F0
aXZlVG9aZXJvKCk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgYi53aWR0aCgpKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgYi5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIG1pbmltdW1TaXplKDEw
MjQsIDEwMDApOwotCi0gICAgYS5jbGFtcFRvTWluaW11bVNpemUobWluaW11bVNpemUpOwotCi0g
ICAgRVhQRUNUX0VRKDEwMjQsIGEud2lkdGgoKSk7Ci0gICAgRVhQRUNUX0VRKDEwMDAsIGEuaGVp
Z2h0KCkpOwotfQotCi1URVNUKEludFNpemUsIENvbnN0cmFpbmVkQmV0d2VlbikKLXsKLSAgICBX
ZWJDb3JlOjpJbnRTaXplIG1pbmltdW1TaXplKDM4NCwgMjU2KTsKLSAgICBXZWJDb3JlOjpJbnRT
aXplIG1heGltdW1TaXplKDIwNDgsIDE1MzYpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBhKDEw
MjQsIDc2OCk7Ci0KLSAgICBhdXRvIGNvbnN0cmFpbmVkMSA9IGEuY29uc3RyYWluZWRCZXR3ZWVu
KG1pbmltdW1TaXplLCBtYXhpbXVtU2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMTAyNCwgY29uc3Ry
YWluZWQxLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSg3NjgsIGNvbnN0cmFpbmVkMS5oZWlnaHQo
KSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIGIoMjAwLCAxMDApOwotCi0gICAgYXV0byBjb25z
dHJhaW5lZDIgPSBiLmNvbnN0cmFpbmVkQmV0d2VlbihtaW5pbXVtU2l6ZSwgbWF4aW11bVNpemUp
OwotCi0gICAgRVhQRUNUX0VRKDM4NCwgY29uc3RyYWluZWQyLndpZHRoKCkpOwotICAgIEVYUEVD
VF9FUSgyNTYsIGNvbnN0cmFpbmVkMi5oZWlnaHQoKSk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXpl
IGMoNTAwMCwgMjAwMCk7Ci0KLSAgICBhdXRvIGNvbnN0cmFpbmVkMyA9IGMuY29uc3RyYWluZWRC
ZXR3ZWVuKG1pbmltdW1TaXplLCBtYXhpbXVtU2l6ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMjA0OCwg
Y29uc3RyYWluZWQzLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSgxNTM2LCBjb25zdHJhaW5lZDMu
aGVpZ2h0KCkpOwotfQotCi0vKgotCi1JbnRTaXplIGNvbnN0cmFpbmVkQmV0d2Vlbihjb25zdCBJ
bnRTaXplJiBtaW4sIGNvbnN0IEludFNpemUmIG1heCkgY29uc3Q7Ci0KLSovCi0KLX0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRTaXplVGVzdHMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ludFNpemVUZXN0cy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTU1OTQyZjc0ZTRhYzkxOGZkZjQ5NTI1OTU2MDhkYzdiY2UxYTVjNAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbnRTaXplVGVz
dHMuY3BwCkBAIC0wLDAgKzEsMzMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3Jl
R3JhcGhpY3MuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPGQyZDEu
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIHRl
c3RHZXRBbmRTZXQoV2ViQ29yZTo6SW50U2l6ZSByZWN0KQoreworICAgIHJlY3Quc2V0V2lkdGgo
MjAzKTsKKyAgICBFWFBFQ1RfRVEoMjAzLCByZWN0LndpZHRoKCkpOworICAgIHJlY3Quc2V0SGVp
Z2h0KDczKTsKKyAgICBFWFBFQ1RfRVEoNzMsIHJlY3QuaGVpZ2h0KCkpOworfQorCitzdGF0aWMg
dm9pZCB0ZXN0RW1wdHlTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHJlY3QpCit7CisgICAg
RVhQRUNUX0VRKDAsIHJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHJlY3QuaGVpZ2h0
KCkpOworICAgIEVYUEVDVF9UUlVFKHJlY3QuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShy
ZWN0LmlzWmVybygpKTsKK30KKworVEVTVChJbnRTaXplLCBEZWZhdWx0Q29uc3RydWN0aW9uKQor
eworICAgIFdlYkNvcmU6OkludFNpemUgdGVzdDsKKworICAgIHRlc3RFbXB0eVNpemUodGVzdCk7
CisKKyAgICB0ZXN0R2V0QW5kU2V0KHRlc3QpOworfQorCitURVNUKEludFNpemUsIFZhbHVlQ29u
c3RydWN0aW9uKQoreworICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDAsIDIwMCk7CisKKyAg
ICBFWFBFQ1RfRVEoMTAwLCB0ZXN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgyMDAsIHRlc3Qu
aGVpZ2h0KCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0LmlzRW1wdHkoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHRlc3QuaXNaZXJvKCkpOworCisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGVwc2lsb24g
PSAwLjAwMDFmOworICAgIEVYUEVDVF9ORUFSKDAuNWYsIHRlc3QuYXNwZWN0UmF0aW8oKSwgZXBz
aWxvbik7Cit9CisKK1RFU1QoSW50U2l6ZSwgRmxvYXRTaXplQ29uc3RydWN0aW9uKQoreworICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKDEwMjQuMiwgNzY3LjgpOworICAgIFdlYkNvcmU6Oklu
dFNpemUgdGVzdChzaXplKTsKKworICAgIEVYUEVDVF9FUSgxMDI0LCB0ZXN0LndpZHRoKCkpOwor
ICAgIEVYUEVDVF9FUSg3NjcsIHRlc3QuaGVpZ2h0KCkpOworCisgICAgQVNTRVJUX0ZBTFNFKHRl
c3QuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UodGVzdC5pc1plcm8oKSk7CisKKyAgICBz
dGF0aWMgY29uc3QgZG91YmxlIGVwc2lsb24gPSAwLjAwMTsKKyAgICBFWFBFQ1RfTkVBUigxLjMz
NWYsIHRlc3QuYXNwZWN0UmF0aW8oKSwgZXBzaWxvbik7CisKKyAgICB0ZXN0R2V0QW5kU2V0KHRl
c3QpOworfQorCitURVNUKEludFNpemUsIERpYWdvbmFsTGVuZ3RoQW5kQXJlYSkKK3sKKyAgICBX
ZWJDb3JlOjpJbnRTaXplIHRlc3QoMTAyNCwgNzY4KTsKKworICAgIEVYUEVDVF9FUSgxNjM4NDAw
LCB0ZXN0LmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpKTsKKyAgICBFWFBFQ1RfRVEoNzg2NDMyVSwg
dGVzdC5hcmVhKCkudW5zYWZlR2V0KCkpOworfQorCitURVNUKEludFNpemUsIFNjYWxlKQorewor
ICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDI0LCA3NjgpOworCisgICAgdGVzdC5zY2FsZSgy
LjBmKTsKKworICAgIEVYUEVDVF9FUSgyMDQ4LCB0ZXN0LndpZHRoKCkpOworICAgIEVYUEVDVF9F
USgxNTM2LCB0ZXN0LmhlaWdodCgpKTsKKworICAgIHRlc3Quc2NhbGUoMC41Zik7CisKKyAgICBF
WFBFQ1RfRVEoMTAyNCwgdGVzdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNzY4LCB0ZXN0Lmhl
aWdodCgpKTsKKworICAgIHRlc3Quc2NhbGUoMi4wZiwgMC41Zik7CisKKyAgICBFWFBFQ1RfRVEo
MjA0OCwgdGVzdC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMzg0LCB0ZXN0LmhlaWdodCgpKTsK
K30KKworVEVTVChJbnRTaXplLCBFeHBhbmQpCit7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0
KDEwMjQsIDc2OCk7CisKKyAgICBFWFBFQ1RfRVEoMTAyNCwgdGVzdC53aWR0aCgpKTsKKyAgICBF
WFBFQ1RfRVEoNzY4LCB0ZXN0LmhlaWdodCgpKTsKKworICAgIHRlc3QuZXhwYW5kKDEwMCwgNTAp
OworCisgICAgRVhQRUNUX0VRKDExMjQsIHRlc3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDgx
OCwgdGVzdC5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG90aGVyKDIwNDgsIDcw
MCk7CisKKyAgICBhdXRvIGV4cGFuZGVkID0gdGVzdC5leHBhbmRlZFRvKG90aGVyKTsKKworICAg
IEVYUEVDVF9FUSgyMDQ4LCBleHBhbmRlZC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoODE4LCBl
eHBhbmRlZC5oZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50U2l6ZSwgU2hyaW5rKQoreworICAgIFdl
YkNvcmU6OkludFNpemUgdGVzdCgxMDI0LCA3NjgpOworICAgIFdlYkNvcmU6OkludFNpemUgb3Ro
ZXIoMTAwMCwgNzAwKTsKKworICAgIGF1dG8gc2hydW5rZW4gPSB0ZXN0LnNocnVua1RvKG90aGVy
KTsKKworICAgIEVYUEVDVF9FUSgxMDAwLCBzaHJ1bmtlbi53aWR0aCgpKTsKKyAgICBFWFBFQ1Rf
RVEoNzAwLCBzaHJ1bmtlbi5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG90aGVy
MigyMDAwLjBmLCA3MDAuMGYpOworCisgICAgYXV0byBzaHJ1bmtlbjIgPSB0ZXN0LnNocnVua1Rv
KG90aGVyMik7CisKKyAgICBFWFBFQ1RfRVEoMTAyNCwgc2hydW5rZW4yLndpZHRoKCkpOworICAg
IEVYUEVDVF9FUSg3MDAsIHNocnVua2VuMi5oZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50U2l6ZSwg
VHJhbnNwb3NlZFNpemUpCit7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB0ZXN0KDEwMjQsIDc2OCk7
CisKKyAgICBhdXRvIHRyYW5zcG9zZWRTaXplID0gdGVzdC50cmFuc3Bvc2VkU2l6ZSgpOworCisg
ICAgRVhQRUNUX0VRKDc2OCwgdHJhbnNwb3NlZFNpemUud2lkdGgoKSk7CisgICAgRVhQRUNUX0VR
KDEwMjQsIHRyYW5zcG9zZWRTaXplLmhlaWdodCgpKTsKK30KKworVEVTVChJbnRTaXplLCBDYXN0
aW5nKQoreworICAgIFdlYkNvcmU6OkludFNpemUgdGVzdCgxMDI0LCA3NjgpOworCisjaWYgVVNF
KENHKQorICAgIENHU2l6ZSBjZ1NpemUgPSB0ZXN0OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEw
MjQuMGYsIGNnU2l6ZS53aWR0aCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDc2OC4wZiwgY2dTaXpl
LmhlaWdodCk7CisKKyAgICBDR1NpemUgY2dTaXplMiA9IENHU2l6ZU1ha2UoLTIyLjNmLCAxNC42
Zik7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHRlc3RDRyhjZ1NpemUyKTsKKworICAgIEVYUEVD
VF9FUSgtMjIsIHRlc3RDRy53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMTQsIHRlc3RDRy5oZWln
aHQoKSk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBEMkQxX1NJWkVfVSBkMmRT
aXplVSA9IHRlc3Q7CisgICAgRVhQRUNUX0VRKDEwMjQsIGQyZFNpemVVLndpZHRoKTsKKyAgICBF
WFBFQ1RfRVEoNzY4LCBkMmRTaXplVS5oZWlnaHQpOworCisgICAgRDJEMV9TSVpFX0YgZDJkU2l6
ZUYgPSB0ZXN0OworICAgIEVYUEVDVF9GTE9BVF9FUSgxMDI0LjBmLCBkMmRTaXplRi53aWR0aCk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDc2OC4wZiwgZDJkU2l6ZUYuaGVpZ2h0KTsKKworICAgIEQy
RDFfU0laRV9GIGQyZFNpemVGMiA9IEQyRDE6OlNpemVGKC0yMi4zZiwgMTQuNmYpOworCisgICAg
V2ViQ29yZTo6SW50U2l6ZSB0ZXN0RDJEKGQyZFNpemVGMik7CisKKyAgICBFWFBFQ1RfRVEoLTIy
LCB0ZXN0RDJELndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgxNCwgdGVzdEQyRC5oZWlnaHQoKSk7
CisKKyAgICBEMkQxX1NJWkVfRiBkMmRTaXplVTIgPSBEMkQxOjpTaXplRigtMjMsIDE2KTsKKwor
ICAgIFdlYkNvcmU6OkludFNpemUgdGVzdEQyRDIoZDJkU2l6ZVUyKTsKKworICAgIEVYUEVDVF9F
USgtMjMsIHRlc3REMkQyLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgxNiwgdGVzdEQyRDIuaGVp
Z2h0KCkpOworI2VuZGlmCit9CisKK1RFU1QoSW50U2l6ZSwgQWRkU3VidHJhY3QpCit7CisgICAg
V2ViQ29yZTo6SW50U2l6ZSBhKDUxMiwgMzg0KTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIGIoMTAw
LCAxMDApOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBjID0gYSArIGI7CisKKyAgICBFWFBFQ1Rf
RVEoNjEyLCBjLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSg0ODQsIGMuaGVpZ2h0KCkpOworCisg
ICAgYSArPSBiOworCisgICAgRVhQRUNUX0VRKDYxMiwgYS53aWR0aCgpKTsKKyAgICBFWFBFQ1Rf
RVEoNDg0LCBhLmhlaWdodCgpKTsKKworICAgIFdlYkNvcmU6OkludFNpemUgYTIoNTEyLCAzODQp
OworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBkID0gYTIgLSBiOworCisgICAgRVhQRUNUX0VRKDQx
MiwgZC53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMjg0LCBkLmhlaWdodCgpKTsKKworICAgIGEy
IC09IGI7CisKKyAgICBFWFBFQ1RfRVEoNDEyLCBhMi53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEo
Mjg0LCBhMi5oZWlnaHQoKSk7Cit9CisKK1RFU1QoSW50U2l6ZSwgTmVnYXRpb24pCit7CisgICAg
V2ViQ29yZTo6SW50U2l6ZSBhKDUxMiwgMzg0KTsKKworICAgIFdlYkNvcmU6OkludFNpemUgbmVn
YXRlZCA9IC1hOworCisgICAgRVhQRUNUX0VRKC01MTIsIG5lZ2F0ZWQud2lkdGgoKSk7CisgICAg
RVhQRUNUX0VRKC0zODQsIG5lZ2F0ZWQuaGVpZ2h0KCkpOworfQorCitURVNUKEludFNpemUsIEVx
dWFsaXR5KQoreworICAgIFdlYkNvcmU6OkludFNpemUgYSgxMDI0LCA3NjgpOworICAgIFdlYkNv
cmU6OkludFNpemUgYigxMDI0LCA3NjgpOworICAgIFdlYkNvcmU6OkludFNpemUgYyg3NjgsIDUz
NCk7CisKKyAgICBBU1NFUlRfVFJVRShhID09IGIpOworICAgIEFTU0VSVF9GQUxTRShhICE9IGIp
OworICAgIEFTU0VSVF9GQUxTRShhID09IGMpOworICAgIEFTU0VSVF9UUlVFKGEgIT0gYyk7Cit9
CisKK1RFU1QoSW50U2l6ZSwgQ29udHJhY3QpCit7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBhKDEw
MjQsIDc2OCk7CisKKyAgICBhLmNvbnRyYWN0KDEwMCwgNTApOworCisgICAgRVhQRUNUX0VRKDky
NCwgYS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoNzE4LCBhLmhlaWdodCgpKTsKK30KKworVEVT
VChJbnRTaXplLCBDbGFtcCkKK3sKKyAgICBXZWJDb3JlOjpJbnRTaXplIGEoMTAyNCwgNzY4KTsK
KworICAgIGEuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworCisgICAgRVhQRUNUX0VRKDEwMjQsIGEu
d2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDc2OCwgYS5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3Jl
OjpJbnRTaXplIGIoLTEwMjQsIC03NjgpOworCisgICAgYi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
CisKKyAgICBFWFBFQ1RfRVEoMCwgYi53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgYi5oZWln
aHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1pbmltdW1TaXplKDEwMjQsIDEwMDApOwor
CisgICAgYS5jbGFtcFRvTWluaW11bVNpemUobWluaW11bVNpemUpOworCisgICAgRVhQRUNUX0VR
KDEwMjQsIGEud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDEwMDAsIGEuaGVpZ2h0KCkpOworfQor
CitURVNUKEludFNpemUsIENvbnN0cmFpbmVkQmV0d2VlbikKK3sKKyAgICBXZWJDb3JlOjpJbnRT
aXplIG1pbmltdW1TaXplKDM4NCwgMjU2KTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1heGltdW1T
aXplKDIwNDgsIDE1MzYpOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBhKDEwMjQsIDc2OCk7CisK
KyAgICBhdXRvIGNvbnN0cmFpbmVkMSA9IGEuY29uc3RyYWluZWRCZXR3ZWVuKG1pbmltdW1TaXpl
LCBtYXhpbXVtU2l6ZSk7CisKKyAgICBFWFBFQ1RfRVEoMTAyNCwgY29uc3RyYWluZWQxLndpZHRo
KCkpOworICAgIEVYUEVDVF9FUSg3NjgsIGNvbnN0cmFpbmVkMS5oZWlnaHQoKSk7CisKKyAgICBX
ZWJDb3JlOjpJbnRTaXplIGIoMjAwLCAxMDApOworCisgICAgYXV0byBjb25zdHJhaW5lZDIgPSBi
LmNvbnN0cmFpbmVkQmV0d2VlbihtaW5pbXVtU2l6ZSwgbWF4aW11bVNpemUpOworCisgICAgRVhQ
RUNUX0VRKDM4NCwgY29uc3RyYWluZWQyLndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgyNTYsIGNv
bnN0cmFpbmVkMi5oZWlnaHQoKSk7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIGMoNTAwMCwgMjAw
MCk7CisKKyAgICBhdXRvIGNvbnN0cmFpbmVkMyA9IGMuY29uc3RyYWluZWRCZXR3ZWVuKG1pbmlt
dW1TaXplLCBtYXhpbXVtU2l6ZSk7CisKKyAgICBFWFBFQ1RfRVEoMjA0OCwgY29uc3RyYWluZWQz
LndpZHRoKCkpOworICAgIEVYUEVDVF9FUSgxNTM2LCBjb25zdHJhaW5lZDMuaGVpZ2h0KCkpOwor
fQorCisvKgorCitJbnRTaXplIGNvbnN0cmFpbmVkQmV0d2Vlbihjb25zdCBJbnRTaXplJiBtaW4s
IGNvbnN0IEludFNpemUmIG1heCkgY29uc3Q7CisKKyovCisKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjkwNGM5NmExYzZkY2QyMjNiNWYwZGRlNmRmN2Q3ZWQzZmMyMTRmOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
NDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0xheW91
dFVuaXQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKLQotVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdEludCkKLXsKLSAg
ICBBU1NFUlRfRVEoTGF5b3V0VW5pdChJTlRfTUlOKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRV
bml0KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChJTlRfTUlOIC8gMikudG9JbnQoKSwgaW50
TWluRm9yTGF5b3V0VW5pdCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWluRm9yTGF5
b3V0VW5pdCAtIDEpLnRvSW50KCksIGludE1pbkZvckxheW91dFVuaXQpOyAKLSAgICBBU1NFUlRf
RVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KS50b0ludCgpLCBpbnRNaW5Gb3JMYXlv
dXRVbml0KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0ICsg
MSkudG9JbnQoKSwgaW50TWluRm9yTGF5b3V0VW5pdCArIDEpOwotICAgIEFTU0VSVF9FUShMYXlv
dXRVbml0KGludE1pbkZvckxheW91dFVuaXQgLyAyKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRV
bml0IC8gMik7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEwMDAwKS50b0ludCgpLCAtMTAw
MDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xMDAwKS50b0ludCgpLCAtMTAwMCk7Ci0g
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEwMCkudG9JbnQoKSwgLTEwMCk7Ci0gICAgQVNTRVJU
X0VRKExheW91dFVuaXQoLTEwKS50b0ludCgpLCAtMTApOwotICAgIEFTU0VSVF9FUShMYXlvdXRV
bml0KC0xKS50b0ludCgpLCAtMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMCkudG9JbnQo
KSwgMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMSkudG9JbnQoKSwgMSk7Ci0gICAgQVNT
RVJUX0VRKExheW91dFVuaXQoMTAwKS50b0ludCgpLCAxMDApOwotICAgIEFTU0VSVF9FUShMYXlv
dXRVbml0KDEwMDApLnRvSW50KCksIDEwMDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEw
MDAwKS50b0ludCgpLCAxMDAwMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9y
TGF5b3V0VW5pdCAvIDIpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQgLyAyKTsKLSAgICBB
U1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0IC0gMSkudG9JbnQoKSwgaW50
TWF4Rm9yTGF5b3V0VW5pdCAtIDEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1heEZv
ckxheW91dFVuaXQpLnRvSW50KCksIGludE1heEZvckxheW91dFVuaXQpOwotICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQgKyAxKS50b0ludCgpLCBpbnRNYXhGb3JM
YXlvdXRVbml0KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChJTlRfTUFYIC8gMikudG9JbnQo
KSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoSU5UX01B
WCkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Ci19Ci0KLVRFU1QoV2ViQ29yZUxheW91
dFVuaXQsIExheW91dFVuaXRGbG9hdCkKLXsKLSAgICBjb25zdCBmbG9hdCB0b2xlcmFuY2UgPSAx
LjBmIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKLSAgICBBU1NFUlRfRkxPQVRfRVEoTGF5b3V0
VW5pdCgxLjBmKS50b0Zsb2F0KCksIDEuMGYpOwotICAgIEFTU0VSVF9GTE9BVF9FUShMYXlvdXRV
bml0KDEuMjVmKS50b0Zsb2F0KCksIDEuMjVmKTsKLSAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0
KDEuMWYpLnRvRmxvYXQoKSwgMS4xZiwgdG9sZXJhbmNlKTsKLSAgICBBU1NFUlRfTkVBUihMYXlv
dXRVbml0KDEuMzNmKS50b0Zsb2F0KCksIDEuMzNmLCB0b2xlcmFuY2UpOwotICAgIEFTU0VSVF9O
RUFSKExheW91dFVuaXQoMS4zMzMzZikudG9GbG9hdCgpLCAxLjMzMzNmLCB0b2xlcmFuY2UpOwot
ICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS41MzQzNGYpLnRvRmxvYXQoKSwgMS41MzQzNGYs
IHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzNDU2MzQpLnRvRmxvYXQo
KSwgMzQ1NjM0LjBmLCB0b2xlcmFuY2UpOwotICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMzQ1
NjM0LjEyMzM1ZikudG9GbG9hdCgpLCAzNDU2MzQuMTIzMzVmLCB0b2xlcmFuY2UpOwotICAgIEFT
U0VSVF9ORUFSKExheW91dFVuaXQoLTM0NTYzNC4xMjMzNWYpLnRvRmxvYXQoKSwgLTM0NTYzNC4x
MjMzNWYsIHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgtMzQ1NjM0KS50
b0Zsb2F0KCksIC0zNDU2MzQuMGYsIHRvbGVyYW5jZSk7ICAgIAotICAgIEFTU0VSVF9ORUFSKExh
eW91dFVuaXQoMzM1NTQ0MzIuZikudG9GbG9hdCgpLCAzMzU1NDQzMi5mLCB0b2xlcmFuY2UpOwot
ICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoLTMzNTU0NDMyLmYpLnRvRmxvYXQoKSwgLTMzNTU0
NDMyLmYsIHRvbGVyYW5jZSk7Ci0gICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzMzU1NDQzMi5m
KS50b0RvdWJsZSgpLCAzMzU1NDQzMi5mLCB0b2xlcmFuY2UpOwotICAgIEFTU0VSVF9ORUFSKExh
eW91dFVuaXQoLTMzNTU0NDMyLmYpLnRvRG91YmxlKCksIC0zMzU1NDQzMi5mLCB0b2xlcmFuY2Up
OwotfQotCi1URVNUKFdlYkNvcmVMYXlvdXRVbml0LCBMYXlvdXRVbml0Um91bmRpbmcpCi17Ci0g
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEuOWYpLnJvdW5kKCksIC0yKTsKLSAgICBBU1NFUlRf
RVEoTGF5b3V0VW5pdCgtMS42Zikucm91bmQoKSwgLTIpOwotICAgIEFTU0VSVF9FUShMYXlvdXRV
bml0Ojpmcm9tRmxvYXRSb3VuZCgtMS41MWYpLnJvdW5kKCksIC0yKTsKLSAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoLTEuNWYpLnJvdW5kKCksIC0xKTsKLSAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoLTEuNDlmKS5yb3VuZCgpLCAtMSk7Ci0g
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEuMGYpLnJvdW5kKCksIC0xKTsKLSAgICBBU1NFUlRf
RVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoLTAuOTlmKS5yb3VuZCgpLCAtMSk7Ci0gICAg
QVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKC0wLjUxZikucm91bmQoKSwgLTEp
OwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMC41MGYpLnJvdW5k
KCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMC40OWYp
LnJvdW5kKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjFmKS5yb3VuZCgpLCAw
KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjBmKS5yb3VuZCgpLCAwKTsKLSAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdCgwLjFmKS5yb3VuZCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0
VW5pdDo6ZnJvbUZsb2F0Um91bmQoMC40OWYpLnJvdW5kKCksIDApOwotICAgIEFTU0VSVF9FUShM
YXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgwLjUwZikucm91bmQoKSwgMSk7Ci0gICAgQVNTRVJU
X0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKDAuNTFmKS5yb3VuZCgpLCAxKTsKLSAgICBB
U1NFUlRfRVEoTGF5b3V0VW5pdCgwLjk5Zikucm91bmQoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKExh
eW91dFVuaXQoMS4wZikucm91bmQoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZy
b21GbG9hdFJvdW5kKDEuNDlmKS5yb3VuZCgpLCAxKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5p
dDo6ZnJvbUZsb2F0Um91bmQoMS41Zikucm91bmQoKSwgMik7Ci0gICAgQVNTRVJUX0VRKExheW91
dFVuaXQ6OmZyb21GbG9hdFJvdW5kKDEuNTFmKS5yb3VuZCgpLCAyKTsKLX0KLQotVEVTVChXZWJD
b3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdE11bHRpcGxpY2F0aW9uKQotewotICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdCgxKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIDEpOwotICAgIEFTU0VS
VF9FUSgoTGF5b3V0VW5pdCgxKSAqIExheW91dFVuaXQoMikpLnRvSW50KCksIDIpOwotICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIDIpOwotICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgyKSAqIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgMSk7
Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDAuNSkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgp
LCAxKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMTAwKSAqIExheW91dFVuaXQoMSkpLnRv
SW50KCksIDEwMCk7Ci0gICAgCi0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAqIExheW91
dFVuaXQoMSkpLnRvSW50KCksIC0xKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpICog
TGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgLTIpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgt
MikgKiBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRV
bml0KC0yKSAqIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgLTEpOwotICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdCgtMC41KSAqIExheW91dFVuaXQoMikpLnRvSW50KCksIC0xKTsKLSAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoLTEwMCkgKiBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMTAwKTsK
LSAgICAKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpICogTGF5b3V0VW5pdCgtMSkpLnRv
SW50KCksIDEpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KC0y
KSkudG9JbnQoKSwgMik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVu
aXQoLTEpKS50b0ludCgpLCAyKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5
b3V0VW5pdCgtMC41KSkudG9JbnQoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0w
LjUpICogTGF5b3V0VW5pdCgtMikpLnRvSW50KCksIDEpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0
VW5pdCgtMTAwKSAqIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAxMDApOwotICAgIAotICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgxMDApICogTGF5b3V0VW5pdCgzLjMzKSkucm91bmQoKSwgMzMz
KTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgKiBMYXlvdXRVbml0KDMuMzMpKS5y
b3VuZCgpLCAtMzMzKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgKiBMYXlvdXRV
bml0KC0zLjMzKSkucm91bmQoKSwgMzMzKTsKLQotICAgIHNpemVfdCBhSHVuZHJlZFNpemVUID0g
MTAwOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChhSHVuZHJlZFNpemVUKSAqIExheW91dFVu
aXQoMSkpLnRvSW50KCksIDEwMCk7Ci0gICAgQVNTRVJUX0VRKChhSHVuZHJlZFNpemVUICogTGF5
b3V0VW5pdCg0KSkudG9JbnQoKSwgNDAwKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoNCkg
KiBhSHVuZHJlZFNpemVUKS50b0ludCgpLCA0MDApOwotCi0gICAgaW50IHF1YXJ0ZXJNYXggPSBp
bnRNYXhGb3JMYXlvdXRVbml0IC8gNDsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQocXVhcnRl
ck1heCkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgpLCBxdWFydGVyTWF4ICogMik7Ci0gICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KHF1YXJ0ZXJNYXgpICogTGF5b3V0VW5pdCgzKSkudG9JbnQoKSwg
cXVhcnRlck1heCAqIDMpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChxdWFydGVyTWF4KSAq
IExheW91dFVuaXQoNCkpLnRvSW50KCksIHF1YXJ0ZXJNYXggKiA0KTsKLSAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQocXVhcnRlck1heCkgKiBMYXlvdXRVbml0KDUpKS50b0ludCgpLCBpbnRNYXhG
b3JMYXlvdXRVbml0KTsKLQotICAgIHNpemVfdCBvdmVyZmxvd0ludFNpemVUID0gaW50TWF4Rm9y
TGF5b3V0VW5pdCAqIDQ7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KG92ZXJmbG93SW50U2l6
ZVQpICogTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Ci0gICAg
QVNTRVJUX0VRKChvdmVyZmxvd0ludFNpemVUICogTGF5b3V0VW5pdCg0KSkudG9JbnQoKSwgaW50
TWF4Rm9yTGF5b3V0VW5pdCk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDQpICogb3ZlcmZs
b3dJbnRTaXplVCkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Ci19Ci0KLVRFU1QoV2Vi
Q29yZUxheW91dFVuaXQsIExheW91dFVuaXREaXZpc2lvbikKLXsKLSAgICBBU1NFUlRfRVEoKExh
eW91dFVuaXQoMSkgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAxKTsKLSAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQoMSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKLSAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoMikgLyBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAyKTsKLSAgICBBU1NF
UlRfRVEoKExheW91dFVuaXQoMikgLyBMYXlvdXRVbml0KDAuNSkpLnRvSW50KCksIDQpOwotICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgwLjUpIC8gTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgMCk7
Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDEwMCkgLyBMYXlvdXRVbml0KDEwKSkudG9JbnQo
KSwgMTApOwotICAgIEFTU0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQo
MikpLnRvRmxvYXQoKSwgMC41Zik7Ci0gICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0KDAu
NSkgLyBMYXlvdXRVbml0KDIpKS50b0Zsb2F0KCksIDAuMjVmKTsKLSAgICAKLSAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEpOwotICAgIEFT
U0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKLSAg
ICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpIC8gTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTIp
OwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KDAuNSkpLnRvSW50
KCksIC00KTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTAuNSkgLyBMYXlvdXRVbml0KDIp
KS50b0ludCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlvdXRV
bml0KDEwKSkudG9JbnQoKSwgLTEwKTsKLSAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQo
LTEpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAtMC41Zik7Ci0gICAgQVNTRVJUX0ZMT0FU
X0VRKChMYXlvdXRVbml0KC0wLjUpIC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAtMC4yNWYp
OwotICAgIAotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KC0xKSku
dG9JbnQoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQo
LTIpKS50b0ludCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpIC8gTGF5b3V0
VW5pdCgtMSkpLnRvSW50KCksIDIpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBM
YXlvdXRVbml0KC0wLjUpKS50b0ludCgpLCA0KTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQo
LTAuNSkgLyBMYXlvdXRVbml0KC0yKSkudG9JbnQoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKChMYXlv
dXRVbml0KC0xMDApIC8gTGF5b3V0VW5pdCgtMTApKS50b0ludCgpLCAxMCk7Ci0gICAgQVNTRVJU
X0ZMT0FUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQoLTIpKS50b0Zsb2F0KCksIDAu
NWYpOwotICAgIEFTU0VSVF9GTE9BVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQo
LTIpKS50b0Zsb2F0KCksIDAuMjVmKTsKLSAgICAKLSAgICBzaXplX3QgYUh1bmRyZWRTaXplVCA9
IDEwMDsKLSAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoYUh1bmRyZWRTaXplVCkgLyBMYXlvdXRV
bml0KDIpKS50b0ludCgpLCA1MCk7Ci0gICAgQVNTRVJUX0VRKChhSHVuZHJlZFNpemVUIC8gTGF5
b3V0VW5pdCg0KSkudG9JbnQoKSwgMjUpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCg0MDAp
IC8gYUh1bmRyZWRTaXplVCkudG9JbnQoKSwgNCk7Ci0KLSAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCBpbnRNYXhG
b3JMYXlvdXRVbml0IC8gMik7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGludE1heEZvckxh
eW91dFVuaXQpIC8gTGF5b3V0VW5pdCgwLjUpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0
KTsKLX0KLQotVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdENlaWwpCi17Ci0gICAg
QVNTRVJUX0VRKExheW91dFVuaXQoMCkuY2VpbCgpLCAwKTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0
VW5pdCgwLjEpLmNlaWwoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC41KS5jZWls
KCksIDEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuOSkuY2VpbCgpLCAxKTsKLSAgICBB
U1NFUlRfRVEoTGF5b3V0VW5pdCgxLjApLmNlaWwoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKExheW91
dFVuaXQoMS4xKS5jZWlsKCksIDIpOwotICAgIAotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0w
LjEpLmNlaWwoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuNSkuY2VpbCgpLCAw
KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC45KS5jZWlsKCksIDApOwotICAgIEFTU0VS
VF9FUShMYXlvdXRVbml0KC0xLjApLmNlaWwoKSwgLTEpOwotICAgIAotICAgIEFTU0VSVF9FUShM
YXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpLmNlaWwoKSwgaW50TWF4Rm9yTGF5b3V0VW5p
dCk7Ci0gICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpIC0gTGF5
b3V0VW5pdCgwLjUpKS5jZWlsKCksIGludE1heEZvckxheW91dFVuaXQpOwotICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdChpbnRNYXhGb3JMYXlvdXRVbml0KSAtIExheW91dFVuaXQoMSkpLmNlaWwo
KSwgaW50TWF4Rm9yTGF5b3V0VW5pdCAtIDEpOwotCi0gICAgQVNTRVJUX0VRKExheW91dFVuaXQo
aW50TWluRm9yTGF5b3V0VW5pdCkuY2VpbCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKLX0KLQot
VEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdEZsb29yKQotewotICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0KDApLmZsb29yKCksIDApOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAu
MSkuZmxvb3IoKSwgMCk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC41KS5mbG9vcigpLCAw
KTsKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjkpLmZsb29yKCksIDApOwotICAgIEFTU0VS
VF9FUShMYXlvdXRVbml0KDEuMCkuZmxvb3IoKSwgMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVu
aXQoMS4xKS5mbG9vcigpLCAxKTsKLSAgICAKLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC4x
KS5mbG9vcigpLCAtMSk7Ci0gICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTAuNSkuZmxvb3IoKSwg
LTEpOwotICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjkpLmZsb29yKCksIC0xKTsKLSAgICBB
U1NFUlRfRVEoTGF5b3V0VW5pdCgtMS4wKS5mbG9vcigpLCAtMSk7Ci0gICAgCi0gICAgQVNTRVJU
X0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCkuZmxvb3IoKSwgaW50TWF4Rm9yTGF5
b3V0VW5pdCk7Ci0KLSAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0
KS5mbG9vcigpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKLSAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoaW50TWluRm9yTGF5b3V0VW5pdCkgKyBMYXlvdXRVbml0KDAuNSkpLmZsb29yKCksIGludE1p
bkZvckxheW91dFVuaXQpOwotICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlv
dXRVbml0KSArIExheW91dFVuaXQoMSkpLmZsb29yKCksIGludE1pbkZvckxheW91dFVuaXQgKyAx
KTsKLX0KLQotVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdFBpeGVsU25hcHBpbmcp
Ci17Ci0gICAgZm9yIChpbnQgaSA9IC0xMDAwMDA7IGkgPD0gMTAwMDAwOyArK2kpIHsKLSAgICAg
ICAgQVNTRVJUX0VRKHJvdW5kVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0KGkpLCAxKSwgaSk7Ci0g
ICAgICAgIEFTU0VSVF9FUShyb3VuZFRvRGV2aWNlUGl4ZWwoTGF5b3V0VW5pdChpKSwgMiksIGkp
OwotICAgICAgICBBU1NFUlRfRVEocm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQoaSksIDMp
LCBpKTsKLSAgICB9Ci0KLSAgICBmb3IgKGZsb2F0IGkgPSAtMTAwMDA7IGkgPCAwOyBpID0gaSAr
IDAuNSkKLSAgICAgICAgQVNTRVJUX0ZMT0FUX0VRKHJvdW5kVG9EZXZpY2VQaXhlbChMYXlvdXRV
bml0KGkpLCAyKSwgaSk7Ci0KLSAgICBmb3IgKGZsb2F0IGkgPSAtMTAwMDAuMjU7IGkgPCAwOyBp
ID0gaSArIDAuNSkKLSAgICAgICAgQVNTRVJUX0ZMT0FUX0VRKHJvdW5kVG9EZXZpY2VQaXhlbChM
YXlvdXRVbml0KGkpLCAyKSwgaSArIDAuMjUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5
b3V0VW5pdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlv
dXRVbml0VGVzdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDRjOTZhMWM2ZGNkMjIzYjVmMGRkZTZkZjdk
N2VkM2ZjMjE0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvTGF5b3V0VW5pdFRlc3RzLmNwcApAQCAtMCwwICsxLDI0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFVuaXQuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJD
b3JlTGF5b3V0VW5pdCwgTGF5b3V0VW5pdEludCkKK3sKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5p
dChJTlRfTUlOKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEo
TGF5b3V0VW5pdChJTlRfTUlOIC8gMikudG9JbnQoKSwgaW50TWluRm9yTGF5b3V0VW5pdCk7Cisg
ICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5pdCAtIDEpLnRvSW50KCks
IGludE1pbkZvckxheW91dFVuaXQpOyAKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChpbnRNaW5G
b3JMYXlvdXRVbml0KS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKKyAgICBBU1NFUlRf
RVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0ICsgMSkudG9JbnQoKSwgaW50TWluRm9y
TGF5b3V0VW5pdCArIDEpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1pbkZvckxheW91
dFVuaXQgLyAyKS50b0ludCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0IC8gMik7CisgICAgQVNTRVJU
X0VRKExheW91dFVuaXQoLTEwMDAwKS50b0ludCgpLCAtMTAwMDApOworICAgIEFTU0VSVF9FUShM
YXlvdXRVbml0KC0xMDAwKS50b0ludCgpLCAtMTAwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVu
aXQoLTEwMCkudG9JbnQoKSwgLTEwMCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoLTEwKS50
b0ludCgpLCAtMTApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xKS50b0ludCgpLCAtMSk7
CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMCkudG9JbnQoKSwgMCk7CisgICAgQVNTRVJUX0VR
KExheW91dFVuaXQoMSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMTAw
KS50b0ludCgpLCAxMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEwMDApLnRvSW50KCks
IDEwMDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEwMDAwKS50b0ludCgpLCAxMDAwMCk7
CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5pdCAvIDIpLnRvSW50
KCksIGludE1heEZvckxheW91dFVuaXQgLyAyKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdChp
bnRNYXhGb3JMYXlvdXRVbml0IC0gMSkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCAtIDEp
OworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpLnRvSW50KCks
IGludE1heEZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1heEZv
ckxheW91dFVuaXQgKyAxKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKyAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdChJTlRfTUFYIC8gMikudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5p
dCk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoSU5UX01BWCkudG9JbnQoKSwgaW50TWF4Rm9y
TGF5b3V0VW5pdCk7Cit9CisKK1RFU1QoV2ViQ29yZUxheW91dFVuaXQsIExheW91dFVuaXRGbG9h
dCkKK3sKKyAgICBjb25zdCBmbG9hdCB0b2xlcmFuY2UgPSAxLjBmIC8ga0ZpeGVkUG9pbnREZW5v
bWluYXRvcjsKKyAgICBBU1NFUlRfRkxPQVRfRVEoTGF5b3V0VW5pdCgxLjBmKS50b0Zsb2F0KCks
IDEuMGYpOworICAgIEFTU0VSVF9GTE9BVF9FUShMYXlvdXRVbml0KDEuMjVmKS50b0Zsb2F0KCks
IDEuMjVmKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMWYpLnRvRmxvYXQoKSwgMS4x
ZiwgdG9sZXJhbmNlKTsKKyAgICBBU1NFUlRfTkVBUihMYXlvdXRVbml0KDEuMzNmKS50b0Zsb2F0
KCksIDEuMzNmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMS4zMzMz
ZikudG9GbG9hdCgpLCAxLjMzMzNmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91
dFVuaXQoMS41MzQzNGYpLnRvRmxvYXQoKSwgMS41MzQzNGYsIHRvbGVyYW5jZSk7CisgICAgQVNT
RVJUX05FQVIoTGF5b3V0VW5pdCgzNDU2MzQpLnRvRmxvYXQoKSwgMzQ1NjM0LjBmLCB0b2xlcmFu
Y2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMzQ1NjM0LjEyMzM1ZikudG9GbG9hdCgp
LCAzNDU2MzQuMTIzMzVmLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQo
LTM0NTYzNC4xMjMzNWYpLnRvRmxvYXQoKSwgLTM0NTYzNC4xMjMzNWYsIHRvbGVyYW5jZSk7Cisg
ICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgtMzQ1NjM0KS50b0Zsb2F0KCksIC0zNDU2MzQuMGYs
IHRvbGVyYW5jZSk7ICAgIAorICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoMzM1NTQ0MzIuZiku
dG9GbG9hdCgpLCAzMzU1NDQzMi5mLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91
dFVuaXQoLTMzNTU0NDMyLmYpLnRvRmxvYXQoKSwgLTMzNTU0NDMyLmYsIHRvbGVyYW5jZSk7Cisg
ICAgQVNTRVJUX05FQVIoTGF5b3V0VW5pdCgzMzU1NDQzMi5mKS50b0RvdWJsZSgpLCAzMzU1NDQz
Mi5mLCB0b2xlcmFuY2UpOworICAgIEFTU0VSVF9ORUFSKExheW91dFVuaXQoLTMzNTU0NDMyLmYp
LnRvRG91YmxlKCksIC0zMzU1NDQzMi5mLCB0b2xlcmFuY2UpOworfQorCitURVNUKFdlYkNvcmVM
YXlvdXRVbml0LCBMYXlvdXRVbml0Um91bmRpbmcpCit7CisgICAgQVNTRVJUX0VRKExheW91dFVu
aXQoLTEuOWYpLnJvdW5kKCksIC0yKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMS42Ziku
cm91bmQoKSwgLTIpOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgt
MS41MWYpLnJvdW5kKCksIC0yKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0
Um91bmQoLTEuNWYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJv
bUZsb2F0Um91bmQoLTEuNDlmKS5yb3VuZCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVu
aXQoLTEuMGYpLnJvdW5kKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZs
b2F0Um91bmQoLTAuOTlmKS5yb3VuZCgpLCAtMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQ6
OmZyb21GbG9hdFJvdW5kKC0wLjUxZikucm91bmQoKSwgLTEpOworICAgIEFTU0VSVF9FUShMYXlv
dXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMC41MGYpLnJvdW5kKCksIDApOworICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0Ojpmcm9tRmxvYXRSb3VuZCgtMC40OWYpLnJvdW5kKCksIDApOworICAgIEFT
U0VSVF9FUShMYXlvdXRVbml0KC0wLjFmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdCgwLjBmKS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjFm
KS5yb3VuZCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQo
MC40OWYpLnJvdW5kKCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0Ojpmcm9tRmxvYXRS
b3VuZCgwLjUwZikucm91bmQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21G
bG9hdFJvdW5kKDAuNTFmKS5yb3VuZCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgw
Ljk5Zikucm91bmQoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMS4wZikucm91bmQo
KSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5kKDEuNDlmKS5y
b3VuZCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQoMS41
Zikucm91bmQoKSwgMik7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5k
KDEuNTFmKS5yb3VuZCgpLCAyKTsKK30KKworVEVTVChXZWJDb3JlTGF5b3V0VW5pdCwgTGF5b3V0
VW5pdE11bHRpcGxpY2F0aW9uKQoreworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAqIExh
eW91dFVuaXQoMSkpLnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgxKSAq
IExheW91dFVuaXQoMikpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgy
KSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIDIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5p
dCgyKSAqIExheW91dFVuaXQoMC41KSkudG9JbnQoKSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlv
dXRVbml0KDAuNSkgKiBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQoMTAwKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIDEwMCk7CisgICAgCisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIC0x
KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpICogTGF5b3V0VW5pdCgyKSkudG9JbnQo
KSwgLTIpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgKiBMYXlvdXRVbml0KDEpKS50
b0ludCgpLCAtMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQo
MC41KSkudG9JbnQoKSwgLTEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMC41KSAqIExh
eW91dFVuaXQoMikpLnRvSW50KCksIC0xKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEw
MCkgKiBMYXlvdXRVbml0KDEpKS50b0ludCgpLCAtMTAwKTsKKyAgICAKKyAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQoLTEpICogTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDEpOworICAgIEFTU0VS
VF9FUSgoTGF5b3V0VW5pdCgtMSkgKiBMYXlvdXRVbml0KC0yKSkudG9JbnQoKSwgMik7CisgICAg
QVNTRVJUX0VRKChMYXlvdXRVbml0KC0yKSAqIExheW91dFVuaXQoLTEpKS50b0ludCgpLCAyKTsK
KyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpICogTGF5b3V0VW5pdCgtMC41KSkudG9JbnQo
KSwgMSk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0wLjUpICogTGF5b3V0VW5pdCgtMikp
LnRvSW50KCksIDEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMTAwKSAqIExheW91dFVu
aXQoLTEpKS50b0ludCgpLCAxMDApOworICAgIAorICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgx
MDApICogTGF5b3V0VW5pdCgzLjMzKSkucm91bmQoKSwgMzMzKTsKKyAgICBBU1NFUlRfRVEoKExh
eW91dFVuaXQoLTEwMCkgKiBMYXlvdXRVbml0KDMuMzMpKS5yb3VuZCgpLCAtMzMzKTsKKyAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgKiBMYXlvdXRVbml0KC0zLjMzKSkucm91bmQoKSwg
MzMzKTsKKworICAgIHNpemVfdCBhSHVuZHJlZFNpemVUID0gMTAwOworICAgIEFTU0VSVF9FUSgo
TGF5b3V0VW5pdChhSHVuZHJlZFNpemVUKSAqIExheW91dFVuaXQoMSkpLnRvSW50KCksIDEwMCk7
CisgICAgQVNTRVJUX0VRKChhSHVuZHJlZFNpemVUICogTGF5b3V0VW5pdCg0KSkudG9JbnQoKSwg
NDAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoNCkgKiBhSHVuZHJlZFNpemVUKS50b0lu
dCgpLCA0MDApOworCisgICAgaW50IHF1YXJ0ZXJNYXggPSBpbnRNYXhGb3JMYXlvdXRVbml0IC8g
NDsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQocXVhcnRlck1heCkgKiBMYXlvdXRVbml0KDIp
KS50b0ludCgpLCBxdWFydGVyTWF4ICogMik7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KHF1
YXJ0ZXJNYXgpICogTGF5b3V0VW5pdCgzKSkudG9JbnQoKSwgcXVhcnRlck1heCAqIDMpOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdChxdWFydGVyTWF4KSAqIExheW91dFVuaXQoNCkpLnRvSW50
KCksIHF1YXJ0ZXJNYXggKiA0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQocXVhcnRlck1h
eCkgKiBMYXlvdXRVbml0KDUpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKKworICAg
IHNpemVfdCBvdmVyZmxvd0ludFNpemVUID0gaW50TWF4Rm9yTGF5b3V0VW5pdCAqIDQ7CisgICAg
QVNTRVJUX0VRKChMYXlvdXRVbml0KG92ZXJmbG93SW50U2l6ZVQpICogTGF5b3V0VW5pdCgyKSku
dG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJUX0VRKChvdmVyZmxvd0lu
dFNpemVUICogTGF5b3V0VW5pdCg0KSkudG9JbnQoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7Cisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KDQpICogb3ZlcmZsb3dJbnRTaXplVCkudG9JbnQoKSwg
aW50TWF4Rm9yTGF5b3V0VW5pdCk7Cit9CisKK1RFU1QoV2ViQ29yZUxheW91dFVuaXQsIExheW91
dFVuaXREaXZpc2lvbikKK3sKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMSkgLyBMYXlvdXRV
bml0KDEpKS50b0ludCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMSkgLyBMYXlv
dXRVbml0KDIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMikgLyBM
YXlvdXRVbml0KDEpKS50b0ludCgpLCAyKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoMikg
LyBMYXlvdXRVbml0KDAuNSkpLnRvSW50KCksIDQpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5p
dCgwLjUpIC8gTGF5b3V0VW5pdCgyKSkudG9JbnQoKSwgMCk7CisgICAgQVNTRVJUX0VRKChMYXlv
dXRVbml0KDEwMCkgLyBMYXlvdXRVbml0KDEwKSkudG9JbnQoKSwgMTApOworICAgIEFTU0VSVF9G
TE9BVF9FUSgoTGF5b3V0VW5pdCgxKSAvIExheW91dFVuaXQoMikpLnRvRmxvYXQoKSwgMC41Zik7
CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0KDAuNSkgLyBMYXlvdXRVbml0KDIpKS50
b0Zsb2F0KCksIDAuMjVmKTsKKyAgICAKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTEpIC8g
TGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTEpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgt
MSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVu
aXQoLTIpIC8gTGF5b3V0VW5pdCgxKSkudG9JbnQoKSwgLTIpOworICAgIEFTU0VSVF9FUSgoTGF5
b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KDAuNSkpLnRvSW50KCksIC00KTsKKyAgICBBU1NFUlRf
RVEoKExheW91dFVuaXQoLTAuNSkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCAwKTsKKyAgICBB
U1NFUlRfRVEoKExheW91dFVuaXQoLTEwMCkgLyBMYXlvdXRVbml0KDEwKSkudG9JbnQoKSwgLTEw
KTsKKyAgICBBU1NFUlRfRkxPQVRfRVEoKExheW91dFVuaXQoLTEpIC8gTGF5b3V0VW5pdCgyKSku
dG9GbG9hdCgpLCAtMC41Zik7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0KC0wLjUp
IC8gTGF5b3V0VW5pdCgyKSkudG9GbG9hdCgpLCAtMC4yNWYpOworICAgIAorICAgIEFTU0VSVF9F
USgoTGF5b3V0VW5pdCgtMSkgLyBMYXlvdXRVbml0KC0xKSkudG9JbnQoKSwgMSk7CisgICAgQVNT
RVJUX0VRKChMYXlvdXRVbml0KC0xKSAvIExheW91dFVuaXQoLTIpKS50b0ludCgpLCAwKTsKKyAg
ICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTIpIC8gTGF5b3V0VW5pdCgtMSkpLnRvSW50KCksIDIp
OworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCgtMikgLyBMYXlvdXRVbml0KC0wLjUpKS50b0lu
dCgpLCA0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoLTAuNSkgLyBMYXlvdXRVbml0KC0y
KSkudG9JbnQoKSwgMCk7CisgICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KC0xMDApIC8gTGF5b3V0
VW5pdCgtMTApKS50b0ludCgpLCAxMCk7CisgICAgQVNTRVJUX0ZMT0FUX0VRKChMYXlvdXRVbml0
KC0xKSAvIExheW91dFVuaXQoLTIpKS50b0Zsb2F0KCksIDAuNWYpOworICAgIEFTU0VSVF9GTE9B
VF9FUSgoTGF5b3V0VW5pdCgtMC41KSAvIExheW91dFVuaXQoLTIpKS50b0Zsb2F0KCksIDAuMjVm
KTsKKyAgICAKKyAgICBzaXplX3QgYUh1bmRyZWRTaXplVCA9IDEwMDsKKyAgICBBU1NFUlRfRVEo
KExheW91dFVuaXQoYUh1bmRyZWRTaXplVCkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCA1MCk7
CisgICAgQVNTRVJUX0VRKChhSHVuZHJlZFNpemVUIC8gTGF5b3V0VW5pdCg0KSkudG9JbnQoKSwg
MjUpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdCg0MDApIC8gYUh1bmRyZWRTaXplVCkudG9J
bnQoKSwgNCk7CisKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoaW50TWF4Rm9yTGF5b3V0VW5p
dCkgLyBMYXlvdXRVbml0KDIpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0IC8gMik7Cisg
ICAgQVNTRVJUX0VRKChMYXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpIC8gTGF5b3V0VW5p
dCgwLjUpKS50b0ludCgpLCBpbnRNYXhGb3JMYXlvdXRVbml0KTsKK30KKworVEVTVChXZWJDb3Jl
TGF5b3V0VW5pdCwgTGF5b3V0VW5pdENlaWwpCit7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQo
MCkuY2VpbCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgwLjEpLmNlaWwoKSwgMSk7
CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMC41KS5jZWlsKCksIDEpOworICAgIEFTU0VSVF9F
UShMYXlvdXRVbml0KDAuOSkuY2VpbCgpLCAxKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgx
LjApLmNlaWwoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMS4xKS5jZWlsKCksIDIp
OworICAgIAorICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0wLjEpLmNlaWwoKSwgMCk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoLTAuNSkuY2VpbCgpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdCgtMC45KS5jZWlsKCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KC0xLjAp
LmNlaWwoKSwgLTEpOworICAgIAorICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KGludE1heEZvckxh
eW91dFVuaXQpLmNlaWwoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7CisgICAgQVNTRVJUX0VRKChM
YXlvdXRVbml0KGludE1heEZvckxheW91dFVuaXQpIC0gTGF5b3V0VW5pdCgwLjUpKS5jZWlsKCks
IGludE1heEZvckxheW91dFVuaXQpOworICAgIEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNYXhG
b3JMYXlvdXRVbml0KSAtIExheW91dFVuaXQoMSkpLmNlaWwoKSwgaW50TWF4Rm9yTGF5b3V0VW5p
dCAtIDEpOworCisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5pdCku
Y2VpbCgpLCBpbnRNaW5Gb3JMYXlvdXRVbml0KTsKK30KKworVEVTVChXZWJDb3JlTGF5b3V0VW5p
dCwgTGF5b3V0VW5pdEZsb29yKQoreworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDApLmZsb29y
KCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDAuMSkuZmxvb3IoKSwgMCk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoMC41KS5mbG9vcigpLCAwKTsKKyAgICBBU1NFUlRfRVEoTGF5
b3V0VW5pdCgwLjkpLmZsb29yKCksIDApOworICAgIEFTU0VSVF9FUShMYXlvdXRVbml0KDEuMCku
Zmxvb3IoKSwgMSk7CisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoMS4xKS5mbG9vcigpLCAxKTsK
KyAgICAKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgtMC4xKS5mbG9vcigpLCAtMSk7CisgICAg
QVNTRVJUX0VRKExheW91dFVuaXQoLTAuNSkuZmxvb3IoKSwgLTEpOworICAgIEFTU0VSVF9FUShM
YXlvdXRVbml0KC0wLjkpLmZsb29yKCksIC0xKTsKKyAgICBBU1NFUlRfRVEoTGF5b3V0VW5pdCgt
MS4wKS5mbG9vcigpLCAtMSk7CisgICAgCisgICAgQVNTRVJUX0VRKExheW91dFVuaXQoaW50TWF4
Rm9yTGF5b3V0VW5pdCkuZmxvb3IoKSwgaW50TWF4Rm9yTGF5b3V0VW5pdCk7CisKKyAgICBBU1NF
UlRfRVEoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KS5mbG9vcigpLCBpbnRNaW5Gb3JM
YXlvdXRVbml0KTsKKyAgICBBU1NFUlRfRVEoKExheW91dFVuaXQoaW50TWluRm9yTGF5b3V0VW5p
dCkgKyBMYXlvdXRVbml0KDAuNSkpLmZsb29yKCksIGludE1pbkZvckxheW91dFVuaXQpOworICAg
IEFTU0VSVF9FUSgoTGF5b3V0VW5pdChpbnRNaW5Gb3JMYXlvdXRVbml0KSArIExheW91dFVuaXQo
MSkpLmZsb29yKCksIGludE1pbkZvckxheW91dFVuaXQgKyAxKTsKK30KKworVEVTVChXZWJDb3Jl
TGF5b3V0VW5pdCwgTGF5b3V0VW5pdFBpeGVsU25hcHBpbmcpCit7CisgICAgZm9yIChpbnQgaSA9
IC0xMDAwMDA7IGkgPD0gMTAwMDAwOyArK2kpIHsKKyAgICAgICAgQVNTRVJUX0VRKHJvdW5kVG9E
ZXZpY2VQaXhlbChMYXlvdXRVbml0KGkpLCAxKSwgaSk7CisgICAgICAgIEFTU0VSVF9FUShyb3Vu
ZFRvRGV2aWNlUGl4ZWwoTGF5b3V0VW5pdChpKSwgMiksIGkpOworICAgICAgICBBU1NFUlRfRVEo
cm91bmRUb0RldmljZVBpeGVsKExheW91dFVuaXQoaSksIDMpLCBpKTsKKyAgICB9CisKKyAgICBm
b3IgKGZsb2F0IGkgPSAtMTAwMDA7IGkgPCAwOyBpID0gaSArIDAuNSkKKyAgICAgICAgQVNTRVJU
X0ZMT0FUX0VRKHJvdW5kVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0KGkpLCAyKSwgaSk7CisKKyAg
ICBmb3IgKGZsb2F0IGkgPSAtMTAwMDAuMjU7IGkgPCAwOyBpID0gaSArIDAuNSkKKyAgICAgICAg
QVNTRVJUX0ZMT0FUX0VRKHJvdW5kVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0KGkpLCAyKSwgaSAr
IDAuMjUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>