<?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>48759</bug_id>
          
          <creation_ts>2010-11-01 08:23:30 -0700</creation_ts>
          <short_desc>[GTK] Cleanup needed in testatk.c file</short_desc>
          <delta_ts>2010-11-01 14:00:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302698</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-01 08:23:30 -0700</bug_when>
    <thetext>Currently, this file is not very coherent in its content since some parts of it are written in an old-fashioned (not WebKit&apos;s coding-style compliant) way and some other, newer, parts are written in a completely different style. 

On top of that, there&apos;s currently the &quot;new trend&quot; in the file of avoiding using an extra main loop in each test by just manually spinning the original main loop before trying to retrieve the accessible objects, which would be more than enough for the tests for properly work.

As a consequence, it would be nice to make some cleanup in this file to prepare it for further modifications, in a way so the whole file uses consistent style and patterns for the unit tests infrastructure.

I have a patch almost ready, attaching it in a while...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302701</commentid>
    <comment_count>1</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-01 08:24:33 -0700</bug_when>
    <thetext>Adding Martin to CC, as he already showed interest on this matter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302711</commentid>
    <comment_count>2</comment_count>
      <attachid>72510</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-01 08:41:46 -0700</bug_when>
    <thetext>Created attachment 72510
Patch proposal

Attaching patch proposal. Asking for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302907</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-01 14:00:44 -0700</bug_when>
    <thetext>Committed r71052: &lt;http://trac.webkit.org/changeset/71052&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72510</attachid>
            <date>2010-11-01 08:41:46 -0700</date>
            <delta_ts>2010-11-01 08:52:18 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-11-01-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>72607</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBjNDYyNzE1MjRhY2IyYjViMjMyZDEzZjc0YTFmNjhlMmQyZjFjOGI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDEgTm92IDIwMTAgMTY6Mzc6NTIgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTAxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIENsZWFu
