<?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>189484</bug_id>
          
          <creation_ts>2018-09-10 15:20:51 -0700</creation_ts>
          <short_desc>[WHLSL] Add the test shader type</short_desc>
          <delta_ts>2018-10-13 14:34:37 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188641</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Denney">tdenney</reporter>
          <assigned_to name="Thomas Denney">tdenney</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1458257</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-10 15:20:51 -0700</bug_when>
    <thetext>[WHLSL] Add the test shader type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458276</commentid>
    <comment_count>1</comment_count>
      <attachid>349342</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-10 15:48:09 -0700</bug_when>
    <thetext>Created attachment 349342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458335</commentid>
    <comment_count>2</comment_count>
      <attachid>349342</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 17:31:31 -0700</bug_when>
    <thetext>Comment on attachment 349342
Patch

Clearing flags on attachment: 349342

Committed r235875: &lt;https://trac.webkit.org/changeset/235875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458336</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 17:31:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458338</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-10 17:33:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/44324462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468813</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 14:34:37 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/37</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349342</attachid>
            <date>2018-09-10 15:48:09 -0700</date>
            <delta_ts>2018-09-10 17:31:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189484-20180910154808.patch</filename>
            <type>text/plain</type>
            <size>126086</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzUzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2RmYzE1NzRjMjUyZjRjZTQ4ODUyYmNlNThkYjdkZmZm
OWVlMzBmOS4uODRkZDU0M2M2YTE3YzZhZjQ2Yjc1ZmQ5NmRjMjZiNTg0OTJkMzQwYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE4LTA5LTEwICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBBZGQgdGhlIHRlc3Qgc2hhZGVyIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTQ4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGFyZSBub3cgcHJlY2VkZWVkIGJ5
IHRoZSAndGVzdCcga2V5d29yZCBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQKKyAgICAgICAgYXMg
ZW50cnkgcG9pbnRzLCBpbiB0aGUgc2FtZSB3YXkgYXMgdmVydGV4IGFuZCBmcmFnbWVudCBzaGFk
ZXJzLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrZXIuanM6
CisgICAgICAgIChMYXRlQ2hlY2tlci5wcm90b3R5cGUuX2NoZWNrU2hhZGVyVHlwZSk6IEFsbG93
IHRlc3RzIHRvIHJldHVybiBhbnkKKyAgICAgICAgdHlwZSwgYXMgc29tZSBjdXJyZW50bHkgcmV0
dXJuIHZvaWQvcG9pbnRlciB0eXBlcy4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9QYXJzZS5qczoKKyAgICAgICAgKHBhcnNlRnVuY0RlY2wpOiBBZGQgdGhlIHRlc3Qga2V5d29y
ZC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOiBQcmVwZW5kICd0
ZXN0JyB0byBldmVyeSBzaW5nbGUgdGVzdC4KKwogMjAxOC0wOS0xMCAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIENCT1IgY29kZXJzIHNob3VsZCBvbmx5
IGJlIGNvbXBpbGVkIGlmIFdlYkF1dGhOIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTGF0ZUNoZWNrZXIuanMKaW5kZXggNWQxZWY5NWEyMzAyYjJkNmZkYjllMDMw
ZWFiMzJlNmE3MGQ3NjZkZS4uZWI1ZWU2OTY5YzFkOTMzNjNhZTE1NjVjMTdkY2NjMGFhYjBhMWJj
MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrZXIu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrZXIuanMKQEAg
LTQxLDkgKzQxLDE0IEBAIGNsYXNzIExhdGVDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAg
ICAgICAgICBpZiAoIXR5cGUuaXNQcmltaXRpdmUpCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiU2hhZGVyIHNpZ25hdHVyZSBj
YW5ub3QgaW5jbHVkZSBub24tcHJpbWl0aXZlIHR5cGU6ICIgKyB0eXBlKTsKICAgICAgICAgfQot
ICAgICAgICBhc3NlcnRQcmltaXRpdmUobm9kZS5yZXR1cm5UeXBlKTsKLSAgICAgICAgaWYgKCEo
bm9kZS5yZXR1cm5UeXBlLnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKQotICAgICAg
ICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiVmVy
dGV4IHNoYWRlciAiICsgbm9kZS5uYW1lICsgIiBtdXN0IHJldHVybiBhIHN0cnVjdC4iKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChub2RlLnNoYWRlclR5cGUgPT0gInZlcnRleCIgfHwgbm9kZS5z
aGFkZXJUeXBlID09ICJmcmFnbWVudCIpIHsKKyAgICAgICAgICAgIGFzc2VydFByaW1pdGl2ZShu
b2RlLnJldHVyblR5cGUpOworICAgICAgICAgICAgLy8gRklYTUU6IEZyYWdtZW50IHNoYWRlcnMg
c2hvdWxkbid0IGhhdmUgdGhpcyByZXN0cmljdGlvbjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTM4NworICAgICAgICAgICAgaWYgKCEobm9kZS5yZXR1cm5UeXBl
LnVuaWZ5Tm9kZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlNoYWRlciAiICsgbm9k
ZS5uYW1lICsgIiBtdXN0IHJldHVybiBhIHN0cnVjdC4iKTsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCiAgICAgICAgIHN3aXRjaCAobm9kZS5zaGFkZXJUeXBlKSB7CiAgICAgICAgIGNhc2UgInZl
cnRleCI6CiAgICAgICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2Ygbm9kZS5wYXJhbWV0ZXJz
KSB7CkBAIC02NSw2ICs3MCw4IEBAIGNsYXNzIExhdGVDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgInRlc3QiOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBzaGFkZXIgdHlwZTogIiArIG5vZGUu
c2hhZGVyVHlwZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2Uu
anMKaW5kZXggNGZiODQ5ZDBjZGYwZDlkYTA5MGYxYzMwMTMxMTI4YjQxMzUxYjlmMS4uN2QxMzgx
ZjJlM2M1YTMwYWQxZTNkOTdmNjIzNTQ3YmNlOGIwNDVlNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUGFyc2UuanMKQEAgLTExNzEsNyArMTE3MSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgICAgIG5hbWUgPSAib3BlcmF0b3IgY2FzdCI7CiAgICAgICAgICAgICBpc0Nhc3QgPSB0cnVl
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHRyeUNvbnN1bWUo
InZlcnRleCIsICJmcmFnbWVudCIpOworICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHRyeUNvbnN1
bWUoInZlcnRleCIsICJmcmFnbWVudCIsICJ0ZXN0Iik7CiAgICAgICAgICAgICByZXR1cm5UeXBl
ID0gcGFyc2VUeXBlKCk7CiAgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCmluZGV4IDFkYTlhZGZkZGZmMTZmODliOTI1NjkwNDg3
ZDg3NzFmOWEyOGJiNjUuLjBmNDQ1YjZkOTg2NzYzNjA5NzFiODk1YTNjN2Q0Y2VjMGJhN2Q5YWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtMzMxLDIyICszMzEsMjIg
QEAgdGVzdHMgPSBuZXcgUHJveHkoe30sIHsKIAogdGVzdHMudGVybmFyeUV4cHJlc3Npb24gPSBm
dW5jdGlvbigpIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28o
aW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIHggPCAzID8gNCA6IDU7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGJhcihpbnQg
eCkKKyAgICAgICAgdGVzdCBpbnQgYmFyKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICBp
bnQgeSA9IDE7CiAgICAgICAgICAgICBpbnQgeiA9IDI7CiAgICAgICAgICAgICAoeCA8IDMgPyB5
IDogeikgPSA3OwogICAgICAgICAgICAgcmV0dXJuIHk7CiAgICAgICAgIH0KLSAgICAgICAgaW50
IGJheihpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgYmF6KGludCB4KQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4geCA8IDEwID8gMTEgOiB4IDwgMTIgPyAxNCA6IDE1OwogICAgICAgICB9
Ci0gICAgICAgIGludCBxdXV4KGludCB4KQorICAgICAgICB0ZXN0IGludCBxdXV4KGludCB4KQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gMyA8IDQgPyB4IDogNTsKICAgICAgICAgfQpA
QCAtNDE1LDY1ICs0MTUsNjUgQEAgdGVzdHMudGVybmFyeUV4cHJlc3Npb25Jc0xWYWx1ZSA9IGZ1
bmN0aW9uKCkgewogfQogCiB0ZXN0cy5saXRlcmFsQm9vbCA9IGZ1bmN0aW9uKCkgewotICAgIGxl
dCBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0iKTsKKyAgICBs
ZXQgcHJvZ3JhbSA9IGRvUHJlcCgidGVzdCBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0iKTsK
ICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSks
IHRydWUpOwogfQogCiB0ZXN0cy5pZGVudGl0eUJvb2wgPSBmdW5jdGlvbigpIHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28oYm9vbCB4KSB7IHJldHVybiB4OyB9Iik7CisgICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoInRlc3QgYm9vbCBmb28oYm9vbCB4KSB7IHJldHVybiB4OyB9
Iik7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VCb29sKHByb2dyYW0sIHRydWUpXSksIHRydWUpOwogICAgIGNoZWNrQm9vbChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChwcm9ncmFtLCBmYWxzZSld
KSwgZmFsc2UpOwogfQogCiB0ZXN0cy5pbnRTaW1wbGVNYXRoID0gZnVuY3Rpb24oKSB7Ci0gICAg
bGV0IHByb2dyYW0gPSBkb1ByZXAoImludCBmb28oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICsg
eTsgfSIpOworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJ0ZXN0IGludCBmb28oaW50IHgsIGlu
dCB5KSB7IHJldHVybiB4ICsgeTsgfSIpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJvZ3Jh
bSwgNSldKSwgMTIpOwotICAgIHByb2dyYW0gPSBkb1ByZXAoImludCBmb28oaW50IHgsIGludCB5
KSB7IHJldHVybiB4IC0geTsgfSIpOworICAgIHByb2dyYW0gPSBkb1ByZXAoInRlc3QgaW50IGZv
byhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggLSB5OyB9Iik7CiAgICAgY2hlY2tJbnQocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCA3KSwgbWFr
ZUludChwcm9ncmFtLCA1KV0pLCAyKTsKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDUpLCBtYWtlSW50KHByb2dyYW0s
IDcpXSksIC0yKTsKLSAgICBwcm9ncmFtID0gZG9QcmVwKCJpbnQgZm9vKGludCB4LCBpbnQgeSkg
eyByZXR1cm4geCAqIHk7IH0iKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ0ZXN0IGludCBmb28o
aW50IHgsIGludCB5KSB7IHJldHVybiB4ICogeTsgfSIpOwogICAgIGNoZWNrSW50KHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJ
bnQocHJvZ3JhbSwgNSldKSwgMzUpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJvZ3JhbSwg
LTUpXSksIC0zNSk7Ci0gICAgcHJvZ3JhbSA9IGRvUHJlcCgiaW50IGZvbyhpbnQgeCwgaW50IHkp
IHsgcmV0dXJuIHggLyB5OyB9Iik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcCgidGVzdCBpbnQgZm9v
KGludCB4LCBpbnQgeSkgeyByZXR1cm4geCAvIHk7IH0iKTsKICAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDcpLCBtYWtl
SW50KHByb2dyYW0sIDIpXSksIDMpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJvZ3JhbSwg
LTIpXSksIC0zKTsKIH0KIAogdGVzdHMudWludFNpbXBsZU1hdGggPSBmdW5jdGlvbigpIHsKLSAg
ICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJu
IHggKyB5OyB9Iik7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoInRlc3QgdWludCBmb28odWlu
dCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKyB5OyB9Iik7CiAgICAgY2hlY2tVaW50KHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDcpLCBtYWtl
VWludChwcm9ncmFtLCA1KV0pLCAxMik7Ci0gICAgcHJvZ3JhbSA9IGRvUHJlcCgidWludCBmb28o
dWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggLSB5OyB9Iik7CisgICAgcHJvZ3JhbSA9IGRvUHJl
cCgidGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCAtIHk7IH0iKTsKICAg
ICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQocHJvZ3JhbSwgNyksIG1ha2VVaW50KHByb2dyYW0sIDUpXSksIDIpOwogICAgIGNoZWNrVWlu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFt
LCA1KSwgbWFrZVVpbnQocHJvZ3JhbSwgNyldKSwgNDI5NDk2NzI5NCk7Ci0gICAgcHJvZ3JhbSA9
IGRvUHJlcCgidWludCBmb28odWludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggKiB5OyB9Iik7Cisg
ICAgcHJvZ3JhbSA9IGRvUHJlcCgidGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1
cm4geCAqIHk7IH0iKTsKICAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgNyksIG1ha2VVaW50KHByb2dyYW0sIDUpXSks
IDM1KTsKLSAgICBwcm9ncmFtID0gZG9QcmVwKCJ1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeyBy
ZXR1cm4geCAvIHk7IH0iKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ0ZXN0IHVpbnQgZm9vKHVp
bnQgeCwgdWludCB5KSB7IHJldHVybiB4IC8geTsgfSIpOwogICAgIGNoZWNrVWludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCA3KSwgbWFr
ZVVpbnQocHJvZ3JhbSwgMildKSwgMyk7CiB9CiAKIHRlc3RzLnVjaGFyU2ltcGxlTWF0aCA9IGZ1
bmN0aW9uKCkgewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJ1Y2hhciBmb28odWNoYXIgeCwg
dWNoYXIgeSkgeyByZXR1cm4geCArIHk7IH0iKTsKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgi
dGVzdCB1Y2hhciBmb28odWNoYXIgeCwgdWNoYXIgeSkgeyByZXR1cm4geCArIHk7IH0iKTsKICAg
ICBjaGVja1VjaGFyKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VV
Y2hhcihwcm9ncmFtLCA3KSwgbWFrZVVjaGFyKHByb2dyYW0sIDUpXSksIDEyKTsKLSAgICBwcm9n
cmFtID0gZG9QcmVwKCJ1Y2hhciBmb28odWNoYXIgeCwgdWNoYXIgeSkgeyByZXR1cm4geCAtIHk7
IH0iKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ0ZXN0IHVjaGFyIGZvbyh1Y2hhciB4LCB1Y2hh
ciB5KSB7IHJldHVybiB4IC0geTsgfSIpOwogICAgIGNoZWNrVWNoYXIocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVjaGFyKHByb2dyYW0sIDcpLCBtYWtlVWNoYXIo
cHJvZ3JhbSwgNSldKSwgMik7CiAgICAgY2hlY2tVY2hhcihwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlVWNoYXIocHJvZ3JhbSwgNSksIG1ha2VVY2hhcihwcm9ncmFt
LCA3KV0pLCAyNTQpOwotICAgIHByb2dyYW0gPSBkb1ByZXAoInVjaGFyIGZvbyh1Y2hhciB4LCB1
Y2hhciB5KSB7IHJldHVybiB4ICogeTsgfSIpOworICAgIHByb2dyYW0gPSBkb1ByZXAoInRlc3Qg
dWNoYXIgZm9vKHVjaGFyIHgsIHVjaGFyIHkpIHsgcmV0dXJuIHggKiB5OyB9Iik7CiAgICAgY2hl
Y2tVY2hhcihwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWNoYXIo
cHJvZ3JhbSwgNyksIG1ha2VVY2hhcihwcm9ncmFtLCA1KV0pLCAzNSk7Ci0gICAgcHJvZ3JhbSA9
IGRvUHJlcCgidWNoYXIgZm9vKHVjaGFyIHgsIHVjaGFyIHkpIHsgcmV0dXJuIHggLyB5OyB9Iik7
CisgICAgcHJvZ3JhbSA9IGRvUHJlcCgidGVzdCB1Y2hhciBmb28odWNoYXIgeCwgdWNoYXIgeSkg
eyByZXR1cm4geCAvIHk7IH0iKTsKICAgICBjaGVja1VjaGFyKHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVY2hhcihwcm9ncmFtLCA3KSwgbWFrZVVjaGFyKHByb2dy
YW0sIDIpXSksIDMpOwogfQogCiB0ZXN0cy5lcXVhbGl0eSA9IGZ1bmN0aW9uKCkgewotICAgIGxl
dCBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZvbyh1aW50IHgsIHVpbnQgeSkgeyByZXR1cm4geCA9
PSB5OyB9Iik7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoInRlc3QgYm9vbCBmb28odWludCB4
LCB1aW50IHkpIHsgcmV0dXJuIHggPT0geTsgfSIpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCA3KSwgbWFrZVVp
bnQocHJvZ3JhbSwgNSldKSwgZmFsc2UpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCA3KSwgbWFrZVVpbnQocHJv
Z3JhbSwgNyldKSwgdHJ1ZSk7Ci0gICAgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28odWNoYXIg
eCwgdWNoYXIgeSkgeyByZXR1cm4geCA9PSB5OyB9Iik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcCgi
dGVzdCBib29sIGZvbyh1Y2hhciB4LCB1Y2hhciB5KSB7IHJldHVybiB4ID09IHk7IH0iKTsKICAg
ICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVj
aGFyKHByb2dyYW0sIDcpLCBtYWtlVWNoYXIocHJvZ3JhbSwgNSldKSwgZmFsc2UpOwogICAgIGNo
ZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWNoYXIo
cHJvZ3JhbSwgNyksIG1ha2VVY2hhcihwcm9ncmFtLCA3KV0pLCB0cnVlKTsKLSAgICBwcm9ncmFt
ID0gZG9QcmVwKCJib29sIGZvbyhpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggPT0geTsgfSIpOwor
ICAgIHByb2dyYW0gPSBkb1ByZXAoInRlc3QgYm9vbCBmb28oaW50IHgsIGludCB5KSB7IHJldHVy
biB4ID09IHk7IH0iKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCA3KSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCBm
YWxzZSk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJvZ3JhbSwgNyldKSwgdHJ1ZSk7Ci0g
ICAgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28oYm9vbCB4LCBib29sIHkpIHsgcmV0dXJuIHgg
PT0geTsgfSIpOworICAgIHByb2dyYW0gPSBkb1ByZXAoInRlc3QgYm9vbCBmb28oYm9vbCB4LCBi
b29sIHkpIHsgcmV0dXJuIHggPT0geTsgfSIpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChwcm9ncmFtLCBmYWxzZSksIG1ha2VC
b29sKHByb2dyYW0sIHRydWUpXSksIGZhbHNlKTsKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wocHJvZ3JhbSwgdHJ1ZSksIG1ha2VC
b29sKHByb2dyYW0sIGZhbHNlKV0pLCBmYWxzZSk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VCb29sKHByb2dyYW0sIGZhbHNlKSwgbWFr
ZUJvb2wocHJvZ3JhbSwgZmFsc2UpXSksIHRydWUpOwpAQCAtNDgyLDIyICs0ODIsMjIgQEAgdGVz
dHMuZXF1YWxpdHkgPSBmdW5jdGlvbigpIHsKIAogdGVzdHMubG9naWNhbE5lZ2F0aW9uID0gZnVu
Y3Rpb24oKQogewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKCJib29sIGZvbyhib29sIHgpIHsg
cmV0dXJuICF4OyB9Iik7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoInRlc3QgYm9vbCBmb28o
Ym9vbCB4KSB7IHJldHVybiAheDsgfSIpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlQm9vbChwcm9ncmFtLCB0cnVlKV0pLCBmYWxzZSk7
CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VCb29sKHByb2dyYW0sIGZhbHNlKV0pLCB0cnVlKTsKIH0KIAogdGVzdHMubm90RXF1YWxpdHkg
PSBmdW5jdGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28odWludCB4
LCB1aW50IHkpIHsgcmV0dXJuIHggIT0geTsgfSIpOworICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KCJ0ZXN0IGJvb2wgZm9vKHVpbnQgeCwgdWludCB5KSB7IHJldHVybiB4ICE9IHk7IH0iKTsKICAg
ICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQocHJvZ3JhbSwgNyksIG1ha2VVaW50KHByb2dyYW0sIDUpXSksIHRydWUpOwogICAgIGNoZWNr
Qm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9n
cmFtLCA3KSwgbWFrZVVpbnQocHJvZ3JhbSwgNyldKSwgZmFsc2UpOwotICAgIHByb2dyYW0gPSBk
b1ByZXAoImJvb2wgZm9vKHVjaGFyIHgsIHVjaGFyIHkpIHsgcmV0dXJuIHggIT0geTsgfSIpOwor
ICAgIHByb2dyYW0gPSBkb1ByZXAoInRlc3QgYm9vbCBmb28odWNoYXIgeCwgdWNoYXIgeSkgeyBy
ZXR1cm4geCAhPSB5OyB9Iik7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW21ha2VVY2hhcihwcm9ncmFtLCA3KSwgbWFrZVVjaGFyKHByb2dyYW0s
IDUpXSksIHRydWUpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlVWNoYXIocHJvZ3JhbSwgNyksIG1ha2VVY2hhcihwcm9ncmFtLCA3KV0p
LCBmYWxzZSk7Ci0gICAgcHJvZ3JhbSA9IGRvUHJlcCgiYm9vbCBmb28oaW50IHgsIGludCB5KSB7
IHJldHVybiB4ICE9IHk7IH0iKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ0ZXN0IGJvb2wgZm9v
KGludCB4LCBpbnQgeSkgeyByZXR1cm4geCAhPSB5OyB9Iik7CiAgICAgY2hlY2tCb29sKHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1h
a2VJbnQocHJvZ3JhbSwgNSldKSwgdHJ1ZSk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyksIG1ha2VJbnQocHJv
Z3JhbSwgNyldKSwgZmFsc2UpOwotICAgIHByb2dyYW0gPSBkb1ByZXAoImJvb2wgZm9vKGJvb2wg
eCwgYm9vbCB5KSB7IHJldHVybiB4ICE9IHk7IH0iKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ0
ZXN0IGJvb2wgZm9vKGJvb2wgeCwgYm9vbCB5KSB7IHJldHVybiB4ICE9IHk7IH0iKTsKICAgICBj
aGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wo
cHJvZ3JhbSwgZmFsc2UpLCBtYWtlQm9vbChwcm9ncmFtLCB0cnVlKV0pLCB0cnVlKTsKICAgICBj
aGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wo
cHJvZ3JhbSwgdHJ1ZSksIG1ha2VCb29sKHByb2dyYW0sIGZhbHNlKV0pLCB0cnVlKTsKICAgICBj
aGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUJvb2wo
cHJvZ3JhbSwgZmFsc2UpLCBtYWtlQm9vbChwcm9ncmFtLCBmYWxzZSldKSwgZmFsc2UpOwpAQCAt
NTA3LDE5ICs1MDcsMTkgQEAgdGVzdHMubm90RXF1YWxpdHkgPSBmdW5jdGlvbigpIHsKIHRlc3Rz
LmVxdWFsaXR5VHlwZUZhaWx1cmUgPSBmdW5jdGlvbigpCiB7CiAgICAgY2hlY2tGYWlsKAotICAg
ICAgICAoKSA9PiBkb1ByZXAoImJvb2wgZm9vKGludCB4LCB1aW50IHkpIHsgcmV0dXJuIHggPT0g
eTsgfSIpLAorICAgICAgICAoKSA9PiBkb1ByZXAoInRlc3QgYm9vbCBmb28oaW50IHgsIHVpbnQg
eSkgeyByZXR1cm4geCA9PSB5OyB9IiksCiAgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5
cGVFcnJvciAmJiBlLm1lc3NhZ2UuaW5kZXhPZigiL2ludGVybmFsL3Rlc3Q6MSIpICE9IC0xKTsK
IH0KIAogdGVzdHMuZ2VuZXJhbE5lZ2F0aW9uID0gZnVuY3Rpb24oKQogewotICAgIGxldCBwcm9n
cmFtID0gZG9QcmVwKCJib29sIGZvbyhpbnQgeCkgeyByZXR1cm4gIXg7IH0iKTsKKyAgICBsZXQg
cHJvZ3JhbSA9IGRvUHJlcCgidGVzdCBib29sIGZvbyhpbnQgeCkgeyByZXR1cm4gIXg7IH0iKTsK
ICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFr
ZUludChwcm9ncmFtLCA3KV0pLCBmYWxzZSk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMCldKSwgdHJ1ZSk7CiB9
CiAKIHRlc3RzLmFkZDEgPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgi
aW50IGZvbyhpbnQgeCkgeyByZXR1cm4geCArIDE7IH0iKTsKKyAgICBsZXQgcHJvZ3JhbSA9IGRv
UHJlcCgidGVzdCBpbnQgZm9vKGludCB4KSB7IHJldHVybiB4ICsgMTsgfSIpOwogICAgIGNoZWNr
SW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3Jh
bSwgNDIpXSksIDQzKTsKIH0KIApAQCAtNTMzLDcgKzUzMyw3IEBAIHRlc3RzLm5hbWVSZXNvbHV0
aW9uRmFpbHVyZSA9IGZ1bmN0aW9uKCkKIHRlc3RzLnNpbXBsZVZhcmlhYmxlID0gZnVuY3Rpb24o
KQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgcCkK
KyAgICAgICAgdGVzdCBpbnQgZm9vKGludCBwKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQg
cmVzdWx0ID0gcDsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01NDUsNyArNTQ1LDcg
QEAgdGVzdHMuc2ltcGxlVmFyaWFibGUgPSBmdW5jdGlvbigpCiB0ZXN0cy5zaW1wbGVBc3NpZ25t
ZW50ID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAg
aW50IGZvbyhpbnQgcCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCBwKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpbnQgcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0ID0gcDsKQEAgLTU1OCw3
ICs1NTgsNyBAQCB0ZXN0cy5zaW1wbGVBc3NpZ25tZW50ID0gZnVuY3Rpb24oKQogdGVzdHMuc2lt
cGxlRGVmYXVsdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0g
ICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpbnQgcmVzdWx0OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU3MCw3
ICs1NzAsNyBAQCB0ZXN0cy5zaW1wbGVEZWZhdWx0ID0gZnVuY3Rpb24oKQogdGVzdHMuc2ltcGxl
RGVyZWZlcmVuY2UgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAot
ICAgICAgICBpbnQgZm9vKGRldmljZSBpbnQqIHApCisgICAgICAgIHRlc3QgaW50IGZvbyhkZXZp
Y2UgaW50KiBwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnA7CiAgICAgICAgIH0K
QEAgLTU4Myw3ICs1ODMsNyBAQCB0ZXN0cy5zaW1wbGVEZXJlZmVyZW5jZSA9IGZ1bmN0aW9uKCkK
IHRlc3RzLmRlcmVmZXJlbmNlU3RvcmUgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0g
PSBkb1ByZXAoYAotICAgICAgICB2b2lkIGZvbyhkZXZpY2UgaW50KiBwKQorICAgICAgICB0ZXN0
IHZvaWQgZm9vKGRldmljZSBpbnQqIHApCiAgICAgICAgIHsKICAgICAgICAgICAgICpwID0gNTI7
CiAgICAgICAgIH0KQEAgLTU5OCw3ICs1OTgsNyBAQCB0ZXN0cy5kZXJlZmVyZW5jZVN0b3JlID0g
ZnVuY3Rpb24oKQogdGVzdHMuc2ltcGxlTWFrZVB0ciA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQg
cHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIHRocmVhZCBpbnQqIGZvbygpCisgICAgICAgIHRl
c3QgdGhyZWFkIGludCogZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHggPSA0MjsK
ICAgICAgICAgICAgIHJldHVybiAmeDsKQEAgLTYxOSw3ICs2MTksNyBAQCB0ZXN0cy5zaW1wbGVN
YWtlUHRyID0gZnVuY3Rpb24oKQogdGVzdHMudGhyZWFkQXJyYXlMb2FkID0gZnVuY3Rpb24oKQog
ewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyh0aHJlYWQgaW50
W10gYXJyYXkpCisgICAgICAgIHRlc3QgaW50IGZvbyh0aHJlYWQgaW50W10gYXJyYXkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBhcnJheVswdV07CiAgICAgICAgIH0KQEAgLTYzMyw3
ICs2MzMsNyBAQCB0ZXN0cy50aHJlYWRBcnJheUxvYWQgPSBmdW5jdGlvbigpCiB0ZXN0cy50aHJl
YWRBcnJheUxvYWRJbnRMaXRlcmFsID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyh0aHJlYWQgaW50W10gYXJyYXkpCisgICAgICAgIHRl
c3QgaW50IGZvbyh0aHJlYWQgaW50W10gYXJyYXkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBhcnJheVswXTsKICAgICAgICAgfQpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHRlc3RzLnRocmVh
ZEFycmF5TG9hZEludExpdGVyYWwgPSBmdW5jdGlvbigpCiB0ZXN0cy5kZXZpY2VBcnJheUxvYWQg
PSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQg
Zm9vKGRldmljZSBpbnRbXSBhcnJheSkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGRldmljZSBpbnRb
XSBhcnJheSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFycmF5WzB1XTsKICAgICAg
ICAgfQpAQCAtNjYxLDcgKzY2MSw3IEBAIHRlc3RzLmRldmljZUFycmF5TG9hZCA9IGZ1bmN0aW9u
KCkKIHRlc3RzLnRocmVhZEFycmF5U3RvcmUgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dy
YW0gPSBkb1ByZXAoYAotICAgICAgICB2b2lkIGZvbyh0aHJlYWQgaW50W10gYXJyYXksIGludCB2
YWx1ZSkKKyAgICAgICAgdGVzdCB2b2lkIGZvbyh0aHJlYWQgaW50W10gYXJyYXksIGludCB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXJyYXlbMHVdID0gdmFsdWU7CiAgICAgICAgIH0K
QEAgLTY4Miw3ICs2ODIsNyBAQCB0ZXN0cy50aHJlYWRBcnJheVN0b3JlID0gZnVuY3Rpb24oKQog
dGVzdHMuZGV2aWNlQXJyYXlTdG9yZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9
IGRvUHJlcChgCi0gICAgICAgIHZvaWQgZm9vKGRldmljZSBpbnRbXSBhcnJheSwgaW50IHZhbHVl
KQorICAgICAgICB0ZXN0IHZvaWQgZm9vKGRldmljZSBpbnRbXSBhcnJheSwgaW50IHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBhcnJheVswdV0gPSB2YWx1ZTsKICAgICAgICAgfQpAQCAt
NzAzLDcgKzcwMyw3IEBAIHRlc3RzLmRldmljZUFycmF5U3RvcmUgPSBmdW5jdGlvbigpCiB0ZXN0
cy5kZXZpY2VBcnJheVN0b3JlSW50TGl0ZXJhbCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJv
Z3JhbSA9IGRvUHJlcChgCi0gICAgICAgIHZvaWQgZm9vKGRldmljZSBpbnRbXSBhcnJheSwgaW50
IHZhbHVlKQorICAgICAgICB0ZXN0IHZvaWQgZm9vKGRldmljZSBpbnRbXSBhcnJheSwgaW50IHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhcnJheVswXSA9IHZhbHVlOwogICAgICAgICB9
CkBAIC04NDEsNyArODQxLDcgQEAgdGVzdHMuc2ltcGxlU3RydWN0ID0gZnVuY3Rpb24oKQogICAg
ICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICBpbnQgeTsKICAgICAgICAgfQotICAgICAgICBG
b28gZm9vKEZvbyBmb28pCisgICAgICAgIHRlc3QgRm9vIGZvbyhGb28gZm9vKQogICAgICAgICB7
CiAgICAgICAgICAgICBGb28gcmVzdWx0OwogICAgICAgICAgICAgcmVzdWx0LnggPSBmb28ueTsK
QEAgLTg4OCw3ICs4ODgsNyBAQCB0ZXN0cy5zdG9yZU51bGwgPSBmdW5jdGlvbigpCiB0ZXN0cy5y
ZXR1cm5OdWxsID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAg
ICAgICAgdGhyZWFkIGludCogZm9vKCkgeyByZXR1cm4gbnVsbDsgfQorICAgICAgICB0ZXN0IHRo
cmVhZCBpbnQqIGZvbygpIHsgcmV0dXJuIG51bGw7IH0KICAgICBgKTsKICAgICBsZXQgcmVzdWx0
ID0gY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSk7CiAgICAgaWYgKCFyZXN1bHQudHlw
ZS5pc1B0cikKQEAgLTkwMiw3ICs5MDIsNyBAQCB0ZXN0cy5yZXR1cm5OdWxsID0gZnVuY3Rpb24o
KQogdGVzdHMuZGVyZWZlcmVuY2VEZWZhdWx0TnVsbCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQg
cHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBm
b28oKQogICAgICAgICB7CiAgICAgICAgICAgICB0aHJlYWQgaW50KiBwOwogICAgICAgICAgICAg
cmV0dXJuICpwOwpAQCAtOTE2LDcgKzkxNiw3IEBAIHRlc3RzLmRlcmVmZXJlbmNlRGVmYXVsdE51
bGwgPSBmdW5jdGlvbigpCiB0ZXN0cy5kZWZhdWx0SW5pdGlhbGl6ZWROdWxsID0gZnVuY3Rpb24o
KQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbygpCisgICAg
ICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRocmVhZCBpbnQqIHAg
PSBudWxsOzsKICAgICAgICAgICAgIHJldHVybiAqcDsKQEAgLTkzNCw3ICs5MzQsNyBAQCB0ZXN0
cy5wYXNzTnVsbFRvUHRyTW9ub21vcnBoaWMgPSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiAqcHRyOwogICAgICAgICB9Ci0gICAgICAgIGludCBiYXIoKQorICAgICAg
ICB0ZXN0IGludCBiYXIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZm9vKG51bGwp
OwogICAgICAgICB9CkBAIC05NjYsNyArOTY2LDcgQEAgdGVzdHMuc3RvcmVOdWxsQXJyYXlSZWYg
PSBmdW5jdGlvbigpCiB0ZXN0cy5yZXR1cm5OdWxsQXJyYXlSZWYgPSBmdW5jdGlvbigpCiB7CiAg
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICB0aHJlYWQgaW50W10gZm9vKCkgeyBy
ZXR1cm4gbnVsbDsgfQorICAgICAgICB0ZXN0IHRocmVhZCBpbnRbXSBmb28oKSB7IHJldHVybiBu
dWxsOyB9CiAgICAgYCk7CiAgICAgbGV0IHJlc3VsdCA9IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pOwogICAgIGlmICghcmVzdWx0LnR5cGUuaXNBcnJheVJlZikKQEAgLTk4MCw3ICs5
ODAsNyBAQCB0ZXN0cy5yZXR1cm5OdWxsQXJyYXlSZWYgPSBmdW5jdGlvbigpCiB0ZXN0cy5kZXJl
ZmVyZW5jZURlZmF1bHROdWxsQXJyYXlSZWYgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dy
YW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkK
ICAgICAgICAgewogICAgICAgICAgICAgdGhyZWFkIGludFtdIHA7CiAgICAgICAgICAgICByZXR1
cm4gcFswdV07CkBAIC05OTQsNyArOTk0LDcgQEAgdGVzdHMuZGVyZWZlcmVuY2VEZWZhdWx0TnVs
bEFycmF5UmVmID0gZnVuY3Rpb24oKQogdGVzdHMuZGVmYXVsdEluaXRpYWxpemVkTnVsbEFycmF5
UmVmID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAg
aW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHRocmVhZCBpbnRbXSBwID0gbnVsbDsKICAgICAgICAgICAgIHJldHVybiBwWzB1XTsKQEAgLTEw
MDgsNyArMTAwOCw3IEBAIHRlc3RzLmRlZmF1bHRJbml0aWFsaXplZE51bGxBcnJheVJlZiA9IGZ1
bmN0aW9uKCkKIHRlc3RzLmRlZmF1bHRJbml0aWFsaXplZE51bGxBcnJheVJlZkludExpdGVyYWwg
PSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQg
Zm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgdGhy
ZWFkIGludFtdIHAgPSBudWxsOwogICAgICAgICAgICAgcmV0dXJuIHBbMF07CkBAIC0xMDI2LDcg
KzEwMjYsNyBAQCB0ZXN0cy5wYXNzTnVsbFRvUHRyTW9ub21vcnBoaWNBcnJheVJlZiA9IGZ1bmN0
aW9uKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHB0clswdV07CiAgICAgICAgIH0K
LSAgICAgICAgaW50IGJhcigpCisgICAgICAgIHRlc3QgaW50IGJhcigpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBmb28obnVsbCk7CiAgICAgICAgIH0KQEAgLTEwMzgsMTMgKzEwMzgs
MTMgQEAgdGVzdHMucGFzc051bGxUb1B0ck1vbm9tb3JwaGljQXJyYXlSZWYgPSBmdW5jdGlvbigp
CiAKIHRlc3RzLnJldHVybkludExpdGVyYWxVaW50ID0gZnVuY3Rpb24oKQogewotICAgIGxldCBw
cm9ncmFtID0gZG9QcmVwKCJ1aW50IGZvbygpIHsgcmV0dXJuIDQyOyB9Iik7CisgICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoInRlc3QgdWludCBmb28oKSB7IHJldHVybiA0MjsgfSIpOwogICAgIGNo
ZWNrTnVtYmVyKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA0Mik7
CiB9CiAKIHRlc3RzLnJldHVybkludExpdGVyYWxGbG9hdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBs
ZXQgcHJvZ3JhbSA9IGRvUHJlcCgiZmxvYXQgZm9vKCkgeyByZXR1cm4gNDI7IH0iKTsKKyAgICBs
ZXQgcHJvZ3JhbSA9IGRvUHJlcCgidGVzdCBmbG9hdCBmb28oKSB7IHJldHVybiA0MjsgfSIpOwog
ICAgIGNoZWNrTnVtYmVyKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10p
LCA0Mik7CiB9CiAKQEAgLTEwNzIsNyArMTA3Miw3IEBAIHRlc3RzLmJhZEludExpdGVyYWxGb3JG
bG9hdCA9IGZ1bmN0aW9uKCkKIHRlc3RzLmRvdWJsZU5vdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBs
ZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGJvb2wgZm9vKGJvb2wgeCkKKyAgICAgICAg
dGVzdCBib29sIGZvbyhib29sIHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAhIXg7
CiAgICAgICAgIH0KQEAgLTEwOTYsNyArMTA5Niw3IEBAIHRlc3RzLnNpbXBsZVJlY3Vyc2lvbiA9
IGZ1bmN0aW9uKCkKIHRlc3RzLnZhcmlhYmxlU2hhZG93aW5nID0gZnVuY3Rpb24oKQogewogICAg
IGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3Qg
aW50IGZvbygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludCB5OwogICAgICAgICAgICAgaW50
IHggPSA3OwpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgdGVzdHMudmFyaWFibGVTaGFkb3dpbmcgPSBm
dW5jdGlvbigpCiAgICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIDgpOwogICAgIHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBp
bnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAg
aW50IHk7CiAgICAgICAgICAgICBpbnQgeCA9IDc7CkBAIC0xMTI2LDcgKzExMjYsNyBAQCB0ZXN0
cy52YXJpYWJsZVNoYWRvd2luZyA9IGZ1bmN0aW9uKCkKIHRlc3RzLmlmU3RhdGVtZW50ID0gZnVu
Y3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhp
bnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAg
ICBpbnQgeSA9IDY7CiAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7CkBAIC0xMTQ3LDcgKzExNDcs
NyBAQCB0ZXN0cy5pZlN0YXRlbWVudCA9IGZ1bmN0aW9uKCkKIHRlc3RzLmlmRWxzZVN0YXRlbWVu
dCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGlu
dCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgewogICAg
ICAgICAgICAgaW50IHkgPSA2OwogICAgICAgICAgICAgaWYgKHggPT0gNykgewpAQCAtMTE3MCw3
ICsxMTcwLDcgQEAgdGVzdHMuaWZFbHNlU3RhdGVtZW50ID0gZnVuY3Rpb24oKQogdGVzdHMuaWZF
bHNlSWZTdGF0ZW1lbnQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAo
YAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGludCB5ID0gNjsKICAgICAgICAgICAgIGlmICh4ID09IDcp
IHsKQEAgLTExOTMsNyArMTE5Myw3IEBAIHRlc3RzLmlmRWxzZUlmU3RhdGVtZW50ID0gZnVuY3Rp
b24oKQogdGVzdHMuaWZFbHNlSWZFbHNlU3RhdGVtZW50ID0gZnVuY3Rpb24oKQogewogICAgIGxl
dCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgdGVz
dCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgeSA9IDY7CiAgICAg
ICAgICAgICBpZiAoeCA9PSA3KSB7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB0ZXN0cy5yZXR1cm5J
ZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgYCksCiAgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2Yg
V1R5cGVFcnJvcik7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9v
KGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGludCB5ID0gNjsKICAgICAgICAgICAgIGlmICh4ID09IDcpIHsKQEAgLTEyODYsNyArMTI4
Niw3IEBAIHRlc3RzLnJldHVybklmID0gZnVuY3Rpb24oKQogICAgICAgICBgKSwKICAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKICAgICBwcm9ncmFtID0gZG9QcmVwKGAK
LSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAg
ICAgICB7CiAgICAgICAgICAgICBpbnQgeSA9IDY7CiAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7
CkBAIC0xMzE5LDcgKzEzMTksNyBAQCB0ZXN0cy5yZXR1cm5JZiA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgYCksCiAgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CiAgICAgcHJv
Z3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50
IGZvbyhpbnQgeCkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHkgPSA2OwogICAgICAgICAg
ICAgaWYgKHggPT0gNykKQEAgLTEzMzMsNyArMTMzMyw3IEBAIHRlc3RzLnJldHVybklmID0gZnVu
Y3Rpb24oKQogdGVzdHMuc2ltcGxlV2hpbGUgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dy
YW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBm
b28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlICh4IDwgMTMpCiAgICAgICAg
ICAgICAgICAgeCA9IHggKiAyOwpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgdGVzdHMuaW50T3Zlcmxv
YWRSZXNvbHV0aW9uID0gZnVuY3Rpb24oKQogICAgICAgICBpbnQgZm9vKGludCkgeyByZXR1cm4g
MTsgfQogICAgICAgICBpbnQgZm9vKHVpbnQpIHsgcmV0dXJuIDI7IH0KICAgICAgICAgaW50IGZv
byhmbG9hdCkgeyByZXR1cm4gMzsgfQotICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQy
KTsgfQorICAgICAgICB0ZXN0IGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9CiAgICAgYCk7
CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbXSks
IDEpOwogfQpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgdGVzdHMuaW50T3ZlcmxvYWRSZXNvbHV0aW9u
UmV2ZXJzZU9yZGVyID0gZnVuY3Rpb24oKQogICAgICAgICBpbnQgZm9vKGZsb2F0KSB7IHJldHVy
biAzOyB9CiAgICAgICAgIGludCBmb28odWludCkgeyByZXR1cm4gMjsgfQogICAgICAgICBpbnQg
Zm9vKGludCkgeyByZXR1cm4gMTsgfQotICAgICAgICBpbnQgYmFyKCkgeyByZXR1cm4gZm9vKDQy
KTsgfQorICAgICAgICB0ZXN0IGludCBiYXIoKSB7IHJldHVybiBmb28oNDIpOyB9CiAgICAgYCk7
CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJiYXIiLCBbXSks
IDEpOwogfQpAQCAtMTM2OCw3ICsxMzY4LDcgQEAgdGVzdHMuaW50T3ZlcmxvYWRSZXNvbHV0aW9u
UmV2ZXJzZU9yZGVyID0gZnVuY3Rpb24oKQogdGVzdHMuYnJlYWsgPSBmdW5jdGlvbigpCiB7CiAg
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAg
ICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgICAgICAgICAgeCA9IHggKiAyOwpAQCAtMTM4MSw3ICsxMzgxLDcgQEAgdGVz
dHMuYnJlYWsgPSBmdW5jdGlvbigpCiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCA4KTsKICAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0s
IDEwKV0pLCAyMCk7CiAgICAgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28oaW50
IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgewogICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTQyMiw3
ICsxNDIyLDcgQEAgdGVzdHMuYnJlYWsgPSBmdW5jdGlvbigpCiAgICAgICAgIGApLAogICAgICAg
ICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIHByb2dyYW0gPSBkb1ByZXAo
YAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHRlc3QgaW50IGZvbyhp
bnQgeCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7CkBAIC0xNDM1LDcgKzE0MzUsNyBAQCB0ZXN0
cy5icmVhayA9IGZ1bmN0aW9uKCkKICAgICBgKTsKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDEpXSksIDcpOwogICAg
IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAg
ICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0NDUsNyArMTQ0
NSw3IEBAIHRlc3RzLmJyZWFrID0gZnVuY3Rpb24oKQogICAgIGApOwogICAgIGNoZWNrSW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMSld
KSwgMSk7CiAgICAgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgICAgICBpbnQgZm9vKCkKKyAg
ICAgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc7CkBAIC0xNDU1LDcg
KzE0NTUsNyBAQCB0ZXN0cy5icmVhayA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNyk7CiAgICAgY2hlY2tGYWlsKAog
ICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAg
ICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICB3aGlsZSh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2OSw3ICsx
NDY5LDcgQEAgdGVzdHMuYnJlYWsgPSBmdW5jdGlvbigpCiB0ZXN0cy5jb250aW51ZSA9IGZ1bmN0
aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28oaW50
IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgewogICAgICAgICAgICAg
d2hpbGUgKHggPCAxMCkgewogICAgICAgICAgICAgICAgIGlmICh4ID09IDgpIHsKQEAgLTE0OTcs
NyArMTQ5Nyw3IEBAIHRlc3RzLmNvbnRpbnVlID0gZnVuY3Rpb24oKQogdGVzdHMuZG9XaGlsZSA9
IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBm
b28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgewogICAgICAg
ICAgICAgaW50IHkgPSA3OwogICAgICAgICAgICAgZG8gewpAQCAtMTUxMCw3ICsxNTEwLDcgQEAg
dGVzdHMuZG9XaGlsZSA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDEpXSksIDgpOwogICAgIGNo
ZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJv
Z3JhbSwgMTEpXSksIDgpOwogICAgIHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9v
KGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGludCB5ID0gNzsKICAgICAgICAgICAgIGRvIHsKQEAgLTE1MjIsNyArMTUyMiw3IEBAIHRl
c3RzLmRvV2hpbGUgPSBmdW5jdGlvbigpCiAgICAgYCk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCAxKV0pLCA4KTsK
ICAgICBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAg
dGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc3VtID0gMDsK
ICAgICAgICAgICAgIGRvIHsKQEAgLTE1NDIsNyArMTU0Miw3IEBAIHRlc3RzLmRvV2hpbGUgPSBm
dW5jdGlvbigpCiB0ZXN0cy5mb3JMb29wID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFt
ID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9v
KGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc3VtID0gMDsKICAgICAgICAgICAg
IGludCBpOwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgdGVzdHMuZm9yTG9vcCA9IGZ1bmN0aW9uKCkK
ICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtl
SW50KHByb2dyYW0sIDQpXSksIDYpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNSldKSwgMTApOwogICAgIHByb2dy
YW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBm
b28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzdW0gPSAwOwogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4OyBpID0gaSArIDEpIHsKQEAgLTE1NjksNyArMTU2OSw3
IEBAIHRlc3RzLmZvckxvb3AgPSBmdW5jdGlvbigpCiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCA0KV0pLCA2KTsKICAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KHByb2dyYW0sIDUpXSksIDEwKTsKICAgICBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50
IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAg
ICAgICAgICBpbnQgc3VtID0gMDsKICAgICAgICAgICAgIGludCBpID0gMTAwOwpAQCAtMTU4Myw3
ICsxNTgzLDcgQEAgdGVzdHMuZm9yTG9vcCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDQpXSks
IDYpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VJbnQocHJvZ3JhbSwgNSldKSwgMTApOwogICAgIHByb2dyYW0gPSBkb1ByZXAoYAotICAg
ICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGludCBzdW0gPSAwOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB4OyBpID0gaSArIDEpIHsKQEAgLTE1OTksNyArMTU5OSw3IEBAIHRlc3RzLmZvckxvb3Ag
PSBmdW5jdGlvbigpCiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0s
ICJmb28iLCBbbWFrZUludChwcm9ncmFtLCA1KV0pLCA2KTsKICAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDEx
KTsKICAgICBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAg
ICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc3VtID0g
MDsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeDsgaSA9IGkgKyAxKSB7CkBAIC0x
NjE2LDcgKzE2MTYsNyBAQCB0ZXN0cy5mb3JMb29wID0gZnVuY3Rpb24oKQogICAgIGNoZWNrSW50
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwg
NildKSwgMTApOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyldKSwgMTApOwogICAgIHByb2dyYW0gPSBkb1ByZXAo
YAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGludCBzdW0gPSAwOwogICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IDsgaSA9IGkgKyAxKSB7CkBAIC0xNjMzLDcgKzE2MzMsNyBAQCB0ZXN0cy5mb3JMb29w
ID0gZnVuY3Rpb24oKQogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNildKSwgMTUpOwogICAgIGNoZWNrSW50KHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNyldKSwg
MjEpOwogICAgIHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAg
ICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzdW0g
PSAwOwogICAgICAgICAgICAgaW50IGkgPSAwOwpAQCAtMTY1MSw3ICsxNjUxLDcgQEAgdGVzdHMu
Zm9yTG9vcCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDE1KTsKICAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0s
IDcpXSksIDIxKTsKICAgICBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQg
eCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICBp
bnQgc3VtID0gMDsKICAgICAgICAgICAgIGludCBpID0gMDsKQEAgLTE2ODEsNyArMTY4MSw3IEBA
IHRlc3RzLmZvckxvb3AgPSBmdW5jdGlvbigpCiAgICAgICAgIGApLAogICAgICAgICAoZSkgPT4g
ZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGZvciAoIDsgOyApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gNzsKQEAg
LTE3MDQsNyArMTcwNCw3IEBAIHRlc3RzLmZvckxvb3AgPSBmdW5jdGlvbigpCiAgICAgICAgIGAp
LAogICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOwogICAgIHByb2dyYW0g
PSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28o
aW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoIDsgdHJ1ZTsgKSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDc7CkBAIC0xNzIxLDcgKzE3MjEsNyBAQCB0ZXN0cy5mb3JMb29wID0g
ZnVuY3Rpb24oKQogdGVzdHMucHJlZml4UGx1c1BsdXMgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0
IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0
IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgICsreDsKICAgICAgICAgICAg
IHJldHVybiB4OwpAQCAtMTczMyw3ICsxNzMzLDcgQEAgdGVzdHMucHJlZml4UGx1c1BsdXMgPSBm
dW5jdGlvbigpCiB0ZXN0cy5wcmVmaXhQbHVzUGx1c1Jlc3VsdCA9IGZ1bmN0aW9uKCkKIHsKICAg
ICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAg
IHRlc3QgaW50IGZvbyhpbnQgeCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICsreDsK
ICAgICAgICAgfQpAQCAtMTc0NCw3ICsxNzQ0LDcgQEAgdGVzdHMucHJlZml4UGx1c1BsdXNSZXN1
bHQgPSBmdW5jdGlvbigpCiB0ZXN0cy5wb3N0Zml4UGx1c1BsdXMgPSBmdW5jdGlvbigpCiB7CiAg
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAg
ICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHgrKzsKICAgICAg
ICAgICAgIHJldHVybiB4OwpAQCAtMTc1Niw3ICsxNzU2LDcgQEAgdGVzdHMucG9zdGZpeFBsdXNQ
bHVzID0gZnVuY3Rpb24oKQogdGVzdHMucG9zdGZpeFBsdXNQbHVzUmVzdWx0ID0gZnVuY3Rpb24o
KQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkK
KyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4geCsrOwogICAgICAgICB9CkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB0ZXN0cy5wb3N0Zml4UGx1
c1BsdXNSZXN1bHQgPSBmdW5jdGlvbigpCiB0ZXN0cy5wcmVmaXhNaW51c01pbnVzID0gZnVuY3Rp
b24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQg
eCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAgICAgICAgICAt
LXg7CiAgICAgICAgICAgICByZXR1cm4geDsKQEAgLTE3NzksNyArMTc3OSw3IEBAIHRlc3RzLnBy
ZWZpeE1pbnVzTWludXMgPSBmdW5jdGlvbigpCiB0ZXN0cy5wcmVmaXhNaW51c01pbnVzUmVzdWx0
ID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50
IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gLS14OwogICAgICAgICB9CkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB0ZXN0
cy5wcmVmaXhNaW51c01pbnVzUmVzdWx0ID0gZnVuY3Rpb24oKQogdGVzdHMucG9zdGZpeE1pbnVz
TWludXMgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAg
ICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHgtLTsKICAgICAgICAgICAgIHJldHVybiB4OwpAQCAtMTgwMiw3ICsxODAy
LDcgQEAgdGVzdHMucG9zdGZpeE1pbnVzTWludXMgPSBmdW5jdGlvbigpCiB0ZXN0cy5wb3N0Zml4
TWludXNNaW51c1Jlc3VsdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHgtLTsKICAgICAgICAgfQpAQCAtMTgxMyw3
ICsxODEzLDcgQEAgdGVzdHMucG9zdGZpeE1pbnVzTWludXNSZXN1bHQgPSBmdW5jdGlvbigpCiB0
ZXN0cy5wbHVzRXF1YWxzID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQog
ICAgICAgICB7CiAgICAgICAgICAgICB4ICs9IDQyOwogICAgICAgICAgICAgcmV0dXJuIHg7CkBA
IC0xODI1LDcgKzE4MjUsNyBAQCB0ZXN0cy5wbHVzRXF1YWxzID0gZnVuY3Rpb24oKQogdGVzdHMu
cGx1c0VxdWFsc1Jlc3VsdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHggKz0gNDI7CiAgICAgICAgIH0KQEAgLTE4
MzYsNyArMTgzNiw3IEBAIHRlc3RzLnBsdXNFcXVhbHNSZXN1bHQgPSBmdW5jdGlvbigpCiB0ZXN0
cy5taW51c0VxdWFscyA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChg
Ci0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkKICAg
ICAgICAgewogICAgICAgICAgICAgeCAtPSA0MjsKICAgICAgICAgICAgIHJldHVybiB4OwpAQCAt
MTg0OCw3ICsxODQ4LDcgQEAgdGVzdHMubWludXNFcXVhbHMgPSBmdW5jdGlvbigpCiB0ZXN0cy5t
aW51c0VxdWFsc1Jlc3VsdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHggLT0gNDI7CiAgICAgICAgIH0KQEAgLTE4
NTksNyArMTg1OSw3IEBAIHRlc3RzLm1pbnVzRXF1YWxzUmVzdWx0ID0gZnVuY3Rpb24oKQogdGVz
dHMudGltZXNFcXVhbHMgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAo
YAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHggKj0gNDI7CiAgICAgICAgICAgICByZXR1cm4geDsKQEAg
LTE4NzEsNyArMTg3MSw3IEBAIHRlc3RzLnRpbWVzRXF1YWxzID0gZnVuY3Rpb24oKQogdGVzdHMu
dGltZXNFcXVhbHNSZXN1bHQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1By
ZXAoYAotICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB4ICo9IDQyOwogICAgICAgICB9CkBAIC0x
ODgyLDcgKzE4ODIsNyBAQCB0ZXN0cy50aW1lc0VxdWFsc1Jlc3VsdCA9IGZ1bmN0aW9uKCkKIHRl
c3RzLmRpdmlkZUVxdWFscyA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCkK
ICAgICAgICAgewogICAgICAgICAgICAgeCAvPSA0MjsKICAgICAgICAgICAgIHJldHVybiB4OwpA
QCAtMTg5NCw3ICsxODk0LDcgQEAgdGVzdHMuZGl2aWRlRXF1YWxzID0gZnVuY3Rpb24oKQogdGVz
dHMuZGl2aWRlRXF1YWxzUmVzdWx0ID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGlu
dCB4KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4geCAvPSA0MjsKICAgICAgICAgfQpA
QCAtMTkwNSw3ICsxOTA1LDcgQEAgdGVzdHMuZGl2aWRlRXF1YWxzUmVzdWx0ID0gZnVuY3Rpb24o
KQogdGVzdHMudHdvSW50TGl0ZXJhbHMgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0g
PSBkb1ByZXAoYAotICAgICAgICBib29sIGZvbygpCisgICAgICAgIHRlc3QgYm9vbCBmb28oKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gNDIgPT0gNDI7CiAgICAgICAgIH0KQEAgLTE5
MjgsNyArMTkyOCw3IEBAIHRlc3RzLmFzc2lnblVpbnRUb0ludCA9IGZ1bmN0aW9uKCkKIHRlc3Rz
LmJ1aWxkQXJyYXlUaGVuU3VtSXQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBk
b1ByZXAoYAotICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAgICAg
ICAgewogICAgICAgICAgICAgaW50WzQyXSBhcnJheTsKICAgICAgICAgICAgIGZvciAodWludCBp
ID0gMDsgaSA8IDQyOyBpID0gaSArIDEpCkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB0ZXN0cy5idWls
ZEFycmF5VGhlblN1bUl0VXNpbmdBcnJheVJlZmVyZW5jZSA9IGZ1bmN0aW9uKCkKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBhcnJheVtpXTsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZv
bygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludFs0Ml0gYXJyYXk7CiAgICAgICAgICAgICBy
ZXR1cm4gYmFyKEBhcnJheSk7CkBAIC0xOTc4LDcgKzE5NzgsNyBAQCB0ZXN0cy5vdmVycmlkZVN1
YnNjcmlwdFN0cnVjdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICByZXR1cm4gJmZvby0+
eTsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9Ci0gICAgICAgIGludCBmb28o
KQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAgICB7CiAgICAgICAgICAgICBGb28gZm9v
OwogICAgICAgICAgICAgZm9vLnggPSA0OTg7CkBAIC0yMDA0LDcgKzIwMDQsNyBAQCB0ZXN0cy5v
dmVycmlkZVN1YnNjcmlwdFN0cnVjdEFuZERvU3RvcmVzID0gZnVuY3Rpb24oKQogICAgICAgICAg
ICAgICAgIHJldHVybiAmZm9vLT55OwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAg
IH0KLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEZvbyBmb287CiAgICAgICAgICAgICBmb29bMF0gPSA0OTg7CkBAIC0yMDM0
LDcgKzIwMzQsNyBAQCB0ZXN0cy5vdmVycmlkZVN1YnNjcmlwdFN0cnVjdEFuZFVzZVBvaW50ZXJz
ID0gZnVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKCpmb28pWzBdICsg
KCpmb28pWzFdOwogICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGlu
dCBmb28oKQogICAgICAgICB7CiAgICAgICAgICAgICBGb28gZm9vOwogICAgICAgICAgICAgZm9v
LnggPSA0OTg7CkBAIC0yMDgzLDcgKzIwODMsNyBAQCB0ZXN0cy5tYWtlQXJyYXlSZWZGcm9tTG9j
YWwgPSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiByZWZbMF07CiAg
ICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGludCB4ID0gNDg7CiAgICAgICAgICAgICByZXR1cm4gYmFyKEB4
KTsKQEAgLTIxMDMsNyArMjEwMyw3IEBAIHRlc3RzLm1ha2VBcnJheVJlZkZyb21Qb2ludGVyID0g
ZnVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYmFyKEBwdHIpOwogICAg
ICAgICB9Ci0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAg
ICB7CiAgICAgICAgICAgICBpbnQgeCA9IDQ4OwogICAgICAgICAgICAgcmV0dXJuIGJheigmeCk7
CkBAIC0yMTM2LDcgKzIxMzYsNyBAQCB0ZXN0cy5tYWtlQXJyYXlSZWZGcm9tQXJyYXlSZWYgPSBm
dW5jdGlvbigpCiB0ZXN0cy5zaW1wbGVMZW5ndGggPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoYAotICAgICAgICB1aW50IGZvbygpCisgICAgICAgIHRlc3QgdWludCBm
b28oKQogICAgICAgICB7CiAgICAgICAgICAgICBmbG9hdFs3NTRdIGFycmF5OwogICAgICAgICAg
ICAgcmV0dXJuIChAYXJyYXkpLmxlbmd0aDsKQEAgLTIxNDgsMTIgKzIxNDgsMTIgQEAgdGVzdHMu
c2ltcGxlTGVuZ3RoID0gZnVuY3Rpb24oKQogdGVzdHMubm9uQXJyYXlSZWZBcnJheUxlbmd0aFN1
Y2NlZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAg
ICB1aW50IGZvbygpCisgICAgICAgIHRlc3QgdWludCBmb28oKQogICAgICAgICB7CiAgICAgICAg
ICAgICBmbG9hdFs3NTRdIGFycmF5OwogICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsK
ICAgICAgICAgfQotICAgICAgICB1aW50IGJhcigpCisgICAgICAgIHRlc3QgdWludCBiYXIoKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpbnRbNzU0XSBhcnJheTsKICAgICAgICAgICAgIHJldHVy
biBhcnJheS5sZW5ndGg7CkBAIC0yMjE2LDcgKzIyMTYsNyBAQCB0ZXN0cy5zaW1wbGVHZXR0ZXIg
PSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmb28ueDsKICAgICAg
ICAgfQotICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAgICAgICAg
ewogICAgICAgICAgICAgRm9vIGZvbzsKICAgICAgICAgICAgIGZvby54ID0gNzgwNDsKQEAgLTIy
NDEsNyArMjI0MSw3IEBAIHRlc3RzLnNpbXBsZVNldHRlciA9IGZ1bmN0aW9uKCkKICAgICAgICAg
ICAgIGZvby54ID0gdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZm9vOwogICAgICAgICB9Ci0g
ICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAgICB7CiAgICAg
ICAgICAgICBGb28gZm9vOwogICAgICAgICAgICAgZm9vLnkgPSA3ODA0OwpAQCAtMjMzMiwxMyAr
MjMzMiwxMyBAQCB0ZXN0cy5uZXN0ZWRTdWJzY3JpcHRMVmFsdWVFbXVsYXRpb25TaW1wbGUgPSBm
dW5jdGlvbigpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIGludCB0ZXN0U2V0VmFsdWVzQW5kU3VtKCkKKyAgICAgICAgdGVzdCBpbnQgdGVzdFNl
dFZhbHVlc0FuZFN1bSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJheiBiYXo7CiAgICAgICAg
ICAgICBzZXRWYWx1ZXMoJmJheik7CiAgICAgICAgICAgICByZXR1cm4gc3VtKGJheik7CiAgICAg
ICAgIH0KLSAgICAgICAgaW50IHRlc3RTZXRWYWx1ZXNNdXRhdGVWYWx1ZXNBbmRTdW0oKQorICAg
ICAgICB0ZXN0IGludCB0ZXN0U2V0VmFsdWVzTXV0YXRlVmFsdWVzQW5kU3VtKCkKICAgICAgICAg
ewogICAgICAgICAgICAgQmF6IGJhejsKICAgICAgICAgICAgIHNldFZhbHVlcygmYmF6KTsKQEAg
LTIzNTgsMTcgKzIzNTgsMTcgQEAgdGVzdHMubmVzdGVkU3Vic2NyaXB0TFZhbHVlRW11bGF0aW9u
U2ltcGxlID0gZnVuY3Rpb24oKQogdGVzdHMub3BlcmF0b3JCb29sID0gZnVuY3Rpb24oKQogewog
ICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgYm9vbCBib29sRnJvbVVjaGFyRmFs
c2UoKSB7IHJldHVybiBib29sKHVjaGFyKDApKTsgfQotICAgICAgICBib29sIGJvb2xGcm9tVWNo
YXJUcnVlKCkgeyByZXR1cm4gYm9vbCh1Y2hhcigxKSk7IH0KKyAgICAgICAgdGVzdCBib29sIGJv
b2xGcm9tVWNoYXJGYWxzZSgpIHsgcmV0dXJuIGJvb2wodWNoYXIoMCkpOyB9CisgICAgICAgIHRl
c3QgYm9vbCBib29sRnJvbVVjaGFyVHJ1ZSgpIHsgcmV0dXJuIGJvb2wodWNoYXIoMSkpOyB9CiAK
LSAgICAgICAgYm9vbCBib29sRnJvbVVpbnRGYWxzZSgpIHsgcmV0dXJuIGJvb2wodWludCgwKSk7
IH0KLSAgICAgICAgYm9vbCBib29sRnJvbVVpbnRUcnVlKCkgeyByZXR1cm4gYm9vbCh1aW50KDEp
KTsgfQorICAgICAgICB0ZXN0IGJvb2wgYm9vbEZyb21VaW50RmFsc2UoKSB7IHJldHVybiBib29s
KHVpbnQoMCkpOyB9CisgICAgICAgIHRlc3QgYm9vbCBib29sRnJvbVVpbnRUcnVlKCkgeyByZXR1
cm4gYm9vbCh1aW50KDEpKTsgfQogCi0gICAgICAgIGJvb2wgYm9vbEZyb21JbnRGYWxzZSgpIHsg
cmV0dXJuIGJvb2woaW50KDApKTsgfQotICAgICAgICBib29sIGJvb2xGcm9tSW50VHJ1ZSgpIHsg
cmV0dXJuIGJvb2woaW50KDEpKTsgfQorICAgICAgICB0ZXN0IGJvb2wgYm9vbEZyb21JbnRGYWxz
ZSgpIHsgcmV0dXJuIGJvb2woaW50KDApKTsgfQorICAgICAgICB0ZXN0IGJvb2wgYm9vbEZyb21J
bnRUcnVlKCkgeyByZXR1cm4gYm9vbChpbnQoMSkpOyB9CiAKLSAgICAgICAgYm9vbCBib29sRnJv
bUZsb2F0RmFsc2UoKSB7IHJldHVybiBib29sKGZsb2F0KDApKTsgfQotICAgICAgICBib29sIGJv
b2xGcm9tRmxvYXRUcnVlKCkgeyByZXR1cm4gYm9vbChmbG9hdCgxKSk7IH0KKyAgICAgICAgdGVz
dCBib29sIGJvb2xGcm9tRmxvYXRGYWxzZSgpIHsgcmV0dXJuIGJvb2woZmxvYXQoMCkpOyB9Cisg
ICAgICAgIHRlc3QgYm9vbCBib29sRnJvbUZsb2F0VHJ1ZSgpIHsgcmV0dXJuIGJvb2woZmxvYXQo
MSkpOyB9CiAgICAgYCk7CiAKICAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJib29sRnJvbVVjaGFyRmFsc2UiLCBbXSksIGZhbHNlKTsKQEAgLTI0MDcsNyArMjQw
Nyw3IEBAIHRlc3RzLm9wZXJhdG9yQm9vbCA9IGZ1bmN0aW9uKCkKIHRlc3RzLmJvb2xCaXRBbmQg
PSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBib29s
IGZvbyhib29sIGEsIGJvb2wgYikKKyAgICAgICAgdGVzdCBib29sIGZvbyhib29sIGEsIGJvb2wg
YikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgJiBiOwogICAgICAgICB9CkBAIC0y
NDIxLDcgKzI0MjEsNyBAQCB0ZXN0cy5ib29sQml0QW5kID0gZnVuY3Rpb24oKQogdGVzdHMuYm9v
bEJpdE9yID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAg
ICAgYm9vbCBmb28oYm9vbCBhLCBib29sIGIpCisgICAgICAgIHRlc3QgYm9vbCBmb28oYm9vbCBh
LCBib29sIGIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhIHwgYjsKICAgICAgICAg
fQpAQCAtMjQzNSw3ICsyNDM1LDcgQEAgdGVzdHMuYm9vbEJpdE9yID0gZnVuY3Rpb24oKQogdGVz
dHMuYm9vbEJpdFhvciA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChg
Ci0gICAgICAgIGJvb2wgZm9vKGJvb2wgYSwgYm9vbCBiKQorICAgICAgICB0ZXN0IGJvb2wgZm9v
KGJvb2wgYSwgYm9vbCBiKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYSBeIGI7CiAg
ICAgICAgIH0KQEAgLTI0NDksNyArMjQ0OSw3IEBAIHRlc3RzLmJvb2xCaXRYb3IgPSBmdW5jdGlv
bigpCiB0ZXN0cy5ib29sQml0Tm90ID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKLSAgICAgICAgYm9vbCBmb28oYm9vbCBhKQorICAgICAgICB0ZXN0IGJvb2wgZm9v
KGJvb2wgYSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIH5hOwogICAgICAgICB9CkBA
IC0yNDYxLDcgKzI0NjEsNyBAQCB0ZXN0cy5ib29sQml0Tm90ID0gZnVuY3Rpb24oKQogdGVzdHMu
aW50Qml0QW5kID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgYSwgaW50IGIpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgYSwg
aW50IGIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhICYgYjsKICAgICAgICAgfQpA
QCAtMjQ3NSw3ICsyNDc1LDcgQEAgdGVzdHMuaW50Qml0QW5kID0gZnVuY3Rpb24oKQogdGVzdHMu
aW50Qml0T3IgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAg
ICAgICBpbnQgZm9vKGludCBhLCBpbnQgYikKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCBhLCBp
bnQgYikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgfCBiOwogICAgICAgICB9CkBA
IC0yNDg5LDcgKzI0ODksNyBAQCB0ZXN0cy5pbnRCaXRPciA9IGZ1bmN0aW9uKCkKIHRlc3RzLmlu
dEJpdFhvciA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAg
ICAgIGludCBmb28oaW50IGEsIGludCBiKQorICAgICAgICB0ZXN0IGludCBmb28oaW50IGEsIGlu
dCBiKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYSBeIGI7CiAgICAgICAgIH0KQEAg
LTI1MDMsNyArMjUwMyw3IEBAIHRlc3RzLmludEJpdFhvciA9IGZ1bmN0aW9uKCkKIHRlc3RzLmlu
dEJpdE5vdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAg
ICAgIGludCBmb28oaW50IGEpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgYSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIH5hOwogICAgICAgICB9CkBAIC0yNTE3LDcgKzI1MTcsNyBA
QCB0ZXN0cy5pbnRCaXROb3QgPSBmdW5jdGlvbigpCiB0ZXN0cy5pbnRMU2hpZnQgPSBmdW5jdGlv
bigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGludCBh
LCB1aW50IGIpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgYSwgdWludCBiKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gYSA8PCBiOwogICAgICAgICB9CkBAIC0yNTMxLDcgKzI1MzEs
NyBAQCB0ZXN0cy5pbnRMU2hpZnQgPSBmdW5jdGlvbigpCiB0ZXN0cy5pbnRSU2hpZnQgPSBmdW5j
dGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKGlu
dCBhLCB1aW50IGIpCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgYSwgdWludCBiKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gYSA+PiBiOwogICAgICAgICB9CkBAIC0yNTQ1LDcgKzI1
NDUsNyBAQCB0ZXN0cy5pbnRSU2hpZnQgPSBmdW5jdGlvbigpCiB0ZXN0cy51aW50Qml0QW5kID0g
ZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWludCBm
b28odWludCBhLCB1aW50IGIpCisgICAgICAgIHRlc3QgdWludCBmb28odWludCBhLCB1aW50IGIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhICYgYjsKICAgICAgICAgfQpAQCAtMjU1
OSw3ICsyNTU5LDcgQEAgdGVzdHMudWludEJpdEFuZCA9IGZ1bmN0aW9uKCkKIHRlc3RzLnVpbnRC
aXRPciA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAg
IHVpbnQgZm9vKHVpbnQgYSwgdWludCBiKQorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgYSwg
dWludCBiKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYSB8IGI7CiAgICAgICAgIH0K
QEAgLTI1NzMsNyArMjU3Myw3IEBAIHRlc3RzLnVpbnRCaXRPciA9IGZ1bmN0aW9uKCkKIHRlc3Rz
LnVpbnRCaXRYb3IgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAot
ICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1
aW50IGEsIHVpbnQgYikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgXiBiOwogICAg
ICAgICB9CkBAIC0yNTg3LDcgKzI1ODcsNyBAQCB0ZXN0cy51aW50Qml0WG9yID0gZnVuY3Rpb24o
KQogdGVzdHMudWludEJpdE5vdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRv
UHJlcChgCi0gICAgICAgIHVpbnQgZm9vKHVpbnQgYSkKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1
aW50IGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB+YTsKICAgICAgICAgfQpAQCAt
MjYwMSw3ICsyNjAxLDcgQEAgdGVzdHMudWludEJpdE5vdCA9IGZ1bmN0aW9uKCkKIHRlc3RzLnVp
bnRMU2hpZnQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAg
ICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50
IGEsIHVpbnQgYikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgPDwgYjsKICAgICAg
ICAgfQpAQCAtMjYxNSw3ICsyNjE1LDcgQEAgdGVzdHMudWludExTaGlmdCA9IGZ1bmN0aW9uKCkK
IHRlc3RzLnVpbnRSU2hpZnQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1By
ZXAoYAotICAgICAgICB1aW50IGZvbyh1aW50IGEsIHVpbnQgYikKKyAgICAgICAgdGVzdCB1aW50
IGZvbyh1aW50IGEsIHVpbnQgYikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgPj4g
YjsKICAgICAgICAgfQpAQCAtMjYyOSw3ICsyNjI5LDcgQEAgdGVzdHMudWludFJTaGlmdCA9IGZ1
bmN0aW9uKCkKIHRlc3RzLnVjaGFyQml0QW5kID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9n
cmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWNoYXIgZm9vKHVjaGFyIGEsIHVjaGFyIGIpCisgICAg
ICAgIHRlc3QgdWNoYXIgZm9vKHVjaGFyIGEsIHVjaGFyIGIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBhICYgYjsKICAgICAgICAgfQpAQCAtMjY0Myw3ICsyNjQzLDcgQEAgdGVzdHMu
dWNoYXJCaXRBbmQgPSBmdW5jdGlvbigpCiB0ZXN0cy51Y2hhckJpdE9yID0gZnVuY3Rpb24oKQog
ewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWNoYXIgZm9vKHVjaGFyIGEs
IHVjaGFyIGIpCisgICAgICAgIHRlc3QgdWNoYXIgZm9vKHVjaGFyIGEsIHVjaGFyIGIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBhIHwgYjsKICAgICAgICAgfQpAQCAtMjY1Nyw3ICsy
NjU3LDcgQEAgdGVzdHMudWNoYXJCaXRPciA9IGZ1bmN0aW9uKCkKIHRlc3RzLnVjaGFyQml0WG9y
ID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWNo
YXIgZm9vKHVjaGFyIGEsIHVjaGFyIGIpCisgICAgICAgIHRlc3QgdWNoYXIgZm9vKHVjaGFyIGEs
IHVjaGFyIGIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhIF4gYjsKICAgICAgICAg
fQpAQCAtMjY3MSw3ICsyNjcxLDcgQEAgdGVzdHMudWNoYXJCaXRYb3IgPSBmdW5jdGlvbigpCiB0
ZXN0cy51Y2hhckJpdE5vdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIHVjaGFyIGZvbyh1Y2hhciBhKQorICAgICAgICB0ZXN0IHVjaGFyIGZvbyh1
Y2hhciBhKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gfmE7CiAgICAgICAgIH0KQEAg
LTI2ODUsNyArMjY4NSw3IEBAIHRlc3RzLnVjaGFyQml0Tm90ID0gZnVuY3Rpb24oKQogdGVzdHMu
dWNoYXJMU2hpZnQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAot
ICAgICAgICB1Y2hhciBmb28odWNoYXIgYSwgdWludCBiKQorICAgICAgICB0ZXN0IHVjaGFyIGZv
byh1Y2hhciBhLCB1aW50IGIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhIDw8IGI7
CiAgICAgICAgIH0KQEAgLTI2OTksNyArMjY5OSw3IEBAIHRlc3RzLnVjaGFyTFNoaWZ0ID0gZnVu
Y3Rpb24oKQogdGVzdHMudWNoYXJSU2hpZnQgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dy
YW0gPSBkb1ByZXAoYAotICAgICAgICB1Y2hhciBmb28odWNoYXIgYSwgdWludCBiKQorICAgICAg
ICB0ZXN0IHVjaGFyIGZvbyh1Y2hhciBhLCB1aW50IGIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhID4+IGI7CiAgICAgICAgIH0KQEAgLTI3MTMsMjMgKzI3MTMsMjMgQEAgdGVzdHMu
dWNoYXJSU2hpZnQgPSBmdW5jdGlvbigpCiB0ZXN0cy5mbG9hdE1hdGggPSBmdW5jdGlvbigpCiB7
CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBib29sIGZvbygpCisgICAgICAg
IHRlc3QgYm9vbCBmb28oKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gNDIuNSA9PSA0
Mi41OwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vMigpCisgICAgICAgIHRlc3QgYm9vbCBm
b28yKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIDQyLjVmID09IDQyLjU7CiAgICAg
ICAgIH0KLSAgICAgICAgYm9vbCBmb28zKCkKKyAgICAgICAgdGVzdCBib29sIGZvbzMoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gNDIuNSA9PSA0Mi41ZjsKICAgICAgICAgfQotICAg
ICAgICBib29sIGZvbzQoKQorICAgICAgICB0ZXN0IGJvb2wgZm9vNCgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiA0Mi41ZiA9PSA0Mi41ZjsKICAgICAgICAgfQotICAgICAgICBib29s
IGZvbzUoKQorICAgICAgICB0ZXN0IGJvb2wgZm9vNSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiA0Mi41ZiA9PSA0Mi41ZjsKICAgICAgICAgfQpAQCAtMjczNywyNyArMjczNywyNyBA
QCB0ZXN0cy5mbG9hdE1hdGggPSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiB4OwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzYoKQorICAgICAgICB0ZXN0IGZs
b2F0IGZvbzYoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYmFyKDcuNSk7CiAgICAg
ICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNygpCisgICAgICAgIHRlc3QgZmxvYXQgZm9vNygpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBiYXIoNy41Zik7CiAgICAgICAgIH0KLSAgICAg
ICAgZmxvYXQgZm9vOSgpCisgICAgICAgIHRlc3QgZmxvYXQgZm9vOSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBmbG9hdCg3LjUpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzEwKCkKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xMCgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBmbG9hdCg3LjVmKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMigpCisg
ICAgICAgIHRlc3QgZmxvYXQgZm9vMTIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
ZmxvYXQoNyk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTMoKQorICAgICAgICB0ZXN0
IGZsb2F0IGZvbzEzKCkKICAgICAgICAgewogICAgICAgICAgICAgZmxvYXQgeCA9IDcuNWY7CiAg
ICAgICAgICAgICByZXR1cm4gZmxvYXQoeCk7CkBAIC0yODUxLDM1ICsyODUxLDM1IEBAIHRlc3Rz
LmZsb2F0TWF0aCA9IGZ1bmN0aW9uKCkKIHRlc3RzLmJvb2xlYW5NYXRoID0gZnVuY3Rpb24oKQog
ewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgYm9vbCBmb28oKQorICAgICAg
ICB0ZXN0IGJvb2wgZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHRydWUgJiYg
dHJ1ZTsKICAgICAgICAgfQotICAgICAgICBib29sIGZvbzIoKQorICAgICAgICB0ZXN0IGJvb2wg
Zm9vMigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlICYmIGZhbHNlOwogICAg
ICAgICB9Ci0gICAgICAgIGJvb2wgZm9vMygpCisgICAgICAgIHRlc3QgYm9vbCBmb28zKCkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlICYmIHRydWU7CiAgICAgICAgIH0KLSAg
ICAgICAgYm9vbCBmb280KCkKKyAgICAgICAgdGVzdCBib29sIGZvbzQoKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2UgJiYgZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgYm9v
bCBmb281KCkKKyAgICAgICAgdGVzdCBib29sIGZvbzUoKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZSB8fCB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNigpCisg
ICAgICAgIHRlc3QgYm9vbCBmb282KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHRy
dWUgfHwgZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBmb283KCkKKyAgICAgICAgdGVz
dCBib29sIGZvbzcoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2UgfHwgdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICBib29sIGZvbzgoKQorICAgICAgICB0ZXN0IGJvb2wgZm9v
OCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZSB8fCBmYWxzZTsKICAgICAg
ICAgfQpAQCAtMjkwMywyOCArMjkwMywyOCBAQCB0ZXN0cy5ib29sZWFuU2hvcnRjaXJjdWl0aW5n
ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgcmV0dXJuIHJldFZhbHVlOyAKICAgICAgICAgfQog
Ci0gICAgICAgIGludCBhbmRUcnVlKCkKKyAgICAgICAgdGVzdCBpbnQgYW5kVHJ1ZSgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgYm9vbCB5ID0gc2V0KCZ4LCAx
LCB0cnVlKSAmJiBzZXQoJngsIDIsIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiB4OyAKICAg
ICAgICAgfQogCi0gICAgICAgIGludCBhbmRGYWxzZSgpCisgICAgICAgIHRlc3QgaW50IGFuZEZh
bHNlKCkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICBib29sIHkg
PSBzZXQoJngsIDEsIGZhbHNlKSAmJiBzZXQoJngsIDIsIGZhbHNlKTsKICAgICAgICAgICAgIHJl
dHVybiB4OyAKICAgICAgICAgfQogCi0gICAgICAgIGludCBvclRydWUoKQorICAgICAgICB0ZXN0
IGludCBvclRydWUoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAg
IGJvb2wgeSA9IHNldCgmeCwgMSwgdHJ1ZSkgfHwgc2V0KCZ4LCAyLCBmYWxzZSk7CiAgICAgICAg
ICAgICByZXR1cm4geDsgCiAgICAgICAgIH0KIAotICAgICAgICBpbnQgb3JGYWxzZSgpCisgICAg
ICAgIHRlc3QgaW50IG9yRmFsc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgeDsKICAg
ICAgICAgICAgIGJvb2wgeSA9IHNldCgmeCwgMSwgZmFsc2UpIHx8IHNldCgmeCwgMiwgZmFsc2Up
OwpAQCAtMjk0Miw3ICsyOTQyLDcgQEAgdGVzdHMudHlwZWRlZkFycmF5ID0gZnVuY3Rpb24oKQog
ewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgdHlwZWRlZiBBcnJheVR5cGVk
ZWYgPSBpbnRbMl07Ci0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28oKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBcnJheVR5cGVkZWYgYXJyYXlUeXBlZGVmOwogICAgICAg
ICAgICAgcmV0dXJuIGFycmF5VHlwZWRlZlswXTsKQEAgLTMwODUsNyArMzA4NSw3IEBAIHRlc3Rz
LnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0
aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGludCBmb28yKCkK
KyAgICAgICAgdGVzdCBpbnQgZm9vMigpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludDIgeDsK
ICAgICAgICAgICAgIHZlY3RvcjxpbnQsIDI+IHogPSBpbnQyKDMsIDQpOwpAQCAtMzA5Myw3ICsz
MDkzLDcgQEAgdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAg
IHJldHVybiB4Lnk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgZm9vMygpCisgICAgICAgIHRl
c3QgaW50IGZvbzMoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQzIHg7CiAgICAgICAgICAg
ICB2ZWN0b3I8aW50LCAzPiB6ID0gaW50MygzLCA0LCA1KTsKQEAgLTMxMDEsNyArMzEwMSw3IEBA
IHRlc3RzLnZlY3RvclR5cGVTeW50YXggPSBmdW5jdGlvbigpCiAgICAgICAgICAgICByZXR1cm4g
eC56OwogICAgICAgICB9CiAKLSAgICAgICAgaW50IGZvbzQoKQorICAgICAgICB0ZXN0IGludCBm
b280KCkKICAgICAgICAgewogICAgICAgICAgICAgaW50NCB4OwogICAgICAgICAgICAgdmVjdG9y
PGludCw0PiB6ID0gaW50NCgzLCA0LCA1LCA2KTsKQEAgLTMxMDksNyArMzEwOSw3IEBAIHRlc3Rz
LnZlY3RvclR5cGVTeW50YXggPSBmdW5jdGlvbigpCiAgICAgICAgICAgICByZXR1cm4geC53Owog
ICAgICAgICB9CiAKLSAgICAgICAgYm9vbCB2ZWMyT3BlcmF0b3JDYXN0KCkKKyAgICAgICAgdGVz
dCBib29sIHZlYzJPcGVyYXRvckNhc3QoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQyIHgg
PSB2ZWN0b3I8aW50LDI+KDEsIDIpOwogICAgICAgICAgICAgdmVjdG9yPGludCwgMj4geSA9IGlu
dDIoMSwgMik7CkBAIC0zMTIzLDcgKzMxMjMsNyBAQCB0ZXN0cy52ZWN0b3JUeXBlU3ludGF4ID0g
ZnVuY3Rpb24oKQogCiAgICAgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIHR5cGVkZWYgaSA9
IGludDsKLSAgICAgICAgaW50IGZvbzIoKQorICAgICAgICB0ZXN0IGludCBmb28yKCkKICAgICAg
ICAgewogICAgICAgICAgICAgaW50MiB4OwogICAgICAgICAgICAgdmVjdG9yPGksIDI+IHogPSBp
bnQyKDMsIDQpOwpAQCAtMzEzMSw3ICszMTMxLDcgQEAgdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHJldHVybiB4Lnk7CiAgICAgICAgIH0KIAotICAgICAg
ICBib29sIHZlYzJPcGVyYXRvckNhc3QoKQorICAgICAgICB0ZXN0IGJvb2wgdmVjMk9wZXJhdG9y
Q2FzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludDIgeCA9IHZlY3RvcjxpLDI+KDEsIDIp
OwogICAgICAgICAgICAgdmVjdG9yPGksIDI+IHkgPSBpbnQyKDEsIDIpOwpAQCAtMzE0NSwxMTQg
KzMxNDUsMTE0IEBAIHRlc3RzLnZlY3RvclR5cGVTeW50YXggPSBmdW5jdGlvbigpCiB0ZXN0cy5i
dWlsdGluVmVjdG9ycyA9IGZ1bmN0aW9uKCkKIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChg
Ci0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpbnQyIGEgPSBpbnQyKDMsIDQpOwogICAgICAgICAgICAgcmV0dXJuIGFbMF07
CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbzIoKQorICAgICAgICB0ZXN0IGludCBmb28yKCkK
ICAgICAgICAgewogICAgICAgICAgICAgaW50MiBhID0gaW50MigzLCA0KTsKICAgICAgICAgICAg
IGludDMgYiA9IGludDMoYSwgNSk7CiAgICAgICAgICAgICByZXR1cm4gYlsxXTsKICAgICAgICAg
fQotICAgICAgICBpbnQgZm9vMygpCisgICAgICAgIHRlc3QgaW50IGZvbzMoKQogICAgICAgICB7
CiAgICAgICAgICAgICBpbnQzIGEgPSBpbnQzKDMsIDQsIDUpOwogICAgICAgICAgICAgaW50NCBi
ID0gaW50NCg2LCBhKTsKICAgICAgICAgICAgIHJldHVybiBiWzFdOwogICAgICAgICB9Ci0gICAg
ICAgIGludCBmb280KCkKKyAgICAgICAgdGVzdCBpbnQgZm9vNCgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGludDIgYSA9IGludDIoMywgNCk7CiAgICAgICAgICAgICBpbnQyIGIgPSBpbnQyKDUs
IDYpOwogICAgICAgICAgICAgaW50NCBjID0gaW50NChhLCBiKTsKICAgICAgICAgICAgIHJldHVy
biBjWzJdOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNSgpCisgICAgICAgIHRlc3QgYm9v
bCBmb281KCkKICAgICAgICAgewogICAgICAgICAgICAgaW50NCBhID0gaW50NCgzLCA0LCA1LCA2
KTsKICAgICAgICAgICAgIGludDIgYiA9IGludDIoNCwgNSk7CiAgICAgICAgICAgICBpbnQ0IGMg
PSBpbnQ0KDMsIGIsIDYpOwogICAgICAgICAgICAgcmV0dXJuIGEgPT0gYzsKICAgICAgICAgfQot
ICAgICAgICBib29sIGZvbzYoKQorICAgICAgICB0ZXN0IGJvb2wgZm9vNigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGludDIgYSA9IGludDIoNCwgNSk7CiAgICAgICAgICAgICBpbnQzIGIgPSBp
bnQzKDMsIGEpOwogICAgICAgICAgICAgaW50MyBjID0gaW50MygzLCA0LCA2KTsKICAgICAgICAg
ICAgIHJldHVybiBiID09IGM7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb291KCkKKyAgICAg
ICAgdGVzdCB1aW50IGZvb3UoKQogICAgICAgICB7CiAgICAgICAgICAgICB1aW50MiBhID0gdWlu
dDIoMywgNCk7CiAgICAgICAgICAgICByZXR1cm4gYVswXTsKICAgICAgICAgfQotICAgICAgICB1
aW50IGZvb3UyKCkKKyAgICAgICAgdGVzdCB1aW50IGZvb3UyKCkKICAgICAgICAgewogICAgICAg
ICAgICAgdWludDIgYSA9IHVpbnQyKDMsIDQpOwogICAgICAgICAgICAgdWludDMgYiA9IHVpbnQz
KGEsIDUpOwogICAgICAgICAgICAgcmV0dXJuIGJbMV07CiAgICAgICAgIH0KLSAgICAgICAgdWlu
dCBmb291MygpCisgICAgICAgIHRlc3QgdWludCBmb291MygpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHVpbnQzIGEgPSB1aW50MygzLCA0LCA1KTsKICAgICAgICAgICAgIHVpbnQ0IGIgPSB1aW50
NCg2LCBhKTsKICAgICAgICAgICAgIHJldHVybiBiWzFdOwogICAgICAgICB9Ci0gICAgICAgIHVp
bnQgZm9vdTQoKQorICAgICAgICB0ZXN0IHVpbnQgZm9vdTQoKQogICAgICAgICB7CiAgICAgICAg
ICAgICB1aW50MiBhID0gdWludDIoMywgNCk7CiAgICAgICAgICAgICB1aW50MiBiID0gdWludDIo
NSwgNik7CiAgICAgICAgICAgICB1aW50NCBjID0gdWludDQoYSwgYik7CiAgICAgICAgICAgICBy
ZXR1cm4gY1syXTsKICAgICAgICAgfQotICAgICAgICBib29sIGZvb3U1KCkKKyAgICAgICAgdGVz
dCBib29sIGZvb3U1KCkKICAgICAgICAgewogICAgICAgICAgICAgdWludDQgYSA9IHVpbnQ0KDMs
IDQsIDUsIDYpOwogICAgICAgICAgICAgdWludDIgYiA9IHVpbnQyKDQsIDUpOwogICAgICAgICAg
ICAgdWludDQgYyA9IHVpbnQ0KDMsIGIsIDYpOwogICAgICAgICAgICAgcmV0dXJuIGEgPT0gYzsK
ICAgICAgICAgfQotICAgICAgICBib29sIGZvb3U2KCkKKyAgICAgICAgdGVzdCBib29sIGZvb3U2
KCkKICAgICAgICAgewogICAgICAgICAgICAgdWludDIgYSA9IHVpbnQyKDQsIDUpOwogICAgICAg
ICAgICAgdWludDMgYiA9IHVpbnQzKDMsIGEpOwogICAgICAgICAgICAgdWludDMgYyA9IHVpbnQz
KDMsIDQsIDYpOwogICAgICAgICAgICAgcmV0dXJuIGIgPT0gYzsKICAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmb29mKCkKKyAgICAgICAgdGVzdCBmbG9hdCBmb29mKCkKICAgICAgICAgewogICAg
ICAgICAgICAgZmxvYXQyIGEgPSBmbG9hdDIoMy4sIDQuKTsKICAgICAgICAgICAgIHJldHVybiBh
WzBdOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvb2YyKCkKKyAgICAgICAgdGVzdCBmbG9h
dCBmb29mMigpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZsb2F0MiBhID0gZmxvYXQyKDMuLCA0
Lik7CiAgICAgICAgICAgICBmbG9hdDMgYiA9IGZsb2F0MyhhLCA1Lik7CiAgICAgICAgICAgICBy
ZXR1cm4gYlsxXTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb29mMygpCisgICAgICAgIHRl
c3QgZmxvYXQgZm9vZjMoKQogICAgICAgICB7CiAgICAgICAgICAgICBmbG9hdDMgYSA9IGZsb2F0
MygzLiwgNC4sIDUuKTsKICAgICAgICAgICAgIGZsb2F0NCBiID0gZmxvYXQ0KDYuLCBhKTsKICAg
ICAgICAgICAgIHJldHVybiBiWzFdOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvb2Y0KCkK
KyAgICAgICAgdGVzdCBmbG9hdCBmb29mNCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZsb2F0
MiBhID0gZmxvYXQyKDMuLCA0Lik7CiAgICAgICAgICAgICBmbG9hdDIgYiA9IGZsb2F0Mig1Liwg
Ni4pOwogICAgICAgICAgICAgZmxvYXQ0IGMgPSBmbG9hdDQoYSwgYik7CiAgICAgICAgICAgICBy
ZXR1cm4gY1syXTsKICAgICAgICAgfQotICAgICAgICBib29sIGZvb2Y1KCkKKyAgICAgICAgdGVz
dCBib29sIGZvb2Y1KCkKICAgICAgICAgewogICAgICAgICAgICAgZmxvYXQ0IGEgPSBmbG9hdDQo
My4sIDQuLCA1LiwgNi4pOwogICAgICAgICAgICAgZmxvYXQyIGIgPSBmbG9hdDIoNC4sIDUuKTsK
ICAgICAgICAgICAgIGZsb2F0NCBjID0gZmxvYXQ0KDMuLCBiLCA2Lik7CiAgICAgICAgICAgICBy
ZXR1cm4gYSA9PSBjOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vZjYoKQorICAgICAgICB0
ZXN0IGJvb2wgZm9vZjYoKQogICAgICAgICB7CiAgICAgICAgICAgICBmbG9hdDIgYSA9IGZsb2F0
Mig0LiwgNS4pOwogICAgICAgICAgICAgZmxvYXQzIGIgPSBmbG9hdDMoMy4sIGEpOwpAQCAtMzI5
Myw3ICszMjkzLDcgQEAgdGVzdHMuYnVpbHRpblZlY3RvckdldHRlcnMgPSBmdW5jdGlvbigpCiAg
ICAgICAgIGZvciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKICAgICAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1l
ID0gYCR7dHlwZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAgICAgICAgICAgICBz
cmMgKz0gYCR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCisgICAgICAgICAgICAgICAgc3Jj
ICs9IGB0ZXN0ICR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFtZX0ke3NpemV9
IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2UoMCwgc2l6ZSku
am9pbigiLCAiKX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LiR7ZWxl
bWVudHNbaV19OwpAQCAtMzMyOSw3ICszMzI5LDcgQEAgdGVzdHMuYnVpbHRpblZlY3RvclNldHRl
cnMgPSBmdW5jdGlvbigpCiAgICAgICAgIGZvciAobGV0IHNpemUgb2Ygc2l6ZXMpIHsKICAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtzaXplfSR7ZWxlbWVudHNbaV19YDsK
LSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgpCisg
ICAgICAgICAgICAgICAgc3JjICs9IGB0ZXN0ICR7dHlwZU5hbWV9ICR7ZnVuY3Rpb25OYW1lfSgp
CiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHt0eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7c2l6ZX0oJHtpbml0aWFsaXplckxp
c3Quc2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHguJHtlbGVtZW50c1tpXX0gPSAzNDsKQEAgLTMzNjYsNyArMzM2Niw3IEBAIHRlc3RzLmJ1
aWx0aW5WZWN0b3JJbmRleFNldHRlcnMgPSBmdW5jdGlvbigpCiAgICAgICAgIGZvciAobGV0IHNp
emUgb2Ygc2l6ZXMpIHsKICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gYCR7dHlwZU5hbWV9JHtz
aXplfSR7ZWxlbWVudHNbaV19YDsKLSAgICAgICAgICAgICAgICBzcmMgKz0gYCR7dHlwZU5hbWV9
ICR7ZnVuY3Rpb25OYW1lfSgpCisgICAgICAgICAgICAgICAgc3JjICs9IGB0ZXN0ICR7dHlwZU5h
bWV9ICR7ZnVuY3Rpb25OYW1lfSgpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHt0eXBlTmFtZX0ke3NpemV9IHggPSAke3R5cGVOYW1lfSR7
c2l6ZX0oJHtpbml0aWFsaXplckxpc3Quc2xpY2UoMCwgc2l6ZSkuam9pbigiLCAiKX0pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHhbJHtpfV0gPSAzNDsKQEAgLTMzOTksMTE3ICszMzk5
LDE4NSBAQCB0ZXN0cy5zaW1wbGVFbnVtID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgUGVzdGls
ZW5jZSwKICAgICAgICAgICAgIERlYXRoCiAgICAgICAgIH0KLSAgICAgICAgRm9vIHdhcigpCisK
KyAgICAgICAgRm9vIF93YXIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRm9vLldh
cjsKICAgICAgICAgfQotICAgICAgICBGb28gZmFtaW5lKCkKKworICAgICAgICB0ZXN0IEZvbyB3
YXIoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX3dhcigpOworICAgICAgICB9CisK
KyAgICAgICAgRm9vIF9mYW1pbmUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRm9v
LkZhbWluZTsKICAgICAgICAgfQotICAgICAgICBGb28gcGVzdGlsZW5jZSgpCisKKyAgICAgICAg
dGVzdCBGb28gZmFtaW5lKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9mYW1pbmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIEZvbyBfcGVzdGlsZW5jZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBGb28uUGVzdGlsZW5jZTsKICAgICAgICAgfQotICAgICAgICBGb28g
ZGVhdGgoKQorCisgICAgICAgIHRlc3QgRm9vIHBlc3RpbGVuY2UoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gX3Blc3RpbGVuY2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIEZvbyBf
ZGVhdGgoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRm9vLkRlYXRoOwogICAgICAg
ICB9Ci0gICAgICAgIGJvb2wgZXF1YWxzKEZvbyBhLCBGb28gYikKKworICAgICAgICB0ZXN0IEZv
byBkZWF0aCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfZGVhdGgoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgX2VxdWFscyhGb28gYSwgRm9vIGIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhID09IGI7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBub3RFcXVh
bHMoRm9vIGEsIEZvbyBiKQorCisgICAgICAgIGJvb2wgX25vdEVxdWFscyhGb28gYSwgRm9vIGIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhICE9IGI7CiAgICAgICAgIH0KLSAgICAg
ICAgYm9vbCB0ZXN0U2ltcGxlRXF1YWwoKQorCisgICAgICAgIHRlc3QgYm9vbCB0ZXN0U2ltcGxl
RXF1YWwoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uV2FyLCBG
b28uV2FyKTsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3QgYm9vbCB0ZXN0QW5vdGhlckVxdWFs
KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVxdWFscyhGb28uV2FyLCBGb28uV2Fy
KTsKKyAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGls
ZW5jZSk7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFsKCkKKworICAg
ICAgICB0ZXN0IGJvb2wgdGVzdE5vdEVxdWFsKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOworICAgICAgICAgICAg
cmV0dXJuIF9lcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRlYXRoKTsKICAgICAgICAgfQotICAgICAg
ICBib29sIHRlc3ROb3RFcXVhbCgpCisKKyAgICAgICAgdGVzdCBib29sIHRlc3RTaW1wbGVOb3RF
cXVhbCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcXVhbHMoRm9vLkZhbWluZSwg
Rm9vLkRlYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5XYXIsIEZvby5X
YXIpOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkKKworICAg
ICAgICB0ZXN0IGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBub3RFcXVhbHMoRm9vLldhciwgRm9vLldhcik7CisgICAgICAgICAgICByZXR1
cm4gX25vdEVxdWFscyhGb28uUGVzdGlsZW5jZSwgRm9vLlBlc3RpbGVuY2UpOwogICAgICAgICB9
Ci0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCisKKyAgICAgICAgdGVzdCBib29s
IHRlc3ROb3ROb3RFcXVhbCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub3RFcXVh
bHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNlKTsKKyAgICAgICAgICAgIHJldHVybiBf
bm90RXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7CiAgICAgICAgIH0KLSAgICAgICAgYm9v
bCB0ZXN0Tm90Tm90RXF1YWwoKQorCisgICAgICAgIGludCBfaW50V2FyKCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5vdEVxdWFscyhGb28uRmFtaW5lLCBGb28uRGVhdGgpOworICAg
ICAgICAgICAgcmV0dXJuIGludChfd2FyKCkpOwogICAgICAgICB9Ci0gICAgICAgIGludCBpbnRX
YXIoKQorCisgICAgICAgIHRlc3QgaW50IGludFdhcigpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBpbnQod2FyKCkpOworICAgICAgICAgICAgcmV0dXJuIF9pbnRXYXIoKTsKICAgICAg
ICAgfQotICAgICAgICBpbnQgaW50RmFtaW5lKCkKKworICAgICAgICBpbnQgX2ludEZhbWluZSgp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnQoZmFtaW5lKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGludChfZmFtaW5lKCkpOwogICAgICAgICB9Ci0gICAgICAgIGludCBpbnRQZXN0
aWxlbmNlKCkKKworICAgICAgICB0ZXN0IGludCBpbnRGYW1pbmUoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gaW50KHBlc3RpbGVuY2UoKSk7CisgICAgICAgICAgICByZXR1cm4gX2lu
dEZhbWluZSgpOwogICAgICAgICB9Ci0gICAgICAgIGludCBpbnREZWF0aCgpCisKKyAgICAgICAg
aW50IF9pbnRQZXN0aWxlbmNlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChk
ZWF0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBpbnQoX3Blc3RpbGVuY2UoKSk7CiAgICAgICAg
IH0KLSAgICAgICAgaW50IHdhclZhbHVlKCkKKworICAgICAgICB0ZXN0IGludCBpbnRQZXN0aWxl
bmNlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHdhcigpLnZhbHVlOworICAgICAg
ICAgICAgcmV0dXJuIF9pbnRQZXN0aWxlbmNlKCk7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZh
bWluZVZhbHVlKCkKKworICAgICAgICBpbnQgX2ludERlYXRoKCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGZhbWluZSgpLnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGludChfZGVh
dGgoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2VWYWx1ZSgpCisKKyAgICAg
ICAgdGVzdCBpbnQgaW50RGVhdGgoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcGVz
dGlsZW5jZSgpLnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIF9pbnREZWF0aCgpOwogICAgICAg
ICB9Ci0gICAgICAgIGludCBkZWF0aFZhbHVlKCkKKworICAgICAgICB0ZXN0IGludCB3YXJWYWx1
ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZWF0aCgpLnZhbHVlOworICAgICAg
ICAgICAgcmV0dXJuIF93YXIoKS52YWx1ZTsKICAgICAgICAgfQotICAgICAgICBpbnQgd2FyVmFs
dWVMaXRlcmFsKCkKKworICAgICAgICB0ZXN0IGludCBmYW1pbmVWYWx1ZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBfZmFtaW5lKCkudmFsdWU7CisgICAgICAgIH0KKworICAgICAg
ICB0ZXN0IGludCBwZXN0aWxlbmNlVmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gX3Blc3RpbGVuY2UoKS52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3QgaW50IGRl
YXRoVmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2RlYXRoKCkudmFsdWU7
CisgICAgICAgIH0KKworICAgICAgICB0ZXN0IGludCB3YXJWYWx1ZUxpdGVyYWwoKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gRm9vLldhci52YWx1ZTsKICAgICAgICAgfQotICAgICAg
ICBpbnQgZmFtaW5lVmFsdWVMaXRlcmFsKCkKKworICAgICAgICB0ZXN0IGludCBmYW1pbmVWYWx1
ZUxpdGVyYWwoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRm9vLkZhbWluZS52YWx1
ZTsKICAgICAgICAgfQotICAgICAgICBpbnQgcGVzdGlsZW5jZVZhbHVlTGl0ZXJhbCgpCisKKyAg
ICAgICAgdGVzdCBpbnQgcGVzdGlsZW5jZVZhbHVlTGl0ZXJhbCgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBGb28uUGVzdGlsZW5jZS52YWx1ZTsKICAgICAgICAgfQotICAgICAgICBp
bnQgZGVhdGhWYWx1ZUxpdGVyYWwoKQorCisgICAgICAgIHRlc3QgaW50IGRlYXRoVmFsdWVMaXRl
cmFsKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aC52YWx1ZTsKICAg
ICAgICAgfQotICAgICAgICBGb28gaW50V2FyQmFja3dhcmRzKCkKKworICAgICAgICB0ZXN0IEZv
byBpbnRXYXJCYWNrd2FyZHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKGlu
dFdhcigpKTsKKyAgICAgICAgICAgIHJldHVybiBGb28oX2ludFdhcigpKTsKICAgICAgICAgfQot
ICAgICAgICBGb28gaW50RmFtaW5lQmFja3dhcmRzKCkKKworICAgICAgICB0ZXN0IEZvbyBpbnRG
YW1pbmVCYWNrd2FyZHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKGludEZh
bWluZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBGb28oX2ludEZhbWluZSgpKTsKICAgICAgICAg
fQotICAgICAgICBGb28gaW50UGVzdGlsZW5jZUJhY2t3YXJkcygpCisKKyAgICAgICAgdGVzdCBG
b28gaW50UGVzdGlsZW5jZUJhY2t3YXJkcygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBGb28oaW50UGVzdGlsZW5jZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBGb28oX2ludFBlc3Rp
bGVuY2UoKSk7CiAgICAgICAgIH0KLSAgICAgICAgRm9vIGludERlYXRoQmFja3dhcmRzKCkKKwor
ICAgICAgICB0ZXN0IEZvbyBpbnREZWF0aEJhY2t3YXJkcygpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBGb28oaW50RGVhdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRE
ZWF0aCgpKTsKICAgICAgICAgfQogICAgIGApOwogICAgIGNoZWNrRW51bShwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgIndhciIsIFtdKSwgMCk7CkBAIC0zNTQ5LDE5ICszNjE3LDE5IEBA
IHRlc3RzLmVudW1XaXRoTWFudWFsVmFsdWVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgUGVz
dGlsZW5jZSA9IDIzLAogICAgICAgICAgICAgRGVhdGggPSAtNDIKICAgICAgICAgfQotICAgICAg
ICBGb28gd2FyKCkKKyAgICAgICAgdGVzdCBGb28gd2FyKCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIEZvby5XYXI7CiAgICAgICAgIH0KLSAgICAgICAgRm9vIGZhbWluZSgpCisgICAg
ICAgIHRlc3QgRm9vIGZhbWluZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28u
RmFtaW5lOwogICAgICAgICB9Ci0gICAgICAgIEZvbyBwZXN0aWxlbmNlKCkKKyAgICAgICAgdGVz
dCBGb28gcGVzdGlsZW5jZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28uUGVz
dGlsZW5jZTsKICAgICAgICAgfQotICAgICAgICBGb28gZGVhdGgoKQorICAgICAgICB0ZXN0IEZv
byBkZWF0aCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28uRGVhdGg7CiAgICAg
ICAgIH0KQEAgLTM2MDksMTkgKzM2NzcsMTkgQEAgdGVzdHMuZW51bVdpdGhTb21lTWFudWFsVmFs
dWVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgUGVzdGlsZW5jZSA9IDAsCiAgICAgICAgICAg
ICBEZWF0aAogICAgICAgICB9Ci0gICAgICAgIEZvbyB3YXIoKQorICAgICAgICB0ZXN0IEZvbyB3
YXIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRm9vLldhcjsKICAgICAgICAgfQot
ICAgICAgICBGb28gZmFtaW5lKCkKKyAgICAgICAgdGVzdCBGb28gZmFtaW5lKCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIEZvby5GYW1pbmU7CiAgICAgICAgIH0KLSAgICAgICAgRm9v
IHBlc3RpbGVuY2UoKQorICAgICAgICB0ZXN0IEZvbyBwZXN0aWxlbmNlKCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwogICAgICAgICB9Ci0gICAgICAgIEZv
byBkZWF0aCgpCisgICAgICAgIHRlc3QgRm9vIGRlYXRoKCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIEZvby5EZWF0aDsKICAgICAgICAgfQpAQCAtMzYzNSwxMSArMzcwMywxMSBAQCB0
ZXN0cy5lbnVtV2l0aFNvbWVNYW51YWxWYWx1ZXMgPSBmdW5jdGlvbigpCiB0ZXN0cy50cmFwID0g
ZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZv
bygpCisgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRyYXA7
CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbzIoaW50IHgpCisgICAgICAgIHRlc3QgaW50IGZv
bzIoaW50IHgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh4ID09IDMpCiAgICAgICAgICAg
ICAgICAgdHJhcDsKQEAgLTM2NDksNyArMzcxNyw3IEBAIHRlc3RzLnRyYXAgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICBpbnQzIHg7CiAgICAgICAgICAgICBmbG9hdCB5OwogICAgICAgICB9Ci0g
ICAgICAgIEJhciBmb28zKCkKKyAgICAgICAgdGVzdCBCYXIgZm9vMygpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHRyYXA7CiAgICAgICAgIH0KQEAgLTM3MDIsMTE3ICszNzcwLDE4NSBAQCB0ZXN0
cy5lbnVtV2l0aEV4cGxpY2l0SW50QmFzZSA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIFBlc3Rp
bGVuY2UsCiAgICAgICAgICAgICBEZWF0aAogICAgICAgICB9Ci0gICAgICAgIEZvbyB3YXIoKQor
CisgICAgICAgIEZvbyBfd2FyKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZvby5X
YXI7CiAgICAgICAgIH0KLSAgICAgICAgRm9vIGZhbWluZSgpCisKKyAgICAgICAgdGVzdCBGb28g
d2FyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF93YXIoKTsKKyAgICAgICAgfQor
CisgICAgICAgIEZvbyBfZmFtaW5lKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZv
by5GYW1pbmU7CiAgICAgICAgIH0KLSAgICAgICAgRm9vIHBlc3RpbGVuY2UoKQorCisgICAgICAg
IHRlc3QgRm9vIGZhbWluZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfZmFtaW5l
KCk7CisgICAgICAgIH0KKworICAgICAgICBGb28gX3Blc3RpbGVuY2UoKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2U7CiAgICAgICAgIH0KLSAgICAgICAgRm9v
IGRlYXRoKCkKKworICAgICAgICB0ZXN0IEZvbyBwZXN0aWxlbmNlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIF9wZXN0aWxlbmNlKCk7CisgICAgICAgIH0KKworICAgICAgICBGb28g
X2RlYXRoKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aDsKICAgICAg
ICAgfQotICAgICAgICBib29sIGVxdWFscyhGb28gYSwgRm9vIGIpCisKKyAgICAgICAgdGVzdCBG
b28gZGVhdGgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2RlYXRoKCk7CisgICAg
ICAgIH0KKworICAgICAgICBib29sIF9lcXVhbHMoRm9vIGEsIEZvbyBiKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgbm90RXF1
YWxzKEZvbyBhLCBGb28gYikKKworICAgICAgICBib29sIF9ub3RFcXVhbHMoRm9vIGEsIEZvbyBi
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYSAhPSBiOwogICAgICAgICB9Ci0gICAg
ICAgIGJvb2wgdGVzdFNpbXBsZUVxdWFsKCkKKworICAgICAgICB0ZXN0IGJvb2wgdGVzdFNpbXBs
ZUVxdWFsKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLldhciwg
Rm9vLldhcik7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0IGJvb2wgdGVzdEFub3RoZXJFcXVh
bCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5QZXN0aWxlbmNl
LCBGb28uUGVzdGlsZW5jZSk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0IGJvb2wgdGVzdE5v
dEVxdWFsKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9lcXVhbHMoRm9vLkZhbWlu
ZSwgRm9vLkRlYXRoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3QgYm9vbCB0ZXN0U2ltcGxl
Tm90RXF1YWwoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXF1YWxzKEZvby5XYXIs
IEZvby5XYXIpOworICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9vLldhciwgRm9vLldh
cik7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlckVxdWFsKCkKKworICAgICAg
ICB0ZXN0IGJvb2wgdGVzdEFub3RoZXJOb3RFcXVhbCgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBlcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNlKTsKKyAgICAgICAg
ICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1YWwoKQorCisgICAgICAgIHRlc3QgYm9v
bCB0ZXN0Tm90Tm90RXF1YWwoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXF1YWxz
KEZvby5GYW1pbmUsIEZvby5EZWF0aCk7CisgICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhG
b28uRmFtaW5lLCBGb28uRGVhdGgpOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgdGVzdFNpbXBs
ZU5vdEVxdWFsKCkKKworICAgICAgICBpbnQgX2ludFdhcigpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBub3RFcXVhbHMoRm9vLldhciwgRm9vLldhcik7CisgICAgICAgICAgICByZXR1
cm4gaW50KF93YXIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCB0ZXN0QW5vdGhlck5vdEVx
dWFsKCkKKworICAgICAgICB0ZXN0IGludCBpbnRXYXIoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbm90RXF1YWxzKEZvby5QZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7CisgICAg
ICAgICAgICByZXR1cm4gX2ludFdhcigpOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgdGVzdE5v
dE5vdEVxdWFsKCkKKworICAgICAgICBpbnQgX2ludEZhbWluZSgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBub3RFcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRlYXRoKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbnQoX2ZhbWluZSgpKTsKICAgICAgICAgfQotICAgICAgICBpbnQgaW50V2Fy
KCkKKworICAgICAgICB0ZXN0IGludCBpbnRGYW1pbmUoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaW50KHdhcigpKTsKKyAgICAgICAgICAgIHJldHVybiBfaW50RmFtaW5lKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaW50IGludEZhbWluZSgpCisKKyAgICAgICAgaW50IF9pbnRQZXN0
aWxlbmNlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChmYW1pbmUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaW50KF9wZXN0aWxlbmNlKCkpOwogICAgICAgICB9Ci0gICAgICAg
IGludCBpbnRQZXN0aWxlbmNlKCkKKworICAgICAgICB0ZXN0IGludCBpbnRQZXN0aWxlbmNlKCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGludChwZXN0aWxlbmNlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIF9pbnRQZXN0aWxlbmNlKCk7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGlu
dERlYXRoKCkKKworICAgICAgICBpbnQgX2ludERlYXRoKCkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGludChkZWF0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBpbnQoX2RlYXRoKCkp
OwogICAgICAgICB9Ci0gICAgICAgIGludCB3YXJWYWx1ZSgpCisKKyAgICAgICAgdGVzdCBpbnQg
aW50RGVhdGgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2ludERlYXRoKCk7Cisg
ICAgICAgIH0KKworICAgICAgICB0ZXN0IGludCB3YXJWYWx1ZSgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiB3YXIoKS52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBfd2FyKCkudmFs
dWU7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZhbWluZVZhbHVlKCkKKworICAgICAgICB0ZXN0
IGludCBmYW1pbmVWYWx1ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYW1pbmUo
KS52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBfZmFtaW5lKCkudmFsdWU7CiAgICAgICAgIH0K
LSAgICAgICAgaW50IHBlc3RpbGVuY2VWYWx1ZSgpCisKKyAgICAgICAgdGVzdCBpbnQgcGVzdGls
ZW5jZVZhbHVlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBlc3RpbGVuY2UoKS52
YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBfcGVzdGlsZW5jZSgpLnZhbHVlOwogICAgICAgICB9
Ci0gICAgICAgIGludCBkZWF0aFZhbHVlKCkKKworICAgICAgICB0ZXN0IGludCBkZWF0aFZhbHVl
KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRlYXRoKCkudmFsdWU7CisgICAgICAg
ICAgICByZXR1cm4gX2RlYXRoKCkudmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgaW50IHdhclZh
bHVlTGl0ZXJhbCgpCisKKyAgICAgICAgdGVzdCBpbnQgd2FyVmFsdWVMaXRlcmFsKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIEZvby5XYXIudmFsdWU7CiAgICAgICAgIH0KLSAgICAg
ICAgaW50IGZhbWluZVZhbHVlTGl0ZXJhbCgpCisKKyAgICAgICAgdGVzdCBpbnQgZmFtaW5lVmFs
dWVMaXRlcmFsKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZvby5GYW1pbmUudmFs
dWU7CiAgICAgICAgIH0KLSAgICAgICAgaW50IHBlc3RpbGVuY2VWYWx1ZUxpdGVyYWwoKQorCisg
ICAgICAgIHRlc3QgaW50IHBlc3RpbGVuY2VWYWx1ZUxpdGVyYWwoKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gRm9vLlBlc3RpbGVuY2UudmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAg
aW50IGRlYXRoVmFsdWVMaXRlcmFsKCkKKworICAgICAgICB0ZXN0IGludCBkZWF0aFZhbHVlTGl0
ZXJhbCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28uRGVhdGgudmFsdWU7CiAg
ICAgICAgIH0KLSAgICAgICAgRm9vIGludFdhckJhY2t3YXJkcygpCisKKyAgICAgICAgdGVzdCBG
b28gaW50V2FyQmFja3dhcmRzKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhp
bnRXYXIoKSk7CisgICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRXYXIoKSk7CiAgICAgICAgIH0K
LSAgICAgICAgRm9vIGludEZhbWluZUJhY2t3YXJkcygpCisKKyAgICAgICAgdGVzdCBGb28gaW50
RmFtaW5lQmFja3dhcmRzKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZvbyhpbnRG
YW1pbmUoKSk7CisgICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRGYW1pbmUoKSk7CiAgICAgICAg
IH0KLSAgICAgICAgRm9vIGludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQorCisgICAgICAgIHRlc3Qg
Rm9vIGludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gRm9vKGludFBlc3RpbGVuY2UoKSk7CisgICAgICAgICAgICByZXR1cm4gRm9vKF9pbnRQZXN0
aWxlbmNlKCkpOwogICAgICAgICB9Ci0gICAgICAgIEZvbyBpbnREZWF0aEJhY2t3YXJkcygpCisK
KyAgICAgICAgdGVzdCBGb28gaW50RGVhdGhCYWNrd2FyZHMoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gRm9vKGludERlYXRoKCkpOworICAgICAgICAgICAgcmV0dXJuIEZvbyhfaW50
RGVhdGgoKSk7CiAgICAgICAgIH0KICAgICBgKTsKICAgICBjaGVja0VudW0ocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIDApOwpAQCAtMzg1MiwxMTcgKzM5ODgsMTg1
IEBAIHRlc3RzLmVudW1XaXRoVWludEJhc2UgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBQZXN0
aWxlbmNlLAogICAgICAgICAgICAgRGVhdGgKICAgICAgICAgfQotICAgICAgICBGb28gd2FyKCkK
KworICAgICAgICBGb28gX3dhcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28u
V2FyOwogICAgICAgICB9Ci0gICAgICAgIEZvbyBmYW1pbmUoKQorCisgICAgICAgIHRlc3QgRm9v
IHdhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfd2FyKCk7CisgICAgICAgIH0K
KworICAgICAgICBGb28gX2ZhbWluZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBG
b28uRmFtaW5lOwogICAgICAgICB9Ci0gICAgICAgIEZvbyBwZXN0aWxlbmNlKCkKKworICAgICAg
ICB0ZXN0IEZvbyBmYW1pbmUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2ZhbWlu
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgRm9vIF9wZXN0aWxlbmNlKCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIEZvby5QZXN0aWxlbmNlOwogICAgICAgICB9Ci0gICAgICAgIEZv
byBkZWF0aCgpCisKKyAgICAgICAgdGVzdCBGb28gcGVzdGlsZW5jZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBfcGVzdGlsZW5jZSgpOworICAgICAgICB9CisKKyAgICAgICAgRm9v
IF9kZWF0aCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28uRGVhdGg7CiAgICAg
ICAgIH0KLSAgICAgICAgYm9vbCBlcXVhbHMoRm9vIGEsIEZvbyBiKQorCisgICAgICAgIHRlc3Qg
Rm9vIGRlYXRoKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9kZWF0aCgpOworICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBfZXF1YWxzKEZvbyBhLCBGb28gYikKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgICAgICAgfQotICAgICAgICBib29sIG5vdEVx
dWFscyhGb28gYSwgRm9vIGIpCisKKyAgICAgICAgYm9vbCBfbm90RXF1YWxzKEZvbyBhLCBGb28g
YikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgIT0gYjsKICAgICAgICAgfQotICAg
ICAgICBib29sIHRlc3RTaW1wbGVFcXVhbCgpCisKKyAgICAgICAgdGVzdCBib29sIHRlc3RTaW1w
bGVFcXVhbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5XYXIs
IEZvby5XYXIpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdCBib29sIHRlc3RBbm90aGVyRXF1
YWwoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gX2VxdWFscyhGb28uUGVzdGlsZW5j
ZSwgRm9vLlBlc3RpbGVuY2UpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdCBib29sIHRlc3RO
b3RFcXVhbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBfZXF1YWxzKEZvby5GYW1p
bmUsIEZvby5EZWF0aCk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0IGJvb2wgdGVzdFNpbXBs
ZU5vdEVxdWFsKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIF9ub3RFcXVhbHMoRm9v
LldhciwgRm9vLldhcik7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0IGJvb2wgdGVzdEFub3Ro
ZXJOb3RFcXVhbCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcXVhbHMoRm9vLldh
ciwgRm9vLldhcik7CisgICAgICAgICAgICByZXR1cm4gX25vdEVxdWFscyhGb28uUGVzdGlsZW5j
ZSwgRm9vLlBlc3RpbGVuY2UpOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgdGVzdEFub3RoZXJF
cXVhbCgpCisKKyAgICAgICAgdGVzdCBib29sIHRlc3ROb3ROb3RFcXVhbCgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcXVhbHMoRm9vLlBlc3RpbGVuY2UsIEZvby5QZXN0aWxlbmNl
KTsKKyAgICAgICAgICAgIHJldHVybiBfbm90RXF1YWxzKEZvby5GYW1pbmUsIEZvby5EZWF0aCk7
CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCB0ZXN0Tm90RXF1YWwoKQorCisgICAgICAgIHVpbnQg
X3VpbnRXYXIoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXF1YWxzKEZvby5GYW1p
bmUsIEZvby5EZWF0aCk7CisgICAgICAgICAgICByZXR1cm4gdWludChfd2FyKCkpOwogICAgICAg
ICB9Ci0gICAgICAgIGJvb2wgdGVzdFNpbXBsZU5vdEVxdWFsKCkKKworICAgICAgICB0ZXN0IHVp
bnQgdWludFdhcigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub3RFcXVhbHMoRm9v
LldhciwgRm9vLldhcik7CisgICAgICAgICAgICByZXR1cm4gX3VpbnRXYXIoKTsKICAgICAgICAg
fQotICAgICAgICBib29sIHRlc3RBbm90aGVyTm90RXF1YWwoKQorCisgICAgICAgIHVpbnQgX3Vp
bnRGYW1pbmUoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm90RXF1YWxzKEZvby5Q
ZXN0aWxlbmNlLCBGb28uUGVzdGlsZW5jZSk7CisgICAgICAgICAgICByZXR1cm4gdWludChfZmFt
aW5lKCkpOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgdGVzdE5vdE5vdEVxdWFsKCkKKworICAg
ICAgICB0ZXN0IHVpbnQgdWludEZhbWluZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBub3RFcXVhbHMoRm9vLkZhbWluZSwgRm9vLkRlYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBf
dWludEZhbWluZSgpOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgdWludFdhcigpCisKKyAgICAg
ICAgdWludCBfdWludFBlc3RpbGVuY2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
dWludCh3YXIoKSk7CisgICAgICAgICAgICByZXR1cm4gdWludChfcGVzdGlsZW5jZSgpKTsKICAg
ICAgICAgfQotICAgICAgICB1aW50IHVpbnRGYW1pbmUoKQorCisgICAgICAgIHRlc3QgdWludCB1
aW50UGVzdGlsZW5jZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1aW50KGZhbWlu
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBfdWludFBlc3RpbGVuY2UoKTsKICAgICAgICAgfQot
ICAgICAgICB1aW50IHVpbnRQZXN0aWxlbmNlKCkKKworICAgICAgICB1aW50IF91aW50RGVhdGgo
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdWludChwZXN0aWxlbmNlKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHVpbnQoX2RlYXRoKCkpOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQg
dWludERlYXRoKCkKKworICAgICAgICB0ZXN0IHVpbnQgdWludERlYXRoKCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHVpbnQoZGVhdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gX3Vp
bnREZWF0aCgpOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgd2FyVmFsdWUoKQorCisgICAgICAg
IHRlc3QgdWludCB3YXJWYWx1ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB3YXIo
KS52YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBfd2FyKCkudmFsdWU7CiAgICAgICAgIH0KLSAg
ICAgICAgdWludCBmYW1pbmVWYWx1ZSgpCisKKyAgICAgICAgdGVzdCB1aW50IGZhbWluZVZhbHVl
KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbWluZSgpLnZhbHVlOworICAgICAg
ICAgICAgcmV0dXJuIF9mYW1pbmUoKS52YWx1ZTsKICAgICAgICAgfQotICAgICAgICB1aW50IHBl
c3RpbGVuY2VWYWx1ZSgpCisKKyAgICAgICAgdGVzdCB1aW50IHBlc3RpbGVuY2VWYWx1ZSgpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwZXN0aWxlbmNlKCkudmFsdWU7CisgICAgICAg
ICAgICByZXR1cm4gX3Blc3RpbGVuY2UoKS52YWx1ZTsKICAgICAgICAgfQotICAgICAgICB1aW50
IGRlYXRoVmFsdWUoKQorCisgICAgICAgIHRlc3QgdWludCBkZWF0aFZhbHVlKCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGRlYXRoKCkudmFsdWU7CisgICAgICAgICAgICByZXR1cm4g
X2RlYXRoKCkudmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgdWludCB3YXJWYWx1ZUxpdGVyYWwo
KQorCisgICAgICAgIHRlc3QgdWludCB3YXJWYWx1ZUxpdGVyYWwoKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gRm9vLldhci52YWx1ZTsKICAgICAgICAgfQotICAgICAgICB1aW50IGZh
bWluZVZhbHVlTGl0ZXJhbCgpCisKKyAgICAgICAgdGVzdCB1aW50IGZhbWluZVZhbHVlTGl0ZXJh
bCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBGb28uRmFtaW5lLnZhbHVlOwogICAg
ICAgICB9Ci0gICAgICAgIHVpbnQgcGVzdGlsZW5jZVZhbHVlTGl0ZXJhbCgpCisKKyAgICAgICAg
dGVzdCB1aW50IHBlc3RpbGVuY2VWYWx1ZUxpdGVyYWwoKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gRm9vLlBlc3RpbGVuY2UudmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBk
ZWF0aFZhbHVlTGl0ZXJhbCgpCisKKyAgICAgICAgdGVzdCB1aW50IGRlYXRoVmFsdWVMaXRlcmFs
KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEZvby5EZWF0aC52YWx1ZTsKICAgICAg
ICAgfQotICAgICAgICBGb28gdWludFdhckJhY2t3YXJkcygpCisKKyAgICAgICAgdGVzdCBGb28g
dWludFdhckJhY2t3YXJkcygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBGb28odWlu
dFdhcigpKTsKKyAgICAgICAgICAgIHJldHVybiBGb28oX3VpbnRXYXIoKSk7CiAgICAgICAgIH0K
LSAgICAgICAgRm9vIHVpbnRGYW1pbmVCYWNrd2FyZHMoKQorCisgICAgICAgIHRlc3QgRm9vIHVp
bnRGYW1pbmVCYWNrd2FyZHMoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRm9vKHVp
bnRGYW1pbmUoKSk7CisgICAgICAgICAgICByZXR1cm4gRm9vKF91aW50RmFtaW5lKCkpOwogICAg
ICAgICB9Ci0gICAgICAgIEZvbyB1aW50UGVzdGlsZW5jZUJhY2t3YXJkcygpCisKKyAgICAgICAg
dGVzdCBGb28gdWludFBlc3RpbGVuY2VCYWNrd2FyZHMoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRm9vKHVpbnRQZXN0aWxlbmNlKCkpOworICAgICAgICAgICAgcmV0dXJuIEZvbyhf
dWludFBlc3RpbGVuY2UoKSk7CiAgICAgICAgIH0KLSAgICAgICAgRm9vIHVpbnREZWF0aEJhY2t3
YXJkcygpCisKKyAgICAgICAgdGVzdCBGb28gdWludERlYXRoQmFja3dhcmRzKCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEZvbyh1aW50RGVhdGgoKSk7CisgICAgICAgICAgICByZXR1
cm4gRm9vKF91aW50RGVhdGgoKSk7CiAgICAgICAgIH0KICAgICBgKTsKICAgICBjaGVja0VudW0o
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJ3YXIiLCBbXSksIDApOwpAQCAtNDAzMCw3
ICs0MjM0LDcgQEAgdGVzdHMuZW1wdHlTdHJ1Y3QgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoYAogICAgICAgICBzdHJ1Y3QgVGhpbmd5IHsgfQotICAgICAgICBpbnQg
Zm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgVGhp
bmd5IHRoaW5neTsKICAgICAgICAgICAgIHJldHVybiA0NjsKQEAgLTQwNjMsNyArNDI2Nyw3IEBA
IHRlc3RzLmVudW1Ob01lbWJlcnMgPSBmdW5jdGlvbigpCiB0ZXN0cy5zaW1wbGVTd2l0Y2ggPSBm
dW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9v
KGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHN3aXRjaCAoeCkgewogICAgICAgICAgICAgY2FzZSA3Njc6CkBAIC00MDgyLDcgKzQyODYs
NyBAQCB0ZXN0cy5zaW1wbGVTd2l0Y2ggPSBmdW5jdGlvbigpCiAKIHRlc3RzLmV4aGF1c3RpdmVV
Y2hhclN3aXRjaCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBsZXQgdGV4dCA9ICJmbG9hdCBmb28odWNo
YXIgeCkgeyBzd2l0Y2ggKHVjaGFyKHgpKSB7IgorICAgIGxldCB0ZXh0ID0gInRlc3QgZmxvYXQg
Zm9vKHVjaGFyIHgpIHsgc3dpdGNoICh1Y2hhcih4KSkgeyIKICAgICBmb3IgKGxldCBpID0gMDsg
aSA8PSAweGZmOyArK2kpCiAgICAgICAgIHRleHQgKz0gImNhc2UgIiArIGkgKyAiOiByZXR1cm4g
IiArIGkgKiAxLjUgKyAiOyI7CiAgICAgdGV4dCArPSAifSB9IjsKQEAgLTQwOTMsNyArNDI5Nyw3
IEBAIHRlc3RzLmV4aGF1c3RpdmVVY2hhclN3aXRjaCA9IGZ1bmN0aW9uKCkKIAogdGVzdHMubm90
UXVpdGVFeGhhdXN0aXZlVWNoYXJTd2l0Y2ggPSBmdW5jdGlvbigpCiB7Ci0gICAgbGV0IHRleHQg
PSAiZmxvYXQgZm9vKHVjaGFyIHgpIHsgc3dpdGNoICh1Y2hhcih4KSkgeyIKKyAgICBsZXQgdGV4
dCA9ICJ0ZXN0IGZsb2F0IGZvbyh1Y2hhciB4KSB7IHN3aXRjaCAodWNoYXIoeCkpIHsiCiAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZTsgKytpKQogICAgICAgICB0ZXh0ICs9ICJjYXNlICIg
KyBpICsgIjogcmV0dXJuICIgKyBpICogMS41ICsgIjsiOwogICAgIHRleHQgKz0gIn0gfSI7CkBA
IC00MTAyLDcgKzQzMDYsNyBAQCB0ZXN0cy5ub3RRdWl0ZUV4aGF1c3RpdmVVY2hhclN3aXRjaCA9
IGZ1bmN0aW9uKCkKIAogdGVzdHMubm90UXVpdGVFeGhhdXN0aXZlVWNoYXJTd2l0Y2hXaXRoRGVm
YXVsdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBsZXQgdGV4dCA9ICJmbG9hdCBmb28odWNoYXIgeCkg
eyBzd2l0Y2ggKHVjaGFyKHgpKSB7IgorICAgIGxldCB0ZXh0ID0gInRlc3QgZmxvYXQgZm9vKHVj
aGFyIHgpIHsgc3dpdGNoICh1Y2hhcih4KSkgeyIKICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAw
eGZlOyArK2kpCiAgICAgICAgIHRleHQgKz0gImNhc2UgIiArIGkgKyAiOiByZXR1cm4gIiArIGkg
KiAxLjUgKyAiOyI7CiAgICAgdGV4dCArPSAiZGVmYXVsdDogcmV0dXJuICIgKyAweGZmICogMS41
ICsgIjsiOwpAQCAtNDExNyw3ICs0MzIxLDcgQEAgdGVzdHMuc3dpdGNoRmFsbFRocm91Z2ggPSBm
dW5jdGlvbigpCiAgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgYmVjb21lIGFuIGVycm9yIGluIGZ1
dHVyZSB2ZXJzaW9ucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3MTcyCiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9v
KGludCB4KQorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGludCByZXN1bHQgPSAwOwogICAgICAgICAgICAgc3dpdGNoICh4KSB7CkBAIC00MTM5LDcg
KzQzNDMsNyBAQCB0ZXN0cy5zd2l0Y2hGYWxsVGhyb3VnaCA9IGZ1bmN0aW9uKCkKIHRlc3RzLnN3
aXRjaEJyZWFrID0gZnVuY3Rpb24oKQogewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAg
ICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4KQogICAgICAg
ICB7CiAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKICAgICAgICAgICAgIHN3aXRjaCAoeCkg
ewpAQCAtNDE2Nyw3ICs0MzcxLDcgQEAgdGVzdHMuZW51bVN3aXRjaEJyZWFrRXhoYXVzdGl2ZSA9
IGZ1bmN0aW9uKCkKICAgICAgICAgZW51bSBGb28gewogICAgICAgICAgICAgQSwgQiwgQwogICAg
ICAgICB9Ci0gICAgICAgIGludCBmb28oRm9vIHgpCisgICAgICAgIHRlc3QgaW50IGZvbyhGb28g
eCkKICAgICAgICAgewogICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7CiAgICAgICAgICAgICBz
d2l0Y2ggKHgpIHsKQEAgLTQyMjIsNyArNDQyNiw3IEBAIHRlc3RzLmVudW1Td2l0Y2hCcmVha05v
dFF1aXRlRXhoYXVzdGl2ZVdpdGhEZWZhdWx0ID0gZnVuY3Rpb24oKQogICAgICAgICBlbnVtIEZv
byB7CiAgICAgICAgICAgICBBLCBCLCBDCiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbyhGb28g
eCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKEZvbyB4KQogICAgICAgICB7CiAgICAgICAgICAgICBp
bnQgcmVzdWx0ID0gMDsKICAgICAgICAgICAgIHN3aXRjaCAoeCkgewpAQCAtNDI4MCw3ICs0NDg0
LDcgQEAgdGVzdHMubXV0dWFsbHlSZWN1cnNpdmVTdHJ1Y3RXaXRoUG9pbnRlcnNCcm9rZW4gPSBm
dW5jdGlvbigpCiAgICAgICAgICAgICB0aHJlYWQgRm9vKiBmb287CiAgICAgICAgICAgICBpbnQg
YmFyOwogICAgICAgICB9Ci0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28o
KQogICAgICAgICB7CiAgICAgICAgICAgICBGb28gZm9vOwogICAgICAgICAgICAgQmFyIGJhcjsK
QEAgLTQzMDUsNyArNDUwOSw3IEBAIHRlc3RzLm11dHVhbGx5UmVjdXJzaXZlU3RydWN0V2l0aFBv
aW50ZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgdGhyZWFkIEZvbyogZm9vOwogICAgICAg
ICAgICAgaW50IGJhcjsKICAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVz
dCBpbnQgZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgRm9vIGZvbzsKICAgICAgICAgICAg
IEJhciBiYXI7CkBAIC00MzI2LDcgKzQ1MzAsNyBAQCB0ZXN0cy5saW5rZWRMaXN0ID0gZnVuY3Rp
b24oKQogICAgICAgICAgICAgdGhyZWFkIE5vZGUqIG5leHQ7CiAgICAgICAgICAgICBpbnQgdmFs
dWU7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZvbygp
CiAgICAgICAgIHsKICAgICAgICAgICAgIE5vZGUgeCwgeSwgejsKICAgICAgICAgICAgIHgubmV4
dCA9ICZ5OwpAQCAtNDM0Myw3ICs0NTQ3LDcgQEAgdGVzdHMubGlua2VkTGlzdCA9IGZ1bmN0aW9u
KCkKIHRlc3RzLnBvaW50ZXJUb1BvaW50ZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgbGV0IHByb2dy
YW0gPSBkb1ByZXAoYAotICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkK
ICAgICAgICAgewogICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICB0aHJlYWQgaW50KiBw
ID0gJng7CkBAIC00MzY2LDcgKzQ1NzAsNyBAQCB0ZXN0cy5wb2ludGVyVG9Qb2ludGVyID0gZnVu
Y3Rpb24oKQogdGVzdHMuYXJyYXlSZWZUb0FycmF5UmVmID0gZnVuY3Rpb24oKQogewogICAgIGxl
dCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50
IGZvbygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgdGhyZWFk
IGludFtdIHAgPSBAeDsKQEAgLTQ0NzYsNyArNDY4MCw3IEBAIHRlc3RzLm9wZXJhdG9yV2l0aG91
dFVuaW5mZXJyYWJsZVR5cGVWYXJpYWJsZSA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHJlc3Vs
dC54ID0gYS54ICsgYi54OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQot
ICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAgICAgICAgewogICAg
ICAgICAgICAgRm9vIGE7CiAgICAgICAgICAgICBhLnggPSA2NDU7CkBAIC00OTcwLDcgKzUxNzQs
NyBAQCB0ZXN0cy5hbmRlcldpdGhOb3RoaW5nV3JvbmcgPSBmdW5jdGlvbigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiAmZm9vLT54OwogICAgICAgICB9Ci0gICAgICAgIGludCBmb28o
KQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAgICB7CiAgICAgICAgICAgICBGb28geDsK
ICAgICAgICAgICAgIHgueCA9IDEzOwpAQCAtNTA0NCw3ICs1MjQ4LDcgQEAgdGVzdHMuYW5kZXJX
aXRoQXJyYXlSZWYgPSBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAm
Zm9vWzBdLng7CiAgICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50
IGZvbygpCiAgICAgICAgIHsKICAgICAgICAgICAgIEZvbyB4OwogICAgICAgICAgICAgeC54ID0g
MTM7CkBAIC01MjQ5LDcgKzU0NTMsNyBAQCB0ZXN0cy5pbmRleEFuZGVyV2l0aE5vdGhpbmdXcm9u
ZyA9IGZ1bmN0aW9uKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZmb28tPng7CiAg
ICAgICAgIH0KLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEZvbyB4OwogICAgICAgICAgICAgeC54ID0gMTM7CkBAIC01MzM0
LDcgKzU1MzgsNyBAQCB0ZXN0cy5pbmRleEFuZGVyV2l0aEFycmF5UmVmID0gZnVuY3Rpb24oKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJmFycmF5W3VpbnQoaW5kZXggKyAxKV0ueDsK
ICAgICAgICAgfQotICAgICAgICBpbnQgZm9vKCkKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKICAg
ICAgICAgewogICAgICAgICAgICAgRm9vIHg7CiAgICAgICAgICAgICB4LnggPSAxMzsKQEAgLTUz
ODksNyArNTU5Myw3IEBAIHRlc3RzLmFuZFJldHVybmVkQXJyYXlSZWYgPSBmdW5jdGlvbigpCiAg
ICAgICAgICAgICB4WzVdID0gMzU0OwogICAgICAgICAgICAgcmV0dXJuIEB4OwogICAgICAgICB9
Ci0gICAgICAgIGludCBmb28oKQorICAgICAgICB0ZXN0IGludCBmb28oKQogICAgICAgICB7CiAg
ICAgICAgICAgICB0aHJlYWQgaW50KiBwdHIgPSAmZ2V0QXJyYXkoKVs1XTsKICAgICAgICAgICAg
IHJldHVybiAqcHRyOwpAQCAtNTQxMiw3ICs1NjE2LDcgQEAgdGVzdHMuY2FzdHMgPSBmdW5jdGlv
bigpCiAgICAgICAgICAgICBiLnkgPSBmb28ueCArIDc7CiAgICAgICAgICAgICByZXR1cm4gYjsK
ICAgICAgICAgfQotICAgICAgICBpbnQgYmF6KGludCB6KSB7CisgICAgICAgIHRlc3QgaW50IGJh
eihpbnQgeikgewogICAgICAgICAgICAgRm9vIGZvbzsKICAgICAgICAgICAgIGZvby54ID0gejsK
ICAgICAgICAgICAgIEJhciBiID0gQmFyKGZvbyk7CkBAIC01NDMyLDcgKzU2MzYsNyBAQCB0ZXN0
cy5jYXN0cyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIGIueSA9ICgqZm9vKS54ICsgODsKICAg
ICAgICAgICAgIHJldHVybiAmYjsKICAgICAgICAgfQotICAgICAgICBpbnQgYmF6KGludCB6KSB7
CisgICAgICAgIHRlc3QgaW50IGJheihpbnQgeikgewogICAgICAgICAgICAgRm9vIGZvbzsKICAg
ICAgICAgICAgIGZvby54ID0gejsKICAgICAgICAgICAgIHRocmVhZCBCYXIqIGIgPSB0aHJlYWQg
QmFyKigmZm9vKTsKQEAgLTU0NjgsNyArNTY3Miw3IEBAIHRlc3RzLnBvaW50ZXJUb01lbWJlciA9
IGZ1bmN0aW9uKCkKIHRlc3RzLmJ1aWx0aW5NYXRyaWNlcyA9IGZ1bmN0aW9uKCkKIHsKICAgICBs
ZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIGZsb2F0IGZvbygpCisgICAgICAgIHRlc3Qg
ZmxvYXQgZm9vKCkKICAgICAgICAgewogICAgICAgICAgICAgZmxvYXQyeDIgYTsKICAgICAgICAg
ICAgIGFbMF1bMF0gPSAxOwpAQCAtNTQ3Nyw3ICs1NjgxLDcgQEAgdGVzdHMuYnVpbHRpbk1hdHJp
Y2VzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgYVsxXVsxXSA9IDQ7CiAgICAgICAgICAgICBy
ZXR1cm4gYVswXVswXTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28yKCkKKyAgICAgICAg
dGVzdCBmbG9hdCBmb28yKCkKICAgICAgICAgewogICAgICAgICAgICAgZmxvYXQyeDMgYTsKICAg
ICAgICAgICAgIGFbMF1bMF0gPSAxOwpAQCAtNTQ4OCwxMiArNTY5MiwxMiBAQCB0ZXN0cy5idWls
dGluTWF0cmljZXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBhWzFdWzJdID0gNjsKICAgICAg
ICAgICAgIHJldHVybiBhWzFdWzJdOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzMoKQor
ICAgICAgICB0ZXN0IGZsb2F0IGZvbzMoKQogICAgICAgICB7CiAgICAgICAgICAgICBmbG9hdDJ4
MiBhOwogICAgICAgICAgICAgcmV0dXJuIGFbMF1bMF07CiAgICAgICAgIH0KLSAgICAgICAgYm9v
bCBmb280KCkKKyAgICAgICAgdGVzdCBib29sIGZvbzQoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBmbG9hdDJ4MiBhOwogICAgICAgICAgICAgYVswXVswXSA9IDE7CkBAIC01NTEyLDcgKzU3MTYs
NyBAQCB0ZXN0cy5idWlsdGluTWF0cmljZXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9vNSgp
CisgICAgICAgIHRlc3QgYm9vbCBmb281KCkKICAgICAgICAgewogICAgICAgICAgICAgZmxvYXQy
eDIgYTsKICAgICAgICAgICAgIGFbMF0gPSBmbG9hdDIoMSwgMik7CkBAIC01NTI0LDcgKzU3Mjgs
NyBAQCB0ZXN0cy5idWlsdGluTWF0cmljZXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBiWzFd
WzFdID0gNDsKICAgICAgICAgICAgIHJldHVybiBhID09IGI7CiAgICAgICAgIH0KLSAgICAgICAg
Ym9vbCBmb282KCkKKyAgICAgICAgdGVzdCBib29sIGZvbzYoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBmbG9hdDJ4MiBhOwogICAgICAgICAgICAgYVswXVswXSA9IDE7CkBAIC01NTQwLDcgKzU3
NDQsNyBAQCB0ZXN0cy5idWlsdGluTWF0cmljZXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBh
WzFdICo9IDY7CiAgICAgICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzcoKQorICAgICAgICB0ZXN0IGZsb2F0IGZvbzcoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBmbG9hdDJ4MyBhID0gZmxvYXQyeDMoZmxvYXQzKDMsIDQsIDUpLCBmbG9hdDMoNiwg
NywgOCkpOwogICAgICAgICAgICAgcmV0dXJuIGFbMF1bMl07CkBAIC01NTU2LDE1ICs1NzYwLDE1
IEBAIHRlc3RzLmJ1aWx0aW5NYXRyaWNlcyA9IGZ1bmN0aW9uKCkKIH0KIAogdGVzdHMuaGFsZlNp
bXBsZU1hdGggPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcCgiaGFsZiBm
b28oaGFsZiB4LCBoYWxmIHkpIHsgcmV0dXJuIHggKyB5OyB9Iik7CisgICAgbGV0IHByb2dyYW0g
PSBkb1ByZXAoInRlc3QgaGFsZiBmb28oaGFsZiB4LCBoYWxmIHkpIHsgcmV0dXJuIHggKyB5OyB9
Iik7CiAgICAgY2hlY2tIYWxmKHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VIYWxmKHByb2dyYW0sIDcpLCBtYWtlSGFsZihwcm9ncmFtLCA1KV0pLCAxMik7Ci0gICAg
cHJvZ3JhbSA9IGRvUHJlcCgiaGFsZiBmb28oaGFsZiB4LCBoYWxmIHkpIHsgcmV0dXJuIHggLSB5
OyB9Iik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcCgidGVzdCBoYWxmIGZvbyhoYWxmIHgsIGhhbGYg
eSkgeyByZXR1cm4geCAtIHk7IH0iKTsKICAgICBjaGVja0hhbGYocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUhhbGYocHJvZ3JhbSwgNyksIG1ha2VIYWxmKHByb2dy
YW0sIDUpXSksIDIpOwogICAgIGNoZWNrSGFsZihwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSGFsZihwcm9ncmFtLCA1KSwgbWFrZUhhbGYocHJvZ3JhbSwgNyldKSwg
LTIpOwotICAgIHByb2dyYW0gPSBkb1ByZXAoImhhbGYgZm9vKGhhbGYgeCwgaGFsZiB5KSB7IHJl
dHVybiB4ICogeTsgfSIpOworICAgIHByb2dyYW0gPSBkb1ByZXAoInRlc3QgaGFsZiBmb28oaGFs
ZiB4LCBoYWxmIHkpIHsgcmV0dXJuIHggKiB5OyB9Iik7CiAgICAgY2hlY2tIYWxmKHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VIYWxmKHByb2dyYW0sIDcpLCBtYWtl
SGFsZihwcm9ncmFtLCA1KV0pLCAzNSk7CiAgICAgY2hlY2tIYWxmKHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VIYWxmKHByb2dyYW0sIDcpLCBtYWtlSGFsZihwcm9n
cmFtLCAtNSldKSwgLTM1KTsKLSAgICBwcm9ncmFtID0gZG9QcmVwKCJoYWxmIGZvbyhoYWxmIHgs
IGhhbGYgeSkgeyByZXR1cm4geCAvIHk7IH0iKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKCJ0ZXN0
IGhhbGYgZm9vKGhhbGYgeCwgaGFsZiB5KSB7IHJldHVybiB4IC8geTsgfSIpOwogICAgIGNoZWNr
SGFsZihwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSGFsZihwcm9n
cmFtLCA3KSwgbWFrZUhhbGYocHJvZ3JhbSwgMildKSwgMy41KTsKICAgICBjaGVja0hhbGYocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUhhbGYocHJvZ3JhbSwgNyks
IG1ha2VIYWxmKHByb2dyYW0sIC0yKV0pLCAtMy41KTsKIH0KQEAgLTU2MzQsMjggKzU4MzgsMjgg
QEAgdGVzdHMubWF0cml4TXVsdGlwbGljYXRpb24gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
IHlbMl1bM10gPSA2MTsKICAgICAgICAgICAgIHJldHVybiB5OwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzAwKCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzAwKCkgewogICAgICAgICAg
ICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVswXVswXTsKICAgICAgICAg
fQotICAgICAgICBmbG9hdCBmb28wMSgpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28wMSgpIHsK
ICAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMF1bMV07
CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMDIoKSB7CisgICAgICAgIHRlc3QgZmxvYXQg
Zm9vMDIoKSB7CiAgICAgICAgICAgICByZXR1cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgy
KCkpWzBdWzJdOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzAzKCkgeworICAgICAgICB0
ZXN0IGZsb2F0IGZvbzAzKCkgewogICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEo
KSwgbWF0cml4MigpKVswXVszXTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMCgpIHsK
KyAgICAgICAgdGVzdCBmbG9hdCBmb28xMCgpIHsKICAgICAgICAgICAgIHJldHVybiBtdWx0aXBs
eShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1bMF07CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQg
Zm9vMTEoKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMTEoKSB7CiAgICAgICAgICAgICByZXR1
cm4gbXVsdGlwbHkobWF0cml4MSgpLCBtYXRyaXgyKCkpWzFdWzFdOwogICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGZvbzEyKCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzEyKCkgewogICAgICAg
ICAgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeDEoKSwgbWF0cml4MigpKVsxXVsyXTsKICAgICAg
ICAgfQotICAgICAgICBmbG9hdCBmb28xMygpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xMygp
IHsKICAgICAgICAgICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgxKCksIG1hdHJpeDIoKSlbMV1b
M107CiAgICAgICAgIH0KICAgICBgKTsKQEAgLTU2NzEsMTcgKzU4NzUsMTcgQEAgdGVzdHMubWF0
cml4TXVsdGlwbGljYXRpb24gPSBmdW5jdGlvbigpIHsKIAogdGVzdHMuYXJyYXlJbmRleCA9IGZ1
bmN0aW9uKCkgewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgdWludCBpbm5l
ckFycmF5TGVuZ3RoKCkgeworICAgICAgICB0ZXN0IHVpbnQgaW5uZXJBcnJheUxlbmd0aCgpIHsK
ICAgICAgICAgICAgIGludFsyXVszXSBhcnJheTsKICAgICAgICAgICAgIHJldHVybiBhcnJheVsw
XS5sZW5ndGg7CiAgICAgICAgIH0KIAotICAgICAgICB1aW50IG91dGVyQXJyYXlMZW5ndGgoKSB7
CisgICAgICAgIHRlc3QgdWludCBvdXRlckFycmF5TGVuZ3RoKCkgewogICAgICAgICAgICAgaW50
WzJdWzNdIGFycmF5OwogICAgICAgICAgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKICAgICAgICAg
fQogCi0gICAgICAgIGludCBhcnJheUluZGV4aW5nKHVpbnQgaSwgdWludCBqKSB7CisgICAgICAg
IHRlc3QgaW50IGFycmF5SW5kZXhpbmcodWludCBpLCB1aW50IGopIHsKICAgICAgICAgICAgIGlu
dFsyXVszXSBhcnJheTsKICAgICAgICAgICAgIGFycmF5WzBdWzBdID0gMTsKICAgICAgICAgICAg
IGFycmF5WzBdWzFdID0gMjsKQEAgLTU5MDEsNjEgKzYxMDUsNjEgQEAgZnVuY3Rpb24gY3JlYXRl
VGV4dHVyZXNGb3JUZXN0aW5nKHByb2dyYW0pCiAKIHRlc3RzLnRleHR1cmVEaW1lbnNpb25zID0g
ZnVuY3Rpb24oKSB7CiAgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICB1aW50IGZv
bzEoVGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28xKFRl
eHR1cmUxRDxmbG9hdD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAg
ICAgICAgIHVpbnQgbnVtYmVyT2ZMZXZlbHM7CiAgICAgICAgICAgICBHZXREaW1lbnNpb25zKHRl
eHR1cmUsIDAsICZ3aWR0aCwgJm51bWJlck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJldHVybiB3
aWR0aDsKICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzIoVGV4dHVyZTFEPGZsb2F0PiB0ZXh0
dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28yKFRleHR1cmUxRDxmbG9hdD4gdGV4dHVyZSkg
ewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQgbnVtYmVyT2ZMZXZl
bHM7CiAgICAgICAgICAgICBHZXREaW1lbnNpb25zKHRleHR1cmUsIDAsICZ3aWR0aCwgJm51bWJl
ck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJldHVybiBudW1iZXJPZkxldmVsczsKICAgICAgICAg
fQotICAgICAgICB1aW50IGZvbzMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUpIHsKKyAg
ICAgICAgdGVzdCB1aW50IGZvbzMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUpIHsKICAg
ICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAgICB1aW50IGVsZW1lbnRzOwogICAgICAg
ICAgICAgdWludCBudW1iZXJPZkxldmVsczsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4
dHVyZSwgMCwgJndpZHRoLCAmZWxlbWVudHMsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAg
ICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb280KFRleHR1cmUxREFy
cmF5PGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb280KFRleHR1cmUxREFy
cmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAg
ICAgdWludCBlbGVtZW50czsKICAgICAgICAgICAgIHVpbnQgbnVtYmVyT2ZMZXZlbHM7CiAgICAg
ICAgICAgICBHZXREaW1lbnNpb25zKHRleHR1cmUsIDAsICZ3aWR0aCwgJmVsZW1lbnRzLCAmbnVt
YmVyT2ZMZXZlbHMpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgICAgICB9Ci0g
ICAgICAgIHVpbnQgZm9vNShUZXh0dXJlMURBcnJheTxmbG9hdD4gdGV4dHVyZSkgeworICAgICAg
ICB0ZXN0IHVpbnQgZm9vNShUZXh0dXJlMURBcnJheTxmbG9hdD4gdGV4dHVyZSkgewogICAgICAg
ICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQgZWxlbWVudHM7CiAgICAgICAgICAg
ICB1aW50IG51bWJlck9mTGV2ZWxzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJl
LCAwLCAmd2lkdGgsICZlbGVtZW50cywgJm51bWJlck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJl
dHVybiBudW1iZXJPZkxldmVsczsKICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzYoVGV4dHVy
ZTJEPGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb282KFRleHR1cmUyRDxm
bG9hdD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVp
bnQgaGVpZ2h0OwogICAgICAgICAgICAgdWludCBudW1iZXJPZkxldmVsczsKICAgICAgICAgICAg
IEdldERpbWVuc2lvbnModGV4dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmbnVtYmVyT2ZMZXZl
bHMpOwogICAgICAgICAgICAgcmV0dXJuIHdpZHRoOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQg
Zm9vNyhUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUpIHsKKyAgICAgICAgdGVzdCB1aW50IGZvbzco
VGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAg
ICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IG51bWJlck9mTGV2ZWxzOwog
ICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZu
dW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0OwogICAgICAgICB9Ci0g
ICAgICAgIHVpbnQgZm9vOChUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUpIHsKKyAgICAgICAgdGVz
dCB1aW50IGZvbzgoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50
IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IG51bWJl
ck9mTGV2ZWxzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lkdGgs
ICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZM
ZXZlbHM7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb285KFRleHR1cmUyREFycmF5PGZsb2F0
PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb285KFRleHR1cmUyREFycmF5PGZsb2F0
PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBo
ZWlnaHQ7CiAgICAgICAgICAgICB1aW50IGVsZW1lbnRzOwpAQCAtNTk2Myw3ICs2MTY3LDcgQEAg
dGVzdHMudGV4dHVyZURpbWVuc2lvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIEdldERp
bWVuc2lvbnModGV4dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmZWxlbWVudHMsICZudW1iZXJP
ZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAg
dWludCBmb28xMChUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0
IHVpbnQgZm9vMTAoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAg
IHVpbnQgd2lkdGg7CiAgICAgICAgICAgICB1aW50IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQg
ZWxlbWVudHM7CkBAIC01OTcxLDcgKzYxNzUsNyBAQCB0ZXN0cy50ZXh0dXJlRGltZW5zaW9ucyA9
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lk
dGgsICZoZWlnaHQsICZlbGVtZW50cywgJm51bWJlck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJl
dHVybiBoZWlnaHQ7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28xMShUZXh0dXJlMkRBcnJh
eTxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMTEoVGV4dHVyZTJEQXJy
YXk8ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAg
ICB1aW50IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQgZWxlbWVudHM7CkBAIC01OTc5LDcgKzYx
ODMsNyBAQCB0ZXN0cy50ZXh0dXJlRGltZW5zaW9ucyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZlbGVtZW50cywg
Jm51bWJlck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50czsKICAgICAgICAg
fQotICAgICAgICB1aW50IGZvbzEyKFRleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7Cisg
ICAgICAgIHRlc3QgdWludCBmb28xMihUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSkgewog
ICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQgaGVpZ2h0OwogICAgICAg
ICAgICAgdWludCBlbGVtZW50czsKQEAgLTU5ODcsNyArNjE5MSw3IEBAIHRlc3RzLnRleHR1cmVE
aW1lbnNpb25zID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBHZXREaW1lbnNpb25zKHRleHR1
cmUsIDAsICZ3aWR0aCwgJmhlaWdodCwgJmVsZW1lbnRzLCAmbnVtYmVyT2ZMZXZlbHMpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bWJlck9mTGV2ZWxzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQg
Zm9vMTMoVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28x
MyhUZXh0dXJlM0Q8ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAg
ICAgICAgICAgICB1aW50IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQgZGVwdGg7CkBAIC01OTk1
LDcgKzYxOTksNyBAQCB0ZXN0cy50ZXh0dXJlRGltZW5zaW9ucyA9IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZkZXB0
aCwgJm51bWJlck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJldHVybiB3aWR0aDsKICAgICAgICAg
fQotICAgICAgICB1aW50IGZvbzE0KFRleHR1cmUzRDxmbG9hdD4gdGV4dHVyZSkgeworICAgICAg
ICB0ZXN0IHVpbnQgZm9vMTQoVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAg
ICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50
IGRlcHRoOwpAQCAtNjAwMyw3ICs2MjA3LDcgQEAgdGVzdHMudGV4dHVyZURpbWVuc2lvbnMgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4dHVyZSwgMCwgJndpZHRo
LCAmaGVpZ2h0LCAmZGVwdGgsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4g
aGVpZ2h0OwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMTUoVGV4dHVyZTNEPGZsb2F0PiB0
ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28xNShUZXh0dXJlM0Q8ZmxvYXQ+IHRleHR1
cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAgICB1aW50IGhlaWdodDsK
ICAgICAgICAgICAgIHVpbnQgZGVwdGg7CkBAIC02MDExLDcgKzYyMTUsNyBAQCB0ZXN0cy50ZXh0
dXJlRGltZW5zaW9ucyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0
ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZkZXB0aCwgJm51bWJlck9mTGV2ZWxzKTsKICAg
ICAgICAgICAgIHJldHVybiBkZXB0aDsKICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzE2KFRl
eHR1cmUzRDxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMTYoVGV4dHVy
ZTNEPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAg
ICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IGRlcHRoOwpAQCAtNjAxOSwxMjAgKzYy
MjMsMTIwIEBAIHRlc3RzLnRleHR1cmVEaW1lbnNpb25zID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBHZXREaW1lbnNpb25zKHRleHR1cmUsIDAsICZ3aWR0aCwgJmhlaWdodCwgJmRlcHRoLCAm
bnVtYmVyT2ZMZXZlbHMpOwogICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mTGV2ZWxzOwogICAg
ICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMTcoVGV4dHVyZUN1YmU8ZmxvYXQ+IHRleHR1cmUpIHsK
KyAgICAgICAgdGVzdCB1aW50IGZvbzE3KFRleHR1cmVDdWJlPGZsb2F0PiB0ZXh0dXJlKSB7CiAg
ICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAg
ICAgICB1aW50IG51bWJlck9mTGV2ZWxzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0
dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICBy
ZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28xOChUZXh0dXJlQ3ViZTxm
bG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMTgoVGV4dHVyZUN1YmU8Zmxv
YXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAgICB1aW50
IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQgbnVtYmVyT2ZMZXZlbHM7CiAgICAgICAgICAgICBH
ZXREaW1lbnNpb25zKHRleHR1cmUsIDAsICZ3aWR0aCwgJmhlaWdodCwgJm51bWJlck9mTGV2ZWxz
KTsKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBm
b28xOShUZXh0dXJlQ3ViZTxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9v
MTkoVGV4dHVyZUN1YmU8ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7
CiAgICAgICAgICAgICB1aW50IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQgbnVtYmVyT2ZMZXZl
bHM7CiAgICAgICAgICAgICBHZXREaW1lbnNpb25zKHRleHR1cmUsIDAsICZ3aWR0aCwgJmhlaWdo
dCwgJm51bWJlck9mTGV2ZWxzKTsKICAgICAgICAgICAgIHJldHVybiBudW1iZXJPZkxldmVsczsK
ICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzIwKFJXVGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJl
KSB7CisgICAgICAgIHRlc3QgdWludCBmb28yMChSV1RleHR1cmUxRDxmbG9hdD4gdGV4dHVyZSkg
ewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4
dHVyZSwgJndpZHRoKTsKICAgICAgICAgICAgIHJldHVybiB3aWR0aDsKICAgICAgICAgfQotICAg
ICAgICB1aW50IGZvbzIxKFJXVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUpIHsKKyAgICAg
ICAgdGVzdCB1aW50IGZvbzIxKFJXVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUpIHsKICAg
ICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAgICB1aW50IGVsZW1lbnRzOwogICAgICAg
ICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAmd2lkdGgsICZlbGVtZW50cyk7CiAgICAgICAg
ICAgICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28yMihSV1RleHR1
cmUxREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28yMihSV1Rl
eHR1cmUxREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwog
ICAgICAgICAgICAgdWludCBlbGVtZW50czsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4
dHVyZSwgJndpZHRoLCAmZWxlbWVudHMpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwog
ICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMjMoUldUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUp
IHsKKyAgICAgICAgdGVzdCB1aW50IGZvbzIzKFJXVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlKSB7
CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAg
ICAgICAgICBHZXREaW1lbnNpb25zKHRleHR1cmUsICZ3aWR0aCwgJmhlaWdodCk7CiAgICAgICAg
ICAgICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28yNChSV1RleHR1
cmUyRDxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMjQoUldUZXh0dXJl
MkQ8ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAg
ICB1aW50IGhlaWdodDsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4dHVyZSwgJndpZHRo
LCAmaGVpZ2h0KTsKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAgICAgICAgIH0KLSAgICAg
ICAgdWludCBmb28yNShSV1RleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAg
IHRlc3QgdWludCBmb28yNShSV1RleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAg
ICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAg
ICB1aW50IGVsZW1lbnRzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAmd2lk
dGgsICZoZWlnaHQsICZlbGVtZW50cyk7CiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7CiAgICAg
ICAgIH0KLSAgICAgICAgdWludCBmb28yNihSV1RleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJl
KSB7CisgICAgICAgIHRlc3QgdWludCBmb28yNihSV1RleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0
dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7
CiAgICAgICAgICAgICB1aW50IGVsZW1lbnRzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0
ZXh0dXJlLCAmd2lkdGgsICZoZWlnaHQsICZlbGVtZW50cyk7CiAgICAgICAgICAgICByZXR1cm4g
aGVpZ2h0OwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMjcoUldUZXh0dXJlMkRBcnJheTxm
bG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMjcoUldUZXh0dXJlMkRBcnJh
eTxmbG9hdD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAg
IHVpbnQgaGVpZ2h0OwogICAgICAgICAgICAgdWludCBlbGVtZW50czsKICAgICAgICAgICAgIEdl
dERpbWVuc2lvbnModGV4dHVyZSwgJndpZHRoLCAmaGVpZ2h0LCAmZWxlbWVudHMpOwogICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMjgoUldU
ZXh0dXJlM0Q8ZmxvYXQ+IHRleHR1cmUpIHsKKyAgICAgICAgdGVzdCB1aW50IGZvbzI4KFJXVGV4
dHVyZTNEPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAg
ICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IGRlcHRoOwogICAgICAgICAgICAg
R2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAmd2lkdGgsICZoZWlnaHQsICZkZXB0aCk7CiAgICAgICAg
ICAgICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28yOShSV1RleHR1
cmUzRDxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMjkoUldUZXh0dXJl
M0Q8ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAg
ICB1aW50IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQgZGVwdGg7CiAgICAgICAgICAgICBHZXRE
aW1lbnNpb25zKHRleHR1cmUsICZ3aWR0aCwgJmhlaWdodCwgJmRlcHRoKTsKICAgICAgICAgICAg
IHJldHVybiBoZWlnaHQ7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28zMChSV1RleHR1cmUz
RDxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMzAoUldUZXh0dXJlM0Q8
ZmxvYXQ+IHRleHR1cmUpIHsKICAgICAgICAgICAgIHVpbnQgd2lkdGg7CiAgICAgICAgICAgICB1
aW50IGhlaWdodDsKICAgICAgICAgICAgIHVpbnQgZGVwdGg7CiAgICAgICAgICAgICBHZXREaW1l
bnNpb25zKHRleHR1cmUsICZ3aWR0aCwgJmhlaWdodCwgJmRlcHRoKTsKICAgICAgICAgICAgIHJl
dHVybiBkZXB0aDsKICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzMxKFRleHR1cmVEZXB0aDJE
PGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28zMShUZXh0dXJlRGVwdGgy
RDxmbG9hdD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAg
IHVpbnQgaGVpZ2h0OwogICAgICAgICAgICAgdWludCBudW1iZXJPZkxldmVsczsKICAgICAgICAg
ICAgIEdldERpbWVuc2lvbnModGV4dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmbnVtYmVyT2ZM
ZXZlbHMpOwogICAgICAgICAgICAgcmV0dXJuIHdpZHRoOwogICAgICAgICB9Ci0gICAgICAgIHVp
bnQgZm9vMzIoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1cmUpIHsKKyAgICAgICAgdGVzdCB1
aW50IGZvbzMyKFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1
aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IG51
bWJlck9mTGV2ZWxzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lk
dGgsICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0
OwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMzMoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRl
eHR1cmUpIHsKKyAgICAgICAgdGVzdCB1aW50IGZvbzMzKFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0
ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWln
aHQ7CiAgICAgICAgICAgICB1aW50IG51bWJlck9mTGV2ZWxzOwogICAgICAgICAgICAgR2V0RGlt
ZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7CiAg
ICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZMZXZlbHM7CiAgICAgICAgIH0KLSAgICAgICAgdWlu
dCBmb28zNChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRl
c3QgdWludCBmb28zNChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAg
ICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAg
ICB1aW50IGVsZW1lbnRzOwpAQCAtNjE0MCw3ICs2MzQ0LDcgQEAgdGVzdHMudGV4dHVyZURpbWVu
c2lvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4dHVyZSwg
MCwgJndpZHRoLCAmaGVpZ2h0LCAmZWxlbWVudHMsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAg
ICAgICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28zNShUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28zNShU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdp
ZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IGVsZW1lbnRz
OwpAQCAtNjE0OCw3ICs2MzUyLDcgQEAgdGVzdHMudGV4dHVyZURpbWVuc2lvbnMgPSBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4dHVyZSwgMCwgJndpZHRoLCAmaGVp
Z2h0LCAmZWxlbWVudHMsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gaGVp
Z2h0OwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vMzYoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMzYoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAg
ICAgIHVpbnQgaGVpZ2h0OwogICAgICAgICAgICAgdWludCBlbGVtZW50czsKQEAgLTYxNTYsNyAr
NjM2MCw3IEBAIHRlc3RzLnRleHR1cmVEaW1lbnNpb25zID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBHZXREaW1lbnNpb25zKHRleHR1cmUsIDAsICZ3aWR0aCwgJmhlaWdodCwgJmVsZW1lbnRz
LCAmbnVtYmVyT2ZMZXZlbHMpOwogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgICAg
ICB9Ci0gICAgICAgIHVpbnQgZm9vMzcoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVy
ZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vMzcoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4g
dGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQgaGVp
Z2h0OwogICAgICAgICAgICAgdWludCBlbGVtZW50czsKQEAgLTYxNjQsNTQgKzYzNjgsNTQgQEAg
dGVzdHMudGV4dHVyZURpbWVuc2lvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIEdldERp
bWVuc2lvbnModGV4dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmZWxlbWVudHMsICZudW1iZXJP
ZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gbnVtYmVyT2ZMZXZlbHM7CiAgICAgICAgIH0K
LSAgICAgICAgdWludCBmb28zOChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiB0ZXh0dXJlKSB7Cisg
ICAgICAgIHRlc3QgdWludCBmb28zOChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiB0ZXh0dXJlKSB7
CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAg
ICAgICAgICB1aW50IG51bWJlck9mTGV2ZWxzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0
ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZudW1iZXJPZkxldmVscyk7CiAgICAgICAgICAg
ICByZXR1cm4gd2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgdWludCBmb28zOShUZXh0dXJlRGVw
dGhDdWJlPGZsb2F0PiB0ZXh0dXJlKSB7CisgICAgICAgIHRlc3QgdWludCBmb28zOShUZXh0dXJl
RGVwdGhDdWJlPGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdpZHRoOwogICAg
ICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IG51bWJlck9mTGV2ZWxzOwog
ICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAwLCAmd2lkdGgsICZoZWlnaHQsICZu
dW1iZXJPZkxldmVscyk7CiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0OwogICAgICAgICB9Ci0g
ICAgICAgIHVpbnQgZm9vNDAoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4gdGV4dHVyZSkgeworICAg
ICAgICB0ZXN0IHVpbnQgZm9vNDAoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4gdGV4dHVyZSkgewog
ICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQgaGVpZ2h0OwogICAgICAg
ICAgICAgdWludCBudW1iZXJPZkxldmVsczsKICAgICAgICAgICAgIEdldERpbWVuc2lvbnModGV4
dHVyZSwgMCwgJndpZHRoLCAmaGVpZ2h0LCAmbnVtYmVyT2ZMZXZlbHMpOwogICAgICAgICAgICAg
cmV0dXJuIG51bWJlck9mTGV2ZWxzOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQgZm9vNDEoUldU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vNDEo
UldUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0
aDsKICAgICAgICAgICAgIHVpbnQgaGVpZ2h0OwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0
ZXh0dXJlLCAmd2lkdGgsICZoZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuIHdpZHRoOwogICAg
ICAgICB9Ci0gICAgICAgIHVpbnQgZm9vNDIoUldUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVy
ZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vNDIoUldUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4
dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQgaGVpZ2h0
OwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAmd2lkdGgsICZoZWlnaHQpOwog
ICAgICAgICAgICAgcmV0dXJuIGhlaWdodDsKICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzQz
KFJXVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVp
bnQgZm9vNDMoUldUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAg
ICAgICB1aW50IHdpZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1
aW50IGVsZW1lbnRzOwogICAgICAgICAgICAgR2V0RGltZW5zaW9ucyh0ZXh0dXJlLCAmd2lkdGgs
ICZoZWlnaHQsICZlbGVtZW50cyk7CiAgICAgICAgICAgICByZXR1cm4gd2lkdGg7CiAgICAgICAg
IH0KLSAgICAgICAgdWludCBmb280NChSV1RleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1
cmUpIHsKKyAgICAgICAgdGVzdCB1aW50IGZvbzQ0KFJXVGV4dHVyZURlcHRoMkRBcnJheTxmbG9h
dD4gdGV4dHVyZSkgewogICAgICAgICAgICAgdWludCB3aWR0aDsKICAgICAgICAgICAgIHVpbnQg
aGVpZ2h0OwogICAgICAgICAgICAgdWludCBlbGVtZW50czsKICAgICAgICAgICAgIEdldERpbWVu
c2lvbnModGV4dHVyZSwgJndpZHRoLCAmaGVpZ2h0LCAmZWxlbWVudHMpOwogICAgICAgICAgICAg
cmV0dXJuIGhlaWdodDsKICAgICAgICAgfQotICAgICAgICB1aW50IGZvbzQ1KFJXVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSkgeworICAgICAgICB0ZXN0IHVpbnQgZm9vNDUoUldU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlKSB7CiAgICAgICAgICAgICB1aW50IHdp
ZHRoOwogICAgICAgICAgICAgdWludCBoZWlnaHQ7CiAgICAgICAgICAgICB1aW50IGVsZW1lbnRz
OwpAQCAtNjI2OSw2NyArNjQ3Myw2NyBAQCB0ZXN0cy50ZXh0dXJlRGltZW5zaW9ucyA9IGZ1bmN0
aW9uKCkgewogCiB0ZXN0cy50ZXh0dXJlTG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGxldCBwcm9n
cmFtID0gZG9QcmVwKGAKLSAgICAgICAgZmxvYXQgZm9vMShUZXh0dXJlMUQ8ZmxvYXQ+IHRleHR1
cmUsIGludCBsb2NhdGlvbiwgaW50IG1pcG1hcCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzEo
VGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgbG9jYXRpb24sIGludCBtaXBtYXApIHsKICAg
ICAgICAgICAgIHJldHVybiBMb2FkKHRleHR1cmUsIGludDIobG9jYXRpb24sIG1pcG1hcCkpOwog
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzIoVGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJlLCBp
bnQgbG9jYXRpb24sIGludCBtaXBtYXAsIGludCBvZmZzZXQpIHsKKyAgICAgICAgdGVzdCBmbG9h
dCBmb28yKFRleHR1cmUxRDxmbG9hdD4gdGV4dHVyZSwgaW50IGxvY2F0aW9uLCBpbnQgbWlwbWFw
LCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJlLCBpbnQyKGxv
Y2F0aW9uLCBtaXBtYXApLCBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzMo
VGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIGludCBsb2NhdGlvbiwgaW50IG1pcG1hcCwg
aW50IGxheWVyKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMyhUZXh0dXJlMURBcnJheTxmbG9h
dD4gdGV4dHVyZSwgaW50IGxvY2F0aW9uLCBpbnQgbWlwbWFwLCBpbnQgbGF5ZXIpIHsKICAgICAg
ICAgICAgIHJldHVybiBMb2FkKHRleHR1cmUsIGludDMobG9jYXRpb24sIG1pcG1hcCwgbGF5ZXIp
KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb280KFRleHR1cmUxREFycmF5PGZsb2F0PiB0
ZXh0dXJlLCBpbnQgbG9jYXRpb24sIGludCBtaXBtYXAsIGludCBsYXllciwgaW50IG9mZnNldCkg
eworICAgICAgICB0ZXN0IGZsb2F0IGZvbzQoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUs
IGludCBsb2NhdGlvbiwgaW50IG1pcG1hcCwgaW50IGxheWVyLCBpbnQgb2Zmc2V0KSB7CiAgICAg
ICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJlLCBpbnQzKGxvY2F0aW9uLCBtaXBtYXAsIGxheWVy
KSwgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb281KFRleHR1cmUyRDxmbG9h
dD4gdGV4dHVyZSwgaW50IHgsIGludCB5LCBpbnQgbWlwbWFwKSB7CisgICAgICAgIHRlc3QgZmxv
YXQgZm9vNShUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUsIGludCB4LCBpbnQgeSwgaW50IG1pcG1h
cCkgewogICAgICAgICAgICAgcmV0dXJuIExvYWQodGV4dHVyZSwgaW50Myh4LCB5LCBtaXBtYXAp
KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb282KFRleHR1cmUyRDxmbG9hdD4gdGV4dHVy
ZSwgaW50IHgsIGludCB5LCBpbnQgbWlwbWFwLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsK
KyAgICAgICAgdGVzdCBmbG9hdCBmb282KFRleHR1cmUyRDxmbG9hdD4gdGV4dHVyZSwgaW50IHgs
IGludCB5LCBpbnQgbWlwbWFwLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKICAgICAgICAg
ICAgIHJldHVybiBMb2FkKHRleHR1cmUsIGludDMoeCwgeSwgbWlwbWFwKSwgaW50MihvZmZzZXRY
LCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNyhUZXh0dXJlMkRBcnJh
eTxmbG9hdD4gdGV4dHVyZSwgaW50IHgsIGludCB5LCBpbnQgbWlwbWFwLCBpbnQgbGF5ZXIpIHsK
KyAgICAgICAgdGVzdCBmbG9hdCBmb283KFRleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBp
bnQgeCwgaW50IHksIGludCBtaXBtYXAsIGludCBsYXllcikgewogICAgICAgICAgICAgcmV0dXJu
IExvYWQodGV4dHVyZSwgaW50NCh4LCB5LCBtaXBtYXAsIGxheWVyKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vOChUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgaW50IHgsIGlu
dCB5LCBpbnQgbWlwbWFwLCBpbnQgbGF5ZXIsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewor
ICAgICAgICB0ZXN0IGZsb2F0IGZvbzgoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIGlu
dCB4LCBpbnQgeSwgaW50IG1pcG1hcCwgaW50IGxheWVyLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNl
dFkpIHsKICAgICAgICAgICAgIHJldHVybiBMb2FkKHRleHR1cmUsIGludDQoeCwgeSwgbWlwbWFw
LCBsYXllciksIGludDIob2Zmc2V0WCwgb2Zmc2V0WSkpOwogICAgICAgICB9Ci0gICAgICAgIGZs
b2F0IGZvbzkoVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCB6LCBp
bnQgbWlwbWFwKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vOShUZXh0dXJlM0Q8ZmxvYXQ+IHRl
eHR1cmUsIGludCB4LCBpbnQgeSwgaW50IHosIGludCBtaXBtYXApIHsKICAgICAgICAgICAgIHJl
dHVybiBMb2FkKHRleHR1cmUsIGludDQoeCwgeSwgeiwgbWlwbWFwKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vMTAoVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwgaW50IHks
IGludCB6LCBpbnQgbWlwbWFwLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFksIGludCBvZmZzZXRa
KSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMTAoVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlLCBp
bnQgeCwgaW50IHksIGludCB6LCBpbnQgbWlwbWFwLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFks
IGludCBvZmZzZXRaKSB7CiAgICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJlLCBpbnQ0KHgs
IHksIHosIG1pcG1hcCksIGludDMob2Zmc2V0WCwgb2Zmc2V0WSwgb2Zmc2V0WikpOwogICAgICAg
ICB9Ci0gICAgICAgIGZsb2F0IGZvbzExKFJXVGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJlLCBpbnQg
bG9jYXRpb24pIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xMShSV1RleHR1cmUxRDxmbG9hdD4g
dGV4dHVyZSwgaW50IGxvY2F0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJl
LCBsb2NhdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTIoUldUZXh0dXJlMURB
cnJheTxmbG9hdD4gdGV4dHVyZSwgaW50IGxvY2F0aW9uLCBpbnQgbGF5ZXIpIHsKKyAgICAgICAg
dGVzdCBmbG9hdCBmb28xMihSV1RleHR1cmUxREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBpbnQgbG9j
YXRpb24sIGludCBsYXllcikgewogICAgICAgICAgICAgcmV0dXJuIExvYWQodGV4dHVyZSwgaW50
Mihsb2NhdGlvbiwgbGF5ZXIpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xMyhSV1Rl
eHR1cmUyRDxmbG9hdD4gdGV4dHVyZSwgaW50IHgsIGludCB5KSB7CisgICAgICAgIHRlc3QgZmxv
YXQgZm9vMTMoUldUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUsIGludCB4LCBpbnQgeSkgewogICAg
ICAgICAgICAgcmV0dXJuIExvYWQodGV4dHVyZSwgaW50Mih4LCB5KSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vMTQoUldUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgaW50IHgs
IGludCB5LCBpbnQgbGF5ZXIpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xNChSV1RleHR1cmUy
REFycmF5PGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCBsYXllcikgewogICAgICAg
ICAgICAgcmV0dXJuIExvYWQodGV4dHVyZSwgaW50Myh4LCB5LCBsYXllcikpOwogICAgICAgICB9
Ci0gICAgICAgIGZsb2F0IGZvbzE1KFJXVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwg
aW50IHksIGludCB6KSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMTUoUldUZXh0dXJlM0Q8Zmxv
YXQ+IHRleHR1cmUsIGludCB4LCBpbnQgeSwgaW50IHopIHsKICAgICAgICAgICAgIHJldHVybiBM
b2FkKHRleHR1cmUsIGludDMoeCwgeSwgeikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZv
bzE2KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCBtaXBt
YXApIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xNihUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4
dHVyZSwgaW50IHgsIGludCB5LCBpbnQgbWlwbWFwKSB7CiAgICAgICAgICAgICByZXR1cm4gTG9h
ZCh0ZXh0dXJlLCBpbnQzKHgsIHksIG1pcG1hcCkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGZvbzE3KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCBt
aXBtYXAsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZv
bzE3KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCBtaXBt
YXAsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIExvYWQo
dGV4dHVyZSwgaW50Myh4LCB5LCBtaXBtYXApLCBpbnQyKG9mZnNldFgsIG9mZnNldFkpKTsKICAg
ICAgICAgfQotICAgICAgICBmbG9hdCBmb28xOChUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0
ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCBtaXBtYXAsIGludCBsYXllcikgeworICAgICAgICB0
ZXN0IGZsb2F0IGZvbzE4KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIGludCB4
LCBpbnQgeSwgaW50IG1pcG1hcCwgaW50IGxheWVyKSB7CiAgICAgICAgICAgICByZXR1cm4gTG9h
ZCh0ZXh0dXJlLCBpbnQ0KHgsIHksIG1pcG1hcCwgbGF5ZXIpKTsKICAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmb28xOShUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBpbnQgeCwg
aW50IHksIGludCBtaXBtYXAsIGludCBsYXllciwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7
CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMTkoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4
dHVyZSwgaW50IHgsIGludCB5LCBpbnQgbWlwbWFwLCBpbnQgbGF5ZXIsIGludCBvZmZzZXRYLCBp
bnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIExvYWQodGV4dHVyZSwgaW50NCh4LCB5
LCBtaXBtYXAsIGxheWVyKSwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vMjAoUldUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgaW50IHgs
IGludCB5KSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMjAoUldUZXh0dXJlRGVwdGgyRDxmbG9h
dD4gdGV4dHVyZSwgaW50IHgsIGludCB5KSB7CiAgICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0
dXJlLCBpbnQyKHgsIHkpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28yMShSV1RleHR1
cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIGludCB4LCBpbnQgeSwgaW50IGxheWVyKSB7
CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMjEoUldUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0
ZXh0dXJlLCBpbnQgeCwgaW50IHksIGludCBsYXllcikgewogICAgICAgICAgICAgcmV0dXJuIExv
YWQodGV4dHVyZSwgaW50Myh4LCB5LCBsYXllcikpOwogICAgICAgICB9CiAgICAgYCk7CkBAIC02
NjcwLDMxICs2ODc0LDMxIEBAIHRlc3RzLnRleHR1cmVMb2FkID0gZnVuY3Rpb24oKSB7CiAKIHRl
c3RzLnRleHR1cmVTdG9yZSA9IGZ1bmN0aW9uKCkgewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KGAKLSAgICAgICAgZmxvYXQgZm9vMShSV1RleHR1cmUxRDxmbG9hdD4gdGV4dHVyZSwgdWludCBs
b2NhdGlvbiwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xKFJXVGV4dHVy
ZTFEPGZsb2F0PiB0ZXh0dXJlLCB1aW50IGxvY2F0aW9uLCBmbG9hdCB2YWx1ZSkgewogICAgICAg
ICAgICAgU3RvcmUodGV4dHVyZSwgdmFsdWUsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIHJldHVy
biBMb2FkKHRleHR1cmUsIGludChsb2NhdGlvbikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGZvbzIoUldUZXh0dXJlMURBcnJheTxmbG9hdD4gdGV4dHVyZSwgdWludCBsb2NhdGlvbiwgdWlu
dCBsYXllciwgZmxvYXQgdmFsdWUpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28yKFJXVGV4dHVy
ZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHVpbnQgbG9jYXRpb24sIHVpbnQgbGF5ZXIsIGZsb2F0
IHZhbHVlKSB7CiAgICAgICAgICAgICBTdG9yZSh0ZXh0dXJlLCB2YWx1ZSwgdWludDIobG9jYXRp
b24sIGxheWVyKSk7CiAgICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJlLCBpbnQyKGludChs
b2NhdGlvbiksIGludChsYXllcikpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28zKFJX
VGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCB1aW50IHgsIHVpbnQgeSwgZmxvYXQgdmFsdWUpIHsK
KyAgICAgICAgdGVzdCBmbG9hdCBmb28zKFJXVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCB1aW50
IHgsIHVpbnQgeSwgZmxvYXQgdmFsdWUpIHsKICAgICAgICAgICAgIFN0b3JlKHRleHR1cmUsIHZh
bHVlLCB1aW50Mih4LCB5KSk7CiAgICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJlLCBpbnQy
KGludCh4KSwgaW50KHkpKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNChSV1RleHR1
cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCB1aW50IHgsIHVpbnQgeSwgdWludCBsYXllciwgZmxv
YXQgdmFsdWUpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb280KFJXVGV4dHVyZTJEQXJyYXk8Zmxv
YXQ+IHRleHR1cmUsIHVpbnQgeCwgdWludCB5LCB1aW50IGxheWVyLCBmbG9hdCB2YWx1ZSkgewog
ICAgICAgICAgICAgU3RvcmUodGV4dHVyZSwgdmFsdWUsIHVpbnQzKHgsIHksIGxheWVyKSk7CiAg
ICAgICAgICAgICByZXR1cm4gTG9hZCh0ZXh0dXJlLCBpbnQzKGludCh4KSwgaW50KHkpLCBpbnQo
bGF5ZXIpKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNShSV1RleHR1cmUzRDxmbG9h
dD4gdGV4dHVyZSwgdWludCB4LCB1aW50IHksIHVpbnQgeiwgZmxvYXQgdmFsdWUpIHsKKyAgICAg
ICAgdGVzdCBmbG9hdCBmb281KFJXVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlLCB1aW50IHgsIHVp
bnQgeSwgdWludCB6LCBmbG9hdCB2YWx1ZSkgewogICAgICAgICAgICAgU3RvcmUodGV4dHVyZSwg
dmFsdWUsIHVpbnQzKHgsIHksIHopKTsKICAgICAgICAgICAgIHJldHVybiBMb2FkKHRleHR1cmUs
IGludDMoaW50KHgpLCBpbnQoeSksIGludCh6KSkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGZvbzYoUldUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgdWludCB4LCB1aW50IHksIGZs
b2F0IHZhbHVlKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vNihSV1RleHR1cmVEZXB0aDJEPGZs
b2F0PiB0ZXh0dXJlLCB1aW50IHgsIHVpbnQgeSwgZmxvYXQgdmFsdWUpIHsKICAgICAgICAgICAg
IFN0b3JlKHRleHR1cmUsIHZhbHVlLCB1aW50Mih4LCB5KSk7CiAgICAgICAgICAgICByZXR1cm4g
TG9hZCh0ZXh0dXJlLCBpbnQyKGludCh4KSwgaW50KHkpKSk7CiAgICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vNyhSV1RleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHVpbnQgeCwg
dWludCB5LCB1aW50IGxheWVyLCBmbG9hdCB2YWx1ZSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZv
bzcoUldUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCB1aW50IHgsIHVpbnQgeSwg
dWludCBsYXllciwgZmxvYXQgdmFsdWUpIHsKICAgICAgICAgICAgIFN0b3JlKHRleHR1cmUsIHZh
bHVlLCB1aW50Myh4LCB5LCBsYXllcikpOwogICAgICAgICAgICAgcmV0dXJuIExvYWQodGV4dHVy
ZSwgaW50MyhpbnQoeCksIGludCh5KSwgaW50KGxheWVyKSkpOwogICAgICAgICB9CkBAIC02ODI0
LDE4NCArNzAyOCwxODQgQEAgdGVzdHMudGV4dHVyZVN0b3JlID0gZnVuY3Rpb24oKSB7CiAKIHRl
c3RzLnRleHR1cmVTYW1wbGUgPSBmdW5jdGlvbigpIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCi0gICAgICAgIGZsb2F0IGZvbzEoVGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVy
IHMsIGZsb2F0IGxvY2F0aW9uKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMShUZXh0dXJlMUQ8
ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgbG9jYXRpb24pIHsKICAgICAgICAgICAg
IHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywgbG9jYXRpb24pOwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzIoVGV4dHVyZTFEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IGxv
Y2F0aW9uLCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMihUZXh0dXJlMUQ8
ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgbG9jYXRpb24sIGludCBvZmZzZXQpIHsK
ICAgICAgICAgICAgIHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywgbG9jYXRpb24sIG9mZnNldCk7
CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMyhUZXh0dXJlMURBcnJheTxmbG9hdD4gdGV4
dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCBsYXllcikgeworICAgICAgICB0ZXN0IGZs
b2F0IGZvbzMoVGV4dHVyZTFEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQg
eCwgZmxvYXQgbGF5ZXIpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywg
ZmxvYXQyKHgsIGxheWVyKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNChUZXh0dXJl
MURBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCBsYXllciwg
aW50IG9mZnNldCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzQoVGV4dHVyZTFEQXJyYXk8Zmxv
YXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgbGF5ZXIsIGludCBvZmZzZXQp
IHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywgZmxvYXQyKHgsIGxheWVy
KSwgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb281KFRleHR1cmUyRDxmbG9h
dD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5KSB7CisgICAgICAgIHRlc3Qg
ZmxvYXQgZm9vNShUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwg
ZmxvYXQgeSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZSh0ZXh0dXJlLCBzLCBmbG9hdDIo
eCwgeSkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzYoVGV4dHVyZTJEPGZsb2F0PiB0
ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGludCBvZmZzZXRYLCBpbnQgb2Zm
c2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzYoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJl
LCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkg
ewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZSh0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSksIGlu
dDIob2Zmc2V0WCwgb2Zmc2V0WSkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzcoVGV4
dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgbGF5ZXIpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb283KFRleHR1cmUyREFycmF5PGZs
b2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxheWVyKSB7
CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlKHRleHR1cmUsIHMsIGZsb2F0Myh4LCB5LCBsYXll
cikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzgoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGludCBv
ZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzgoVGV4dHVyZTJE
QXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
bGF5ZXIsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIFNh
bXBsZSh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgbGF5ZXIpLCBpbnQyKG9mZnNldFgsIG9mZnNl
dFkpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb285KFRleHR1cmUzRDxmbG9hdD4gdGV4
dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7CisgICAgICAgIHRl
c3QgZmxvYXQgZm9vOShUZXh0dXJlM0Q8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeikgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZSh0ZXh0dXJl
LCBzLCBmbG9hdDMoeCwgeSwgeikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEwKFRl
eHR1cmUzRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB6LCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFksIGludCBvZmZzZXRaKSB7CisgICAgICAgIHRl
c3QgZmxvYXQgZm9vMTAoVGV4dHVyZTNEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHosIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSwgaW50IG9mZnNl
dFopIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywgZmxvYXQzKHgsIHks
IHopLCBpbnQzKG9mZnNldFgsIG9mZnNldFksIG9mZnNldFopKTsKICAgICAgICAgfQotICAgICAg
ICBmbG9hdCBmb28xMShUZXh0dXJlQ3ViZTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMTEoVGV4dHVy
ZUN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZSh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwg
eikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzEyKFRleHR1cmUyRDxmbG9hdD4gdGV4
dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBCaWFzKSB7CisgICAgICAg
IHRlc3QgZmxvYXQgZm9vMTIoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IEJpYXMpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGVC
aWFzKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgQmlhcyk7CiAgICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vMTMoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IEJpYXMsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAgICAg
ICB0ZXN0IGZsb2F0IGZvbzEzKFRleHR1cmUyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBCaWFzLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsK
ICAgICAgICAgICAgIHJldHVybiBTYW1wbGVCaWFzKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwg
QmlhcywgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQg
Zm9vMTQoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IGRkeDAsIGZsb2F0IGRkeDEsIGZsb2F0IGRkeTAsIGZsb2F0IGRkeTEpIHsKKyAg
ICAgICAgdGVzdCBmbG9hdCBmb28xNChUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIg
cywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgZGR4MCwgZmxvYXQgZGR4MSwgZmxvYXQgZGR5MCwg
ZmxvYXQgZGR5MSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUdyYWQodGV4dHVyZSwgcywg
ZmxvYXQyKHgsIHkpLCBmbG9hdDIoZGR4MCwgZGR4MSksIGZsb2F0MihkZHkwLCBkZHkxKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMTUoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCBz
YW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGRkeDAsIGZsb2F0IGRkeDEsIGZsb2F0
IGRkeTAsIGZsb2F0IGRkeTEsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAgICAgICB0
ZXN0IGZsb2F0IGZvbzE1KFRleHR1cmUyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCBkZHgwLCBmbG9hdCBkZHgxLCBmbG9hdCBkZHkwLCBmbG9hdCBk
ZHkxLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1w
bGVHcmFkKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgZmxvYXQyKGRkeDAsIGRkeDEpLCBmbG9h
dDIoZGR5MCwgZGR5MSksIGludDIob2Zmc2V0WCwgb2Zmc2V0WSkpOwogICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGZvbzE2KFRleHR1cmUyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCBMT0QpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28xNihUZXh0
dXJlMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
TE9EKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlTGV2ZWwodGV4dHVyZSwgcywgZmxvYXQy
KHgsIHkpLCBMT0QpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzE3KFRleHR1cmUyRDxm
bG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBMT0QsIGlu
dCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzE3KFRleHR1
cmUyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBM
T0QsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBs
ZUxldmVsKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgTE9ELCBpbnQyKG9mZnNldFgsIG9mZnNl
dFkpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xOChUZXh0dXJlMkRBcnJheTxmbG9h
dD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxv
YXQgQmlhcykgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzE4KFRleHR1cmUyREFycmF5PGZsb2F0
PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxheWVyLCBmbG9h
dCBCaWFzKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlQmlhcyh0ZXh0dXJlLCBzLCBmbG9h
dDMoeCwgeSwgbGF5ZXIpLCBCaWFzKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28xOShU
ZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCBsYXllciwgZmxvYXQgQmlhcywgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7Cisg
ICAgICAgIHRlc3QgZmxvYXQgZm9vMTkoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNh
bXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IEJpYXMsIGludCBv
ZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUJpYXModGV4
dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSwgQmlhcywgaW50MihvZmZzZXRYLCBvZmZzZXRZ
KSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMjAoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+
IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0
IGRkeDAsIGZsb2F0IGRkeDEsIGZsb2F0IGRkeTAsIGZsb2F0IGRkeTEpIHsKKyAgICAgICAgdGVz
dCBmbG9hdCBmb28yMChUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgZGR4MCwgZmxvYXQgZGR4MSwgZmxv
YXQgZGR5MCwgZmxvYXQgZGR5MSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUdyYWQodGV4
dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSwgZmxvYXQyKGRkeDAsIGRkeDEpLCBmbG9hdDIo
ZGR5MCwgZGR5MSkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzIxKFRleHR1cmUyREFy
cmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxh
eWVyLCBmbG9hdCBkZHgwLCBmbG9hdCBkZHgxLCBmbG9hdCBkZHkwLCBmbG9hdCBkZHkxLCBpbnQg
b2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28yMShUZXh0dXJl
MkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCBsYXllciwgZmxvYXQgZGR4MCwgZmxvYXQgZGR4MSwgZmxvYXQgZGR5MCwgZmxvYXQgZGR5MSwg
aW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlR3Jh
ZCh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgbGF5ZXIpLCBmbG9hdDIoZGR4MCwgZGR4MSksIGZs
b2F0MihkZHkwLCBkZHkxKSwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZmxvYXQgZm9vMjIoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIg
cywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IExPRCkgeworICAgICAgICB0
ZXN0IGZsb2F0IGZvbzIyKFRleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMs
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxheWVyLCBmbG9hdCBMT0QpIHsKICAgICAgICAgICAg
IHJldHVybiBTYW1wbGVMZXZlbCh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgbGF5ZXIpLCBMT0Qp
OwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzIzKFRleHR1cmUyREFycmF5PGZsb2F0PiB0
ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxheWVyLCBmbG9hdCBM
T0QsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzIz
KFRleHR1cmUyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IGxheWVyLCBmbG9hdCBMT0QsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewog
ICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUxldmVsKHRleHR1cmUsIHMsIGZsb2F0Myh4LCB5LCBs
YXllciksIExPRCwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAg
aW50IGZvbzI0KFRleHR1cmUxRDxpbnQ0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IGxvY2F0
aW9uKSB7CisgICAgICAgIHRlc3QgaW50IGZvbzI0KFRleHR1cmUxRDxpbnQ0PiB0ZXh0dXJlLCBz
YW1wbGVyIHMsIGZsb2F0IGxvY2F0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlKHRl
eHR1cmUsIHMsIGxvY2F0aW9uKS54OwogICAgICAgICB9Ci0gICAgICAgIGludCBmb28yNShUZXh0
dXJlMUQ8aW50ND4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCBsb2NhdGlvbikgeworICAgICAg
ICB0ZXN0IGludCBmb28yNShUZXh0dXJlMUQ8aW50ND4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9h
dCBsb2NhdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZSh0ZXh0dXJlLCBzLCBsb2Nh
dGlvbikueTsKICAgICAgICAgfQotICAgICAgICBpbnQgZm9vMjYoVGV4dHVyZTFEPGludDQ+IHRl
eHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgbG9jYXRpb24pIHsKKyAgICAgICAgdGVzdCBpbnQgZm9v
MjYoVGV4dHVyZTFEPGludDQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgbG9jYXRpb24pIHsK
ICAgICAgICAgICAgIHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywgbG9jYXRpb24pLno7CiAgICAg
ICAgIH0KLSAgICAgICAgaW50IGZvbzI3KFRleHR1cmUxRDxpbnQ0PiB0ZXh0dXJlLCBzYW1wbGVy
IHMsIGZsb2F0IGxvY2F0aW9uKSB7CisgICAgICAgIHRlc3QgaW50IGZvbzI3KFRleHR1cmUxRDxp
bnQ0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IGxvY2F0aW9uKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gU2FtcGxlKHRleHR1cmUsIHMsIGxvY2F0aW9uKS53OwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzI4KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZs
b2F0IHgsIGZsb2F0IHkpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28yOChUZXh0dXJlRGVwdGgy
RDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5KSB7CiAgICAgICAg
ICAgICByZXR1cm4gU2FtcGxlKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSk7CiAgICAgICAgIH0K
LSAgICAgICAgZmxvYXQgZm9vMjkoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBs
ZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CisgICAg
ICAgIHRlc3QgZmxvYXQgZm9vMjkoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBs
ZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAg
ICAgICAgICByZXR1cm4gU2FtcGxlKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgaW50MihvZmZz
ZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMzAoVGV4dHVyZURl
cHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCBsYXllcikgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzMwKFRleHR1cmVEZXB0aDJEQXJy
YXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5
ZXIpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGUodGV4dHVyZSwgcywgZmxvYXQzKHgsIHks
IGxheWVyKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMzEoVGV4dHVyZURlcHRoMkRB
cnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBs
YXllciwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9v
MzEoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAg
ICAgICAgICByZXR1cm4gU2FtcGxlKHRleHR1cmUsIHMsIGZsb2F0Myh4LCB5LCBsYXllciksIGlu
dDIob2Zmc2V0WCwgb2Zmc2V0WSkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzMyKFRl
eHR1cmVEZXB0aEN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzMyKFRleHR1cmVEZXB0aEN1YmU8
ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgewog
ICAgICAgICAgICAgcmV0dXJuIFNhbXBsZSh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgeikpOwog
ICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzMzKFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0
dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IEJpYXMpIHsKKyAgICAgICAg
dGVzdCBmbG9hdCBmb28zMyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBz
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBCaWFzKSB7CiAgICAgICAgICAgICByZXR1cm4gU2Ft
cGxlQmlhcyh0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSksIEJpYXMpOwogICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGZvbzM0KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMs
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IEJpYXMsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkg
eworICAgICAgICB0ZXN0IGZsb2F0IGZvbzM0KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJl
LCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IEJpYXMsIGludCBvZmZzZXRYLCBp
bnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUJpYXModGV4dHVyZSwgcywg
ZmxvYXQyKHgsIHkpLCBCaWFzLCBpbnQyKG9mZnNldFgsIG9mZnNldFkpKTsKICAgICAgICAgfQot
ICAgICAgICBmbG9hdCBmb28zNShUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxl
ciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBkZHgwLCBmbG9hdCBkZHgxLCBmbG9hdCBkZHkw
LCBmbG9hdCBkZHkxKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMzUoVGV4dHVyZURlcHRoMkQ8
ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgZGR4MCwg
ZmxvYXQgZGR4MSwgZmxvYXQgZGR5MCwgZmxvYXQgZGR5MSkgewogICAgICAgICAgICAgcmV0dXJu
IFNhbXBsZUdyYWQodGV4dHVyZSwgcywgZmxvYXQyKHgsIHkpLCBmbG9hdDIoZGR4MCwgZGR4MSks
IGZsb2F0MihkZHkwLCBkZHkxKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMzYoVGV4
dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgZGR4MCwgZmxvYXQgZGR4MSwgZmxvYXQgZGR5MCwgZmxvYXQgZGR5MSwgaW50IG9mZnNl
dFgsIGludCBvZmZzZXRZKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMzYoVGV4dHVyZURlcHRo
MkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgZGR4
MCwgZmxvYXQgZGR4MSwgZmxvYXQgZGR5MCwgZmxvYXQgZGR5MSwgaW50IG9mZnNldFgsIGludCBv
ZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlR3JhZCh0ZXh0dXJlLCBzLCBmbG9h
dDIoeCwgeSksIGZsb2F0MihkZHgwLCBkZHgxKSwgZmxvYXQyKGRkeTAsIGRkeTEpLCBpbnQyKG9m
ZnNldFgsIG9mZnNldFkpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28zNyhUZXh0dXJl
RGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCBMT0QpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28zNyhUZXh0dXJlRGVwdGgyRDxmbG9hdD4g
dGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBMT0QpIHsKICAgICAg
ICAgICAgIHJldHVybiBTYW1wbGVMZXZlbCh0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSksIExPRCk7
CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vMzgoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRl
eHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgTE9ELCBpbnQgb2Zmc2V0
WCwgaW50IG9mZnNldFkpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb28zOChUZXh0dXJlRGVwdGgy
RDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBMT0Qs
IGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUxl
dmVsKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgTE9ELCBpbnQyKG9mZnNldFgsIG9mZnNldFkp
KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb28zOShUZXh0dXJlRGVwdGgyREFycmF5PGZs
b2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxheWVyLCBm
bG9hdCBCaWFzKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vMzkoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXll
ciwgZmxvYXQgQmlhcykgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUJpYXModGV4dHVyZSwg
cywgZmxvYXQzKHgsIHksIGxheWVyKSwgQmlhcyk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQg
Zm9vNDAoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgQmlhcywgaW50IG9mZnNldFgsIGludCBv
ZmZzZXRZKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vNDAoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwg
ZmxvYXQgQmlhcywgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1
cm4gU2FtcGxlQmlhcyh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgbGF5ZXIpLCBCaWFzLCBpbnQy
KG9mZnNldFgsIG9mZnNldFkpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb280MShUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IGxheWVyLCBmbG9hdCBkZHgwLCBmbG9hdCBkZHgxLCBmbG9hdCBkZHkwLCBmbG9h
dCBkZHkxKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vNDEoVGV4dHVyZURlcHRoMkRBcnJheTxm
bG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwg
ZmxvYXQgZGR4MCwgZmxvYXQgZGR4MSwgZmxvYXQgZGR5MCwgZmxvYXQgZGR5MSkgewogICAgICAg
ICAgICAgcmV0dXJuIFNhbXBsZUdyYWQodGV4dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSwg
ZmxvYXQyKGRkeDAsIGRkeDEpLCBmbG9hdDIoZGR5MCwgZGR5MSkpOwogICAgICAgICB9Ci0gICAg
ICAgIGZsb2F0IGZvbzQyKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBs
ZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IGRkeDAsIGZsb2F0IGRk
eDEsIGZsb2F0IGRkeTAsIGZsb2F0IGRkeTEsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewor
ICAgICAgICB0ZXN0IGZsb2F0IGZvbzQyKFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1
cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IGRkeDAs
IGZsb2F0IGRkeDEsIGZsb2F0IGRkeTAsIGZsb2F0IGRkeTEsIGludCBvZmZzZXRYLCBpbnQgb2Zm
c2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUdyYWQodGV4dHVyZSwgcywgZmxvYXQz
KHgsIHksIGxheWVyKSwgZmxvYXQyKGRkeDAsIGRkeDEpLCBmbG9hdDIoZGR5MCwgZGR5MSksIGlu
dDIob2Zmc2V0WCwgb2Zmc2V0WSkpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzQzKFRl
eHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IExPRCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzQz
KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IExPRCkgewogICAgICAgICAgICAgcmV0dXJuIFNh
bXBsZUxldmVsKHRleHR1cmUsIHMsIGZsb2F0Myh4LCB5LCBsYXllciksIExPRCk7CiAgICAgICAg
IH0KLSAgICAgICAgZmxvYXQgZm9vNDQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVy
ZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgTE9ELCBp
bnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb280NChUZXh0
dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IGxheWVyLCBmbG9hdCBMT0QsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewog
ICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUxldmVsKHRleHR1cmUsIHMsIGZsb2F0Myh4LCB5LCBs
YXllciksIExPRCwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vNDUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgY29tcGFyZVZhbHVlKSB7CisgICAgICAgIHRlc3QgZmxvYXQg
Zm9vNDUoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgY29tcGFyZVZhbHVlKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxl
Q21wKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgY29tcGFyZVZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBmbG9hdCBmb280NihUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxl
ciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBjb21wYXJlVmFsdWUsIGludCBvZmZzZXRYLCBp
bnQgb2Zmc2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzQ2KFRleHR1cmVEZXB0aDJEPGZs
b2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGNvbXBhcmVW
YWx1ZSwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gU2Ft
cGxlQ21wKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgY29tcGFyZVZhbHVlLCBpbnQyKG9mZnNl
dFgsIG9mZnNldFkpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb280NyhUZXh0dXJlRGVw
dGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IGxheWVyLCBmbG9hdCBjb21wYXJlVmFsdWUpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb280
NyhUZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IGxheWVyLCBmbG9hdCBjb21wYXJlVmFsdWUpIHsKICAgICAgICAgICAg
IHJldHVybiBTYW1wbGVDbXAodGV4dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSwgY29tcGFy
ZVZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb280OChUZXh0dXJlRGVwdGgyREFy
cmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGxh
eWVyLCBmbG9hdCBjb21wYXJlVmFsdWUsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgeworICAg
ICAgICB0ZXN0IGZsb2F0IGZvbzQ4KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUs
IHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGZsb2F0IGNvbXBhcmVW
YWx1ZSwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gU2Ft
cGxlQ21wKHRleHR1cmUsIHMsIGZsb2F0Myh4LCB5LCBsYXllciksIGNvbXBhcmVWYWx1ZSwgaW50
MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNDkoVGV4
dHVyZUN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgYmlhcykgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzQ5KFRleHR1cmVDdWJl
PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZs
b2F0IGJpYXMpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGVCaWFzKHRleHR1cmUsIHMsIGZs
b2F0Myh4LCB5LCB6KSwgYmlhcyk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNTAoVGV4
dHVyZUN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgZGR4MCwgZmxvYXQgZGR4MSwgZmxvYXQgZGR4MiwgZmxvYXQgZGR5MCwgZmxv
YXQgZGR5MSwgZmxvYXQgZGR5MikgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzUwKFRleHR1cmVD
dWJlPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IGRkeDAsIGZsb2F0IGRkeDEsIGZsb2F0IGRkeDIsIGZsb2F0IGRkeTAsIGZsb2F0IGRk
eTEsIGZsb2F0IGRkeTIpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGVHcmFkKHRleHR1cmUs
IHMsIGZsb2F0Myh4LCB5LCB6KSwgZmxvYXQzKGRkeDAsIGRkeDEsIGRkeDIpLCBmbG9hdDMoZGR5
MCwgZGR5MSwgZGR5MikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzUxKFRleHR1cmVD
dWJlPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IGxvZCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzUxKFRleHR1cmVDdWJlPGZsb2F0
PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IGxv
ZCkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUxldmVsKHRleHR1cmUsIHMsIGZsb2F0Myh4
LCB5LCB6KSwgbG9kKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBmb281MihUZXh0dXJlRGVw
dGhDdWJlPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IGJpYXMpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb281MihUZXh0dXJlRGVwdGhD
dWJlPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHos
IGZsb2F0IGJpYXMpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGVCaWFzKHRleHR1cmUsIHMs
IGZsb2F0Myh4LCB5LCB6KSwgYmlhcyk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNTMo
VGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6LCBmbG9hdCBkZHgwLCBmbG9hdCBkZHgxLCBmbG9hdCBkZHgyLCBmbG9hdCBk
ZHkwLCBmbG9hdCBkZHkxLCBmbG9hdCBkZHkyKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vNTMo
VGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB6LCBmbG9hdCBkZHgwLCBmbG9hdCBkZHgxLCBmbG9hdCBkZHgyLCBmbG9hdCBk
ZHkwLCBmbG9hdCBkZHkxLCBmbG9hdCBkZHkyKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxl
R3JhZCh0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgeiksIGZsb2F0MyhkZHgwLCBkZHgxLCBkZHgy
KSwgZmxvYXQzKGRkeTAsIGRkeTEsIGRkeTIpKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBm
b281NChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IGxvZCkgeworICAgICAgICB0ZXN0IGZsb2F0IGZvbzU0
KFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgbG9kKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlTGV2
ZWwodGV4dHVyZSwgcywgZmxvYXQzKHgsIHksIHopLCBsb2QpOwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0IGZvbzU1KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IGNvbXBhcmVWYWx1ZSkgeworICAgICAgICB0ZXN0IGZsb2F0
IGZvbzU1KFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IGNvbXBhcmVWYWx1ZSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBs
ZUNtcExldmVsWmVybyh0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSksIGNvbXBhcmVWYWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZmxvYXQgZm9vNTYoVGV4dHVyZURlcHRoMkQ8ZmxvYXQ+IHRleHR1
cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgY29tcGFyZVZhbHVlLCBpbnQg
b2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb281NihUZXh0dXJl
RGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCBjb21wYXJlVmFsdWUsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAg
cmV0dXJuIFNhbXBsZUNtcExldmVsWmVybyh0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSksIGNvbXBh
cmVWYWx1ZSwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxv
YXQgZm9vNTcoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgY29tcGFyZVZhbHVlKSB7CisgICAg
ICAgIHRlc3QgZmxvYXQgZm9vNTcoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwg
c2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgY29tcGFyZVZh
bHVlKSB7CiAgICAgICAgICAgICByZXR1cm4gU2FtcGxlQ21wTGV2ZWxaZXJvKHRleHR1cmUsIHMs
IGZsb2F0Myh4LCB5LCBsYXllciksIGNvbXBhcmVWYWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
ZmxvYXQgZm9vNTgoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBz
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgY29tcGFyZVZhbHVlLCBpbnQg
b2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKKyAgICAgICAgdGVzdCBmbG9hdCBmb281OChUZXh0dXJl
RGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IGxheWVyLCBmbG9hdCBjb21wYXJlVmFsdWUsIGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0
WSkgewogICAgICAgICAgICAgcmV0dXJuIFNhbXBsZUNtcExldmVsWmVybyh0ZXh0dXJlLCBzLCBm
bG9hdDMoeCwgeSwgbGF5ZXIpLCBjb21wYXJlVmFsdWUsIGludDIob2Zmc2V0WCwgb2Zmc2V0WSkp
OwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0IGZvbzU5KFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+
IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgY29t
cGFyZVZhbHVlKSB7CisgICAgICAgIHRlc3QgZmxvYXQgZm9vNTkoVGV4dHVyZURlcHRoQ3ViZTxm
bG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9h
dCBjb21wYXJlVmFsdWUpIHsKICAgICAgICAgICAgIHJldHVybiBTYW1wbGVDbXAodGV4dHVyZSwg
cywgZmxvYXQzKHgsIHksIHopLCBjb21wYXJlVmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIGZs
b2F0IGZvbzYwKFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgY29tcGFyZVZhbHVlKSB7CisgICAgICAgIHRl
c3QgZmxvYXQgZm9vNjAoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBz
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCBjb21wYXJlVmFsdWUpIHsKICAgICAg
ICAgICAgIHJldHVybiBTYW1wbGVDbXBMZXZlbFplcm8odGV4dHVyZSwgcywgZmxvYXQzKHgsIHks
IHopLCBjb21wYXJlVmFsdWUpOwogICAgICAgICB9CiAgICAgYCk7CkBAIC03NDk2LDQ2ICs3NzAw
LDQ2IEBAIHRlc3RzLnRleHR1cmVTYW1wbGUgPSBmdW5jdGlvbigpIHsKIAogdGVzdHMudGV4dHVy
ZUdhdGhlciA9IGZ1bmN0aW9uKCkgewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAg
ICAgZmxvYXQ0IGZvbzEoVGV4dHVyZTJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0
IHgsIGZsb2F0IHkpIHsKKyAgICAgICAgdGVzdCBmbG9hdDQgZm9vMShUZXh0dXJlMkQ8ZmxvYXQ+
IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSkgewogICAgICAgICAgICAgcmV0
dXJuIEdhdGhlcih0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSkpOwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0NCBmb28yKFRleHR1cmUyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4
LCBmbG9hdCB5LCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKKyAgICAgICAgdGVzdCBmbG9h
dDQgZm9vMihUZXh0dXJlMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxv
YXQgeSwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gR2F0
aGVyKHRleHR1cmUsIHMsIGZsb2F0Mih4LCB5KSwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZmxvYXQ0IGZvbzMoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1
cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIpIHsKKyAgICAgICAg
dGVzdCBmbG9hdDQgZm9vMyhUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBz
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllcikgewogICAgICAgICAgICAgcmV0dXJuIEdh
dGhlcih0ZXh0dXJlLCBzLCBmbG9hdDMoeCwgeSwgbGF5ZXIpKTsKICAgICAgICAgfQotICAgICAg
ICBmbG9hdDQgZm9vNChUZXh0dXJlMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZKSB7
CisgICAgICAgIHRlc3QgZmxvYXQ0IGZvbzQoVGV4dHVyZTJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUs
IHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIsIGludCBvZmZzZXRYLCBp
bnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIEdhdGhlcih0ZXh0dXJlLCBzLCBmbG9h
dDMoeCwgeSwgbGF5ZXIpLCBpbnQyKG9mZnNldFgsIG9mZnNldFkpKTsKICAgICAgICAgfQotICAg
ICAgICBmbG9hdDQgZm9vNShUZXh0dXJlQ3ViZTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7CisgICAgICAgIHRlc3QgZmxvYXQ0IGZvbzUoVGV4
dHVyZUN1YmU8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeikgewogICAgICAgICAgICAgcmV0dXJuIEdhdGhlcih0ZXh0dXJlLCBzLCBmbG9hdDMoeCwg
eSwgeikpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0NCBmb282KFRleHR1cmVEZXB0aDJEPGZs
b2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHkpIHsKKyAgICAgICAgdGVz
dCBmbG9hdDQgZm9vNihUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5KSB7CiAgICAgICAgICAgICByZXR1cm4gR2F0aGVyKHRleHR1cmUsIHMs
IGZsb2F0Mih4LCB5KSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQ0IGZvbzcoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgaW50IG9m
ZnNldFgsIGludCBvZmZzZXRZKSB7CisgICAgICAgIHRlc3QgZmxvYXQ0IGZvbzcoVGV4dHVyZURl
cHRoMkQ8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgaW50IG9m
ZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gR2F0aGVyKHRleHR1cmUs
IHMsIGZsb2F0Mih4LCB5KSwgaW50MihvZmZzZXRYLCBvZmZzZXRZKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZmxvYXQ0IGZvbzgoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2Ft
cGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllcikgeworICAgICAgICB0ZXN0IGZs
b2F0NCBmb284KFRleHR1cmVEZXB0aDJEQXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywg
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbGF5ZXIpIHsKICAgICAgICAgICAgIHJldHVybiBHYXRo
ZXIodGV4dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSk7CiAgICAgICAgIH0KLSAgICAgICAg
ZmxvYXQ0IGZvbzkoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBz
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgaW50IG9mZnNldFgsIGludCBvZmZzZXRZ
KSB7CisgICAgICAgIHRlc3QgZmxvYXQ0IGZvbzkoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4g
dGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgaW50IG9m
ZnNldFgsIGludCBvZmZzZXRZKSB7CiAgICAgICAgICAgICByZXR1cm4gR2F0aGVyKHRleHR1cmUs
IHMsIGZsb2F0Myh4LCB5LCBsYXllciksIGludDIob2Zmc2V0WCwgb2Zmc2V0WSkpOwogICAgICAg
ICB9Ci0gICAgICAgIGZsb2F0NCBmb28xMChUZXh0dXJlRGVwdGhDdWJlPGZsb2F0PiB0ZXh0dXJl
LCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsKKyAgICAgICAgdGVzdCBm
bG9hdDQgZm9vMTAoVGV4dHVyZURlcHRoQ3ViZTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7CiAgICAgICAgICAgICByZXR1cm4gR2F0aGVyKHRl
eHR1cmUsIHMsIGZsb2F0Myh4LCB5LCB6KSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQ0IGZv
bzExKFRleHR1cmVEZXB0aDJEPGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IGNvbXBhcmVWYWx1ZSkgeworICAgICAgICB0ZXN0IGZsb2F0NCBmb28xMShU
ZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCBjb21wYXJlVmFsdWUpIHsKICAgICAgICAgICAgIHJldHVybiBHYXRoZXJDbXAodGV4
dHVyZSwgcywgZmxvYXQyKHgsIHkpLCBjb21wYXJlVmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IGZsb2F0NCBmb28xMihUZXh0dXJlRGVwdGgyRDxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBjb21wYXJlVmFsdWUsIGludCBvZmZzZXRYLCBpbnQgb2Zm
c2V0WSkgeworICAgICAgICB0ZXN0IGZsb2F0NCBmb28xMihUZXh0dXJlRGVwdGgyRDxmbG9hdD4g
dGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBjb21wYXJlVmFsdWUs
IGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkgewogICAgICAgICAgICAgcmV0dXJuIEdhdGhlckNt
cCh0ZXh0dXJlLCBzLCBmbG9hdDIoeCwgeSksIGNvbXBhcmVWYWx1ZSwgaW50MihvZmZzZXRYLCBv
ZmZzZXRZKSk7CiAgICAgICAgIH0KLSAgICAgICAgZmxvYXQ0IGZvbzEzKFRleHR1cmVEZXB0aDJE
QXJyYXk8ZmxvYXQ+IHRleHR1cmUsIHNhbXBsZXIgcywgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
bGF5ZXIsIGZsb2F0IGNvbXBhcmVWYWx1ZSkgeworICAgICAgICB0ZXN0IGZsb2F0NCBmb28xMyhU
ZXh0dXJlRGVwdGgyREFycmF5PGZsb2F0PiB0ZXh0dXJlLCBzYW1wbGVyIHMsIGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IGxheWVyLCBmbG9hdCBjb21wYXJlVmFsdWUpIHsKICAgICAgICAgICAgIHJl
dHVybiBHYXRoZXJDbXAodGV4dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSwgY29tcGFyZVZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBmbG9hdDQgZm9vMTQoVGV4dHVyZURlcHRoMkRBcnJh
eTxmbG9hdD4gdGV4dHVyZSwgc2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXll
ciwgZmxvYXQgY29tcGFyZVZhbHVlLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKKyAgICAg
ICAgdGVzdCBmbG9hdDQgZm9vMTQoVGV4dHVyZURlcHRoMkRBcnJheTxmbG9hdD4gdGV4dHVyZSwg
c2FtcGxlciBzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBsYXllciwgZmxvYXQgY29tcGFyZVZh
bHVlLCBpbnQgb2Zmc2V0WCwgaW50IG9mZnNldFkpIHsKICAgICAgICAgICAgIHJldHVybiBHYXRo
ZXJDbXAodGV4dHVyZSwgcywgZmxvYXQzKHgsIHksIGxheWVyKSwgY29tcGFyZVZhbHVlLCBpbnQy
KG9mZnNldFgsIG9mZnNldFkpKTsKICAgICAgICAgfQogICAgIGApOwpAQCAtNzYwOSwxMSArNzgx
MywxMiBAQCB0ZXN0cy50ZXh0dXJlR2F0aGVyID0gZnVuY3Rpb24oKSB7CiAgICAgLy8gRklYTUU6
IEdhdGhlciBvdGhlciBjb21wb25lbnRzCiB9CiAKKwogdGVzdHMuY29tbWVudFBhcnNpbmcgPSBm
dW5jdGlvbigpIHsKICAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIC8qIHRoaXMg
Y29tbWVudAogICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAgYm9v
bCBmb28oKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHRlc3QgYm9vbCBmb28oKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgYCk7CiAgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKIApAQCAtNzYyOCw3ICs3ODMzLDcgQEAgdGVzdHMu
Y29tbWVudFBhcnNpbmcgPSBmdW5jdGlvbigpIHsKIAogdGVzdHMuY2FsbEFyZ3VtZW50c0FyZUNv
cGllZEltbWVkaWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gKCkgPT4gewogICAgIGxldCBwcm9ncmFt
ID0gZG9QcmVwKGAKLSAgICAgICAgaW50IGZvbygpCisgICAgICAgIHRlc3QgaW50IGZvbygpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqYmFyKDUpICsgKmJhcig3KTsKICAgICAgICAg
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>