dXAgbmVlZGVkIGluIHRlc3RhdGsuYyBmaWxlCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4NzU5CgogICAgICAgIENsZWFudXAgZG9uZSBpbiB0ZXN0YXRr
LmMsIG1haW5seSBhZGRyZXNzaW5nIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgoKICAgICAgICAtIFJl
bW92ZWQgYW55IHRyYWNlIG9mIGV4dHJhIG1haW4gbG9vcHMgaW4gdGVzdHMsIHNvIG5vdyB3ZSBq
dXN0CiAgICAgICAgc3BpbiB0aGUgb3JpZ2luYWwgbWFpbiBsb29wIGluIGFsbCBvZiB0aGVtIHRv
IGdldCB0aGUgYTExeQogICAgICAgIG9iamVjdHMuCgogICAgICAgIC0gQXMgd2Ugbm8gbG9uZ2Vy
IHVzZSB0aGUgZXh0cmEgbWFpbiBsb29wcywgcmVtb3ZlZCB0aGUgYmFpbF9vdXQKICAgICAgICBm
dW5jdGlvbiwgdXNlZCBhbG9uZyB3aXRoIGdfaWRsZV9hZGQoKSB0byBzdG9wIHRob3NlIGV4dHJh
IGxvb3BzLgoKICAgICAgICAtIEFzIHdlIG5vdyBzcGluIHRoZSBsb29wIGluIGV2ZXJ5IHRlc3Qs
IGNyZWF0ZWQgYSBuZXcgZnVuY3Rpb24KICAgICAgICB3YWl0Rm9yQWNjZXNzaWJpbGl0eU9iamVj
dHMoKSB0byB3cml0ZSB0aGUgbG9vcCBqdXN0IG9uY2UuCgogICAgICAgIC0gRml4ZWQgbmFtZSBp
biBpbmNvcnJlY3RseSBuYW1lZCB0ZXN0IHRlc3RXZWtpdEF0a1RleHRTZWxlY3Rpb25zLgoKICAg
ICAgICAtIEFscGhhYmV0aWNhbGx5IHNvcnRlZCB0aGUgbGlzdCBvZiBpbmNsdWRlcy4KCiAgICAg
ICAgLSBSZW5hbWVkIGFsbCBpZGVudGlmaWVycyB0byBjYW1lbCBDYXNlIG5vdGF0aW9uLgoKICAg
ICAgICAtIERlY2xhcmUgdmFyaWFibGVzIHdoZW4gbmVlZGVkIG9ubHkgKGluc3RlYWQgb2YgZGVj
bGFyaW5nIGFsbCBvZgogICAgICAgIHRoZW0gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rp
b24pLgoKICAgICAgICAtIERvbid0IGRlY2xhcmUgdHdvIHZhcmlhYmxlcyBvZiB0aGUgc2FtZSB0
eXBlIGluIHRoZSBzYW1lIGxpbmUuCgogICAgICAgIC0gTm8gbW9yZSBzaG9ydCBuYW1lcyBsaWtl
ICdvYmonLCAndGV4dE9iaicgb3IgJ2FsbG9jJy4gVXNlIG5hbWVzCiAgICAgICAgbGlrZSAnb2Jq
ZWN0JywgJ3RleHRPYmplY3QnIGFuZCAnYWxsb2NhdGlvbicgaW5zdGVhZC4KCiAgICAgICAgLSBG
aXhlZCBpbmRlbnRhdGlvbi4KCiAgICAgICAgLSBNYWtlIHN1cmUgYWxsIGNvbW1lbnRzIGZpbmlz
aCB3aXRoICcuJwoKICAgICAgICAtIFJlcGxhY2UgTlVMTCdzIHdpdGggMCdzLgoKICAgICAgICAq
IHRlc3RzL3Rlc3RhdGsuYzoKICAgICAgICAod2FpdEZvckFjY2Vzc2libGVPYmplY3RzKTogTmV3
LCBtYW51YWxseSBzcGlucyB0aGUgbWFpbiBjb250ZXh0CiAgICAgICAgdG8gbWFrZSBzdXJlIGFj
Y2Vzc2libGUgb2JqZWN0cyBhcmUgY3JlYXRlZCBiZWZvcmUgY29udGludWluZy4KICAgICAgICAo
dGVzdEdldFRleHRGdW5jdGlvbik6IEZpeGVkIHRoaXMgZnVuY3Rpb24gdG8gYmUgY29tcGxpYW50
IHdpdGgKICAgICAgICB0aGUgV2ViS2l0J3MgY29kaW5nIHN0eWxlLgogICAgICAgIChydW5HZXRU
ZXh0VGVzdHMpOiBEaXR0by4KICAgICAgICAodGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldEZv
cm1zKTogRGl0dG8uCiAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXQpOiBEaXR0
by4KICAgICAgICAodGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldE5ld2xpbmVzKTogRGl0dG8u
CiAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRUZXh0YXJlYSk6IERpdHRvLgog
ICAgICAgICh0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0VGV4dElucHV0KTogRGl0dG8uCiAg
ICAgICAgKHRlc3RXZWJraXRBdGtHZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlKTogRGl0
dG8uCiAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5TW9kZXJh
dGUpOiBEaXR0by4KICAgICAgICAodGVzdFdlYmtpdEF0a0dldFRleHRJblRhYmxlKTogRGl0dG8u
CiAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRIZWFkZXJzSW5UYWJsZSk6IERpdHRvLgogICAgICAg
IChjb21wQXRrQXR0cmlidXRlKTogRGl0dG8uCiAgICAgICAgKGF0a0F0dHJpYnV0ZVNldEF0dHJp
YnV0ZU5hbWVIYXNWYWx1ZSk6IERpdHRvLgogICAgICAgICh0ZXN0V2Via2l0QXRrVGV4dEF0dHJp
YnV0ZXMpOiBEaXR0by4KICAgICAgICAodGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKTogRGl0
dG8uCiAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRFeHRlbnRzKTogRGl0dG8uCiAgICAgICAgKHRl
c3RXZWJraXRBdGtMYXlvdXRBbmREYXRhVGFibGVzKTogRGl0dG8uCiAgICAgICAgKHRlc3RXZWJr
aXRBdGtMaW5rc1dpdGhJbmxpbmVJbWFnZXMpOiBEaXR0by4KICAgICAgICAodGVzdFdlYmtpdEF0
a0h5cGVydGV4dEFuZEh5cGVybGlua3MpOiBEaXR0by4KICAgICAgICAodGVzdFdlYmtpdEF0a0xp
c3RzT2ZJdGVtcyk6IERpdHRvLgogICAgICAgICh0ZXN0V2Via2l0QXRrVGV4dENoYW5nZWROb3Rp
ZmljYXRpb25zKTogRGl0dG8uCiAgICAgICAgKG1haW4pOiBEaXR0by4KLS0tCiBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZyAgICAgICB8ICAgNjYgKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYyB8
ICA5NTQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmls
ZXMgY2hhbmdlZCwgNTAwIGluc2VydGlvbnMoKyksIDUyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDAz
MjAxYzEuLmZlYWI5NWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzEgQEAKIDIwMTAtMTEtMDEgIE1hcmlvIFNh
bmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIENsZWFudXAgbmVlZGVkIGluIHRlc3Rh
dGsuYyBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODc1OQorCisgICAgICAgIENsZWFudXAgZG9uZSBpbiB0ZXN0YXRrLmMsIG1haW5seSBhZGRy
ZXNzaW5nIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorCisgICAgICAgIC0gUmVtb3ZlZCBhbnkgdHJh
Y2Ugb2YgZXh0cmEgbWFpbiBsb29wcyBpbiB0ZXN0cywgc28gbm93IHdlIGp1c3QKKyAgICAgICAg
c3BpbiB0aGUgb3JpZ2luYWwgbWFpbiBsb29wIGluIGFsbCBvZiB0aGVtIHRvIGdldCB0aGUgYTEx
eQorICAgICAgICBvYmplY3RzLgorCisgICAgICAgIC0gQXMgd2Ugbm8gbG9uZ2VyIHVzZSB0aGUg
ZXh0cmEgbWFpbiBsb29wcywgcmVtb3ZlZCB0aGUgYmFpbF9vdXQKKyAgICAgICAgZnVuY3Rpb24s
IHVzZWQgYWxvbmcgd2l0aCBnX2lkbGVfYWRkKCkgdG8gc3RvcCB0aG9zZSBleHRyYSBsb29wcy4K
KworICAgICAgICAtIEFzIHdlIG5vdyBzcGluIHRoZSBsb29wIGluIGV2ZXJ5IHRlc3QsIGNyZWF0
ZWQgYSBuZXcgZnVuY3Rpb24KKyAgICAgICAgd2FpdEZvckFjY2Vzc2liaWxpdHlPYmplY3RzKCkg
dG8gd3JpdGUgdGhlIGxvb3AganVzdCBvbmNlLgorCisgICAgICAgIC0gRml4ZWQgbmFtZSBpbiBp
bmNvcnJlY3RseSBuYW1lZCB0ZXN0IHRlc3RXZWtpdEF0a1RleHRTZWxlY3Rpb25zLgorCisgICAg
ICAgIC0gQWxwaGFiZXRpY2FsbHkgc29ydGVkIHRoZSBsaXN0IG9mIGluY2x1ZGVzLgorCisgICAg
ICAgIC0gUmVuYW1lZCBhbGwgaWRlbnRpZmllcnMgdG8gY2FtZWwgQ2FzZSBub3RhdGlvbi4KKwor
ICAgICAgICAtIERlY2xhcmUgdmFyaWFibGVzIHdoZW4gbmVlZGVkIG9ubHkgKGluc3RlYWQgb2Yg
ZGVjbGFyaW5nIGFsbCBvZgorICAgICAgICB0aGVtIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1
bmN0aW9uKS4KKworICAgICAgICAtIERvbid0IGRlY2xhcmUgdHdvIHZhcmlhYmxlcyBvZiB0aGUg
c2FtZSB0eXBlIGluIHRoZSBzYW1lIGxpbmUuCisKKyAgICAgICAgLSBObyBtb3JlIHNob3J0IG5h
bWVzIGxpa2UgJ29iaicsICd0ZXh0T2JqJyBvciAnYWxsb2MnLiBVc2UgbmFtZXMKKyAgICAgICAg
bGlrZSAnb2JqZWN0JywgJ3RleHRPYmplY3QnIGFuZCAnYWxsb2NhdGlvbicgaW5zdGVhZC4KKwor
ICAgICAgICAtIEZpeGVkIGluZGVudGF0aW9uLgorCisgICAgICAgIC0gTWFrZSBzdXJlIGFsbCBj
b21tZW50cyBmaW5pc2ggd2l0aCAnLicKKworICAgICAgICAtIFJlcGxhY2UgTlVMTCdzIHdpdGgg
MCdzLgorCisgICAgICAgICogdGVzdHMvdGVzdGF0ay5jOgorICAgICAgICAod2FpdEZvckFjY2Vz
c2libGVPYmplY3RzKTogTmV3LCBtYW51YWxseSBzcGlucyB0aGUgbWFpbiBjb250ZXh0CisgICAg
ICAgIHRvIG1ha2Ugc3VyZSBhY2Nlc3NpYmxlIG9iamVjdHMgYXJlIGNyZWF0ZWQgYmVmb3JlIGNv
bnRpbnVpbmcuCisgICAgICAgICh0ZXN0R2V0VGV4dEZ1bmN0aW9uKTogRml4ZWQgdGhpcyBmdW5j
dGlvbiB0byBiZSBjb21wbGlhbnQgd2l0aAorICAgICAgICB0aGUgV2ViS2l0J3MgY29kaW5nIHN0
eWxlLgorICAgICAgICAocnVuR2V0VGV4dFRlc3RzKTogRGl0dG8uCisgICAgICAgICh0ZXN0V2Vi
a2l0QXRrR2V0VGV4dEF0T2Zmc2V0Rm9ybXMpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJraXRB
dGtHZXRUZXh0QXRPZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJraXRBdGtHZXRUZXh0
QXRPZmZzZXROZXdsaW5lcyk6IERpdHRvLgorICAgICAgICAodGVzdFdlYmtpdEF0a0dldFRleHRB
dE9mZnNldFRleHRhcmVhKTogRGl0dG8uCisgICAgICAgICh0ZXN0V2Via2l0QXRrR2V0VGV4dEF0
T2Zmc2V0VGV4dElucHV0KTogRGl0dG8uCisgICAgICAgICh0ZXN0V2Via2l0QXRrR2V0VGV4dElu
UGFyYWdyYXBoQW5kQm9keVNpbXBsZSk6IERpdHRvLgorICAgICAgICAodGVzdFdlYmtpdEF0a0dl
dFRleHRJblBhcmFncmFwaEFuZEJvZHlNb2RlcmF0ZSk6IERpdHRvLgorICAgICAgICAodGVzdFdl
YmtpdEF0a0dldFRleHRJblRhYmxlKTogRGl0dG8uCisgICAgICAgICh0ZXN0V2Via2l0QXRrR2V0
SGVhZGVyc0luVGFibGUpOiBEaXR0by4KKyAgICAgICAgKGNvbXBBdGtBdHRyaWJ1dGUpOiBEaXR0
by4KKyAgICAgICAgKGF0a0F0dHJpYnV0ZVNldEF0dHJpYnV0ZU5hbWVIYXNWYWx1ZSk6IERpdHRv
LgorICAgICAgICAodGVzdFdlYmtpdEF0a1RleHRBdHRyaWJ1dGVzKTogRGl0dG8uCisgICAgICAg
ICh0ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJr
aXRBdGtHZXRFeHRlbnRzKTogRGl0dG8uCisgICAgICAgICh0ZXN0V2Via2l0QXRrTGF5b3V0QW5k
RGF0YVRhYmxlcyk6IERpdHRvLgorICAgICAgICAodGVzdFdlYmtpdEF0a0xpbmtzV2l0aElubGlu
ZUltYWdlcyk6IERpdHRvLgorICAgICAgICAodGVzdFdlYmtpdEF0a0h5cGVydGV4dEFuZEh5cGVy
bGlua3MpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJraXRBdGtMaXN0c09mSXRlbXMpOiBEaXR0
by4KKyAgICAgICAgKHRlc3RXZWJraXRBdGtUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbnMpOiBEaXR0
by4KKyAgICAgICAgKG1haW4pOiBEaXR0by4KKworMjAxMC0xMS0wMSAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGlu
IFJvYmluc29uLgogCiAgICAgICAgIFtHdGtdIEF0a0h5cGVybGluayBuZWVkcyB0byBiZSBpbXBs
ZW1lbnRlZApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMgYi9XZWJLaXQv
Z3RrL3Rlc3RzL3Rlc3RhdGsuYwppbmRleCA1MGU0YTA4Li41MDljYjg2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYworKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwpAQCAtMTgsMTAgKzE4LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVk
ZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXQuaD4KIAogI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkgJiYgR1RL
X0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCkBAIC01OCw0NzQgKzU4LDQxMSBAQCBzdGF0aWMgY29u
c3QgY2hhciogdGV4dEZvclNlbGVjdGlvbnMgPSAiPGh0bWw+PGJvZHk+PHA+QSBwYXJhZ3JhcGgg
d2l0aCBwbGFpbiB0ZQogCiBzdGF0aWMgY29uc3QgY2hhciogdGV4dFdpdGhBdHRyaWJ1dGVzID0g
IjxodG1sPjxoZWFkPjxzdHlsZT4uc3QxIHtmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjpy
Z2IoMTIwLDEyMSwxMjIpO30gLnN0MiB7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgYmFja2dy
b3VuZC1jb2xvcjpyZ2IoODAsODEsODIpO308L3N0eWxlPjwvaGVhZD48Ym9keT48cCBzdHlsZT1c
ImZvbnQtc2l6ZToxNDsgdGV4dC1hbGlnbjpyaWdodDtcIj5UaGlzIGlzIHRoZSA8aT5maXJzdDwv
aT48Yj4gc2VudGVuY2Ugb2YgdGhpcyB0ZXh0LjwvYj48L3A+PHAgY2xhc3M9XCJzdDFcIj5UaGlz
IHNlbnRlbmNlIHNob3VsZCBoYXZlIGFuIHN0eWxlIGFwcGxpZWQgPHNwYW4gY2xhc3M9XCJzdDJc
Ij5hbmQgdGhpcyBwYXJ0IHNob3VsZCBoYXZlIGFub3RoZXIgb25lPC9zcGFuPi48L3A+PHA+eDxz
dWI+MTwvc3ViPjxzdXA+Mjwvc3VwPj14PHN1Yj4yPC9zdWI+PHN1cD4zPC9zdXA+PC9wPjxwIHN0
eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+VGhpcyBzZW50ZW5jZSBpcyB0aGUgPHN0cmlrZT5s
YXN0PC9zdHJpa2U+IG9uZS48L3A+PC9ib2R5PjwvaHRtbD4iOwogCi1zdGF0aWMgZ2Jvb2xlYW4g
YmFpbF9vdXQoR01haW5Mb29wKiBsb29wKQorc3RhdGljIHZvaWQgd2FpdEZvckFjY2Vzc2libGVP
YmplY3RzKCkKIHsKLSAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyhsb29wKSkKLSAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdChsb29wKTsKLQotICAgIHJldHVybiBGQUxTRTsKKyAgICAvKiBN
YW51YWxseSBzcGluIHRoZSBtYWluIGNvbnRleHQgdG8gbWFrZSBzdXJlIHRoZSBhY2Nlc3NpYmxl
CisgICAgICAgb2JqZWN0cyBhcmUgcHJvcGVybHkgY3JlYXRlZCBiZWZvcmUgY29udGludWluZy4g
Ki8KKyAgICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZygwKSkKKyAgICAgICAgZ19tYWlu
X2NvbnRleHRfaXRlcmF0aW9uKDAsIFRSVUUpOwogfQogCiB0eXBlZGVmIGdjaGFyKiAoKkF0a0dl
dFRleHRGdW5jdGlvbikgKEF0a1RleHQqLCBnaW50LCBBdGtUZXh0Qm91bmRhcnksIGdpbnQqLCBn
aW50Kik7CiAKLXN0YXRpYyB2b2lkIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24oQXRrVGV4dCogdGV4
dF9vYmosIEF0a0dldFRleHRGdW5jdGlvbiBmbiwgQXRrVGV4dEJvdW5kYXJ5IGJvdW5kYXJ5LCBn
aW50IG9mZnNldCwgY29uc3QgY2hhciogdGV4dF9yZXN1bHQsIGdpbnQgc3RhcnRfb2Zmc2V0X3Jl
c3VsdCwgZ2ludCBlbmRfb2Zmc2V0X3Jlc3VsdCkKK3N0YXRpYyB2b2lkIHRlc3RHZXRUZXh0RnVu
Y3Rpb24oQXRrVGV4dCogdGV4dE9iamVjdCwgQXRrR2V0VGV4dEZ1bmN0aW9uIGZuLCBBdGtUZXh0
Qm91bmRhcnkgYm91bmRhcnksIGdpbnQgb2Zmc2V0LCBjb25zdCBjaGFyKiB0ZXh0UmVzdWx0LCBn
aW50IHN0YXJ0T2Zmc2V0UmVzdWx0LCBnaW50IGVuZE9mZnNldFJlc3VsdCkKIHsKLSAgICBnaW50
IHN0YXJ0X29mZnNldCwgZW5kX29mZnNldDsKLSAgICBjaGFyKiB0ZXh0OwotCi0gICAgdGV4dCA9
IGZuKHRleHRfb2JqLCBvZmZzZXQsIGJvdW5kYXJ5LCAmc3RhcnRfb2Zmc2V0LCAmZW5kX29mZnNl
dCk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCB0ZXh0X3Jlc3VsdCk7Ci0gICAgZ19h
c3NlcnRfY21waW50KHN0YXJ0X29mZnNldCwgPT0sIHN0YXJ0X29mZnNldF9yZXN1bHQpOwotICAg
IGdfYXNzZXJ0X2NtcGludChlbmRfb2Zmc2V0LCA9PSwgZW5kX29mZnNldF9yZXN1bHQpOworICAg
IGdpbnQgc3RhcnRPZmZzZXQ7CisgICAgZ2ludCBlbmRPZmZzZXQ7CisgICAgY2hhciogdGV4dCA9
IGZuKHRleHRPYmplY3QsIG9mZnNldCwgYm91bmRhcnksICZzdGFydE9mZnNldCwgJmVuZE9mZnNl
dCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCB0ZXh0UmVzdWx0KTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCBzdGFydE9mZnNldFJlc3VsdCk7CisgICAgZ19h
c3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIGVuZE9mZnNldFJlc3VsdCk7CiAgICAgZ19mcmVl
KHRleHQpOwogfQogCi1zdGF0aWMgdm9pZCBydW5fZ2V0X3RleHRfdGVzdHMoQXRrVGV4dCogdGV4
dF9vYmopCitzdGF0aWMgdm9pZCBydW5HZXRUZXh0VGVzdHMoQXRrVGV4dCogdGV4dE9iamVjdCkK
IHsKLSAgICBjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQodGV4dF9vYmosIDAsIC0xKTsK
KyAgICBjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQodGV4dE9iamVjdCwgMCwgLTEpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRo
ZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4iKTsKICAgICBnX2ZyZWUodGV4
dCk7CiAKICAgICAvKiBBVEtfVEVYVF9CT1VOREFSWV9DSEFSICovCi0gICAgdGVzdF9nZXRfdGV4
dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9DSEFSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlQiLCAwLCAx
KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfQ0hBUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIDAsICJUIiwgMCwgMSk7CiAKLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRfb2Jq
LCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAiaCIsIDEsIDIpOworICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9DSEFSLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgImgiLCAx
LCAyKTsKIAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dl
dF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAiIiwgMCwgMCk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0
ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VO
REFSWV9DSEFSLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgIiIsIDAsIDApOworCisgICAg
dGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9DSEFSLAorICAgICAgICAgICAgICAgICAgICAgICAg
MSwgIlQiLCAwLCAxKTsKIAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0
a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0NIQVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAiVCIsIDAsIDEpOwotICAgIAogICAgIC8qIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQgKi8KLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9u
KHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyAiLCAwLCA1
KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDAsICJUaGlzICIsIDAsIDUpOwogCi0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlv
bih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9XT1JEX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgIlRoaXMgIiwgMCwg
NSk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICA0LCAiVGhpcyAiLCAwLCA1KTsKIAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rp
b24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfV09SRF9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwg
MTAsIDE2KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dl
dF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDEwLCAidGVzdC4gIiwgMTAsIDE2KTsKIAotICAgIHRlc3RfZ2V0X3Rl
eHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RF
WFRfQk9VTkRBUllfV09SRF9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4LCAi
dGhpcmQuIiwgNTgsIDY0KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0
a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDU4LCAidGhpcmQuIiwgNTgsIDY0KTsKIAotICAgIHRl
c3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LCAiVGhpcyAiLCAwLCA1KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRP
YmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X1dPUkRfU1RBUlQsCisgICAgICAgICAgICAgICAgICAgICAgICA1LCAiVGhpcyAiLCAwLCA1KTsK
IAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0
X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfU1RBUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICA3LCAiVGhpcyAiLCAwLCA1KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0
aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1dPUkRfU1RBUlQsCisgICAgICAgICAgICAgICAgICAgICAgICA3LCAiVGhpcyAi
LCAwLCA1KTsKIAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0
X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsICJpcyAiLCA1LCA4KTsKKyAgICB0ZXN0R2V0VGV4
dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsICJp
cyAiLCA1LCA4KTsKIAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190
ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsICJpcyAiLCA1LCA4KTsKKyAgICB0ZXN0R2V0
VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDQs
ICJpcyAiLCA1LCA4KTsKIAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0
a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFS
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDMsICJpcyAiLCA1LCA4KTsKKyAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9TVEFSVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IDMsICJpcyAiLCA1LCA4KTsKIAogICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5EICov
Ci0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3RleHRf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsICJUaGlzIiwgMCwgNCk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0
T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dP
UkRfRU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMiLCAwLCA0KTsKIAotICAg
IHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICA0LCAiIGlzIiwgNCwgNyk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0
LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5E
LAorICAgICAgICAgICAgICAgICAgICAgICAgNCwgIiBpcyIsIDQsIDcpOwogCi0gICAgdGVzdF9n
ZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBB
VEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDUs
ICIgaXMiLCA0LCA3KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQsCisgICAg
ICAgICAgICAgICAgICAgICAgICA1LCAiIGlzIiwgNCwgNyk7CiAKLSAgICB0ZXN0X2dldF90ZXh0
X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOSwgIiB0ZXN0
IiwgOSwgMTQpOworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRf
Z2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDksICIgdGVzdCIsIDksIDE0KTsKIAotICAgIHRlc3RfZ2V0X3RleHRf
ZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19U
RVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgIlRo
aXMiLCAwLCA0KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAorICAg
ICAgICAgICAgICAgICAgICAgICAgNSwgIlRoaXMiLCAwLCA0KTsKIAotICAgIHRlc3RfZ2V0X3Rl
eHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwg
IlRoaXMiLCAwLCA0KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAor
ICAgICAgICAgICAgICAgICAgICAgICAgNCwgIlRoaXMiLCAwLCA0KTsKIAotICAgIHRlc3RfZ2V0
X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
NywgIiBpcyIsIDQsIDcpOworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRr
X3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfV09SRF9FTkQs
CisgICAgICAgICAgICAgICAgICAgICAgICA3LCAiIGlzIiwgNCwgNyk7CiAKLSAgICB0ZXN0X2dl
dF90ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQs
IEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
NSwgIiBhIiwgNywgOSk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtf
dGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAor
ICAgICAgICAgICAgICAgICAgICAgICAgNSwgIiBhIiwgNywgOSk7CiAKLSAgICB0ZXN0X2dldF90
ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwg
IiBhIiwgNywgOSk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1dPUkRfRU5ELAorICAg
ICAgICAgICAgICAgICAgICAgICAgNCwgIiBhIiwgNywgOSk7CiAKLSAgICB0ZXN0X2dldF90ZXh0
X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhU
X0JPVU5EQVJZX1dPUkRfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgsICIgdGhp
cmQiLCA1NywgNjMpOworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3Rl
eHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9XT1JEX0VORCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIDU4LCAiIHRoaXJkIiwgNTcsIDYzKTsKIAogICAgIC8qIEFUS19U
RVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJUICovCi0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlv
bih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFS
WV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlz
IGEgdGVzdC4gIiwgMCwgMTYpOworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwg
YXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9T
VEFSVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4gIiwgMCwg
MTYpOwogCi0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0
X3RleHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE1LCAiVGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKKyAg
ICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAxNSwgIlRoaXMgaXMgYSB0ZXN0LiAiLCAwLCAxNik7CiAKLSAgICB0ZXN0X2dldF90
ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFU
S19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgIlRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4gIiwgMTYsIDQ1KTsKKyAgICB0ZXN0
R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNl
dCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAiVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiAiLCAxNiwgNDUpOwogCi0gICAg
dGVzdF9nZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3RleHRfYWZ0ZXJf
b2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1LCAiVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiAiLCAxNiwgNDUp
OworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRf
YWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDE1LCAiVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiAiLCAxNiwg
NDUpOwogCi0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0
X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgIlRoaXMgaXMgYSB0ZXN0LiAiLCAwLCAxNik7
CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9i
ZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDE2LCAiVGhpcyBpcyBhIHRlc3QuICIsIDAsIDE2KTsKIAotICAgIHRl
c3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX1NUQVJULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDQsICJUaGlzIGlzIGEgdGVzdC4gIiwgMCwgMTYpOworICAgIHRlc3RHZXRU
ZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwg
QVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfU1RBUlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICA0NCwgIlRoaXMgaXMgYSB0ZXN0LiAiLCAwLCAxNik7CiAKLSAgICB0ZXN0X2dldF90ZXh0X2Z1
bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVY
VF9CT1VOREFSWV9TRU5URU5DRV9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1
LCAiIiwgMCwgMCk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4
dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9TVEFS
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIiwgMCwgMCk7CiAKICAgICAvKiBBVEtf
VEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQgKi8KLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9u
KHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X1NFTlRFTkNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIGEg
dGVzdC4iLCAwLCAxNSk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtf
dGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDAsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7CiAK
LSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9h
dF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1LCAiIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4iLCAxNSwgNDQp
OworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRf
YXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAxNSwgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIiwgMTUsIDQ0KTsK
IAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0
X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTYsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIsIDE1LCA0
NCk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDE2LCAiIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5jZS4iLCAxNSwgNDQp
OwogCi0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwgYXRrX3RleHRfZ2V0X3Rl
eHRfYXRfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNywgIiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIiwgMTUs
IDQ0KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90
ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAorICAgICAgICAg
ICAgICAgICAgICAgICAgMTcsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIsIDE1LCA0
NCk7CiAKLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRf
dGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIs
IDE1LCA0NCk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0ZXh0T2JqZWN0LCBhdGtfdGV4dF9n
ZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDAsICIgVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiIs
IDE1LCA0NCk7CiAKLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4
dF9nZXRfdGV4dF9hZnRlcl9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiIEFuZCB0aGlzIHRoZSB0aGlyZC4iLCA0
NCwgNjQpOworICAgIHRlc3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0
X3RleHRfYWZ0ZXJfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAxNSwgIiBBbmQgdGhpcyB0aGUgdGhpcmQuIiwgNDQsIDY0KTsK
IAotICAgIHRlc3RfZ2V0X3RleHRfZnVuY3Rpb24odGV4dF9vYmosIGF0a190ZXh0X2dldF90ZXh0
X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE2LCAiVGhpcyBpcyBhIHRlc3QuIiwgMCwgMTUpOworICAgIHRl
c3RHZXRUZXh0RnVuY3Rpb24odGV4dE9iamVjdCwgYXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29m
ZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVOQ0VfRU5ELAorICAgICAgICAgICAgICAgICAg
ICAgICAgMTYsICJUaGlzIGlzIGEgdGVzdC4iLCAwLCAxNSk7CiAKLSAgICB0ZXN0X2dldF90ZXh0
X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtf
VEVYVF9CT1VOREFSWV9TRU5URU5DRV9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAx
NSwgIlRoaXMgaXMgYSB0ZXN0LiIsIDAsIDE1KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1NFTlRFTkNFX0VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDE1LCAiVGhpcyBpcyBh
IHRlc3QuIiwgMCwgMTUpOwogCi0gICAgdGVzdF9nZXRfdGV4dF9mdW5jdGlvbih0ZXh0X29iaiwg
YXRrX3RleHRfZ2V0X3RleHRfYmVmb3JlX29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfU0VOVEVO
Q0VfRU5ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQsICIiLCAwLCAwKTsKKyAgICB0
ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9v
ZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDE0LCAiIiwgMCwgMCk7CiAKLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRf
b2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9iZWZvcmVfb2Zmc2V0LCBBVEtfVEVYVF9CT1VOREFSWV9T
RU5URU5DRV9FTkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA0NCwgIiBUaGlzIGlzIHRo
ZSBzZWNvbmQgc2VudGVuY2UuIiwgMTUsIDQ0KTsKKyAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRl
eHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5E
QVJZX1NFTlRFTkNFX0VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCAiIFRoaXMgaXMg
dGhlIHNlY29uZCBzZW50ZW5jZS4iLCAxNSwgNDQpOwogCiAgICAgLyogSXQncyB0cmljayB0byB0
ZXN0IHRoZXNlIHByb3Blcmx5IHJpZ2h0IG5vdywgc2luY2Ugb3VyIGExMXkKLSAgICAgICBpbXBs
ZW1lbnRhdGlvbiBzcGxpdHMgZGlmZmVyZW50IGxpbmVzIGluIGRpZmZlcmVudCBhMTF5Ci0gICAg
ICAgaXRlbXMgKi8KKyAgICAgICBpbXBsZW1lbnRhdGlvbiBzcGxpdHMgZGlmZmVyZW50IGxpbmVz
IGluIGRpZmZlcmVudCBhMTF5IGl0ZW1zLiAqLwogICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX0xJ
TkVfU1RBUlQgKi8KLSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4
dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNl
Y29uZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIsIDAsIDY0KTsKKyAgICB0ZXN0R2V0
VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsICJU
aGlzIGlzIGEgdGVzdC4gVGhpcyBpcyB0aGUgc2Vjb25kIHNlbnRlbmNlLiBBbmQgdGhpcyB0aGUg
dGhpcmQuIiwgMCwgNjQpOwogCiAgICAgLyogQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQgKi8K
LSAgICB0ZXN0X2dldF90ZXh0X2Z1bmN0aW9uKHRleHRfb2JqLCBhdGtfdGV4dF9nZXRfdGV4dF9h
dF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfRU5ELAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgIlRoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2Uu
IEFuZCB0aGlzIHRoZSB0aGlyZC4iLCAwLCA2NCk7CisgICAgdGVzdEdldFRleHRGdW5jdGlvbih0
ZXh0T2JqZWN0LCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZ
X0xJTkVfRU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgIlRoaXMgaXMgYSB0ZXN0LiBU
aGlzIGlzIHRoZSBzZWNvbmQgc2VudGVuY2UuIEFuZCB0aGlzIHRoZSB0aGlyZC4iLCAwLCA2NCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X2F0a19nZXRfdGV4dF9hdF9vZmZzZXRfZm9y
bXModm9pZCkKK3N0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXRGb3Jtcygp
CiB7Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKLSAgICBBdGtPYmplY3QqIG9iajsKLSAg
ICBHTWFpbkxvb3AqIGxvb3A7Ci0gICAgQXRrVGV4dCogdGV4dF9vYmo7Ci0KLSAgICB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwog
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Mg
PSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19X
SURHRVQod2ViVmlldyksICZhbGxvYyk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5n
KHdlYlZpZXcsIGNvbnRlbnRzLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICBsb29wID0gZ19tYWlu
X2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsg
MCwgMCwgODAwLCA2MDAgfTsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdF
VCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmlu
Zyh3ZWJWaWV3LCBjb250ZW50cywgMCwgMCwgMCk7CiAKLSAgICBnX2lkbGVfYWRkKChHU291cmNl
RnVuYyliYWlsX291dCwgbG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworICAgIC8q
IFdhaXQgZm9yIHRoZSBhY2Nlc3NpYmxlIG9iamVjdHMgdG8gYmUgY3JlYXRlZC4gKi8KKyAgICB3
YWl0Rm9yQWNjZXNzaWJsZU9iamVjdHMoKTsKIAotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRr
VGV4dCBvYmplY3QgKi8KLSAgICBvYmogPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19X
SURHRVQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KG9iaik7Ci0gICAgb2JqID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmosIDApOwotICAgIGdfYXNzZXJ0KG9iaik7CisgICAg
LyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KKyAgICBBdGtPYmplY3QqIG9i
amVjdCA9IGd0a193aWRnZXRfZ2V0X2FjY2Vzc2libGUoR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnQob2JqZWN0KTsKKyAgICBvYmplY3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKG9iamVjdCwgMCk7CisgICAgZ19hc3NlcnQob2JqZWN0KTsKIAotICAgIHRleHRf
b2JqID0gQVRLX1RFWFQob2JqKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0X29iaikp
OworICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtfVEVYVChvYmplY3QpOworICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKIAotICAgIHJ1bl9nZXRfdGV4dF90ZXN0cyh0
ZXh0X29iaik7CisgICAgcnVuR2V0VGV4dFRlc3RzKHRleHRPYmplY3QpOwogCiAgICAgZ19vYmpl
Y3RfdW5yZWYod2ViVmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X2F0a19nZXRf
dGV4dF9hdF9vZmZzZXQodm9pZCkKK3N0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRP
ZmZzZXQoKQogewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7Ci0gICAgQXRrT2JqZWN0KiBv
Ymo7Ci0gICAgR01haW5Mb29wKiBsb29wOwotICAgIEF0a1RleHQqIHRleHRfb2JqOwotCi0gICAg
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9u
IGFsbG9jID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0
ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2MpOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3N0cmluZyh3ZWJWaWV3LCBjb250ZW50cywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgbG9vcCA9
IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRp
b24gPSB7IDAsIDAsIDgwMCwgNjAwIH07CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdU
S19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9zdHJpbmcod2ViVmlldywgY29udGVudHMsIDAsIDAsIDApOwogCi0gICAgZ19pZGxlX2FkZCgo
R1NvdXJjZUZ1bmMpYmFpbF9vdXQsIGxvb3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsK
KyAgICAvKiBXYWl0IGZvciB0aGUgYWNjZXNzaWJsZSBvYmplY3RzIHRvIGJlIGNyZWF0ZWQuICov
CisgICAgd2FpdEZvckFjY2Vzc2libGVPYmplY3RzKCk7CiAKLSAgICAvKiBHZXQgdG8gdGhlIGlu
bmVyIEF0a1RleHQgb2JqZWN0ICovCi0gICAgb2JqID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJs
ZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydChvYmopOwotICAgIG9iaiA9IGF0
a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKLSAgICBnX2Fzc2VydChvYmop
OworICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICovCisgICAgQXRrT2Jq
ZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmll
dykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CisgICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZf
YWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAg
ICB0ZXh0X29iaiA9IEFUS19URVhUKG9iaik7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4
dF9vYmopKTsKKyAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKKyAg
ICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7CiAKLSAgICBydW5fZ2V0X3RleHRf
dGVzdHModGV4dF9vYmopOworICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKIAogICAg
IGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF9h
dGtfZ2V0X3RleHRfYXRfb2Zmc2V0X25ld2xpbmVzKHZvaWQpCitzdGF0aWMgdm9pZCB0ZXN0V2Vi
a2l0QXRrR2V0VGV4dEF0T2Zmc2V0TmV3bGluZXMoKQogewotICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXc7Ci0gICAgQXRrT2JqZWN0KiBvYmo7Ci0gICAgR01haW5Mb29wKiBsb29wOwotICAgIEF0
a1RleHQqIHRleHRfb2JqOwotCi0gICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRf
d2ViX3ZpZXdfbmV3KCkpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJW
aWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAg
IGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2MpOwot
ICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c1dpdGhOZXds
aW5lcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxM
LCBUUlVFKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAw
IH07CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZh
bGxvY2F0aW9uKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29u
dGVudHNXaXRoTmV3bGluZXMsIDAsIDAsIDApOwogCi0gICAgZ19pZGxlX2FkZCgoR1NvdXJjZUZ1
bmMpYmFpbF9vdXQsIGxvb3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKKyAgICAvKiBX
YWl0IGZvciB0aGUgYWNjZXNzaWJsZSBvYmplY3RzIHRvIGJlIGNyZWF0ZWQuICovCisgICAgd2Fp
dEZvckFjY2Vzc2libGVPYmplY3RzKCk7CiAKLSAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1Rl
eHQgb2JqZWN0ICovCi0gICAgb2JqID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtfV0lE
R0VUKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydChvYmopOwotICAgIG9iaiA9IGF0a19vYmplY3Rf
cmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKLSAgICBnX2Fzc2VydChvYmopOworICAgIC8q
IEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QuICovCisgICAgQXRrT2JqZWN0KiBvYmpl
Y3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOworICAg
IGdfYXNzZXJ0KG9iamVjdCk7CisgICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmplY3QsIDApOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICB0ZXh0X29i
aiA9IEFUS19URVhUKG9iaik7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dF9vYmopKTsK
KyAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKKyAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7CiAKLSAgICBydW5fZ2V0X3RleHRfdGVzdHModGV4
dF9vYmopOworICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKIAogICAgIGdfb2JqZWN0
X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF9hdGtfZ2V0X3Rl
eHRfYXRfb2Zmc2V0X3RleHRhcmVhKHZvaWQpCitzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0
VGV4dEF0T2Zmc2V0VGV4dGFyZWEoKQogewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7Ci0g
ICAgQXRrT2JqZWN0KiBvYmo7Ci0gICAgR01haW5Mb29wKiBsb29wOwotICAgIEF0a1RleHQqIHRl
eHRfb2JqOwotCi0gICAgd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdf
bmV3KCkpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ldygpKTsKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAg
ICBHdGtBbGxvY2F0aW9uIGFsbG9jID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRn
ZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2MpOwotICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50c0luVGV4dGFyZWEsIE5VTEws
IE5VTEwsIE5VTEwpOwotICAgIGxvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgVFJVRSk7Cisg
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYwMCB9OworICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7
CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzSW5UZXh0
YXJlYSwgMCwgMCwgMCk7CiAKLSAgICBnX2lkbGVfYWRkKChHU291cmNlRnVuYyliYWlsX291dCwg
bG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworICAgIC8qIFdhaXQgZm9yIHRoZSBh
Y2Nlc3NpYmxlIG9iamVjdHMgdG8gYmUgY3JlYXRlZC4gKi8KKyAgICB3YWl0Rm9yQWNjZXNzaWJs
ZU9iamVjdHMoKTsKIAotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QgKi8K
LSAgICBvYmogPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykp
OwotICAgIGdfYXNzZXJ0KG9iaik7Ci0gICAgb2JqID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmosIDApOwotICAgIGdfYXNzZXJ0KG9iaik7Ci0gICAgb2JqID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmosIDApOwotICAgIGdfYXNzZXJ0KG9iaik7CisgICAg
LyogR2V0IHRvIHRoZSBpbm5lciBBdGtUZXh0IG9iamVjdC4gKi8KKyAgICBBdGtPYmplY3QqIG9i
amVjdCA9IGd0a193aWRnZXRfZ2V0X2FjY2Vzc2libGUoR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnQob2JqZWN0KTsKKyAgICBvYmplY3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKG9iamVjdCwgMCk7CisgICAgZ19hc3NlcnQob2JqZWN0KTsKKyAgICBvYmplY3Qg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7CisgICAgZ19hc3Nl
cnQob2JqZWN0KTsKIAotICAgIHRleHRfb2JqID0gQVRLX1RFWFQob2JqKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVCh0ZXh0X29iaikpOworICAgIEF0a1RleHQqIHRleHRPYmplY3QgPSBBVEtf
VEVYVChvYmplY3QpOworICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QpKTsKIAot
ICAgIHJ1bl9nZXRfdGV4dF90ZXN0cyh0ZXh0X29iaik7CisgICAgcnVuR2V0VGV4dFRlc3RzKHRl
eHRPYmplY3QpOwogCiAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7CiB9CiAKLXN0YXRpYyB2
b2lkIHRlc3Rfd2Via2l0X2F0a19nZXRfdGV4dF9hdF9vZmZzZXRfdGV4dF9pbnB1dCh2b2lkKQor
c3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFRleHRJbnB1dCgpCiB7Ci0g
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKLSAgICBBdGtPYmplY3QqIG9iajsKLSAgICBHTWFp
bkxvb3AqIGxvb3A7Ci0gICAgQXRrVGV4dCogdGV4dF9vYmo7Ci0KLSAgICB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdf
b2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2MgPSB7IDAs
IDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQo
d2ViVmlldyksICZhbGxvYyk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZp
ZXcsIGNvbnRlbnRzSW5UZXh0SW5wdXQsIE5VTEwsIE5VTEwsIE5VTEwpOwotICAgIGxvb3AgPSBn
X21haW5fbG9vcF9uZXcoTlVMTCwgVFJVRSk7CisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9u
ID0geyAwLCAwLCA4MDAsIDYwMCB9OworICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtf
V0lER0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRf
c3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzSW5UZXh0SW5wdXQsIDAsIDAsIDApOwogCi0gICAgZ19p
ZGxlX2FkZCgoR1NvdXJjZUZ1bmMpYmFpbF9vdXQsIGxvb3ApOwotICAgIGdfbWFpbl9sb29wX3J1
bihsb29wKTsKKyAgICAvKiBXYWl0IGZvciB0aGUgYWNjZXNzaWJsZSBvYmplY3RzIHRvIGJlIGNy
ZWF0ZWQuICovCisgICAgd2FpdEZvckFjY2Vzc2libGVPYmplY3RzKCk7CiAKLSAgICAvKiBHZXQg
dG8gdGhlIGlubmVyIEF0a1RleHQgb2JqZWN0ICovCi0gICAgb2JqID0gZ3RrX3dpZGdldF9nZXRf
YWNjZXNzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydChvYmopOwotICAg
IG9iaiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKLSAgICBnX2Fz
c2VydChvYmopOwotICAgIG9iaiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2Jq
LCAwKTsKLSAgICBnX2Fzc2VydChvYmopOworICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4
dCBvYmplY3QuICovCisgICAgQXRrT2JqZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nl
c3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CisgICAg
b2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOworICAg
IGdfYXNzZXJ0KG9iamVjdCk7CisgICAgb2JqZWN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmplY3QsIDApOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICB0ZXh0X29i
aiA9IEFUS19URVhUKG9iaik7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dF9vYmopKTsK
KyAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0ID0gQVRLX1RFWFQob2JqZWN0KTsKKyAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVCh0ZXh0T2JqZWN0KSk7CiAKLSAgICBydW5fZ2V0X3RleHRfdGVzdHModGV4
dF9vYmopOworICAgIHJ1bkdldFRleHRUZXN0cyh0ZXh0T2JqZWN0KTsKIAogICAgIGdfb2JqZWN0
X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dElu
UGFyYWdyYXBoQW5kQm9keVNpbXBsZSh2b2lkKQorc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dl
dFRleHRJblBhcmFncmFwaEFuZEJvZHlTaW1wbGUoKQogewotICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXc7Ci0gICAgQXRrT2JqZWN0KiBvYmo7Ci0gICAgQXRrT2JqZWN0KiBvYmoxOwotICAgIEF0
a09iamVjdCogb2JqMjsKLSAgICBHTWFpbkxvb3AqIGxvb3A7Ci0gICAgQXRrVGV4dCogdGV4dE9i
ajE7Ci0gICAgQXRrVGV4dCogdGV4dE9iajI7Ci0KLSAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDgwMCwg
NjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyks
ICZhbGxvYyk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRl
bnRzSW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICBsb29w
ID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOwotCi0gICAgZ19pZGxlX2FkZCgoR1NvdXJj
ZUZ1bmMpYmFpbF9vdXQsIGxvb3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKLQotICAg
IC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QgKi8KLSAgICBvYmogPSBndGtfd2lk
Z2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KG9i
aik7Ci0gICAgb2JqMSA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsK
LSAgICBnX2Fzc2VydChvYmoxKTsKLSAgICBvYmoyID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmosIDEpOwotICAgIGdfYXNzZXJ0KG9iajIpOwotCi0gICAgdGV4dE9iajEgPSBB
VEtfVEVYVChvYmoxKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0T2JqMSkpOwotICAg
IHRleHRPYmoyID0gQVRLX1RFWFQob2JqMik7Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4
dE9iajIpKTsKLQotICAgIGNoYXIgKnRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0T2JqMSwg
MCwgLTEpOworICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAg
fTsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFs
bG9jYXRpb24pOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250
ZW50c0luUGFyYWdyYXBoQW5kQm9keVNpbXBsZSwgMCwgMCwgMCk7CisKKyAgICAvKiBXYWl0IGZv
ciB0aGUgYWNjZXNzaWJsZSBvYmplY3RzIHRvIGJlIGNyZWF0ZWQuICovCisgICAgd2FpdEZvckFj
Y2Vzc2libGVPYmplY3RzKCk7CisKKyAgICAvKiBHZXQgdG8gdGhlIGlubmVyIEF0a1RleHQgb2Jq
ZWN0LiAqLworICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJs
ZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBnX2Fzc2VydChvYmplY3QpOworICAgIEF0a09i
amVjdCogb2JqZWN0MSA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAw
KTsKKyAgICBnX2Fzc2VydChvYmplY3QxKTsKKyAgICBBdGtPYmplY3QqIG9iamVjdDIgPSBhdGtf
b2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSk7CisgICAgZ19hc3NlcnQob2Jq
ZWN0Mik7CisKKyAgICBBdGtUZXh0KiB0ZXh0T2JqZWN0MSA9IEFUS19URVhUKG9iamVjdDEpOwor
ICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRPYmplY3QxKSk7CisgICAgQXRrVGV4dCogdGV4
dE9iamVjdDIgPSBBVEtfVEVYVChvYmplY3QyKTsKKyAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0
ZXh0T2JqZWN0MikpOworCisgICAgY2hhciAqdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KHRleHRP
YmplY3QxLCAwLCAtMSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiVGhpcyBpcyBh
IHRlc3QuIik7CiAKLSAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQodGV4dE9iajIsIDAsIDEy
KTsKKyAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQodGV4dE9iamVjdDIsIDAsIDEyKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJIZWxsbyB3b3JsZC4iKTsKIAotICAgIGdfb2Jq
ZWN0X3VucmVmKG9iajEpOwotICAgIGdfb2JqZWN0X3VucmVmKG9iajIpOworICAgIGdfb2JqZWN0
X3VucmVmKG9iamVjdDEpOworICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdDIpOwogICAgIGdfb2Jq
ZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4
dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlKHZvaWQpCitzdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrR2V0VGV4dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlKCkKIHsKLSAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3OwotICAgIEF0a09iamVjdCogb2JqOwotICAgIEF0a09iamVjdCogb2JqMTsK
LSAgICBBdGtPYmplY3QqIG9iajI7Ci0gICAgR01haW5Mb29wKiBsb29wOwotICAgIEF0a1RleHQq
IHRleHRPYmoxOwotICAgIEF0a1RleHQqIHRleHRPYmoyOwotCi0gICAgd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBnX29i
amVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jID0geyAwLCAw
LCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdl
YlZpZXcpLCAmYWxsb2MpOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3
LCBjb250ZW50c0luUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlLCBOVUxMLCBOVUxMLCBOVUxMKTsK
LSAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOwotCi0gICAgZ19pZGxlX2Fk
ZCgoR1NvdXJjZUZ1bmMpYmFpbF9vdXQsIGxvb3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29w
KTsKLQotICAgIC8qIEdldCB0byB0aGUgaW5uZXIgQXRrVGV4dCBvYmplY3QgKi8KLSAgICBvYmog
PSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGdf
YXNzZXJ0KG9iaik7Ci0gICAgb2JqMSA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQo
b2JqLCAwKTsKLSAgICBnX2Fzc2VydChvYmoxKTsKLSAgICBvYmoyID0gYXRrX29iamVjdF9yZWZf
YWNjZXNzaWJsZV9jaGlsZChvYmosIDEpOwotICAgIGdfYXNzZXJ0KG9iajIpOwotCi0gICAgdGV4
dE9iajEgPSBBVEtfVEVYVChvYmoxKTsKLSAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0T2Jq
MSkpOwotICAgIHRleHRPYmoyID0gQVRLX1RFWFQob2JqMik7Ci0gICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQodGV4dE9iajIpKTsKLQotICAgIGNoYXIgKnRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dCh0
ZXh0T2JqMSwgMCwgLTEpOworICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwg
ODAwLCA2MDAgfTsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJW
aWV3KSwgJmFsbG9jYXRpb24pOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJW
aWV3LCBjb250ZW50c0luUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlLCAwLCAwLCAwKTsKKworICAg
IC8qIFdhaXQgZm9yIHRoZSBhY2Nlc3NpYmxlIG9iamVjdHMgdG8gYmUgY3JlYXRlZC4gKi8KKyAg
ICB3YWl0Rm9yQWNjZXNzaWJsZU9iamVjdHMoKTsKKworICAgIC8qIEdldCB0byB0aGUgaW5uZXIg
QXRrVGV4dCBvYmplY3QuICovCisgICAgQXRrT2JqZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dl
dF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7
CisgICAgQXRrT2JqZWN0KiBvYmplY3QxID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGls
ZChvYmplY3QsIDApOworICAgIGdfYXNzZXJ0KG9iamVjdDEpOworICAgIEF0a09iamVjdCogb2Jq
ZWN0MiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAxKTsKKyAgICBn
X2Fzc2VydChvYmplY3QyKTsKKworICAgIEF0a1RleHQqIHRleHRPYmplY3QxID0gQVRLX1RFWFQo
b2JqZWN0MSk7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dE9iamVjdDEpKTsKKyAgICBB
dGtUZXh0KiB0ZXh0T2JqZWN0MiA9IEFUS19URVhUKG9iamVjdDIpOworICAgIGdfYXNzZXJ0KEFU
S19JU19URVhUKHRleHRPYmplY3QyKSk7CisKKyAgICBjaGFyICp0ZXh0ID0gYXRrX3RleHRfZ2V0
X3RleHQodGV4dE9iamVjdDEsIDAsIC0xKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0s
ICJUaGlzIGlzIGEgdGVzdC4iKTsKIAotICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0
T2JqMiwgMCwgNTMpOworICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dCh0ZXh0T2JqZWN0Miwg
MCwgNTMpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIkhlbGxvIHdvcmxkLlxuVGhp
cyBzZW50ZW5jZSBpcyBncmVlbi5cblRoaXMgb25lIGlzIG5vdC4iKTsKIAotICAgIGdfb2JqZWN0
X3VucmVmKG9iajEpOwotICAgIGdfb2JqZWN0X3VucmVmKG9iajIpOworICAgIGdfb2JqZWN0X3Vu
cmVmKG9iamVjdDEpOworICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdDIpOwogICAgIGdfb2JqZWN0
X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0VGV4dElu
VGFibGUodm9pZCkKK3N0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRUZXh0SW5UYWJsZSgpCiB7
Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKLSAgICBBdGtPYmplY3QqIG9iajsKLSAgICBH
TWFpbkxvb3AqIGxvb3A7Ci0KLSAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93
ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZp
ZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAg
Z3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvYyk7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGNvbnRlbnRzSW5UYWJsZSwg
TlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVF
KTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07Cisg
ICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0
aW9uKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJ
blRhYmxlLCAwLCAwLCAwKTsKIAotICAgIGdfaWRsZV9hZGQoKEdTb3VyY2VGdW5jKWJhaWxfb3V0
LCBsb29wKTsKLSAgICBnX21haW5fbG9vcF9ydW4obG9vcCk7CisgICAgLyogV2FpdCBmb3IgdGhl
IGFjY2Vzc2libGUgb2JqZWN0cyB0byBiZSBjcmVhdGVkLiAqLworICAgIHdhaXRGb3JBY2Nlc3Np
YmxlT2JqZWN0cygpOwogCi0gICAgb2JqID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtf
V0lER0VUKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydChvYmopOwotICAgIG9iaiA9IGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKLSAgICBnX2Fzc2VydChvYmopOworICAg
IEF0a09iamVjdCogb2JqZWN0ID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtfV0lER0VU
KHdlYlZpZXcpKTsKKyAgICBnX2Fzc2VydChvYmplY3QpOworICAgIG9iamVjdCA9IGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKTsKKyAgICBnX2Fzc2VydChvYmplY3Qp
OwogCi0gICAgLyogVGFibGVzIHNob3VsZCBub3QgaW1wbGVtZW50IEF0a1RleHQgKi8KLSAgICBn
X2Fzc2VydChHX1RZUEVfSU5TVEFOQ0VfR0VUX0lOVEVSRkFDRShvYmosIEFUS19UWVBFX1RFWFQs
IEF0a1RleHRJZmFjZSkgPT0gTlVMTCk7CisgICAgLyogVGFibGVzIHNob3VsZCBub3QgaW1wbGVt
ZW50IEF0a1RleHQuICovCisgICAgZ19hc3NlcnQoIUdfVFlQRV9JTlNUQU5DRV9HRVRfSU5URVJG
QUNFKG9iamVjdCwgQVRLX1RZUEVfVEVYVCwgQXRrVGV4dElmYWNlKSk7CiAKLSAgICBnX29iamVj
dF91bnJlZihvYmopOworICAgIGdfb2JqZWN0X3VucmVmKG9iamVjdCk7CiAgICAgZ19vYmplY3Rf
dW5yZWYod2ViVmlldyk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRIZWFkZXJz
SW5UYWJsZSh2b2lkKQorc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0dldEhlYWRlcnNJblRhYmxl
KCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OwotICAgIEF0a09iamVjdCogYXhXZWJW
aWV3OwotICAgIEF0a09iamVjdCogdGFibGU7Ci0gICAgQXRrT2JqZWN0KiBjb2xIZWFkZXI7Ci0g
ICAgQXRrT2JqZWN0KiByb3dIZWFkZXI7Ci0gICAgR01haW5Mb29wKiBsb29wOwotCi0gICAgd2Vi
VmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygp
KTsKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFs
bG9jID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShH
VEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2MpOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0
cmluZyh3ZWJWaWV3LCBjb250ZW50c0luVGFibGVXaXRoSGVhZGVycywgTlVMTCwgTlVMTCwgTlVM
TCk7Ci0gICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKyAgICBHdGtBbGxv
Y2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07CisgICAgZ3RrX3dpZGdldF9z
aXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgY29udGVudHNJblRhYmxlV2l0aEhlYWRl
cnMsIDAsIDAsIDApOwogCi0gICAgZ19pZGxlX2FkZCgoR1NvdXJjZUZ1bmMpYmFpbF9vdXQsIGxv
b3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKKyAgICAvKiBXYWl0IGZvciB0aGUgYWNj
ZXNzaWJsZSBvYmplY3RzIHRvIGJlIGNyZWF0ZWQuICovCisgICAgd2FpdEZvckFjY2Vzc2libGVP
YmplY3RzKCk7CiAKLSAgICBheFdlYlZpZXcgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdU
S19XSURHRVQod2ViVmlldykpOworICAgIEF0a09iamVjdCogYXhXZWJWaWV3ID0gZ3RrX3dpZGdl
dF9nZXRfYWNjZXNzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKICAgICBnX2Fzc2VydChheFdl
YlZpZXcpOwogCi0gICAgLy8gQ2hlY2sgdGFibGUgd2l0aCBib3RoIGNvbHVtbiBhbmQgcm93IGhl
YWRlcnMKLSAgICB0YWJsZSA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoYXhXZWJW
aWV3LCAwKTsKKyAgICAvKiBDaGVjayB0YWJsZSB3aXRoIGJvdGggY29sdW1uIGFuZCByb3cgaGVh
ZGVycy4gKi8KKyAgICBBdGtPYmplY3QqIHRhYmxlID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChheFdlYlZpZXcsIDApOwogICAgIGdfYXNzZXJ0KHRhYmxlKTsKICAgICBnX2Fzc2Vy
dChhdGtfb2JqZWN0X2dldF9yb2xlKHRhYmxlKSA9PSBBVEtfUk9MRV9UQUJMRSk7CiAKLSAgICBj
b2xIZWFkZXIgPSBhdGtfdGFibGVfZ2V0X2NvbHVtbl9oZWFkZXIoQVRLX1RBQkxFKHRhYmxlKSwg
MCk7CisgICAgQXRrT2JqZWN0KiBjb2xIZWFkZXIgPSBhdGtfdGFibGVfZ2V0X2NvbHVtbl9oZWFk
ZXIoQVRLX1RBQkxFKHRhYmxlKSwgMCk7CiAgICAgZ19hc3NlcnQoY29sSGVhZGVyKTsKICAgICBn
X2Fzc2VydChhdGtfb2JqZWN0X2dldF9yb2xlKGNvbEhlYWRlcikgPT0gQVRLX1JPTEVfVEFCTEVf
Q0VMTCk7CiAgICAgZ19hc3NlcnQoYXRrX29iamVjdF9nZXRfaW5kZXhfaW5fcGFyZW50KGNvbEhl
YWRlcikgPT0gMCk7CkBAIC01NDUsNyArNDgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0
a0dldEhlYWRlcnNJblRhYmxlKHZvaWQpCiAgICAgZ19hc3NlcnQoYXRrX29iamVjdF9nZXRfcm9s
ZShjb2xIZWFkZXIpID09IEFUS19ST0xFX1RBQkxFX0NFTEwpOwogICAgIGdfYXNzZXJ0KGF0a19v
YmplY3RfZ2V0X2luZGV4X2luX3BhcmVudChjb2xIZWFkZXIpID09IDIpOwogCi0gICAgcm93SGVh
ZGVyID0gYXRrX3RhYmxlX2dldF9yb3dfaGVhZGVyKEFUS19UQUJMRSh0YWJsZSksIDApOworICAg
IEF0a09iamVjdCogcm93SGVhZGVyID0gYXRrX3RhYmxlX2dldF9yb3dfaGVhZGVyKEFUS19UQUJM
RSh0YWJsZSksIDApOwogICAgIGdfYXNzZXJ0KHJvd0hlYWRlcik7CiAgICAgZ19hc3NlcnQoYXRr
X29iamVjdF9nZXRfcm9sZShyb3dIZWFkZXIpID09IEFUS19ST0xFX1RBQkxFX0NFTEwpOwogICAg
IGdfYXNzZXJ0KGF0a19vYmplY3RfZ2V0X2luZGV4X2luX3BhcmVudChyb3dIZWFkZXIpID09IDAp
OwpAQCAtNTY3LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRIZWFkZXJz
SW5UYWJsZSh2b2lkKQogCiAgICAgZ19vYmplY3RfdW5yZWYodGFibGUpOwogCi0gICAgLy8gQ2hl
Y2sgdGFibGUgd2l0aCBubyBoZWFkZXJzIGF0IGFsbAorICAgIC8qIENoZWNrIHRhYmxlIHdpdGgg
bm8gaGVhZGVycyBhdCBhbGwuICovCiAgICAgdGFibGUgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKGF4V2ViVmlldywgMSk7CiAgICAgZ19hc3NlcnQodGFibGUpOwogICAgIGdfYXNz
ZXJ0KGF0a19vYmplY3RfZ2V0X3JvbGUodGFibGUpID09IEFUS19ST0xFX1RBQkxFKTsKQEAgLTU5
MCw4ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrR2V0SGVhZGVyc0luVGFibGUo
dm9pZCkKIAogc3RhdGljIGdpbnQgY29tcEF0a0F0dHJpYnV0ZShBdGtBdHRyaWJ1dGUqIGExLCBB
dGtBdHRyaWJ1dGUqIGEyKQogewotICAgIGdpbnQgc3RyY21wVmFsOwotICAgIHN0cmNtcFZhbCA9
IGdfc3RyY21wMChhMS0+bmFtZSwgYTItPm5hbWUpOworICAgIGdpbnQgc3RyY21wVmFsID0gZ19z
dHJjbXAwKGExLT5uYW1lLCBhMi0+bmFtZSk7CiAgICAgaWYgKHN0cmNtcFZhbCkKICAgICAgICAg
cmV0dXJuIHN0cmNtcFZhbDsKICAgICByZXR1cm4gZ19zdHJjbXAwKGExLT52YWx1ZSwgYTItPnZh
bHVlKTsKQEAgLTYwNCwxMCArNTQwLDkgQEAgc3RhdGljIGdpbnQgY29tcEF0a0F0dHJpYnV0ZU5h
bWUoQXRrQXR0cmlidXRlKiBhMSwgQXRrQXR0cmlidXRlKiBhMikKIAogc3RhdGljIGdib29sZWFu
IGF0a0F0dHJpYnV0ZVNldEF0dHJpYnV0ZU5hbWVIYXNWYWx1ZShBdGtBdHRyaWJ1dGVTZXQqIHNl
dCwgY29uc3QgZ2NoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKIHsKLSAg
ICBHU0xpc3QqIGVsZW1lbnQ7CiAgICAgQXRrQXR0cmlidXRlIGF0OwogICAgIGF0Lm5hbWUgPSAo
Z2NoYXIqKWF0dHJpYnV0ZU5hbWU7Ci0gICAgZWxlbWVudCA9IGdfc2xpc3RfZmluZF9jdXN0b20o
c2V0LCAmYXQsIChHQ29tcGFyZUZ1bmMpY29tcEF0a0F0dHJpYnV0ZU5hbWUpOworICAgIEdTTGlz
dCogZWxlbWVudCA9IGdfc2xpc3RfZmluZF9jdXN0b20oc2V0LCAmYXQsIChHQ29tcGFyZUZ1bmMp
Y29tcEF0a0F0dHJpYnV0ZU5hbWUpOwogICAgIHJldHVybiBlbGVtZW50ICYmICFnX3N0cmNtcDAo
KChBdGtBdHRyaWJ1dGUqKShlbGVtZW50LT5kYXRhKSktPnZhbHVlLCB2YWx1ZSk7CiB9CiAKQEAg
LTY0Miw1MiArNTc3LDQyIEBAIHN0YXRpYyBnYm9vbGVhbiBhdGtBdHRyaWJ1dGVTZXRBcmVFcXVh
bChBdGtBdHRyaWJ1dGVTZXQqIHNldDEsIEF0a0F0dHJpYnV0ZVNldCoKICAgICByZXR1cm4gKCFz
ZXQyKTsKIH0KIAotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRBdHRyaWJ1dGVzKHZvaWQp
CitzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dEF0dHJpYnV0ZXMoKQogewotICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXc7Ci0gICAgQXRrT2JqZWN0KiBvYmo7Ci0gICAgQXRrT2JqZWN0KiBj
aGlsZDsKLSAgICBHTWFpbkxvb3AqIGxvb3A7Ci0gICAgQXRrVGV4dCogY2hpbGRUZXh0OwotICAg
IEF0a0F0dHJpYnV0ZVNldCogc2V0MTsKLSAgICBBdGtBdHRyaWJ1dGVTZXQqIHNldDI7Ci0gICAg
QXRrQXR0cmlidXRlU2V0KiBzZXQzOwotICAgIEF0a0F0dHJpYnV0ZVNldCogc2V0NDsKLSAgICBn
aW50IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7Ci0KLSAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDgwMCwg
NjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyks
ICZhbGxvYyk7CisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAwLCAwLCA4MDAsIDYw
MCB9OworICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdlYlZpZXcpLCAm
YWxsb2NhdGlvbik7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIHRl
eHRXaXRoQXR0cmlidXRlcywgMCwgMCwgMCk7CiAKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9z
dHJpbmcod2ViVmlldywgdGV4dFdpdGhBdHRyaWJ1dGVzLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAg
ICBsb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAgIC8qIFdhaXQgZm9yIHRo
ZSBhY2Nlc3NpYmxlIG9iamVjdHMgdG8gYmUgY3JlYXRlZC4gKi8KKyAgICB3YWl0Rm9yQWNjZXNz
aWJsZU9iamVjdHMoKTsKIAotICAgIGdfaWRsZV9hZGQoKEdTb3VyY2VGdW5jKWJhaWxfb3V0LCBs
b29wKTsKLSAgICBnX21haW5fbG9vcF9ydW4obG9vcCk7Ci0KLSAgICBvYmogPSBndGtfd2lkZ2V0
X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KG9iaik7
CisgICAgQXRrT2JqZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19X
SURHRVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICBjaGlsZCA9IGF0
a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKKyAgICBBdGtPYmplY3QqIGNo
aWxkID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwogICAgIGdf
YXNzZXJ0KGNoaWxkICYmIEFUS19JU19URVhUKGNoaWxkKSk7Ci0gICAgY2hpbGRUZXh0ID0gQVRL
X1RFWFQoY2hpbGQpOwotICAgIHNldDEgPSBhdGtfdGV4dF9nZXRfcnVuX2F0dHJpYnV0ZXMoY2hp
bGRUZXh0LCAwLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOworICAgIEF0a1RleHQqIGNoaWxk
VGV4dCA9IEFUS19URVhUKGNoaWxkKTsKKworICAgIGdpbnQgc3RhcnRPZmZzZXQ7CisgICAgZ2lu
dCBlbmRPZmZzZXQ7CisgICAgQXRrQXR0cmlidXRlU2V0KiBzZXQxID0gYXRrX3RleHRfZ2V0X3J1
bl9hdHRyaWJ1dGVzKGNoaWxkVGV4dCwgMCwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZW5kT2Zmc2V0LCA9PSwgMTIpOwotICAgIGdfYXNzZXJ0KGF0a0F0dHJpYnV0ZVNldEFyZUVx
dWFsKHNldDEsIE5VTEwpKTsKKyAgICBnX2Fzc2VydChhdGtBdHRyaWJ1dGVTZXRBcmVFcXVhbChz
ZXQxLCAwKSk7CiAKLSAgICBzZXQyID0gYXRrX3RleHRfZ2V0X3J1bl9hdHRyaWJ1dGVzKGNoaWxk
VGV4dCwgMTUsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCk7CisgICAgQXRrQXR0cmlidXRlU2V0
KiBzZXQyID0gYXRrX3RleHRfZ2V0X3J1bl9hdHRyaWJ1dGVzKGNoaWxkVGV4dCwgMTUsICZzdGFy
dE9mZnNldCwgJmVuZE9mZnNldCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9
PSwgMTIpOwogICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCAxNyk7CiAgICAgZ19h
c3NlcnQoYXRrQXR0cmlidXRlU2V0QXR0cmlidXRlSGFzVmFsdWUoc2V0MiwgQVRLX1RFWFRfQVRU
Ul9TVFlMRSwgIml0YWxpYyIpKTsKIAotICAgIHNldDMgPSBhdGtfdGV4dF9nZXRfcnVuX2F0dHJp
YnV0ZXMoY2hpbGRUZXh0LCAxNywgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKKyAgICBBdGtB
dHRyaWJ1dGVTZXQqIHNldDMgPSBhdGtfdGV4dF9nZXRfcnVuX2F0dHJpYnV0ZXMoY2hpbGRUZXh0
LCAxNywgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoc3Rh
cnRPZmZzZXQsID09LCAxNyk7CiAgICAgZ19hc3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDQw
KTsKICAgICBnX2Fzc2VydChhdGtBdHRyaWJ1dGVTZXRBdHRyaWJ1dGVIYXNWYWx1ZShzZXQzLCBB
VEtfVEVYVF9BVFRSX1dFSUdIVCwgIjcwMCIpKTsKIAotICAgIHNldDQgPSBhdGtfdGV4dF9nZXRf
ZGVmYXVsdF9hdHRyaWJ1dGVzKGNoaWxkVGV4dCk7CisgICAgQXRrQXR0cmlidXRlU2V0KiBzZXQ0
ID0gYXRrX3RleHRfZ2V0X2RlZmF1bHRfYXR0cmlidXRlcyhjaGlsZFRleHQpOwogICAgIGdfYXNz
ZXJ0KGF0a0F0dHJpYnV0ZVNldEF0dHJpYnV0ZUhhc1ZhbHVlKHNldDQsIEFUS19URVhUX0FUVFJf
U1RZTEUsICJub3JtYWwiKSk7CiAgICAgZ19hc3NlcnQoYXRrQXR0cmlidXRlU2V0QXR0cmlidXRl
SGFzVmFsdWUoc2V0NCwgQVRLX1RFWFRfQVRUUl9KVVNUSUZJQ0FUSU9OLCAicmlnaHQiKSk7CiAg
ICAgZ19hc3NlcnQoYXRrQXR0cmlidXRlU2V0QXR0cmlidXRlSGFzVmFsdWUoc2V0NCwgQVRLX1RF
WFRfQVRUUl9TSVpFLCAiMTQiKSk7CkBAIC02OTYsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYmtpdEF0a1RleHRBdHRyaWJ1dGVzKHZvaWQpCiAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJl
ZShzZXQzKTsKICAgICBhdGtfYXR0cmlidXRlX3NldF9mcmVlKHNldDQpOwogCi0gICAgY2hpbGQg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMSk7CisgICAgY2hpbGQgPSBh
dGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSk7CiAgICAgZ19hc3NlcnQo
Y2hpbGQgJiYgQVRLX0lTX1RFWFQoY2hpbGQpKTsKICAgICBjaGlsZFRleHQgPSBBVEtfVEVYVChj
aGlsZCk7CiAKQEAgLTcxMCwxNCArNjM1LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtU
ZXh0QXR0cmlidXRlcyh2b2lkKQogICAgIHNldDIgPSBhdGtfdGV4dF9nZXRfcnVuX2F0dHJpYnV0
ZXMoY2hpbGRUZXh0LCA0MywgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCA0Myk7CiAgICAgZ19hc3NlcnRfY21waW50KGVuZE9m
ZnNldCwgPT0sIDgwKTsKLSAgICAvLyBDaGVja3MgdGhhdCBkZWZhdWx0IGF0dHJpYnV0ZXMgb2Yg
dGV4dCBhcmUgbm90IHJldHVybmVkIHdoZW4gY2FsbGVkIHRvIGF0a190ZXh0X2dldF9ydW5fYXR0
cmlidXRlcworICAgIC8qIENoZWNrcyB0aGF0IGRlZmF1bHQgYXR0cmlidXRlcyBvZiB0ZXh0IGFy
ZSBub3QgcmV0dXJuZWQgd2hlbiBjYWxsZWQgdG8gYXRrX3RleHRfZ2V0X3J1bl9hdHRyaWJ1dGVz
LiAqLwogICAgIGdfYXNzZXJ0KCFhdGtBdHRyaWJ1dGVTZXRBdHRyaWJ1dGVIYXNWYWx1ZShzZXQy
LCBBVEtfVEVYVF9BVFRSX0ZHX0NPTE9SLCAiMTIwLDEyMSwxMjIiKSk7CiAgICAgZ19hc3NlcnQo
YXRrQXR0cmlidXRlU2V0QXR0cmlidXRlSGFzVmFsdWUoc2V0MiwgQVRLX1RFWFRfQVRUUl9VTkRF
UkxJTkUsICJzaW5nbGUiKSk7CiAgICAgZ19hc3NlcnQoYXRrQXR0cmlidXRlU2V0QXR0cmlidXRl
SGFzVmFsdWUoc2V0MiwgQVRLX1RFWFRfQVRUUl9CR19DT0xPUiwgIjgwLDgxLDgyIikpOwogICAg
IGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUoc2V0MSk7CiAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJl
ZShzZXQyKTsKIAotICAgIGNoaWxkID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChv
YmosIDIpOworICAgIGNoaWxkID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmpl
Y3QsIDIpOwogICAgIGdfYXNzZXJ0KGNoaWxkICYmIEFUS19JU19URVhUKGNoaWxkKSk7CiAgICAg
Y2hpbGRUZXh0ID0gQVRLX1RFWFQoY2hpbGQpOwogCkBAIC03NDIsNyArNjY3LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYmtpdEF0a1RleHRBdHRyaWJ1dGVzKHZvaWQpCiAgICAgYXRrX2F0dHJpYnV0
ZV9zZXRfZnJlZShzZXQzKTsKICAgICBhdGtfYXR0cmlidXRlX3NldF9mcmVlKHNldDQpOwogCi0g
ICAgY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMyk7CisgICAg
Y2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMyk7CiAgICAg
Z19hc3NlcnQoY2hpbGQgJiYgQVRLX0lTX1RFWFQoY2hpbGQpKTsKICAgICBjaGlsZFRleHQgPSBB
VEtfVEVYVChjaGlsZCk7CiAgICAgc2V0MSA9IGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcyhj
aGlsZFRleHQsIDI0LCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOwpAQCAtNzUzLDcgKzY3OCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0QXR0cmlidXRlcyh2b2lkKQogICAgIHNl
dDIgPSBhdGtfdGV4dF9nZXRfcnVuX2F0dHJpYnV0ZXMoY2hpbGRUZXh0LCAyNSwgJnN0YXJ0T2Zm
c2V0LCAmZW5kT2Zmc2V0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCAy
NSk7CiAgICAgZ19hc3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDMwKTsKLSAgICBnX2Fzc2Vy
dChhdGtBdHRyaWJ1dGVTZXRBcmVFcXVhbChzZXQyLCBOVUxMKSk7CisgICAgZ19hc3NlcnQoYXRr
QXR0cmlidXRlU2V0QXJlRXF1YWwoc2V0MiwgMCkpOwogCiAgICAgc2V0MyA9IGF0a190ZXh0X2dl
dF9kZWZhdWx0X2F0dHJpYnV0ZXMoY2hpbGRUZXh0KTsKICAgICBnX2Fzc2VydChhdGtBdHRyaWJ1
dGVTZXRBdHRyaWJ1dGVIYXNWYWx1ZShzZXQzLCBBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04s
ICJjZW50ZXIiKSk7CkBAIC03NjIsNTMgKzY4Nyw0OSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrVGV4dEF0dHJpYnV0ZXModm9pZCkKICAgICBhdGtfYXR0cmlidXRlX3NldF9mcmVlKHNldDMp
OwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2VraXRBdGtUZXh0U2VsZWN0aW9ucyh2b2lkKQorc3Rh
dGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKIHsKLSAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3OwotICAgIEF0a09iamVjdCogb2JqOwotICAgIEdNYWluTG9vcCogbG9vcDsK
LSAgICBnY2hhciogc2VsZWN0ZWRUZXh0OwotICAgIGdpbnQgc3RhcnRPZmZzZXQ7Ci0gICAgZ2lu
dCBlbmRPZmZzZXQ7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0OwotCi0gICAgd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBnX29i
amVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jID0geyAwLCAw
LCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VUKHdl
YlZpZXcpLCAmYWxsb2MpOwotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3
LCB0ZXh0Rm9yU2VsZWN0aW9ucywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgbG9vcCA9IGdfbWFp
bl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7
IDAsIDAsIDgwMCwgNjAwIH07CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURH
RVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJp
bmcod2ViVmlldywgdGV4dEZvclNlbGVjdGlvbnMsIDAsIDAsIDApOwogCi0gICAgZ19pZGxlX2Fk
ZCgoR1NvdXJjZUZ1bmMpYmFpbF9vdXQsIGxvb3ApOwotICAgIGdfbWFpbl9sb29wX3J1bihsb29w
KTsKKyAgICAvKiBXYWl0IGZvciB0aGUgYWNjZXNzaWJsZSBvYmplY3RzIHRvIGJlIGNyZWF0ZWQu
ICovCisgICAgd2FpdEZvckFjY2Vzc2libGVPYmplY3RzKCk7CiAKLSAgICBvYmogPSBndGtfd2lk
Z2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KG9i
aik7CisgICAgQXRrT2JqZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdU
S19XSURHRVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICBBdGtUZXh0
KiBwYXJhZ3JhcGgxID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChv
YmosIDApKTsKKyAgICBBdGtUZXh0KiBwYXJhZ3JhcGgxID0gQVRLX1RFWFQoYXRrX29iamVjdF9y
ZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVY
VChwYXJhZ3JhcGgxKSk7Ci0gICAgQXRrVGV4dCogcGFyYWdyYXBoMiA9IEFUS19URVhUKGF0a19v
YmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAxKSk7CisgICAgQXRrVGV4dCogcGFyYWdy
YXBoMiA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAx
KSk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoMikpOwogICAgIEF0a1RleHQq
IGxpbmsgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKEFUS19PQkpF
Q1QocGFyYWdyYXBoMiksIDApKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaW5rKSk7CiAK
LSAgICAvLyBGaXJzdCBwYXJhZ3JhcGggKHNpbXBsZSB0ZXh0KQorICAgIC8qIEZpcnN0IHBhcmFn
cmFwaCAoc2ltcGxlIHRleHQpLiAqLwogCi0gICAgLy8gQmFzaWMgaW5pdGlhbCBjaGVja3MKKyAg
ICAvKiBCYXNpYyBpbml0aWFsIGNoZWNrcy4gKi8KICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX3Rl
eHRfZ2V0X25fc2VsZWN0aW9ucyhwYXJhZ3JhcGgxKSwgPT0sIDApOwotICAgIHNlbGVjdGVkVGV4
dCA9IGF0a190ZXh0X2dldF9zZWxlY3Rpb24ocGFyYWdyYXBoMSwgMCwgJnN0YXJ0T2Zmc2V0LCAm
ZW5kT2Zmc2V0KTsKKworICAgIGdpbnQgc3RhcnRPZmZzZXQ7CisgICAgZ2ludCBlbmRPZmZzZXQ7
CisgICAgZ2NoYXIqIHNlbGVjdGVkVGV4dCA9IGF0a190ZXh0X2dldF9zZWxlY3Rpb24ocGFyYWdy
YXBoMSwgMCwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQo
c3RhcnRPZmZzZXQsID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwg
MCk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHNlbGVjdGVkVGV4dCwgPT0sIE5VTEwpOworICAgIGdf
YXNzZXJ0X2NtcHN0cihzZWxlY3RlZFRleHQsID09LCAwKTsKICAgICBnX2ZyZWUgKHNlbGVjdGVk
VGV4dCk7Ci0gICAgLy8gVHJ5IHJlbW92aW5nIGEgbm9uIGV4aXN0aW5nICh5ZXQpIHNlbGVjdGlv
bgotICAgIHJlc3VsdCA9IGF0a190ZXh0X3JlbW92ZV9zZWxlY3Rpb24ocGFyYWdyYXBoMSwgMCk7
CisKKyAgICAvKiBUcnkgcmVtb3ZpbmcgYSBub24gZXhpc3RpbmcgKHlldCkgc2VsZWN0aW9uLiAq
LworICAgIGdib29sZWFuIHJlc3VsdCA9IGF0a190ZXh0X3JlbW92ZV9zZWxlY3Rpb24ocGFyYWdy
YXBoMSwgMCk7CiAgICAgZ19hc3NlcnQoIXJlc3VsdCk7Ci0gICAgLy8gVHJ5IHNldHRpbmcgYSAw
LWNoYXIgc2VsZWN0aW9uCisKKyAgICAvKiBUcnkgc2V0dGluZyBhIDAtY2hhciBzZWxlY3Rpb24u
ICovCiAgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X3NlbGVjdGlvbihwYXJhZ3JhcGgxLCAwLCA1
LCA1KTsKICAgICBnX2Fzc2VydChyZXN1bHQpOwogCi0gICAgLy8gTWFrZSBhIHNlbGVjdGlvbiBh
bmQgdGVzdCBpdAorICAgIC8qIE1ha2UgYSBzZWxlY3Rpb24gYW5kIHRlc3QgaXQuICovCiAgICAg
cmVzdWx0ID0gYXRrX3RleHRfc2V0X3NlbGVjdGlvbihwYXJhZ3JhcGgxLCAwLCA1LCAyNSk7CiAg
ICAgZ19hc3NlcnQocmVzdWx0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX3RleHRfZ2V0X25f
c2VsZWN0aW9ucyhwYXJhZ3JhcGgxKSwgPT0sIDEpOwpAQCAtODE3LDI5ICs3MzgsMjkgQEAgc3Rh
dGljIHZvaWQgdGVzdFdla2l0QXRrVGV4dFNlbGVjdGlvbnModm9pZCkKICAgICBnX2Fzc2VydF9j
bXBpbnQoZW5kT2Zmc2V0LCA9PSwgMjUpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihzZWxlY3RlZFRl
eHQsID09LCAiYWdyYXBoIHdpdGggcGxhaW4gdGUiKTsKICAgICBnX2ZyZWUgKHNlbGVjdGVkVGV4
dCk7Ci0gICAgLy8gVHJ5IHJlbW92aW5nIHRoZSBzZWxlY3Rpb24gZnJvbSBvdGhlciBBdGtUZXh0
IG9iamVjdCAoc2hvdWxkIGZhaWwpCisgICAgLyogVHJ5IHJlbW92aW5nIHRoZSBzZWxlY3Rpb24g
ZnJvbSBvdGhlciBBdGtUZXh0IG9iamVjdCAoc2hvdWxkIGZhaWwpLiAqLwogICAgIHJlc3VsdCA9
IGF0a190ZXh0X3JlbW92ZV9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCk7CiAgICAgZ19hc3NlcnQo
IXJlc3VsdCk7CiAKLSAgICAvLyBSZW1vdmUgdGhlIHNlbGVjdGlvbiBhbmQgdGVzdCBldmVyeXRo
aW5nIGFnYWluCisgICAgLyogUmVtb3ZlIHRoZSBzZWxlY3Rpb24gYW5kIHRlc3QgZXZlcnl0aGlu
ZyBhZ2Fpbi4gKi8KICAgICByZXN1bHQgPSBhdGtfdGV4dF9yZW1vdmVfc2VsZWN0aW9uKHBhcmFn
cmFwaDEsIDApOwogICAgIGdfYXNzZXJ0KHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21waW50KGF0
a190ZXh0X2dldF9uX3NlbGVjdGlvbnMocGFyYWdyYXBoMSksID09LCAwKTsKICAgICBzZWxlY3Rl
ZFRleHQgPSBhdGtfdGV4dF9nZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsICZzdGFydE9mZnNl
dCwgJmVuZE9mZnNldCk7Ci0gICAgLy8gTm93IG9mZnNldHMgc2hvdWxkIGJlIHRoZSBzYW1lLCBz
ZXQgdG8gdGhlIGxhc3QgcG9zaXRpb24gb2YgdGhlIGNhcmV0CisgICAgLyogTm93IG9mZnNldHMg
c2hvdWxkIGJlIHRoZSBzYW1lLCBzZXQgdG8gdGhlIGxhc3QgcG9zaXRpb24gb2YgdGhlIGNhcmV0
LiAqLwogICAgIGdfYXNzZXJ0X2NtcGludChzdGFydE9mZnNldCwgPT0sIGVuZE9mZnNldCk7CiAg
ICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMjUpOwogICAgIGdfYXNzZXJ0X2Nt
cGludChlbmRPZmZzZXQsID09LCAyNSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHNlbGVjdGVkVGV4
dCwgPT0sIE5VTEwpOworICAgIGdfYXNzZXJ0X2NtcHN0cihzZWxlY3RlZFRleHQsID09LCAwKTsK
ICAgICBnX2ZyZWUgKHNlbGVjdGVkVGV4dCk7CiAKLSAgICAvLyBTZWNvbmQgcGFyYWdyYXBoICh0
ZXh0ICsgbGluayArIHRleHQpCisgICAgLyogU2Vjb25kIHBhcmFncmFwaCAodGV4dCArIGxpbmsg
KyB0ZXh0KS4gKi8KIAotICAgIC8vIFNldCBhIHNlbGVjdGlvbiBwYXJ0aWFsbHkgY292ZXJpbmcg
dGhlIGxpbmsgYW5kIHRlc3QgaXQKKyAgICAvKiBTZXQgYSBzZWxlY3Rpb24gcGFydGlhbGx5IGNv
dmVyaW5nIHRoZSBsaW5rIGFuZCB0ZXN0IGl0LiAqLwogICAgIHJlc3VsdCA9IGF0a190ZXh0X3Nl
dF9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCwgNywgMjEpOwogICAgIGdfYXNzZXJ0KHJlc3VsdCk7
CiAKLSAgICAvLyBUZXN0IHRoZSBwYXJhZ3JhcGggZmlyc3QKKyAgICAvKiBUZXN0IHRoZSBwYXJh
Z3JhcGggZmlyc3QuICovCiAgICAgZ19hc3NlcnRfY21waW50KGF0a190ZXh0X2dldF9uX3NlbGVj
dGlvbnMocGFyYWdyYXBoMiksID09LCAxKTsKICAgICBzZWxlY3RlZFRleHQgPSBhdGtfdGV4dF9n
ZXRfc2VsZWN0aW9uKHBhcmFncmFwaDIsIDAsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCk7CiAg
ICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgNyk7CkBAIC04NDcsNyArNzY4LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdla2l0QXRrVGV4dFNlbGVjdGlvbnModm9pZCkKICAgICBnX2Fz
c2VydF9jbXBzdHIoc2VsZWN0ZWRUZXh0LCA9PSwgInJhcGggd2l0aCBhIGxpIik7CiAgICAgZ19m
cmVlIChzZWxlY3RlZFRleHQpOwogCi0gICAgLy8gTm93IHRlc3QganVzdCB0aGUgbGluaworICAg
IC8qIE5vdyB0ZXN0IGp1c3QgdGhlIGxpbmsuICovCiAgICAgZ19hc3NlcnRfY21waW50KGF0a190
ZXh0X2dldF9uX3NlbGVjdGlvbnMobGluayksID09LCAxKTsKICAgICBzZWxlY3RlZFRleHQgPSBh
dGtfdGV4dF9nZXRfc2VsZWN0aW9uKGxpbmssIDAsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCk7
CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMCk7CkBAIC04NTUsMjEgKzc3
NiwyMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2VraXRBdGtUZXh0U2VsZWN0aW9ucyh2b2lkKQogICAg
IGdfYXNzZXJ0X2NtcHN0cihzZWxlY3RlZFRleHQsID09LCAiYSBsaSIpOwogICAgIGdfZnJlZSAo
c2VsZWN0ZWRUZXh0KTsKIAotICAgIC8vIFJlbW92ZSBzZWxlY3Rpb25zIGFuZCB0ZXh0IGV2ZXJ5
dGhpbmcgYWdhaW4KKyAgICAvKiBSZW1vdmUgc2VsZWN0aW9ucyBhbmQgdGV4dCBldmVyeXRoaW5n
IGFnYWluLiAqLwogICAgIHJlc3VsdCA9IGF0a190ZXh0X3JlbW92ZV9zZWxlY3Rpb24ocGFyYWdy
YXBoMiwgMCk7CiAgICAgZ19hc3NlcnQocmVzdWx0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRr
X3RleHRfZ2V0X25fc2VsZWN0aW9ucyhwYXJhZ3JhcGgyKSwgPT0sIDApOwogICAgIHNlbGVjdGVk
VGV4dCA9IGF0a190ZXh0X2dldF9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCwgJnN0YXJ0T2Zmc2V0
LCAmZW5kT2Zmc2V0KTsKLSAgICAvLyBOb3cgb2Zmc2V0cyBzaG91bGQgYmUgdGhlIHNhbWUgKG5v
IHNlbGVjdGlvbikKKyAgICAvKiBOb3cgb2Zmc2V0cyBzaG91bGQgYmUgdGhlIHNhbWUgKG5vIHNl
bGVjdGlvbikuICovCiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgZW5kT2Zm
c2V0KTsKLSAgICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0ZWRUZXh0LCA9PSwgTlVMTCk7CisgICAg
Z19hc3NlcnRfY21wc3RyKHNlbGVjdGVkVGV4dCwgPT0sIDApOwogICAgIGdfZnJlZSAoc2VsZWN0
ZWRUZXh0KTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChhdGtfdGV4dF9nZXRfbl9zZWxlY3Rpb25z
KGxpbmspLCA9PSwgMCk7CiAgICAgc2VsZWN0ZWRUZXh0ID0gYXRrX3RleHRfZ2V0X3NlbGVjdGlv
bihsaW5rLCAwLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOwotICAgIC8vIE5vdyBvZmZzZXRz
IHNob3VsZCBiZSB0aGUgc2FtZSAobm8gc2VsZWN0aW9uKQorICAgIC8qIE5vdyBvZmZzZXRzIHNo
b3VsZCBiZSB0aGUgc2FtZSAobm8gc2VsZWN0aW9uKS4gKi8KICAgICBnX2Fzc2VydF9jbXBpbnQo
c3RhcnRPZmZzZXQsID09LCBlbmRPZmZzZXQpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihzZWxlY3Rl
ZFRleHQsID09LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0ZWRUZXh0LCA9PSwg
MCk7CiAgICAgZ19mcmVlIChzZWxlY3RlZFRleHQpOwogCiAgICAgZ19vYmplY3RfdW5yZWYocGFy
YWdyYXBoMSk7CkBAIC04NzcsMTM2ICs3OTgsMTMzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWtpdEF0
a1RleHRTZWxlY3Rpb25zKHZvaWQpCiAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7CiB9CiAK
LXN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtHZXRFeHRlbnRzKHZvaWQpCitzdGF0aWMgdm9pZCB0
ZXN0V2Via2l0QXRrR2V0RXh0ZW50cygpCiB7Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsK
LSAgICBBdGtPYmplY3QqIG9iajsKLSAgICBHTWFpbkxvb3AqIGxvb3A7Ci0KLSAgICB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwog
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwotICAgIEd0a0FsbG9jYXRpb24gYWxsb2Mg
PSB7IDAsIDAsIDgwMCwgNjAwIH07Ci0gICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19X
SURHRVQod2ViVmlldyksICZhbGxvYyk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5n
KHdlYlZpZXcsIGNlbnRlcmVkQ29udGVudHMsIE5VTEwsIE5VTEwsIE5VTEwpOwotICAgIGxvb3Ag
PSBnX21haW5fbG9vcF9uZXcoTlVMTCwgVFJVRSk7Ci0KLSAgICBnX2lkbGVfYWRkKChHU291cmNl
RnVuYyliYWlsX291dCwgbG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOwotCi0gICAg
b2JqID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAg
ICBnX2Fzc2VydChvYmopOwotCi0gICAgQXRrVGV4dCogc2hvcnRfdGV4dDEgPSBBVEtfVEVYVChh
dGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMCkpOwotICAgIGdfYXNzZXJ0KEFU
S19JU19URVhUKHNob3J0X3RleHQxKSk7Ci0gICAgQXRrVGV4dCogbG9uZ190ZXh0ID0gQVRLX1RF
WFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmosIDEpKTsKLSAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChsb25nX3RleHQpKTsKLSAgICBBdGtUZXh0KiBzaG9ydF90ZXh0MiA9IEFU
S19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAyKSk7Ci0gICAgZ19h
c3NlcnQoQVRLX0lTX1RFWFQoc2hvcnRfdGV4dDIpKTsKLSAgICBBdGtUZXh0KiBtdWx0aWxpbmVf
dGV4dCA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAzKSk7
Ci0gICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobXVsdGlsaW5lX3RleHQpKTsKLQotICAgIC8vIFN0
YXJ0IHdpdGggd2luZG93IGV4dGVudHMuCisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0g
eyAwLCAwLCA4MDAsIDYwMCB9OworICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lE
R0VUKHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3Ry
aW5nKHdlYlZpZXcsIGNlbnRlcmVkQ29udGVudHMsIDAsIDAsIDApOworCisgICAgLyogV2FpdCBm
b3IgdGhlIGFjY2Vzc2libGUgb2JqZWN0cyB0byBiZSBjcmVhdGVkLiAqLworICAgIHdhaXRGb3JB
Y2Nlc3NpYmxlT2JqZWN0cygpOworCisgICAgQXRrT2JqZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0
X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KG9iamVj
dCk7CisKKyAgICBBdGtUZXh0KiBzaG9ydFRleHQxID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZf
YWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApKTsKKyAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChz
aG9ydFRleHQxKSk7CisgICAgQXRrVGV4dCogbG9uZ1RleHQgPSBBVEtfVEVYVChhdGtfb2JqZWN0
X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSkpOworICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKGxvbmdUZXh0KSk7CisgICAgQXRrVGV4dCogc2hvcnRUZXh0MiA9IEFUS19URVhUKGF0a19v
YmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAyKSk7CisgICAgZ19hc3NlcnQoQVRL
X0lTX1RFWFQoc2hvcnRUZXh0MikpOworICAgIEF0a1RleHQqIG11bHRpbGluZVRleHQgPSBBVEtf
VEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMykpOworICAgIGdf
YXNzZXJ0KEFUS19JU19URVhUKG11bHRpbGluZVRleHQpKTsKKworICAgIC8qIFN0YXJ0IHdpdGgg
d2luZG93IGV4dGVudHMuICovCiAgICAgQXRrVGV4dFJlY3RhbmdsZSBzbGluZV93aW5kb3cxLCBz
bGluZV93aW5kb3cyLCBsbGluZV93aW5kb3csIG1saW5lX3dpbmRvdzsKLSAgICBhdGtfdGV4dF9n
ZXRfcmFuZ2VfZXh0ZW50cyhzaG9ydF90ZXh0MSwgMCwgMTAsIEFUS19YWV9XSU5ET1csICZzbGlu
ZV93aW5kb3cxKTsKLSAgICBhdGtfdGV4dF9nZXRfcmFuZ2VfZXh0ZW50cyhsb25nX3RleHQsIDAs
IDQ0LCBBVEtfWFlfV0lORE9XLCAmbGxpbmVfd2luZG93KTsKLSAgICBhdGtfdGV4dF9nZXRfcmFu
Z2VfZXh0ZW50cyhzaG9ydF90ZXh0MiwgMCwgMTAsIEFUS19YWV9XSU5ET1csICZzbGluZV93aW5k
b3cyKTsKLSAgICBhdGtfdGV4dF9nZXRfcmFuZ2VfZXh0ZW50cyhtdWx0aWxpbmVfdGV4dCwgMCwg
NjAsIEFUS19YWV9XSU5ET1csICZtbGluZV93aW5kb3cpOworICAgIGF0a190ZXh0X2dldF9yYW5n
ZV9leHRlbnRzKHNob3J0VGV4dDEsIDAsIDEwLCBBVEtfWFlfV0lORE9XLCAmc2xpbmVfd2luZG93
MSk7CisgICAgYXRrX3RleHRfZ2V0X3JhbmdlX2V4dGVudHMobG9uZ1RleHQsIDAsIDQ0LCBBVEtf
WFlfV0lORE9XLCAmbGxpbmVfd2luZG93KTsKKyAgICBhdGtfdGV4dF9nZXRfcmFuZ2VfZXh0ZW50
cyhzaG9ydFRleHQyLCAwLCAxMCwgQVRLX1hZX1dJTkRPVywgJnNsaW5lX3dpbmRvdzIpOworICAg
IGF0a190ZXh0X2dldF9yYW5nZV9leHRlbnRzKG11bHRpbGluZVRleHQsIDAsIDYwLCBBVEtfWFlf
V0lORE9XLCAmbWxpbmVfd2luZG93KTsKIAotICAgIC8vIENoZWNrIHZlcnRpY2FsIGxpbmUgcG9z
aXRpb24uCisgICAgLyogQ2hlY2sgdmVydGljYWwgbGluZSBwb3NpdGlvbi4gKi8KICAgICBnX2Fz
c2VydF9jbXBpbnQoc2xpbmVfd2luZG93MS55ICsgc2xpbmVfd2luZG93MS5oZWlnaHQsIDw9LCBs
bGluZV93aW5kb3cueSk7CiAgICAgZ19hc3NlcnRfY21waW50KGxsaW5lX3dpbmRvdy55ICsgbGxp
bmVfd2luZG93LmhlaWdodCArIHNsaW5lX3dpbmRvdzIuaGVpZ2h0LCA8PSwgbWxpbmVfd2luZG93
LnkpOwogCi0gICAgLy8gUGFyYWdyYXBocyAxIGFuZCAzIGhhdmUgaWRlbnRpY2FsIHRleHQgYW5k
IGFsaWdubWVudC4KKyAgICAvKiBQYXJhZ3JhcGhzIDEgYW5kIDMgaGF2ZSBpZGVudGljYWwgdGV4
dCBhbmQgYWxpZ25tZW50LiAqLwogICAgIGdfYXNzZXJ0X2NtcGludChzbGluZV93aW5kb3cxLngs
ID09LCBzbGluZV93aW5kb3cyLngpOwogICAgIGdfYXNzZXJ0X2NtcGludChzbGluZV93aW5kb3cx
LndpZHRoLCA9PSwgc2xpbmVfd2luZG93Mi53aWR0aCk7CiAgICAgZ19hc3NlcnRfY21waW50KHNs
aW5lX3dpbmRvdzEuaGVpZ2h0LCA9PSwgc2xpbmVfd2luZG93Mi5oZWlnaHQpOwogCi0gICAgLy8g
QWxsIGxpbmVzIHNob3VsZCBiZSB0aGUgc2FtZSBoZWlnaHQ7IGxpbmUgMiBpcyB0aGUgd2lkZXN0
IGxpbmUuCisgICAgLyogQWxsIGxpbmVzIHNob3VsZCBiZSB0aGUgc2FtZSBoZWlnaHQ7IGxpbmUg
MiBpcyB0aGUgd2lkZXN0IGxpbmUuICovCiAgICAgZ19hc3NlcnRfY21waW50KHNsaW5lX3dpbmRv
dzEuaGVpZ2h0LCA9PSwgbGxpbmVfd2luZG93LmhlaWdodCk7CiAgICAgZ19hc3NlcnRfY21waW50
KHNsaW5lX3dpbmRvdzEud2lkdGgsIDwsIGxsaW5lX3dpbmRvdy53aWR0aCk7CiAKLSAgICAvLyBN
YWtlIHN1cmUgdGhlIGNoYXJhY3RlciBleHRlbnRzIGppdmUgd2l0aCB0aGUgcmFuZ2UgZXh0ZW50
cy4KLSAgICBnaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7CisgICAgLyogTWFrZSBzdXJlIHRoZSBj
aGFyYWN0ZXIgZXh0ZW50cyBqaXZlIHdpdGggdGhlIHJhbmdlIGV4dGVudHMuICovCisgICAgZ2lu
dCB4OworICAgIGdpbnQgeTsKKyAgICBnaW50IHdpZHRoOworICAgIGdpbnQgaGVpZ2h0OwogCi0g
ICAgLy8gRmlyc3QgcGFyYWdyYXBoIChzaG9ydCB0ZXh0KQotICAgIGF0a190ZXh0X2dldF9jaGFy
YWN0ZXJfZXh0ZW50cyhzaG9ydF90ZXh0MSwgMCwgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsIEFU
S19YWV9XSU5ET1cpOworICAgIC8qIEZpcnN0IHBhcmFncmFwaCAoc2hvcnQgdGV4dCkuICovCisg
ICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9leHRlbnRzKHNob3J0VGV4dDEsIDAsICZ4LCAmeSwg
JndpZHRoLCAmaGVpZ2h0LCBBVEtfWFlfV0lORE9XKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoeCwg
PT0sIHNsaW5lX3dpbmRvdzEueCk7CiAgICAgZ19hc3NlcnRfY21waW50KHksID09LCBzbGluZV93
aW5kb3cxLnkpOwogICAgIGdfYXNzZXJ0X2NtcGludChoZWlnaHQsID09LCBzbGluZV93aW5kb3cx
LmhlaWdodCk7CiAKLSAgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMoc2hvcnRfdGV4
dDEsIDksICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCBBVEtfWFlfV0lORE9XKTsKKyAgICBhdGtf
dGV4dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMoc2hvcnRUZXh0MSwgOSwgJngsICZ5LCAmd2lkdGgs
ICZoZWlnaHQsIEFUS19YWV9XSU5ET1cpOwogICAgIGdfYXNzZXJ0X2NtcGludCh4LCA9PSwgc2xp
bmVfd2luZG93MS54ICsgc2xpbmVfd2luZG93MS53aWR0aCAtIHdpZHRoKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoeSwgPT0sIHNsaW5lX3dpbmRvdzEueSk7CiAgICAgZ19hc3NlcnRfY21waW50KGhl
aWdodCwgPT0sIHNsaW5lX3dpbmRvdzEuaGVpZ2h0KTsKIAotICAgIC8vIFNlY29uZCBwYXJhZ3Jh
cGggKGxvbmcgdGV4dCkKLSAgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMobG9uZ190
ZXh0LCAwLCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCwgQVRLX1hZX1dJTkRPVyk7CisgICAgLyog
U2Vjb25kIHBhcmFncmFwaCAobG9uZyB0ZXh0KS4gKi8KKyAgICBhdGtfdGV4dF9nZXRfY2hhcmFj
dGVyX2V4dGVudHMobG9uZ1RleHQsIDAsICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCBBVEtfWFlf
V0lORE9XKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoeCwgPT0sIGxsaW5lX3dpbmRvdy54KTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoeSwgPT0sIGxsaW5lX3dpbmRvdy55KTsKICAgICBnX2Fzc2VydF9j
bXBpbnQoaGVpZ2h0LCA9PSwgbGxpbmVfd2luZG93LmhlaWdodCk7CiAKLSAgICBhdGtfdGV4dF9n
ZXRfY2hhcmFjdGVyX2V4dGVudHMobG9uZ190ZXh0LCA0MywgJngsICZ5LCAmd2lkdGgsICZoZWln
aHQsIEFUS19YWV9XSU5ET1cpOworICAgIGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhs
b25nVGV4dCwgNDMsICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCBBVEtfWFlfV0lORE9XKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoeCwgPT0sIGxsaW5lX3dpbmRvdy54ICsgbGxpbmVfd2luZG93Lndp
ZHRoIC0gd2lkdGgpOwogICAgIGdfYXNzZXJ0X2NtcGludCh5LCA9PSwgbGxpbmVfd2luZG93Lnkp
OwogICAgIGdfYXNzZXJ0X2NtcGludChoZWlnaHQsID09LCBsbGluZV93aW5kb3cuaGVpZ2h0KTsK
IAotICAgIC8vIFRoaXJkIHBhcmFncmFwaCAoc2hvcnQgdGV4dCkKLSAgICBhdGtfdGV4dF9nZXRf
Y2hhcmFjdGVyX2V4dGVudHMoc2hvcnRfdGV4dDIsIDAsICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0
LCBBVEtfWFlfV0lORE9XKTsKKyAgICAvKiBUaGlyZCBwYXJhZ3JhcGggKHNob3J0IHRleHQpLiAq
LworICAgIGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhzaG9ydFRleHQyLCAwLCAmeCwg
JnksICZ3aWR0aCwgJmhlaWdodCwgQVRLX1hZX1dJTkRPVyk7CiAgICAgZ19hc3NlcnRfY21waW50
KHgsID09LCBzbGluZV93aW5kb3cyLngpOwogICAgIGdfYXNzZXJ0X2NtcGludCh5LCA9PSwgc2xp
bmVfd2luZG93Mi55KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoaGVpZ2h0LCA9PSwgc2xpbmVfd2lu
ZG93Mi5oZWlnaHQpOwogCi0gICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9leHRlbnRzKHNob3J0
X3RleHQyLCA5LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCwgQVRLX1hZX1dJTkRPVyk7CisgICAg
YXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9leHRlbnRzKHNob3J0VGV4dDIsIDksICZ4LCAmeSwgJndp
ZHRoLCAmaGVpZ2h0LCBBVEtfWFlfV0lORE9XKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoeCwgPT0s
IHNsaW5lX3dpbmRvdzIueCArIHNsaW5lX3dpbmRvdzIud2lkdGggLSB3aWR0aCk7CiAgICAgZ19h
c3NlcnRfY21waW50KHksID09LCBzbGluZV93aW5kb3cyLnkpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChoZWlnaHQsID09LCBzbGluZV93aW5kb3cyLmhlaWdodCk7CiAKLSAgICAvLyBGb3VyIHBhcmFn
cmFwaCAoMyBsaW5lcyBtdWx0aS1saW5lIHRleHQpCi0gICAgYXRrX3RleHRfZ2V0X2NoYXJhY3Rl
cl9leHRlbnRzKG11bHRpbGluZV90ZXh0LCAwLCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCwgQVRL
X1hZX1dJTkRPVyk7CisgICAgLyogRm91ciBwYXJhZ3JhcGggKDMgbGluZXMgbXVsdGktbGluZSB0
ZXh0KS4gKi8KKyAgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMobXVsdGlsaW5lVGV4
dCwgMCwgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQsIEFUS19YWV9XSU5ET1cpOwogICAgIGdfYXNz
ZXJ0X2NtcGludCh4LCA9PSwgbWxpbmVfd2luZG93LngpOwogICAgIGdfYXNzZXJ0X2NtcGludCh5
LCA9PSwgbWxpbmVfd2luZG93LnkpOwogICAgIGdfYXNzZXJ0X2NtcGludCgzICogaGVpZ2h0LCA9
PSwgbWxpbmVfd2luZG93LmhlaWdodCk7CiAKLSAgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2V4
dGVudHMobXVsdGlsaW5lX3RleHQsIDU5LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCwgQVRLX1hZ
X1dJTkRPVyk7Ci0gICAgLy8gTGFzdCBsaW5lIHdvbid0IGZpbGwgdGhlIHdob2xlIHdpZHRoIG9m
IHRoZSByZWN0YW5nbGUKKyAgICBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2V4dGVudHMobXVsdGls
aW5lVGV4dCwgNTksICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCBBVEtfWFlfV0lORE9XKTsKKyAg
ICAvKiBMYXN0IGxpbmUgd29uJ3QgZmlsbCB0aGUgd2hvbGUgd2lkdGggb2YgdGhlIHJlY3Rhbmds
ZS4gKi8KICAgICBnX2Fzc2VydF9jbXBpbnQoeCwgPD0sIG1saW5lX3dpbmRvdy54ICsgbWxpbmVf
d2luZG93LndpZHRoIC0gd2lkdGgpOwogICAgIGdfYXNzZXJ0X2NtcGludCh5LCA9PSwgbWxpbmVf
d2luZG93LnkgKyBtbGluZV93aW5kb3cuaGVpZ2h0IC0gaGVpZ2h0KTsKICAgICBnX2Fzc2VydF9j
bXBpbnQoaGVpZ2h0LCA8PSwgbWxpbmVfd2luZG93LmhlaWdodCk7CiAKLSAgICBnX29iamVjdF91
bnJlZihzaG9ydF90ZXh0MSk7Ci0gICAgZ19vYmplY3RfdW5yZWYoc2hvcnRfdGV4dDIpOwotICAg
IGdfb2JqZWN0X3VucmVmKGxvbmdfdGV4dCk7Ci0gICAgZ19vYmplY3RfdW5yZWYobXVsdGlsaW5l
X3RleHQpOworICAgIGdfb2JqZWN0X3VucmVmKHNob3J0VGV4dDEpOworICAgIGdfb2JqZWN0X3Vu
cmVmKHNob3J0VGV4dDIpOworICAgIGdfb2JqZWN0X3VucmVmKGxvbmdUZXh0KTsKKyAgICBnX29i
amVjdF91bnJlZihtdWx0aWxpbmVUZXh0KTsKICAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsK
IH0KIAotc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0xheW91dEFuZERhdGFUYWJsZXModm9pZCkK
K3N0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtMYXlvdXRBbmREYXRhVGFibGVzKCkKIHsKICAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSk7CiAgICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlv
biBhbGxvYyA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2Nh
dGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9j
YXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRl
KEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9zdHJpbmcod2ViVmlldywgbGF5b3V0QW5kRGF0YVRhYmxlcywgMCwgMCwgMCk7CiAKLSAg
ICAvLyBNYW51YWxseSBzcGluIHRoZSBtYWluIGNvbnRleHQgdG8gZ2V0IHRoZSBhY2Nlc3NpYmxl
IG9iamVjdHMKLSAgICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZygwKSkKLSAgICAgICAg
Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKDAsIFRSVUUpOworICAgIC8qIFdhaXQgZm9yIHRoZSBh
Y2Nlc3NpYmxlIG9iamVjdHMgdG8gYmUgY3JlYXRlZC4gKi8KKyAgICB3YWl0Rm9yQWNjZXNzaWJs
ZU9iamVjdHMoKTsKIAotICAgIEF0a09iamVjdCogb2JqID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNz
aWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydChvYmopOworICAgIEF0a09i
amVjdCogb2JqZWN0ID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtfV0lER0VUKHdlYlZp
ZXcpKTsKKyAgICBnX2Fzc2VydChvYmplY3QpOwogCi0gICAgLy8gQ2hlY2sgdGhlIG5vbi1sYXlv
dXQgdGFibGUgKGRhdGEgdGFibGUpCisgICAgLyogQ2hlY2sgdGhlIG5vbi1sYXlvdXQgdGFibGUg
KGRhdGEgdGFibGUpLiAqLwogCi0gICAgQXRrT2JqZWN0KiB0YWJsZTEgPSBhdGtfb2JqZWN0X3Jl
Zl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMCk7CisgICAgQXRrT2JqZWN0KiB0YWJsZTEgPSBhdGtf
b2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7CiAgICAgZ19hc3NlcnQoQVRL
X0lTX1RBQkxFKHRhYmxlMSkpOwogICAgIEF0a0F0dHJpYnV0ZVNldCogc2V0MSA9IGF0a19vYmpl
Y3RfZ2V0X2F0dHJpYnV0ZXModGFibGUxKTsKICAgICBnX2Fzc2VydChzZXQxKTsKICAgICBnX2Fz
c2VydCghYXRrQXR0cmlidXRlU2V0Q29udGFpbnNBdHRyaWJ1dGVOYW1lKHNldDEsICJsYXlvdXQt
Z3Vlc3MiKSk7CiAgICAgYXRrX2F0dHJpYnV0ZV9zZXRfZnJlZShzZXQxKTsKIAotICAgIC8vIENo
ZWNrIHRoZSBsYXlvdXQgdGFibGUKKyAgICAvKiBDaGVjayB0aGUgbGF5b3V0IHRhYmxlLiAqLwog
Ci0gICAgQXRrT2JqZWN0KiB0YWJsZTIgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iaiwgMSk7CisgICAgQXRrT2JqZWN0KiB0YWJsZTIgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3Np
YmxlX2NoaWxkKG9iamVjdCwgMSk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RBQkxFKHRhYmxlMikp
OwogICAgIEF0a0F0dHJpYnV0ZVNldCogc2V0MiA9IGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMo
dGFibGUyKTsKICAgICBnX2Fzc2VydChzZXQyKTsKQEAgLTEwMTksMjIgKzkzNywyMSBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrTGF5b3V0QW5kRGF0YVRhYmxlcyh2b2lkKQogICAgIGdfb2Jq
ZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrTGlua3NX
aXRoSW5saW5lSW1hZ2VzKHZvaWQpCitzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrTGlua3NXaXRo
SW5saW5lSW1hZ2VzKCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dF
Ql9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CiAgICAgZ19vYmplY3RfcmVmX3Npbmsod2Vi
Vmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvYyA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAg
ICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jKTsK
KyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07CisgICAg
Z3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9u
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgbGlua3NXaXRoSW5s
aW5lSW1hZ2VzLCAwLCAwLCAwKTsKIAotICAgIC8vIE1hbnVhbGx5IHNwaW4gdGhlIG1haW4gY29u
dGV4dCB0byBnZXQgdGhlIGFjY2Vzc2libGUgb2JqZWN0cwotICAgIHdoaWxlIChnX21haW5fY29u
dGV4dF9wZW5kaW5nKDApKQotICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24oMCwgVFJV
RSk7CisgICAgLyogV2FpdCBmb3IgdGhlIGFjY2Vzc2libGUgb2JqZWN0cyB0byBiZSBjcmVhdGVk
LiAqLworICAgIHdhaXRGb3JBY2Nlc3NpYmxlT2JqZWN0cygpOwogCiAgICAgQXRrT2JqZWN0KiBv
YmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOwog
ICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICAvLyBGaXJzdCBwYXJhZ3JhcGggKGxpbmsgYXQg
dGhlIGJlZ2lubmluZykKKyAgICAvKiBGaXJzdCBwYXJhZ3JhcGggKGxpbmsgYXQgdGhlIGJlZ2lu
bmluZykuICovCiAgICAgQXRrT2JqZWN0KiBwYXJhZ3JhcGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nl
c3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdy
YXBoKSk7CiAgICAgZ2ludCBzdGFydE9mZnNldDsKQEAgLTEwNDcsNyArOTY0LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYmtpdEF0a0xpbmtzV2l0aElubGluZUltYWdlcyh2b2lkKQogICAgIGdfZnJl
ZSh0ZXh0KTsKICAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgpOwogCi0gICAgLy8gU2Vjb25k
IHBhcmFncmFwaCAobGluayBpbiB0aGUgbWlkZGxlKQorICAgIC8qIFNlY29uZCBwYXJhZ3JhcGgg
KGxpbmsgaW4gdGhlIG1pZGRsZSkuICovCiAgICAgcGFyYWdyYXBoID0gYXRrX29iamVjdF9yZWZf
YWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBh
cmFncmFwaCkpOwogICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQoQVRLX1RF
WFQocGFyYWdyYXBoKSwgMCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9TVEFSVCwgJnN0YXJ0T2Zm
c2V0LCAmZW5kT2Zmc2V0KTsKQEAgLTEwNTgsNyArOTc1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YmtpdEF0a0xpbmtzV2l0aElubGluZUltYWdlcyh2b2lkKQogICAgIGdfZnJlZSh0ZXh0KTsKICAg
ICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgpOwogCi0gICAgLy8gVGhpcmQgcGFyYWdyYXBoIChs
aW5rIGF0IHRoZSBlbmQpCisgICAgLyogVGhpcmQgcGFyYWdyYXBoIChsaW5rIGF0IHRoZSBlbmQp
LiAqLwogICAgIHBhcmFncmFwaCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2Jq
ZWN0LCAyKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgpKTsKICAgICB0ZXh0
ID0gYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCksIDAsIEFU
S19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCk7CkBA
IC0xMDcyLDM4ICs5ODksMzcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0xpbmtzV2l0aElu
bGluZUltYWdlcyh2b2lkKQogICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrSHlwZXJ0ZXh0QW5kSHlwZXJsaW5rcyh2b2lkKQorc3RhdGlj
IHZvaWQgdGVzdFdlYmtpdEF0a0h5cGVydGV4dEFuZEh5cGVybGlua3MoKQogewogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygp
KTsKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLSAgICBHdGtBbGxvY2F0aW9uIGFs
bG9jID0geyAwLCAwLCA4MDAsIDYwMCB9OwotICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShH
VEtfV0lER0VUKHdlYlZpZXcpLCAmYWxsb2MpOworICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlv
biA9IHsgMCwgMCwgODAwLCA2MDAgfTsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RL
X1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3N0cmluZyh3ZWJWaWV3LCBoeXBlcnRleHRBbmRIeXBlcmxpbmtzLCAwLCAwLCAwKTsKIAotICAg
IC8vIE1hbnVhbGx5IHNwaW4gdGhlIG1haW4gY29udGV4dCB0byBnZXQgdGhlIGFjY2Vzc2libGUg
b2JqZWN0cwotICAgIHdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKDApKQotICAgICAgICBn
X21haW5fY29udGV4dF9pdGVyYXRpb24oMCwgVFJVRSk7CisgICAgLyogV2FpdCBmb3IgdGhlIGFj
Y2Vzc2libGUgb2JqZWN0cyB0byBiZSBjcmVhdGVkLiAqLworICAgIHdhaXRGb3JBY2Nlc3NpYmxl
T2JqZWN0cygpOwogCi0gICAgQXRrT2JqZWN0KiBvYmogPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3Np
YmxlKEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KG9iaik7CisgICAgQXRrT2Jq
ZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmll
dykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICBBdGtPYmplY3QqIHBhcmFncmFwaDEg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMCk7CisgICAgQXRrT2JqZWN0
KiBwYXJhZ3JhcGgxID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDAp
OwogICAgIGdfYXNzZXJ0KEFUS19PQkpFQ1QocGFyYWdyYXBoMSkpOwogICAgIGdfYXNzZXJ0KGF0
a19vYmplY3RfZ2V0X3JvbGUocGFyYWdyYXBoMSkgPT0gQVRLX1JPTEVfUEFSQUdSQVBIKTsKICAg
ICBnX2Fzc2VydChBVEtfSVNfSFlQRVJURVhUKHBhcmFncmFwaDEpKTsKIAotICAgIC8vIE5vIGxp
bmtzIGluIHRoZSBmaXJzdCBwYXJhZ3JhcGgKKyAgICAvKiBObyBsaW5rcyBpbiB0aGUgZmlyc3Qg
cGFyYWdyYXBoLiAqLwogICAgIGdpbnQgbkxpbmtzID0gYXRrX2h5cGVydGV4dF9nZXRfbl9saW5r
cyhBVEtfSFlQRVJURVhUKHBhcmFncmFwaDEpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQobkxpbmtz
LCA9PSwgMCk7CiAKLSAgICBBdGtPYmplY3QqIHBhcmFncmFwaDIgPSBhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKG9iaiwgMSk7CisgICAgQXRrT2JqZWN0KiBwYXJhZ3JhcGgyID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpOwogICAgIGdfYXNzZXJ0KEFU
S19PQkpFQ1QocGFyYWdyYXBoMikpOwogICAgIGdfYXNzZXJ0KGF0a19vYmplY3RfZ2V0X3JvbGUo
cGFyYWdyYXBoMikgPT0gQVRLX1JPTEVfUEFSQUdSQVBIKTsKICAgICBnX2Fzc2VydChBVEtfSVNf
SFlQRVJURVhUKHBhcmFncmFwaDIpKTsKIAotICAgIC8vIENoZWNrIGxpbmtzIGluIHRoZSBzZWNv
bmQgcGFyYWdyYXBoCi0gICAgbkxpbmtzID0gYXRrX2h5cGVydGV4dF9nZXRfbl9saW5rcyhBVEtf
SFlQRVJURVhUKHBhcmFncmFwaDIpKTsKLSAgICBnX2Fzc2VydF9jbXBpbnQobkxpbmtzLCA9PSwg
Myk7CisgICAgLyogQ2hlY2sgbGlua3MgaW4gdGhlIHNlY29uZCBwYXJhZ3JhcGguCisgICAgICAg
bkxpbmtzID0gYXRrX2h5cGVydGV4dF9nZXRfbl9saW5rcyhBVEtfSFlQRVJURVhUKHBhcmFncmFw
aDIpKTsKKyAgICAgICBnX2Fzc2VydF9jbXBpbnQobkxpbmtzLCA9PSwgMyk7ICovCiAKICAgICBB
dGtIeXBlcmxpbmsqIGhMaW5rMSA9IGF0a19oeXBlcnRleHRfZ2V0X2xpbmsoQVRLX0hZUEVSVEVY
VChwYXJhZ3JhcGgyKSwgMCk7CiAgICAgZ19hc3NlcnQoQVRLX0hZUEVSTElOSyhoTGluazEpKTsK
QEAgLTExMzUsNyArMTA1MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtIeXBlcnRleHRB
bmRIeXBlcmxpbmtzKHZvaWQpCiAgICAgZ19hc3NlcnRfY21waW50KGF0a19oeXBlcmxpbmtfZ2V0
X25fYW5jaG9ycyhoTGluazMpLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGF0a19oeXBl
cmxpbmtfZ2V0X3VyaShoTGluazMsIDApLCA9PSwgImh0dHA6Ly9iYXouZm9vLmJhci8iKTsKIAot
ICAgIC8vIEZpbmFsbHkgY2hlY2sgdGhlIEF0a0FjdGlvbiBpbnRlcmZhY2UgZm9yIGEgZ2l2ZW4g
QXRrSHlwZXJsaW5rCisgICAgLyogRmluYWxseSBjaGVjayB0aGUgQXRrQWN0aW9uIGludGVyZmFj
ZSBmb3IgYSBnaXZlbiBBdGtIeXBlcmxpbmsuICovCiAgICAgZ19hc3NlcnQoQVRLX0lTX0FDVElP
TihoTGluazEpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX2FjdGlvbl9nZXRfbl9hY3Rpb25z
KEFUS19BQ1RJT04oaExpbmsxKSksID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXRrX2Fj
dGlvbl9nZXRfa2V5YmluZGluZyhBVEtfQUNUSU9OKGhMaW5rMSksIDApLCA9PSwgIiIpOwpAQCAt
MTE0NywyNCArMTA2MywyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrSHlwZXJ0ZXh0QW5k
SHlwZXJsaW5rcyh2b2lkKQogICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0
aWMgdm9pZCB0ZXN0V2Via2l0QXRrTGlzdHNPZkl0ZW1zKHZvaWQpCitzdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrTGlzdHNPZkl0ZW1zKCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CiAgICAgZ19vYmplY3RfcmVm
X3Npbmsod2ViVmlldyk7Ci0gICAgR3RrQWxsb2NhdGlvbiBhbGxvYyA9IHsgMCwgMCwgODAwLCA2
MDAgfTsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwg
JmFsbG9jKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgbGlzdHNP
Zkl0ZW1zLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICBHTWFpbkxvb3AqIGxvb3AgPSBnX21haW5f
bG9vcF9uZXcoTlVMTCwgVFJVRSk7CisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0geyAw
LCAwLCA4MDAsIDYwMCB9OworICAgIGd0a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShHVEtfV0lER0VU
KHdlYlZpZXcpLCAmYWxsb2NhdGlvbik7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5n
KHdlYlZpZXcsIGxpc3RzT2ZJdGVtcywgMCwgMCwgMCk7CiAKLSAgICBnX2lkbGVfYWRkKChHU291
cmNlRnVuYyliYWlsX291dCwgbG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworICAg
IC8qIFdhaXQgZm9yIHRoZSBhY2Nlc3NpYmxlIG9iamVjdHMgdG8gYmUgY3JlYXRlZC4gKi8KKyAg
ICB3YWl0Rm9yQWNjZXNzaWJsZU9iamVjdHMoKTsKIAotICAgIEF0a09iamVjdCogb2JqID0gZ3Rr
X3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2Vy
dChvYmopOworICAgIEF0a09iamVjdCogb2JqZWN0ID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJs
ZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBnX2Fzc2VydChvYmplY3QpOwogCi0gICAgLy8g
VW5vcmRlcmVkIGxpc3QKKyAgICAvKiBVbm9yZGVyZWQgbGlzdC4gKi8KIAotICAgIEF0a09iamVj
dCogdUxpc3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMCk7CisgICAg
QXRrT2JqZWN0KiB1TGlzdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0
LCAwKTsKICAgICBnX2Fzc2VydChBVEtfT0JKRUNUKHVMaXN0KSk7CiAgICAgZ19hc3NlcnQoYXRr
X29iamVjdF9nZXRfcm9sZSh1TGlzdCkgPT0gQVRLX1JPTEVfTElTVCk7CiAgICAgZ19hc3NlcnRf
Y21waW50KGF0a19vYmplY3RfZ2V0X25fYWNjZXNzaWJsZV9jaGlsZHJlbih1TGlzdCksID09LCAz
KTsKQEAgLTExODgsOSArMTEwMyw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtMaXN0c09m
SXRlbXModm9pZCkKICAgICBnX29iamVjdF91bnJlZihpdGVtMik7CiAgICAgZ19vYmplY3RfdW5y
ZWYoaXRlbTMpOwogCi0gICAgLy8gT3JkZXJlZCBsaXN0CisgICAgLyogT3JkZXJlZCBsaXN0LiAq
LwogCi0gICAgQXRrT2JqZWN0KiBvTGlzdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hp
bGQob2JqLCAxKTsKKyAgICBBdGtPYmplY3QqIG9MaXN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNz
aWJsZV9jaGlsZChvYmplY3QsIDEpOwogICAgIGdfYXNzZXJ0KEFUS19PQkpFQ1Qob0xpc3QpKTsK
ICAgICBnX2Fzc2VydChhdGtfb2JqZWN0X2dldF9yb2xlKG9MaXN0KSA9PSBBVEtfUk9MRV9MSVNU
KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVjdF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxk
cmVuKG9MaXN0KSwgPT0sIDMpOwpAQCAtMTIzOSwyMiArMTE1NCwyMSBAQCBzdGF0aWMgZ2Jvb2xl
YW4gY2hlY2tUZXh0Q2hhbmdlcyhncG9pbnRlciB1bnVzZWQpCiAgICAgcmV0dXJuIEZBTFNFOwog
fQogCi1zdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dENoYW5nZWROb3RpZmljYXRpb25zKHZv
aWQpCitzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dENoYW5nZWROb3RpZmljYXRpb25zKCkK
IHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93
ZWJfdmlld19uZXcoKSk7CiAgICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgR3Rr
QWxsb2NhdGlvbiBhbGxvYyA9IHsgMCwgMCwgODAwLCA2MDAgfTsKLSAgICBndGtfd2lkZ2V0X3Np
emVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jKTsKKyAgICBHdGtBbGxvY2F0
aW9uIGFsbG9jYXRpb24gPSB7IDAsIDAsIDgwMCwgNjAwIH07CisgICAgZ3RrX3dpZGdldF9zaXpl
X2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyksICZhbGxvY2F0aW9uKTsKICAgICB3ZWJraXRf
d2ViX3ZpZXdfbG9hZF9zdHJpbmcod2ViVmlldywgZm9ybVdpdGhUZXh0SW5wdXRzLCAwLCAwLCAw
KTsKIAotICAgIC8vIE1hbnVhbGx5IHNwaW4gdGhlIG1haW4gY29udGV4dCB0byBnZXQgdGhlIGFj
Y2Vzc2libGUgb2JqZWN0cwotICAgIHdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKDApKQot
ICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24oMCwgVFJVRSk7CisgICAgLyogV2FpdCBm
b3IgdGhlIGFjY2Vzc2libGUgb2JqZWN0cyB0byBiZSBjcmVhdGVkLiAqLworICAgIHdhaXRGb3JB
Y2Nlc3NpYmxlT2JqZWN0cygpOwogCi0gICAgQXRrT2JqZWN0KiBvYmogPSBndGtfd2lkZ2V0X2dl
dF9hY2Nlc3NpYmxlKEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KG9iaik7Cisg
ICAgQXRrT2JqZWN0KiBvYmplY3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURH
RVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KG9iamVjdCk7CiAKLSAgICBBdGtPYmplY3QqIGZv
cm0gPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iaiwgMCk7CisgICAgQXRrT2Jq
ZWN0KiBmb3JtID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwog
ICAgIGdfYXNzZXJ0KEFUS19JU19PQkpFQ1QoZm9ybSkpOwogCiAgICAgQXRrT2JqZWN0KiB0ZXh0
RW50cnkgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGZvcm0sIDApOwpAQCAtMTI4
MywyMSArMTE5NywyMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dENoYW5nZWROb3Rp
ZmljYXRpb25zKHZvaWQpCiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAg
ICBnX3RocmVhZF9pbml0KE5VTEwpOwotICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBO
VUxMKTsKKyAgICBnX3RocmVhZF9pbml0KDApOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZh
cmd2LCAwKTsKIAogICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
Iik7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRfdGV4dF9hdF9vZmZzZXQi
LCB0ZXN0X3dlYmtpdF9hdGtfZ2V0X3RleHRfYXRfb2Zmc2V0KTsKLSAgICBnX3Rlc3RfYWRkX2Z1
bmMoIi93ZWJraXQvYXRrL2dldF90ZXh0X2F0X29mZnNldF9mb3JtcyIsIHRlc3Rfd2Via2l0X2F0
a19nZXRfdGV4dF9hdF9vZmZzZXRfZm9ybXMpOwotICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtp
dC9hdGsvZ2V0X3RleHRfYXRfb2Zmc2V0X25ld2xpbmVzIiwgdGVzdF93ZWJraXRfYXRrX2dldF90
ZXh0X2F0X29mZnNldF9uZXdsaW5lcyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0
ay9nZXRfdGV4dF9hdF9vZmZzZXRfdGV4dGFyZWEiLCB0ZXN0X3dlYmtpdF9hdGtfZ2V0X3RleHRf
YXRfb2Zmc2V0X3RleHRhcmVhKTsKLSAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dl
dF90ZXh0X2F0X29mZnNldF90ZXh0X2lucHV0IiwgdGVzdF93ZWJraXRfYXRrX2dldF90ZXh0X2F0
X29mZnNldF90ZXh0X2lucHV0KTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dl
dFRleHRBdE9mZnNldCIsIHRlc3RXZWJraXRBdGtHZXRUZXh0QXRPZmZzZXQpOworICAgIGdfdGVz
dF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0Rm9ybXMiLCB0ZXN0V2Via2l0
QXRrR2V0VGV4dEF0T2Zmc2V0Rm9ybXMpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9h
dGsvZ2V0VGV4dEF0T2Zmc2V0TmV3bGluZXMiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0
TmV3bGluZXMpOworICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zm
c2V0VGV4dGFyZWEiLCB0ZXN0V2Via2l0QXRrR2V0VGV4dEF0T2Zmc2V0VGV4dGFyZWEpOworICAg
IGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEF0T2Zmc2V0VGV4dElucHV0Iiwg
dGVzdFdlYmtpdEF0a0dldFRleHRBdE9mZnNldFRleHRJbnB1dCk7CiAgICAgZ190ZXN0X2FkZF9m
dW5jKCIvd2Via2l0L2F0ay9nZXRUZXh0SW5QYXJhZ3JhcGhBbmRCb2R5U2ltcGxlIiwgdGVzdFdl
YmtpdEF0a0dldFRleHRJblBhcmFncmFwaEFuZEJvZHlTaW1wbGUpOwogICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC9hdGsvZ2V0VGV4dEluUGFyYWdyYXBoQW5kQm9keU1vZGVyYXRlIiwgdGVz
dFdlYmtpdEF0a0dldFRleHRJblBhcmFncmFwaEFuZEJvZHlNb2RlcmF0ZSk7CiAgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRUZXh0SW5UYWJsZSIsIHRlc3RXZWJraXRBdGtHZXRU
ZXh0SW5UYWJsZSk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9nZXRIZWFkZXJz
SW5UYWJsZSIsIHRlc3RXZWJraXRBdGtHZXRIZWFkZXJzSW5UYWJsZSk7CiAgICAgZ190ZXN0X2Fk
ZF9mdW5jKCIvd2Via2l0L2F0ay90ZXh0QXR0cmlidXRlcyIsIHRlc3RXZWJraXRBdGtUZXh0QXR0
cmlidXRlcyk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay90ZXh0U2VsZWN0aW9u
cyIsIHRlc3RXZWtpdEF0a1RleHRTZWxlY3Rpb25zKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93
ZWJraXQvYXRrL3RleHRTZWxlY3Rpb25zIiwgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKTsK
ICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL2dldEV4dGVudHMiLCB0ZXN0V2Via2l0
QXRrR2V0RXh0ZW50cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9oeXBlcnRl
eHRBbmRIeXBlcmxpbmtzIiwgdGVzdFdlYmtpdEF0a0h5cGVydGV4dEFuZEh5cGVybGlua3MpOwog
ICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvbGF5b3V0QW5kRGF0YVRhYmxlcyIsIHRl
c3RXZWJraXRBdGtMYXlvdXRBbmREYXRhVGFibGVzKTsKLS0gCjEuNy4yLjMKCg==
</data>
<flag name="review"
          id="62773"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>