<?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>148249</bug_id>
          
          <creation_ts>2015-08-20 14:38:43 -0700</creation_ts>
          <short_desc>[Win] Update Windows Tools for revised MIDL interfaces</short_desc>
          <delta_ts>2015-08-20 15:11:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 8</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>
          <dependson>148240</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>dino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119367</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-20 14:38:43 -0700</bug_when>
    <thetext>Now that the MIDL interfaces are decorated with SAL annotations, make sure our test software properly honors the MIDL requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119375</commentid>
    <comment_count>1</comment_count>
      <attachid>259502</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-20 14:51:03 -0700</bug_when>
    <thetext>Created attachment 259502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119378</commentid>
    <comment_count>2</comment_count>
      <attachid>259502</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-08-20 14:55:03 -0700</bug_when>
    <thetext>Comment on attachment 259502
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119384</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-20 15:11:23 -0700</bug_when>
    <thetext>Committed r188709: &lt;http://trac.webkit.org/changeset/188709&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259502</attachid>
            <date>2015-08-20 14:51:03 -0700</date>
            <delta_ts>2015-08-20 14:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148249-20150820150603.patch</filename>
            <type>text/plain</type>
            <size>190033</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4ODcwMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDE1LTA4LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtXaW5dIFVwZGF0ZSBXaW5kb3dzIHRvb2xzIGZvciByZXZpc2VkIE1JREwg
aW50ZXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4MjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBhIGZvbGxvdy11cCB0byBCdWcgMTQ4MDAxLgorCisgICAgICAgIFJldmlzZSB0
aGUgdGVzdGluZyBzb2Z0d2FyZSB0byB1c2UgY29tcGF0aWJsZSBzaWduYXR1cmVzIGFuZAorICAg
ICAgICBpbXBsZW1lbnRhdGlvbnMgdG8gbWF0Y2ggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgSURM
IGdlbmVyYXRlZAorICAgICAgICB3aXRoIHRoZSBTQUwgYW5ub3RhdGlvbnMuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5jcHA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9FZGl0
aW5nRGVsZWdhdGUuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVs
ZWdhdGUuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuY3BwOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Jl
c291cmNlTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RS
dW5uZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNw
cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oOgorICAgICAgICAq
IFdpbkxhdW5jaGVyL0FjY2Vzc2liaWxpdHlEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogV2luTGF1
bmNoZXIvQWNjZXNzaWJpbGl0eURlbGVnYXRlLmg6CisgICAgICAgICogV2luTGF1bmNoZXIvQ29t
bW9uLmNwcDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9ET01EZWZhdWx0SW1wbC5jcHA6CisgICAg
ICAgICogV2luTGF1bmNoZXIvRE9NRGVmYXVsdEltcGwuaDoKKyAgICAgICAgKiBXaW5MYXVuY2hl
ci9QYWdlTG9hZFRlc3RDbGllbnQuY3BwOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1BhZ2VMb2Fk
VGVzdENsaWVudC5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5j
cHA6CisgICAgICAgICogV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmg6CisgICAgICAg
ICogV2luTGF1bmNoZXIvUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAqIFdpbkxh
dW5jaGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogV2luTGF1bmNoZXIvV2Vi
RG93bmxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgICogV2luTGF1bmNoZXIvV2ViRG93bmxvYWRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5jcHA6
CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0Lmg6CisgICAgICAgICog
V2luTGF1bmNoZXIvV2luTWFpbi5jcHA6CisgICAgICAgICogd2luL0RMTExhdW5jaGVyL0RMTExh
dW5jaGVyTWFpbi5jcHA6CisKIDIwMTUtMDgtMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzaG9ydGVuIGEgdGVzdCB0aGF0IHJ1bnMgdG9v
IGxvbmcgYW5kIHRpbWVzIG91dC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlRE
YXRhT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJU
RGF0YU9iamVjdC5jcHAJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EUlREYXRhT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQmFpZHUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTUzLDQwICs1MywzOCBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV0NFbnVtRm9ybWF0RXRjKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Rk9STUFURVRDPj4mIGZvcm1hdHMpOwogCiAgICAgLy8gSVVua25vd24gbWVtYmVycwot
ICAgIFNURE1FVEhPRChRdWVyeUludGVyZmFjZSkoUkVGSUlELCB2b2lkKiopOworICAgIFNURE1F
VEhPRChRdWVyeUludGVyZmFjZSkoX0luXyBSRUZJSUQsIF9DT01fT3V0cHRyXyB2b2lkKiopOwog
ICAgIFNURE1FVEhPRF8oVUxPTkcsIEFkZFJlZikoKTsKICAgICBTVERNRVRIT0RfKFVMT05HLCBS
ZWxlYXNlKSgpOwogCiAgICAgLy8gSUVudW1GT1JNQVRFVEMgbWVtYmVycwotICAgIFNURE1FVEhP
RChOZXh0KShVTE9ORywgTFBGT1JNQVRFVEMsIFVMT05HKik7CisgICAgU1RETUVUSE9EKE5leHQp
KFVMT05HIGNlbHQsIF9PdXRfd3JpdGVzX3RvXyhjZWx0LCAqcGNlbHRGZXRjaGVkKSBMUEZPUk1B
VEVUQywgX091dF9vcHRfIFVMT05HKiBwY2VsdEZldGNoZWQpOwogICAgIFNURE1FVEhPRChTa2lw
KShVTE9ORyk7CiAgICAgU1RETUVUSE9EKFJlc2V0KSgpOwotICAgIFNURE1FVEhPRChDbG9uZSko
SUVudW1GT1JNQVRFVEMqKik7CisgICAgU1RETUVUSE9EKENsb25lKShfQ09NX091dHB0cl9vcHRf
IElFbnVtRk9STUFURVRDKiopOwogCiBwcml2YXRlOgotICAgIGxvbmcgbV9yZWY7CiAgICAgVmVj
dG9yPEZPUk1BVEVUQz4gbV9mb3JtYXRzOwotICAgIHNpemVfdCBtX2N1cnJlbnQ7CisgICAgbG9u
ZyBtX3JlZiB7IDEgfTsKKyAgICBzaXplX3QgbV9jdXJyZW50IHsgMCB9OwogfTsKIAogV0NFbnVt
Rm9ybWF0RXRjOjpXQ0VudW1Gb3JtYXRFdGMoY29uc3QgVmVjdG9yPEZPUk1BVEVUQz4mIGZvcm1h
dHMpCi0gICAgOiBtX3JlZigxKQotICAgICwgbV9jdXJyZW50KDApCi0gICAgLCBtX2Zvcm1hdHMo
Zm9ybWF0cykKKyAgICA6IG1fZm9ybWF0cyhmb3JtYXRzKQogewogfQogCiBXQ0VudW1Gb3JtYXRF
dGM6OldDRW51bUZvcm1hdEV0Yyhjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEZPUk1BVEVU
Qz4+JiBmb3JtYXRzKQotICAgIDogbV9yZWYoMSkKLSAgICAsIG1fY3VycmVudCgwKQogewogICAg
IGZvciAoYXV0byYgZm9ybWF0IDogZm9ybWF0cykKICAgICAgICAgbV9mb3JtYXRzLmFwcGVuZCgq
Zm9ybWF0KTsKIH0KIAotU1RETUVUSE9ESU1QIFdDRW51bUZvcm1hdEV0Yzo6UXVlcnlJbnRlcmZh
Y2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitTVERNRVRIT0RJTVAgV0NFbnVtRm9y
bWF0RXRjOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVj
dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsK
ICAgICBpZiAoSXNFcXVhbElJRChyaWlkLCBJSURfSVVua25vd24pIHx8IElzRXF1YWxJSUQocmlp
ZCwgSUlEX0lFbnVtRk9STUFURVRDKSkgewogICAgICAgICAqcHB2T2JqZWN0ID0gdGhpczsKICAg
ICAgICAgQWRkUmVmKCk7CkBAIC0xMDksNyArMTA3LDcgQEAgU1RETUVUSE9ESU1QXyhVTE9ORykg
V0NFbnVtRm9ybWF0RXRjOjpSZQogICAgIHJldHVybiByZWZDb3VudDsKIH0KIAotU1RETUVUSE9E
SU1QIFdDRW51bUZvcm1hdEV0Yzo6TmV4dChVTE9ORyBjZWx0LCBMUEZPUk1BVEVUQyBscEZvcm1h
dEV0YywgVUxPTkcqIHBjZWx0RmV0Y2hlZCkKK1NURE1FVEhPRElNUCBXQ0VudW1Gb3JtYXRFdGM6
Ok5leHQoVUxPTkcgY2VsdCwgX091dF93cml0ZXNfdG9fKGNlbHQsICpwY2VsdEZldGNoZWQpIExQ
Rk9STUFURVRDIGxwRm9ybWF0RXRjLCBfT3V0X29wdF8gVUxPTkcqIHBjZWx0RmV0Y2hlZCkKIHsK
ICAgICBpZiAocGNlbHRGZXRjaGVkKQogICAgICAgICAqcGNlbHRGZXRjaGVkID0gMDsKQEAgLTE0
Niw3ICsxNDQsNyBAQCBTVERNRVRIT0RJTVAgV0NFbnVtRm9ybWF0RXRjOjpSZXNldCgpCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLVNURE1FVEhPRElNUCBXQ0VudW1Gb3JtYXRFdGM6OkNsb25lKElF
bnVtRk9STUFURVRDKiogcHBDbG9uZUVudW1Gb3JtYXRFdGMpCitTVERNRVRIT0RJTVAgV0NFbnVt
Rm9ybWF0RXRjOjpDbG9uZShfQ09NX091dHB0cl9vcHRfIElFbnVtRk9STUFURVRDKiogcHBDbG9u
ZUVudW1Gb3JtYXRFdGMpCiB7CiAgICAgaWYgKCFwcENsb25lRW51bUZvcm1hdEV0YykKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTE3MSwxMyArMTY5LDE0IEBAIEhSRVNVTFQgRFJURGF0
YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoRFIKIH0KIAogRFJURGF0YU9iamVjdDo6RFJURGF0YU9i
amVjdCgpCi0gICAgOiBtX3JlZigxKQogewogfQogCi1TVERNRVRIT0RJTVAgRFJURGF0YU9iamVj
dDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitTVERNRVRI
T0RJTVAgRFJURGF0YU9iamVjdDo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAg
aWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVj
dCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxJSUQocmlpZCwgSUlEX0lVbmtub3duKSB8fCBJ
c0VxdWFsSUlEKHJpaWQsIElJRF9JRGF0YU9iamVjdCkpCiAgICAgICAgICpwcHZPYmplY3QgPSB0
aGlzOwogCkBAIC0yMDEsMTEgKzIwMCwxMSBAQCBTVERNRVRIT0RJTVBfKFVMT05HKSBEUlREYXRh
T2JqZWN0OjpSZWxlCiAgICAgcmV0dXJuIHJlZkNvdW50OwogfQogCi1TVERNRVRIT0RJTVAgRFJU
RGF0YU9iamVjdDo6R2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXRldGNJbiwgU1RHTUVESVVNKiBw
bWVkaXVtKQorU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OkdldERhdGEoX0luXyBGT1JNQVRF
VEMqIHBmb3JtYXRldGNJbiwgX091dF8gU1RHTUVESVVNKiBwbWVkaXVtKQogeyAKICAgICBpZiAo
IXBmb3JtYXRldGNJbiB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAg
ICBwbWVkaXVtLT5oR2xvYmFsID0gMDsKKyAgICBwbWVkaXVtLT5oR2xvYmFsID0gbnVsbHB0cjsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mb3JtYXRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGlmIChwZm9ybWF0ZXRjSW4tPmxpbmRleCA9PSBtX2Zvcm1hdHNbaV0tPmxpbmRleCAm
JiBwZm9ybWF0ZXRjSW4tPmR3QXNwZWN0ID09IG1fZm9ybWF0c1tpXS0+ZHdBc3BlY3QgJiYgcGZv
cm1hdGV0Y0luLT5jZkZvcm1hdCA9PSBtX2Zvcm1hdHNbaV0tPmNmRm9ybWF0KSB7CkBAIC0yMTYs
MTIgKzIxNSwxMiBAQCBTVERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6R2V0RGF0YShGT1JNCiAg
ICAgcmV0dXJuIERWX0VfRk9STUFURVRDOwogfQogCi1TVERNRVRIT0RJTVAgRFJURGF0YU9iamVj
dDo6R2V0RGF0YUhlcmUoRk9STUFURVRDKiwgU1RHTUVESVVNKikKK1NURE1FVEhPRElNUCBEUlRE
YXRhT2JqZWN0OjpHZXREYXRhSGVyZShfSW5fIEZPUk1BVEVUQyosIF9Jbm91dF8gU1RHTUVESVVN
KikKIHsgCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotU1RETUVUSE9ESU1QIERSVERhdGFP
YmplY3Q6OlF1ZXJ5R2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXRldGMpCitTVERNRVRIT0RJTVAg
RFJURGF0YU9iamVjdDo6UXVlcnlHZXREYXRhKF9Jbl9vcHRfIEZPUk1BVEVUQyogcGZvcm1hdGV0
YykKIHsgCiAgICAgaWYgKCFwZm9ybWF0ZXRjKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpA
QCAtMjM4LDEyICsyMzcsMTQgQEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlF1ZXJ5R2V0
RGF0YQogICAgIHJldHVybiBEVl9FX1RZTUVEOwogfQogCi1TVERNRVRIT0RJTVAgRFJURGF0YU9i
amVjdDo6R2V0Q2Fub25pY2FsRm9ybWF0RXRjKEZPUk1BVEVUQyosIEZPUk1BVEVUQyopCitTVERN
RVRIT0RJTVAgRFJURGF0YU9iamVjdDo6R2V0Q2Fub25pY2FsRm9ybWF0RXRjKF9Jbl9vcHRfIEZP
Uk1BVEVUQyosIF9PdXRfIEZPUk1BVEVUQyogZm9ybWF0T3V0KQogeyAKKyAgICBpZiAoIWZvcm1h
dE91dCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICByZXR1cm4gREFUQV9TX1NBTUVG
T1JNQVRFVEM7CiB9CiAKLVNURE1FVEhPRElNUCBEUlREYXRhT2JqZWN0OjpTZXREYXRhKEZPUk1B
VEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVtLCBCT09MIGZSZWxlYXNlKQorU1RE
TUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMqIHBmb3JtYXRl
dGMsIF9Jbl8gU1RHTUVESVVNKiBwbWVkaXVtLCBCT09MIGZSZWxlYXNlKQogeyAKICAgICBpZiAo
IXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0y
OTYsMTggKzI5NywxOCBAQCB2b2lkIERSVERhdGFPYmplY3Q6OkNvcHlNZWRpdW0oU1RHTUVESVVN
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBwTWVkRGVzdC0+dHltZWQgPSBwTWVkU3JjLT50
eW1lZDsKLSAgICBwTWVkRGVzdC0+cFVua0ZvclJlbGVhc2UgPSAwOworICAgIHBNZWREZXN0LT5w
VW5rRm9yUmVsZWFzZSA9IG51bGxwdHI7CiAgICAgaWYgKHBNZWRTcmMtPnBVbmtGb3JSZWxlYXNl
KSB7CiAgICAgICAgIHBNZWREZXN0LT5wVW5rRm9yUmVsZWFzZSA9IHBNZWRTcmMtPnBVbmtGb3JS
ZWxlYXNlOwogICAgICAgICBwTWVkU3JjLT5wVW5rRm9yUmVsZWFzZS0+QWRkUmVmKCk7CiAgICAg
fQogfQotU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OkVudW1Gb3JtYXRFdGMoRFdPUkQgZHdE
aXJlY3Rpb24sIElFbnVtRk9STUFURVRDKiogcHBlbnVtRm9ybWF0RXRjKQorU1RETUVUSE9ESU1Q
IERSVERhdGFPYmplY3Q6OkVudW1Gb3JtYXRFdGMoRFdPUkQgZHdEaXJlY3Rpb24sIF9DT01fT3V0
cHRyX29wdF8gSUVudW1GT1JNQVRFVEMqKiBwcGVudW1Gb3JtYXRFdGMpCiB7IAogICAgIGlmICgh
cHBlbnVtRm9ybWF0RXRjKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnBwZW51
bUZvcm1hdEV0YyA9IDA7CisgICAgKnBwZW51bUZvcm1hdEV0YyA9IG51bGxwdHI7CiAgICAgc3dp
dGNoIChkd0RpcmVjdGlvbikgewogICAgIGNhc2UgREFUQURJUl9HRVQ6CiAgICAgICAgICpwcGVu
dW1Gb3JtYXRFdGMgPSBuZXcgV0NFbnVtRm9ybWF0RXRjKG1fZm9ybWF0cyk7CkBAIC0zMjQsNyAr
MzI1LDcgQEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OkVudW1Gb3JtYXRFdAogICAgIHJl
dHVybiBTX09LOwogfQogCi1TVERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6REFkdmlzZShGT1JN
QVRFVEMqLCBEV09SRCwgSUFkdmlzZVNpbmsqLCBEV09SRCopCitTVERNRVRIT0RJTVAgRFJURGF0
YU9iamVjdDo6REFkdmlzZShfSW5fIEZPUk1BVEVUQyosIERXT1JELCBfSW5vdXRfIElBZHZpc2VT
aW5rKiwgX091dF8gRFdPUkQqKQogeyAKICAgICByZXR1cm4gT0xFX0VfQURWSVNFTk9UU1VQUE9S
VEVEOwogfQpAQCAtMzM0LDggKzMzNSwxMSBAQCBTVERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6
RFVuYWR2aXNlKERXCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBEUlREYXRhT2JqZWN0OjpFbnVtREFkdmlzZShJRW51bVNUQVREQVRBKiopCitI
UkVTVUxUIERSVERhdGFPYmplY3Q6OkVudW1EQWR2aXNlKF9DT01fT3V0cHRyX29wdF8gSUVudW1T
VEFUREFUQSoqIGRhZHZpc2UpCiB7CisgICAgaWYgKCFkYWR2aXNlKQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgICpkYWR2aXNlID0gbnVsbHB0cjsKICAgICByZXR1cm4gT0xFX0VfQURW
SVNFTk9UU1VQUE9SVEVEOwogfQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJU
RGF0YU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlRE
YXRhT2JqZWN0LmgJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EUlREYXRhT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEJhaWR1IEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00OSwyNyArNDksMjcgQEAgcHVibGljOgog
ICAgIHZvaWQgQ29weU1lZGl1bShTVEdNRURJVU0qIHBNZWREZXN0LCBTVEdNRURJVU0qIHBNZWRT
cmMsIEZPUk1BVEVUQyogcEZtdFNyYyk7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9p
ZCoqIHBwdk9iamVjdCk7ICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOyAgICAgICAgCiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBBZGRSZWYoKTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uo
KTsKIAogICAgIC8vIElEYXRhT2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIEdldERhdGEoRk9STUFURVRDKiBwZm9ybWF0SW4sIFNUR01FRElVTSogcG1lZGl1bSk7
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEdldERhdGFIZXJlKEZPUk1B
VEVUQyogcGZvcm1hdCwgU1RHTUVESVVNKiBwbWVkaXVtKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlHZXREYXRhKEZPUk1BVEVUQyogcGZvcm1hdCk7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEdldENhbm9uaWNhbEZvcm1hdEV0YyhG
T1JNQVRFVEMqIHBmb3JtYXRlY3RJbiwgRk9STUFURVRDKiBwZm9ybWF0T3V0KTsKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgU2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXQs
IFNUR01FRElVTSpwbWVkaXVtLCBCT09MIHJlbGVhc2UpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBFbnVtRm9ybWF0RXRjKERXT1JEIGR3RGlyZWN0aW9uLCBJRW51bUZP
Uk1BVEVUQyoqIHBwZW51bUZvcm1hdEV0Yyk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERBZHZpc2UoRk9STUFURVRDKiwgRFdPUkQsIElBZHZpc2VTaW5rKiwgRFdPUkQq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0RGF0YShfSW5fIEZP
Uk1BVEVUQyosIF9PdXRfIFNUR01FRElVTSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBHZXREYXRhSGVyZShfSW5fIEZPUk1BVEVUQyosIF9Jbm91dF8gU1RHTUVESVVN
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5R2V0RGF0YShf
SW5fb3B0XyBGT1JNQVRFVEMqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgR2V0Q2Fub25pY2FsRm9ybWF0RXRjKF9Jbl9vcHRfIEZPUk1BVEVUQyosIF9PdXRfIEZPUk1B
VEVUQyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBTZXREYXRhKF9J
bl8gRk9STUFURVRDKiwgX0luXyBTVEdNRURJVU0qLCBCT09MIHJlbGVhc2UpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBFbnVtRm9ybWF0RXRjKERXT1JEIGR3RGlyZWN0
aW9uLCBfQ09NX091dHB0cl9vcHRfIElFbnVtRk9STUFURVRDKiopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEQWR2aXNlKF9Jbl8gRk9STUFURVRDKiwgRFdPUkQsIF9J
bm91dF8gSUFkdmlzZVNpbmsqLCBfT3V0XyBEV09SRCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBEVW5hZHZpc2UoRFdPUkQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBFbnVtREFkdmlzZShJRW51bVNUQVREQVRBKiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBFbnVtREFkdmlzZShfQ09NX091dHB0cl9vcHRf
IElFbnVtU1RBVERBVEEqKik7CiAKICAgICB2b2lkIGNsZWFyRGF0YShDTElQRk9STUFUKTsKICAg
ICAKICAgICBzdGF0aWMgSFJFU1VMVCBjcmVhdGVJbnN0YW5jZShEUlREYXRhT2JqZWN0KiopOwog
cHJpdmF0ZToKICAgICBEUlREYXRhT2JqZWN0KCk7Ci0gICAgbG9uZyBtX3JlZjsKKyAgICBsb25n
IG1fcmVmIHsgMSB9OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rk9STUFURVRDPj4gbV9m
b3JtYXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1E
ZWxldGVyPj4gbV9tZWRpdW07CiB9OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RS
VERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAkocmV2
aXNpb24gMTg4Njk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3Rp
ZmljYXRpb25QcmVzZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDAsMTEgKzQwLDE0IEBA
CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgogCiBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVy
OjpEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKLSAgICA6IG1fcmVmQ291bnQoMSkg
e30gCit7Cit9IAogCi1IUkVTVUxUIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OlF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBEUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCBy
aWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0g
MDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
cHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtu
b3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PERSVERlc2t0b3BOb3RpZmlj
YXRpb25QcmVzZW50ZXIqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJ
SURfSVdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUpKQpAQCAtNzAsNyArNzMsNyBAQCBV
TE9ORyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpSCiAgICAgcmV0dXJuIG5ld1Jl
ZjsKIH0KIAotSFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaG93RGVz
a3RvcE5vdGlmaWNhdGlvbihJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQor
SFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpzaG93RGVza3RvcE5vdGlm
aWNhdGlvbihfSW5fb3B0XyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQog
ewogICAgIF9ic3RyX3QgdGl0bGUsIHRleHQsIHVybDsKICAgICBCT09MIGh0bWw7CkBAIC05Miw3
ICs5NSw3IEBAIEhSRVNVTFQgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjoKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVy
OjpjYW5jZWxEZXNrdG9wTm90aWZpY2F0aW9uKElXZWJEZXNrdG9wTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24pCitIUkVTVUxUIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNhbmNl
bERlc2t0b3BOb3RpZmljYXRpb24oX0luX29wdF8gSVdlYkRlc2t0b3BOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKIHsKICAgICBfYnN0cl90IGlkZW50aWZpZXI7CiAgICAgQk9PTCBodG1sOwpA
QCAtMTA4LDE1ICsxMTEsMjAgQEAgSFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2Vu
dGVyOgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIERSVERlc2t0b3BOb3RpZmljYXRp
b25QcmVzZW50ZXI6Om5vdGlmaWNhdGlvbkRlc3Ryb3llZChJV2ViRGVza3RvcE5vdGlmaWNhdGlv
biogLypub3RpZmljYXRpb24qLykKK0hSRVNVTFQgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNl
bnRlcjo6bm90aWZpY2F0aW9uRGVzdHJveWVkKF9Jbl9vcHRfIElXZWJEZXNrdG9wTm90aWZpY2F0
aW9uKiAvKm5vdGlmaWNhdGlvbiovKQogewogICAgIC8vIFNpbmNlIGluIHRoZXNlIHRlc3RzIGV2
ZW50cyBoYXBwZW4gaW1tZWRpYXRlbHksIHdlIGRvbid0IGhvbGQgb24gdG8KICAgICAvLyBOb3Rp
ZmljYXRpb24gcG9pbnRlcnMuICBTbyB0aGVyZSdzIG5vIGNsZWFudXAgdG8gZG8uCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
Y2hlY2tOb3RpZmljYXRpb25QZXJtaXNzaW9uKEJTVFIgLypvcmlnaW4qLywgaW50KiAvKnJlc3Vs
dCovKQorSFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpjaGVja05vdGlm
aWNhdGlvblBlcm1pc3Npb24oX0luXyBCU1RSIC8qb3JpZ2luKi8sIF9PdXRfIGludCogcmVzdWx0
KQogeworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAg
KnJlc3VsdCA9IDA7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQogICAgIEpTU3RyaW5nUmVmIGpzT3JpZ2luID0gSlNTdHJpbmdDcmVh
dGVXaXRoQlNUUihvcmlnaW4pOwogICAgIGJvb2wgYWxsb3dlZCA9IDo6Z1Rlc3RSdW5uZXItPmNo
ZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oanNPcmlnaW4pOwpAQCAtMTMxLDcgKzEz
OSw3IEBAIEhSRVNVTFQgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjoKICAgICByZXR1
cm4gU19PSzsKIH0KIAotSFJFU1VMVCBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOjpy
ZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbihCU1RSIG9yaWdpbikKK0hSRVNVTFQgRFJURGVz
a3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcjo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24o
X0luXyBCU1RSIG9yaWdpbikKIHsKICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBF
Uk1JU1NJT04gUkVRVUVTVEVEOiAlU1xuIiwgb3JpZ2luID8gb3JpZ2luIDogTCIiKTsKICAgICBy
ZXR1cm4gU19PSzsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90
aWZpY2F0aW9uUHJlc2VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaAkocmV2aXNpb24gMTg4Njk4KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDA3LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDI5ICszNywxOSBAQCBw
dWJsaWM6CiAgICAgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogCiAgICAgLy8g
SVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRk
UmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAK
ICAgICAvLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG93RGVza3RvcE5vdGlmaWNhdGlvbigKLSAgICAgICAg
LyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5jZWxEZXNrdG9wTm90aWZpY2F0
aW9uKAotICAgICAgICAvKiBbaW5dICovIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vdGlmaWNh
dGlvbkRlc3Ryb3llZCgKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRGVza3RvcE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjaGVja05vdGlmaWNhdGlvblBlcm1pc3Npb24oCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBv
cmlnaW4sIAotICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIGludCogcmVzdWx0KTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbigKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG9yaWdpbik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3dEZXNrdG9wTm90aWZpY2F0aW9uKF9Jbl9vcHRf
IElXZWJEZXNrdG9wTm90aWZpY2F0aW9uKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNhbmNlbERlc2t0b3BOb3RpZmljYXRpb24oX0luX29wdF8gSVdlYkRlc2t0b3BO
b3RpZmljYXRpb24qKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm90
aWZpY2F0aW9uRGVzdHJveWVkKF9Jbl9vcHRfIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoZWNrTm90aWZpY2F0aW9uUGVy
bWlzc2lvbihfSW5fIEJTVFIgb3JpZ2luLCBfT3V0XyBpbnQqIHJlc3VsdCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
KF9Jbl8gQlNUUiBvcmlnaW4pOwogCiBwcml2YXRlOgotICAgIFVMT05HIG1fcmVmQ291bnQ7Cisg
ICAgVUxPTkcgbV9yZWZDb3VudCB7IDEgfTsKIH07CiAKICNlbmRpZgpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmNwcAkocmV2aXNpb24gMTg4Njk4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsOCArMjgsNiBAQAogI2luY2x1
ZGUgIkRSVERyb3BTb3VyY2UuaCIKIAogRFJURHJvcFNvdXJjZTo6RFJURHJvcFNvdXJjZSgpCi0g
ICAgOiBtX3JlZigxKQotICAgICwgbV9kcm9wcGVkKGZhbHNlKQogewogfQogCkBAIC0zNiw5ICsz
NSwxMSBAQCBEUlREcm9wU291cmNlOjp+RFJURHJvcFNvdXJjZSgpCiB7CiB9CiAKLVNURE1FVEhP
RElNUCBEUlREcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBw
dk9iamVjdCkKK1NURE1FVEhPRElNUCBEUlREcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2
T2JqZWN0ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbElJRChyaWlkLCBJ
SURfSVVua25vd24pIHx8IElzRXF1YWxJSUQocmlpZCwgSUlEX0lEcm9wU291cmNlKSkgewogICAg
ICAgICAqcHB2T2JqZWN0ID0gdGhpczsKICAgICAgICAgQWRkUmVmKCk7CkBAIC03MCw3ICs3MSw3
IEBAIEhSRVNVTFQgRFJURHJvcFNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoSUQKICAgICByZXR1cm4g
U19PSzsKIH0KIAotU1RETUVUSE9ESU1QIERSVERyb3BTb3VyY2U6OlF1ZXJ5Q29udGludWVEcmFn
KEJPT0wgZkVzY2FwZVByZXNzZWQsIERXT1JEIGdyZktleVN0YXRlKQorU1RETUVUSE9ESU1QIERS
VERyb3BTb3VyY2U6OlF1ZXJ5Q29udGludWVEcmFnKF9Jbl8gQk9PTCBmRXNjYXBlUHJlc3NlZCwg
X0luXyBEV09SRCBncmZLZXlTdGF0ZSkKIHsKICAgICBpZiAoZkVzY2FwZVByZXNzZWQgfHwgIShn
cmZLZXlTdGF0ZSAmIChNS19MQlVUVE9OIHwgTUtfUkJVVFRPTikpKSB7CiAgICAgICAgIG1fZHJv
cHBlZCA9ICFmRXNjYXBlUHJlc3NlZDsKQEAgLTgwLDcgKzgxLDcgQEAgU1RETUVUSE9ESU1QIERS
VERyb3BTb3VyY2U6OlF1ZXJ5Q29udGludQogICAgIHJldHVybiBTX09LOwogfQogCi1TVERNRVRI
T0RJTVAgRFJURHJvcFNvdXJjZTo6R2l2ZUZlZWRiYWNrKERXT1JEIGR3RWZmZWN0KQorU1RETUVU
SE9ESU1QIERSVERyb3BTb3VyY2U6OkdpdmVGZWVkYmFjayhfSW5fIERXT1JEIGR3RWZmZWN0KQog
ewogICAgIHJldHVybiBEUkFHRFJPUF9TX1VTRURFRkFVTFRDVVJTT1JTOwogfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oCShyZXZpc2lvbiAxODg2OTgpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMTggKzMyLDE4IEBACiAKIGNs
YXNzIERSVERyb3BTb3VyY2UgOiBwdWJsaWMgSURyb3BTb3VyY2UgewogcHVibGljOgotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlp
ZCwgdm9pZCoqIHBwdk9iamVjdCk7ICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpOyAgICAgICAgCiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBBZGRSZWYoKTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJl
bGVhc2UoKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlDb250
aW51ZURyYWcoQk9PTCBmRXNjYXBlUHJlc3NlZCwgRFdPUkQgZ3JmS2V5U3RhdGUpOwotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBHaXZlRmVlZGJhY2soRFdPUkQgZHdFZmZl
Y3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUNvbnRpbnVl
RHJhZyhfSW5fIEJPT0wgZkVzY2FwZVByZXNzZWQsIF9Jbl8gRFdPUkQgZ3JmS2V5U3RhdGUpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBHaXZlRmVlZGJhY2soX0luXyBE
V09SRCBkd0VmZmVjdCk7CiAKICAgICBzdGF0aWMgSFJFU1VMVCBjcmVhdGVJbnN0YW5jZShJRHJv
cFNvdXJjZSoqIHJlc3VsdCk7CiBwcml2YXRlOgogICAgIERSVERyb3BTb3VyY2UoKTsKICAgICB+
RFJURHJvcFNvdXJjZSgpOwotICAgIGxvbmcgbV9yZWY7Ci0gICAgYm9vbCBtX2Ryb3BwZWQ7Cisg
ICAgbG9uZyBtX3JlZiB7IDEgfTsKKyAgICBib29sIG1fZHJvcHBlZCB7IGZhbHNlIH07CiB9Owog
CiAjZW5kaWYgLy8gRFJURHJvcFNvdXJjZV9oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Mzks
NyArMTQzOSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAg
cHJlcGFyZUNvbnNpc3RlbnRUZXN0aW5nRW52aXJvbm1lbnQoc3RhbmRhcmRQcmVmZXJlbmNlcy5n
ZXQoKSwgc3RhbmRhcmRQcmVmZXJlbmNlc1ByaXZhdGUuZ2V0KCkpOwogCiAgICAgaWYgKHByaW50
U3VwcG9ydGVkRmVhdHVyZXMpIHsKLSAgICAgICAgQk9PTCBhY2NlbGVyYXRlZENvbXBvc2l0aW5n
QXZhaWxhYmxlOworICAgICAgICBCT09MIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUg
PSBGQUxTRTsKICAgICAgICAgc3RhbmRhcmRQcmVmZXJlbmNlcy0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoJmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUpOwogCiAjaWYgRU5B
QkxFKDNEX1RSQU5TRk9STVMpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRpdGlu
Z0RlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRp
dGluZ0RlbGVnYXRlLmNwcAkocmV2aXNpb24gMTg4Njk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE1ICs0Miwx
NSBAQAogdXNpbmcgc3RkOjp3c3RyaW5nOwogCiBFZGl0aW5nRGVsZWdhdGU6OkVkaXRpbmdEZWxl
Z2F0ZSgpCi0gICAgOiBtX3JlZkNvdW50KDEpCi0gICAgLCBtX2FjY2VwdHNFZGl0aW5nKHRydWUp
CiB7CiB9CiAKIC8vIElVbmtub3duCi1IUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6UXVlcnlJbnRl
cmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIEVkaXRpbmdEZWxl
Z2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3Qp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAg
ICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxJV2ViRWRpdGluZ0RlbGVnYXRlMio+KHRoaXMpOwogICAgIGVsc2Ug
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViRWRpdGluZ0RlbGVnYXRlKSkKQEAgLTY2LDEy
ICs2NiwxMiBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIEVkaXRpbmdEZWxlZ2F0ZTo6QWRkUmVmKHZvaWQpCitV
TE9ORyBFZGl0aW5nRGVsZWdhdGU6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3Vu
dDsKIH0KIAotVUxPTkcgRWRpdGluZ0RlbGVnYXRlOjpSZWxlYXNlKHZvaWQpCitVTE9ORyBFZGl0
aW5nRGVsZWdhdGU6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3Vu
dDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgc3RkOjpzdHJp
bmcgZHVtcChJRE9NUmFuZ2UqIHJhbmdlCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotSFJFU1VM
VCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2UoSVdlYlZpZXcq
IC8qd2ViVmlldyovLCBJRE9NUmFuZ2UqIHJhbmdlLCBCT09MKiByZXN1bHQpCitIUkVTVUxUIEVk
aXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZShfSW5fb3B0XyBJV2Vi
VmlldyosIF9Jbl9vcHRfIElET01SYW5nZSogcmFuZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsK
ICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEz
OCw3ICsxMzgsNyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQmVnaW5FZGl0CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRFbmRF
ZGl0aW5nSW5ET01SYW5nZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIElET01SYW5nZSogcmFuZ2Us
IEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRFbmRFZGl0aW5n
SW5ET01SYW5nZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElET01SYW5nZSogcmFuZ2Us
IF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1MywxNCArMTUzLDE0IEBAIEhSRVNVTFQgRWRpdGluZ0Rl
bGVnYXRlOjpzaG91bGRFbmRFZGl0aW4KIH0KIAogLy8gSVdlYkVkaXRpbmdEZWxlZ2F0ZQotSFJF
U1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2VydE5vZGUoSVdlYlZpZXcqIHdlYlZpZXcs
IElET01Ob2RlKiBub2RlLCBJRE9NUmFuZ2UqIHJhbmdlLCBXZWJWaWV3SW5zZXJ0QWN0aW9uIGFj
dGlvbikKK0hSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRJbnNlcnROb2RlKF9Jbl9vcHRf
IElXZWJWaWV3KiB3ZWJWaWV3LCBfSW5fb3B0XyBJRE9NTm9kZSogbm9kZSwgX0luX29wdF8gSURP
TVJhbmdlKiByYW5nZSwgV2ViVmlld0luc2VydEFjdGlvbiBhY3Rpb24pCiB7CiAgICAgQk9PTCBp
Z25vcmU7CiAgICAgcmV0dXJuIHNob3VsZEluc2VydE5vZGUod2ViVmlldywgbm9kZSwgcmFuZ2Us
IGFjdGlvbiwgJmlnbm9yZSk7CiB9CiAKIC8vIElXZWJFZGl0aW5nRGVsZWdhdGUyCi1IUkVTVUxU
IEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkSW5zZXJ0Tm9kZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8s
IElET01Ob2RlKiBub2RlLCBJRE9NUmFuZ2UqIHJhbmdlLCBXZWJWaWV3SW5zZXJ0QWN0aW9uIGFj
dGlvbiwgQk9PTCogcmVzdWx0KQorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2Vy
dE5vZGUoX0luX29wdF8gSVdlYlZpZXcqIC8qd2ViVmlldyovLCBfSW5fb3B0XyBJRE9NTm9kZSog
bm9kZSwgX0luX29wdF8gSURPTVJhbmdlKiByYW5nZSwgV2ViVmlld0luc2VydEFjdGlvbiBhY3Rp
b24sIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW5zZXJ0
QWN0aW9uU3RyaW5nW10gPSB7CiAgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uVHlwZWQiLApA
QCAtMTY4LDYgKzE2OCw5IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRJbnNlcnRO
b2QKICAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiwKICAgICB9OwogCisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICBpZiAoOjpnVGVz
dFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKICAgICAgICAgcHJpbnRm
KCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiVzIHJlcGxhY2luZ0RPTVJhbmdl
OiVzIGdpdmVuQWN0aW9uOiVzXG4iLCBkdW1wUGF0aChub2RlKS5jX3N0cigpLCBkdW1wKHJhbmdl
KS5jX3N0cigpLCBpbnNlcnRBY3Rpb25TdHJpbmdbYWN0aW9uXSk7CiAKQEAgLTE3NSw3ICsxNzgs
NyBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkSW5zZXJ0Tm9kCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLUhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRJbnNlcnRUZXh0KElX
ZWJWaWV3KiAvKndlYlZpZXcqLywgQlNUUiB0ZXh0LCBJRE9NUmFuZ2UqIHJhbmdlLCBXZWJWaWV3
SW5zZXJ0QWN0aW9uIGFjdGlvbiwgQk9PTCogcmVzdWx0KQorSFJFU1VMVCBFZGl0aW5nRGVsZWdh
dGU6OnNob3VsZEluc2VydFRleHQoX0luX29wdF8gSVdlYlZpZXcqIC8qd2ViVmlldyovLCBfSW5f
IEJTVFIgdGV4dCwgX0luX29wdF8gSURPTVJhbmdlKiByYW5nZSwgV2ViVmlld0luc2VydEFjdGlv
biBhY3Rpb24sIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5Nyw3ICsyMDAsNyBAQCBIUkVTVUxUIEVk
aXRpbmdEZWxlZ2F0ZTo6c2hvdWxkSW5zZXJ0VGV4CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhS
RVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGREZWxldGVET01SYW5nZShJV2ViVmlldyogLyp3
ZWJWaWV3Ki8sIElET01SYW5nZSogcmFuZ2UsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgRWRpdGlu
Z0RlbGVnYXRlOjpzaG91bGREZWxldGVET01SYW5nZShfSW5fb3B0XyBJV2ViVmlldyogLyp3ZWJW
aWV3Ki8sIF9Jbl9vcHRfIElET01SYW5nZSogcmFuZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsK
ICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIx
MSw4ICsyMTQsOCBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkRGVsZXRlRE9NCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlKElXZWJWaWV3KiAvKndlYlZpZXcqLywgSURPTVJhbmdlKiBjdXJy
ZW50UmFuZ2UsIElET01SYW5nZSogcHJvcG9zZWRSYW5nZSwKLSAgICBXZWJTZWxlY3Rpb25BZmZp
bml0eSBzZWxlY3Rpb25BZmZpbml0eSwgQk9PTCBzdGlsbFNlbGVjdGluZywgQk9PTCogcmVzdWx0
KQorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2Uo
X0luX29wdF8gSVdlYlZpZXcqIC8qd2ViVmlldyovLCBfSW5fb3B0XyBJRE9NUmFuZ2UqIGN1cnJl
bnRSYW5nZSwgX0luX29wdF8gSURPTVJhbmdlKiBwcm9wb3NlZFJhbmdlLAorICAgIFdlYlNlbGVj
dGlvbkFmZmluaXR5IHNlbGVjdGlvbkFmZmluaXR5LCBCT09MIHN0aWxsU2VsZWN0aW5nLCBfT3V0
XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0yMzUsNyArMjM4LDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6
OnNob3VsZENoYW5nZVNlbAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIEVkaXRpbmdE
ZWxlZ2F0ZTo6c2hvdWxkQXBwbHlTdHlsZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIElET01DU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgSURPTVJhbmdlKiByYW5nZSwgQk9PTCogcmVzdWx0KQor
SFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEFwcGx5U3R5bGUoX0luX29wdF8gSVdlYlZp
ZXcqIC8qd2ViVmlldyovLCBfSW5fb3B0XyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUs
IF9Jbl9vcHRfIElET01SYW5nZSogcmFuZ2UsIF9PdXRfIEJPT0wqIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0OSw3ICsy
NTIsOCBAQCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQXBwbHlTdHlsCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRDaGFuZ2VUeXBp
bmdTdHlsZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiBj
dXJyZW50U3R5bGUsIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiBwcm9wb3NlZFN0eWxlLCBCT09M
KiByZXN1bHQpCitIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQ2hhbmdlVHlwaW5nU3R5
bGUoX0luX29wdF8gSVdlYlZpZXcqIC8qd2ViVmlldyovLCBfSW5fb3B0XyBJRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogY3VycmVudFN0eWxlLAorICAgIF9Jbl9vcHRfIElET01DU1NTdHlsZURlY2xh
cmF0aW9uKiBwcm9wb3NlZFN0eWxlLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNjMsNyArMjY3LDcg
QEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZENoYW5nZVR5cAogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6ZG9QbGF0Zm9ybUNvbW1hbmQoSVdl
YlZpZXcqIC8qd2ViVmlldyovLCBCU1RSIGNvbW1hbmQsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQg
RWRpdGluZ0RlbGVnYXRlOjpkb1BsYXRmb3JtQ29tbWFuZChfSW5fb3B0XyBJV2ViVmlldyogLyp3
ZWJWaWV3Ki8sIF9Jbl8gQlNUUiBjb21tYW5kLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAg
aWYgKCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNzksOCAr
MjgzLDExIEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpkb1BsYXRmb3JtQ29tbWEKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRCZWdp
bkVkaXRpbmcoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQorSFJFU1VMVCBFZGl0aW5n
RGVsZWdhdGU6OndlYlZpZXdEaWRCZWdpbkVkaXRpbmcoX0luX29wdF8gSVdlYk5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQogeworICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICByZXR1
cm4gU19PSzsKKwogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygp
ICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFtZTsKICAgICAgICAgbm90aWZpY2F0aW9u
LT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7CkBAIC0yODksOCArMjk2LDExIEBAIEhSRVNVTFQgRWRp
dGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQmVnaW4KICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZ2UoSVdlYk5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZ2Uo
X0luX29wdF8gSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogeworICAgIGlmICghbm90
aWZpY2F0aW9uKQorICAgICAgICByZXR1cm4gU19PSzsKKwogICAgIGlmICg6OmdUZXN0UnVubmVy
LT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFt
ZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7CkBAIC0yOTks
OCArMzA5LDExIEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmcKICAg
ICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRF
bmRFZGl0aW5nKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK0hSRVNVTFQgRWRpdGlu
Z0RlbGVnYXRlOjp3ZWJWaWV3RGlkRW5kRWRpdGluZyhfSW5fb3B0XyBJV2ViTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCiB7CisgICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgICAgIHJldHVy
biBTX09LOworCiAgICAgaWYgKDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkg
JiYgIWRvbmUpIHsKICAgICAgICAgX2JzdHJfdCBuYW1lOwogICAgICAgICBub3RpZmljYXRpb24t
Pm5hbWUoJm5hbWUuR2V0QlNUUigpKTsKQEAgLTMwOSw4ICszMjIsMTEgQEAgSFJFU1VMVCBFZGl0
aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRFbmRFZAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZENoYW5nZVR5cGluZ1N0eWxlKElXZWJOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK0hSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3
RGlkQ2hhbmdlVHlwaW5nU3R5bGUoX0luX29wdF8gSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQogeworICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm4gU19PSzsKKwog
ICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7
CiAgICAgICAgIF9ic3RyX3QgbmFtZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1l
LkdldEJTVFIoKSk7CkBAIC0zMTksOCArMzM1LDExIEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRl
Ojp3ZWJWaWV3RGlkQ2hhbmcKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBFZGl0aW5n
RGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb24oSVdlYk5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uKQorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb24oX0luX29wdF8gSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogeworICAgIGlm
ICghbm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm4gU19PSzsKKwogICAgIGlmICg6OmdUZXN0
UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3Ry
X3QgbmFtZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7CkBA
IC0zMjksNiArMzQ4LDE0IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hh
bmcKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnVuZG9N
YW5hZ2VyRm9yV2ViVmlldyhfSW5fb3B0XyBJV2ViVmlldyosIF9DT01fT3V0cHRyX29wdF8gSVdl
YlVuZG9NYW5hZ2VyKiogdW5kb01hbmFnZXIpCit7CisgICAgaWYgKCF1bmRvTWFuYWdlcikKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqdW5kb01hbmFnZXIgPSBudWxscHRyOworICAg
IHJldHVybiBFX05PVElNUEw7Cit9CisKIHN0YXRpYyBpbnQgaW5kZXhPZkZpcnN0V29yZENoYXJh
Y3Rlcihjb25zdCBUQ0hBUiogdGV4dCkKIHsKICAgICBjb25zdCBUQ0hBUiogY3Vyc29yID0gdGV4
dDsKQEAgLTM0NSwxMiArMzcyLDggQEAgc3RhdGljIGludCB3b3JkTGVuZ3RoKGNvbnN0IFRDSEFS
KiB0ZXh0KQogICAgIHJldHVybiBjdXJzb3IgLSB0ZXh0OwogfTsKIAotSFJFU1VMVCBFZGl0aW5n
RGVsZWdhdGU6OmNoZWNrU3BlbGxpbmdPZlN0cmluZygKLSAgICAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcqIHZpZXcsCi0gICAgICAgICAgICAvKiBbaW5dICovIExQQ1RTVFIgdGV4dCwKLSAg
ICAgICAgICAgIC8qIFtpbl0gKi8gaW50IGxlbmd0aCwKLSAgICAgICAgICAgIC8qIFtvdXRdICov
IGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwKLSAgICAgICAgICAgIC8qIFtvdXRdICovIGludCog
bWlzc3BlbGxpbmdMZW5ndGgpCitIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6Y2hlY2tTcGVsbGlu
Z09mU3RyaW5nKF9Jbl9vcHRfIElXZWJWaWV3KiB2aWV3LCBfSW5fIExQQ1RTVFIgdGV4dCwKKyAg
ICBpbnQgbGVuZ3RoLCBfT3V0XyBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIF9PdXRfIGludCog
bWlzc3BlbGxpbmdMZW5ndGgpCiB7CiAgICAgc3RhdGljIGNvbnN0IFRDSEFSKiBtaXNzcGVsbGVk
V29yZHNbXSA9IHsKICAgICAgICAgLy8gVGhlc2Ugd29yZHMgYXJlIGtub3duIG1pc3NwZWxsZWQg
d29yZHMgaW4gd2Via2l0IHRlc3RzLgpAQCAtMzgyLDEwICs0MDUsMTcgQEAgSFJFU1VMVCBFZGl0
aW5nRGVsZWdhdGU6OmNoZWNrU3BlbGxpbmdPZgogICAgICAgICAwLAogICAgIH07CiAKKyAgICBp
ZiAoIW1pc3NwZWxsaW5nTG9jYXRpb24gfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOworCisgICAgKm1pc3NwZWxsaW5nTG9jYXRpb24gPSAwOworICAgICpt
aXNzcGVsbGluZ0xlbmd0aCA9IDA7CisKICAgICB3c3RyaW5nIHRleHRTdHJpbmcodGV4dCwgbGVu
Z3RoKTsKICAgICBpbnQgd29yZFN0YXJ0ID0gaW5kZXhPZkZpcnN0V29yZENoYXJhY3Rlcih0ZXh0
U3RyaW5nLmNfc3RyKCkpOwogICAgIGlmICgtMSA9PSB3b3JkU3RhcnQpCiAgICAgICAgIHJldHVy
biBTX09LOworCiAgICAgd3N0cmluZyB3b3JkID0gdGV4dFN0cmluZy5zdWJzdHIod29yZFN0YXJ0
LCB3b3JkTGVuZ3RoKHRleHRTdHJpbmcuY19zdHIoKSArIHdvcmRTdGFydCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBtaXNzcGVsbGVkV29yZHNbaV07ICsraSkgewogICAgICAgICBpZiAod29y
ZCA9PSBtaXNzcGVsbGVkV29yZHNbaV0pIHsKQEAgLTM5OCw3ICs0MjgsMjUgQEAgSFJFU1VMVCBF
ZGl0aW5nRGVsZWdhdGU6OmNoZWNrU3BlbGxpbmdPZgogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6b25Ob3RpZnkoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uKQorSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OmNoZWNrR3JhbW1hck9mU3RyaW5nKF9J
bl9vcHRfIElXZWJWaWV3KiwgX0luXyBMUENUU1RSIHRleHQsIGludCBsZW5ndGgsIF9DT01fT3V0
cHRyX29wdF8gSUVudW1XZWJHcmFtbWFyRGV0YWlscyoqIGRldGFpbHMsCisgICAgX091dF8gaW50
KiBiYWRHcmFtbWFyTG9jYXRpb24sIF9PdXRfIGludCogYmFkR3JhbW1hckxlbmd0aCkKK3sKKyAg
ICBpZiAoIWRldGFpbHMpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmRldGFpbHMg
PSBudWxscHRyOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgRWRpdGluZ0Rl
bGVnYXRlOjpndWVzc2VzRm9yV29yZChfSW5fIEJTVFIgd29yZCwgX0NPTV9PdXRwdHJfb3B0XyBJ
RW51bVNwZWxsaW5nR3Vlc3NlcyoqIGd1ZXNzZXMpCit7CisgICAgaWYgKCFndWVzc2VzKQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpndWVzc2VzID0gbnVsbHB0cjsKKyAgICByZXR1
cm4gRV9OT1RJTVBMOworfQorCisKK0hSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpvbk5vdGlmeShf
SW5fb3B0XyBJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7CiAgICAgX2JzdHJfdCBu
b3RpZmljYXRpb25OYW1lOwogICAgIEhSRVNVTFQgaHIgPSBub3RpZmljYXRpb24tPm5hbWUoJm5v
dGlmaWNhdGlvbk5hbWUuR2V0QlNUUigpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9FZGl0aW5nRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRWRpdGluZ0RlbGVnYXRlLmgJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNDEgKzM4
LDU3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjY2VwdHNFZGl0aW5nKGJvb2wgYikgeyBtX2Fj
Y2VwdHNFZGl0aW5nID0gYjsgfQogCiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBw
cHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZv
aWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViRWRpdGluZ0RlbGVnYXRl
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEJlZ2luRWRpdGlu
Z0luRE9NUmFuZ2UoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAg
ICAgICAvKiBbaW5dICovIElET01SYW5nZSAqcmFuZ2UsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2UoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElET01SYW5nZSAqcmFuZ2Us
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKLSAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkSW5zZXJ0Tm9kZShJV2ViVmll
dyosIElET01Ob2RlKiwgSURPTVJhbmdlKiwgV2ViVmlld0luc2VydEFjdGlvbik7Ci0gICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEluc2VydFRleHQoIAot
ICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgdGV4dCwKLSAgICAgICAgLyogW2luXSAqLyBJRE9NUmFuZ2UgKnJhbmdlLAotICAgICAg
ICAvKiBbaW5dICovIFdlYlZpZXdJbnNlcnRBY3Rpb24gYWN0aW9uLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNob3VsZERlbGV0ZURPTVJhbmdlKCAKLSAgICAgICAgLyogW2luXSAq
LyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBJRE9NUmFuZ2UgKnJhbmdl
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2UoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAv
KiBbaW5dICovIElET01SYW5nZSAqY3VycmVudFJhbmdlLAotICAgICAgICAvKiBbaW5dICovIElE
T01SYW5nZSAqcHJvcG9zZWRSYW5nZSwKLSAgICAgICAgLyogW2luXSAqLyBXZWJTZWxlY3Rpb25B
ZmZpbml0eSBzZWxlY3Rpb25BZmZpbml0eSwKLSAgICAgICAgLyogW2luXSAqLyBCT09MIHN0aWxs
U2VsZWN0aW5nLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEFwcGx5U3R5
bGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBb
aW5dICovIElET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZSwKLSAgICAgICAgLyogW2luXSAq
LyBJRE9NUmFuZ2UgKnJhbmdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJl
c3VsdCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3Vs
ZENoYW5nZVR5cGluZ1N0eWxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmll
dywKLSAgICAgICAgLyogW2luXSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqY3VycmVudFN0
eWxlLAotICAgICAgICAvKiBbaW5dICovIElET01DU1NTdHlsZURlY2xhcmF0aW9uICpwcm9wb3Nl
ZFN0eWxlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRvUGxhdGZvcm1Db21tYW5k
KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGNvbW1hbmQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVz
dWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmll
d0RpZEJlZ2luRWRpdGluZyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYk5vdGlmaWNhdGlvbiAq
bm90aWZpY2F0aW9uKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgd2ViVmlld0RpZENoYW5nZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYk5vdGlmaWNhdGlv
biAqbm90aWZpY2F0aW9uKTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2ViVmlld0RpZEVuZEVkaXRpbmcoIAotICAgICAgICAvKiBbaW5dICovIElXZWJOb3Rp
ZmljYXRpb24gKm5vdGlmaWNhdGlvbik7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYk5vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbiggCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYk5vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKTsKLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW5kb01hbmFnZXJGb3JXZWJW
aWV3KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJV2ViVW5kb01hbmFnZXIgKip1bmRvTWFuYWdlcikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0KLSAgICAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoIAotICAgICAgICAgICAgLyogW2luXSAqLyBJV2Vi
VmlldyAqdmlldywKLSAgICAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB3b3JkKSB7IHJldHVybiBF
X05PVElNUEw7IH0KLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBsZWFybldvcmQoIAotICAgICAgICAgICAgLyogW2luXSAqLyBCU1RSIHdvcmQpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQotICAgICAgICAKLSAgICAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGNoZWNrU3BlbGxpbmdPZlN0cmluZyggCi0gICAgICAgICAgICAvKiBb
aW5dICovIElXZWJWaWV3ICp2aWV3LAotICAgICAgICAgICAgLyogW2luXSAqLyBMUENUU1RSIHRl
eHQsCi0gICAgICAgICAgICAvKiBbaW5dICovIGludCBsZW5ndGgsCi0gICAgICAgICAgICAvKiBb
b3V0XSAqLyBpbnQgKm1pc3NwZWxsaW5nTG9jYXRpb24sCi0gICAgICAgICAgICAvKiBbb3V0XSAq
LyBpbnQgKm1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGVja0dyYW1tYXJPZlN0cmluZyggCi0gICAgICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICp2aWV3LAotICAgICAgICAgICAgLyogW2luXSAqLyBMUENU
U1RSIHRleHQsCi0gICAgICAgICAgICAvKiBbaW5dICovIGludCBsZW5ndGgsCi0gICAgICAgICAg
ICAvKiBbb3V0XSAqLyBJRW51bVdlYkdyYW1tYXJEZXRhaWxzICoqZ3JhbW1hckRldGFpbHMsCi0g
ICAgICAgICAgICAvKiBbb3V0XSAqLyBpbnQgKmJhZEdyYW1tYXJMb2NhdGlvbiwKLSAgICAgICAg
ICAgIC8qIFtvdXRdICovIGludCAqYmFkR3JhbW1hckxlbmd0aCkgeyByZXR1cm4gRV9OT1RJTVBM
OyB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKCAKLSAgICAgICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBzdHJpbmcsCi0gICAgICAgICAgICAvKiBbaW5dICovIGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgIC8qIFtpbl0gKi8gaW50IGxlbmd0aCwKLSAgICAgICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB1c2VyRGVzY3JpcHRpb24sCi0gICAgICAgICAgICAvKiBbaW5dICovIEJTVFIgKmd1ZXNz
ZXMsCi0gICAgICAgICAgICAvKiBbaW5dICovIGludCBndWVzc2VzQ291bnQpIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQotICAgICAgICAKLSAgICAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoIAotICAgICAgICAgICAg
LyogW2luXSAqLyBCU1RSIHdvcmQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3dTcGVsbGluZ1VJKCAK
LSAgICAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBzaG93KSB7IHJldHVybiBFX05PVElNUEw7IH0K
LSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzcGVs
bGluZ1VJSXNTaG93aW5nKCAKLSAgICAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAq
cmVzdWx0KSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBndWVzc2VzRm9yV29yZCggCi0gICAgICAgICAgICAv
KiBbaW5dICovIEJTVFIgd29yZCwKLSAgICAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSUVu
dW1TcGVsbGluZ0d1ZXNzZXMgKipndWVzc2VzKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAg
ICAgCi0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9zZVNwZWxs
RG9jdW1lbnQoIAotICAgICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqdmlldykgeyByZXR1
cm4gRV9OT1RJTVBMOyB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2hhcmVkU3BlbGxDaGVja2VyRXhpc3RzKCAKLSAgICAgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCAqZXhpc3RzKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAg
ICAgCi0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmVmbGlnaHRD
aG9zZW5TcGVsbFNlcnZlciggdm9pZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgICAgIAot
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXBkYXRlR3JhbW1hcigg
dm9pZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2UoX0luX29wdF8gSVdlYlZpZXcq
LCBfSW5fb3B0XyBJRE9NUmFuZ2UqLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZShfSW5f
b3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElET01SYW5nZSosIF9PdXRfIEJPT0wqIHJlc3VsdCk7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEluc2VydE5vZGUo
X0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJRE9NTm9kZSosIF9Jbl9vcHRfIElET01SYW5n
ZSosIFdlYlZpZXdJbnNlcnRBY3Rpb24pOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzaG91bGRJbnNlcnRUZXh0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHRl
eHQsIF9Jbl9vcHRfIElET01SYW5nZSosIFdlYlZpZXdJbnNlcnRBY3Rpb24sIF9PdXRfIEJPT0wq
IHJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZERl
bGV0ZURPTVJhbmdlKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSURPTVJhbmdlKiwgX091
dF8gQk9PTCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElET01SYW5nZSosIF9Jbl9vcHRfIElET01SYW5nZSosCisgICAgICAgIFdlYlNlbGVjdGlvbkFm
ZmluaXR5LCBCT09MIHN0aWxsU2VsZWN0aW5nLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRBcHBseVN0eWxlKF9Jbl9vcHRf
IElXZWJWaWV3KiwgX0luX29wdF8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qLCBfSW5fb3B0XyBJ
RE9NUmFuZ2UqLCBfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzaG91bGRDaGFuZ2VUeXBpbmdTdHlsZShfSW5fb3B0XyBJV2ViVmlldyos
IF9Jbl9vcHRfIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiBjdXJyZW50U3R5bGUsCisgICAgICAg
IF9Jbl9vcHRfIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiBwcm9wb3NlZFN0eWxlLCBfT3V0XyBC
T09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb1Bs
YXRmb3JtQ29tbWFuZChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiBjb21tYW5kLCBfT3V0
XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nKF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb24qKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0RpZENoYW5nZShfSW5fb3B0
XyBJV2ViTm90aWZpY2F0aW9uKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHdlYlZpZXdEaWRFbmRFZGl0aW5nKF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb24qKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0RpZENoYW5nZVR5cGlu
Z1N0eWxlKF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb24qKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbihfSW5fb3B0XyBJV2Vi
Tm90aWZpY2F0aW9uKik7ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB1bmRvTWFuYWdlckZvcldlYlZpZXcoX0luX29wdF8gSVdlYlZpZXcqLCBfQ09NX091dHB0cl9v
cHRfIElXZWJVbmRvTWFuYWdlciAqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5f
IEJTVFIgd29yZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9ICAgICAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVhcm5Xb3JkKF9Jbl8gQlNUUiB3b3JkKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hl
Y2tTcGVsbGluZ09mU3RyaW5nKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBMUENUU1RSIHRleHQs
IGludCBsZW5ndGgsIF9PdXRfIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgX091dF8gaW50KiBt
aXNzcGVsbGluZ0xlbmd0aCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNoZWNrR3JhbW1hck9mU3RyaW5nKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBMUENUU1RSIHRl
eHQsIGludCBsZW5ndGgsIF9DT01fT3V0cHRyX29wdF8gSUVudW1XZWJHcmFtbWFyRGV0YWlscyoq
LAorICAgICAgICBfT3V0XyBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgX091dF8gaW50KiBiYWRH
cmFtbWFyTGVuZ3RoKTsgICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBp
bnQgbG9jYXRpb24sIGludCBsZW5ndGgsIF9Jbl8gQlNUUiB1c2VyRGVzY3JpcHRpb24sCisgICAg
ICAgIF9Jbl9vcHRfIEJTVFIqIGd1ZXNzZXMsIGludCBndWVzc2VzQ291bnQpCisgICAgeworICAg
ICAgICByZXR1cm4gRV9OT1RJTVBMOworICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
X0luXyBCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2hvd1NwZWxsaW5nVUkoQk9PTCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNwZWxsaW5nVUlJc1Nob3dp
bmcoX091dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBndWVzc2VzRm9yV29yZChfSW5fIEJTVFIgd29yZCwgX0NPTV9P
dXRwdHJfb3B0XyBJRW51bVNwZWxsaW5nR3Vlc3NlcyoqIGd1ZXNzZXMpOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9zZVNwZWxsRG9jdW1lbnQoX0luX29wdF8gSVdl
YlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2hhcmVkU3BlbGxDaGVja2VyRXhpc3RzKF9PdXRfIEJPT0wqKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJl
ZmxpZ2h0Q2hvc2VuU3BlbGxTZXJ2ZXIoKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXBkYXRlR3JhbW1hcigpIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQogCi0gICAgICAgIC8vIElXZWJOb3RpZmljYXRpb25PYnNlcnZlcgotICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb25Ob3RpZnkoSVdlYk5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKTsKKyAgICAvLyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb25Ob3RpZnkoX0luX29wdF8gSVdl
Yk5vdGlmaWNhdGlvbiopOwogCi0gICAgICAgIC8vIElXZWJFZGl0aW5nRGVsZWdhdGUyCi0gICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRJbnNlcnROb2RlKElX
ZWJWaWV3KiwgSURPTU5vZGUqLCBJRE9NUmFuZ2UqLCBXZWJWaWV3SW5zZXJ0QWN0aW9uLCBCT09M
KiByZXN1bHQpOworICAgIC8vIElXZWJFZGl0aW5nRGVsZWdhdGUyCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEluc2VydE5vZGUoX0luX29wdF8gSVdlYlZpZXcq
LCBfSW5fb3B0XyBJRE9NTm9kZSosIF9Jbl9vcHRfIElET01SYW5nZSosIFdlYlZpZXdJbnNlcnRB
Y3Rpb24sIF9PdXRfIEJPT0wqIHJlc3VsdCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBtX2FjY2Vw
dHNFZGl0aW5nOwotICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDEgfTsKKyAgICBib29sIG1fYWNjZXB0c0VkaXRpbmcgeyB0cnVlIH07CiB9OwogCiAjZW5kaWYg
Ly8gIWRlZmluZWQoRWRpdGluZ0RlbGVnYXRlX2gpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNS0yMDA3LCAyMDA5LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28u
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTc0LDggKzc0
LDcgQEAgc3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KAogfQogCiBGcmFt
ZUxvYWREZWxlZ2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUoKQotICAgIDogbV9yZWZDb3VudCgxKQot
ICAgICwgbV9nY0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCisg
ICAgOiBtX2djQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKICAg
ICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcj4oKSkKICAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CkBAIC04NSw5ICs4NCwxMSBAQCBGcmFt
ZUxvYWREZWxlZ2F0ZTo6fkZyYW1lTG9hZERlbGVnYXRlKCkKIHsKIH0KIAotSFJFU1VMVCBGcmFt
ZUxvYWREZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmpl
Y3QpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0
ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lV
bmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZSo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2Vi
RnJhbWVMb2FkRGVsZWdhdGUpKQpAQCAtMTA1LDEyICsxMDYsMTIgQEAgSFJFU1VMVCBGcmFtZUxv
YWREZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhYwogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBG
cmFtZUxvYWREZWxlZ2F0ZTo6QWRkUmVmKHZvaWQpCitVTE9ORyBGcmFtZUxvYWREZWxlZ2F0ZTo6
QWRkUmVmKCkKIHsKICAgICByZXR1cm4gKyttX3JlZkNvdW50OwogfQogCi1VTE9ORyBGcmFtZUxv
YWREZWxlZ2F0ZTo6UmVsZWFzZSh2b2lkKQorVUxPTkcgRnJhbWVMb2FkRGVsZWdhdGU6OlJlbGVh
c2UoKQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1Jl
ZikKQEAgLTExOSw4ICsxMjAsNyBAQCBVTE9ORyBGcmFtZUxvYWREZWxlZ2F0ZTo6UmVsZWFzZSh2
b2lkKQogICAgIHJldHVybiBuZXdSZWY7CiB9CiAKLQotSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0
ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8s
IElXZWJGcmFtZSogZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZy
YW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxv
YWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5j
X3N0cigpKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRTdGFydFByb3ZpCiAgICAgcmV0dXJuIFNfT0s7IAogfQogCi1IUkVTVUxUIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIElXZWJGcmFtZSogZnJhbWUpCitIUkVTVUxUIEZyYW1l
TG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJGcmFtZSopCiB7IAogICAg
IGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQogICAg
ICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5j
X3N0cigpKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRSZWNlaXZlU2VyCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRnJhbWVMb2FkRGVs
ZWdhdGU6OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKElXZWJWaWV3KiAsIElX
ZWJGcmFtZSogZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2VGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogLCBfSW5fb3B0XyBJV2Vi
RnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1l
TG9hZENhbGxiYWNrcygpKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZy
YW1lKS5jX3N0cigpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVn
YXRlOjpkaWRDaGFuZ2VMb2NhCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRnJhbWVM
b2FkRGVsZWdhdGU6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqIC8q
d2ViVmlldyovLCBJV2ViRXJyb3IqIGVycm9yLCBJV2ViRnJhbWUqIGZyYW1lKQorSFJFU1VMVCBG
cmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcihfSW5fb3B0
XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IsIF9Jbl9vcHRfIElXZWJGcmFt
ZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKCkpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19z
dHIoKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlk
RmFpbFByb3ZpcwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIEZyYW1lTG9hZERlbGVn
YXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUoSVdlYlZpZXcqIHdlYlZpZXcsIElXZWJGcmFtZSog
ZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUo
X0luX29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7
CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkp
CiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRDb21taXRMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKQEAgLTE3Miw3ICsxNzIs
NyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDb21taXRMb2FkCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLUhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVUaXRsZShJ
V2ViVmlldyogLyp3ZWJWaWV3Ki8sIEJTVFIgdGl0bGUsIElXZWJGcmFtZSogZnJhbWUpCitIUkVT
VUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlVGl0bGUoX0luX29wdF8gSVdlYlZpZXcq
LCBfSW5fIEJTVFIgdGl0bGUsIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYg
KCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCiAgICAgICAg
IHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSwgdGl0bGUpOwpAQCAtMTgyLDkgKzE4Miw3IEBA
IEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVUaXQKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hhbmdlSWNvbnMoCi0gICAg
LyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywKLSAgICAvKiBbaW5dICovIElXZWJGcmFtZSog
ZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucyhfSW5fb3B0
XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFkb25l
ICYmIGdUZXN0UnVubmVyLT5kdW1wSWNvbkNoYW5nZXMoKSkKICAgICAgICAgcHJpbnRmKCIlcyAt
IGRpZENoYW5nZUljb25zXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSk7CkBAIC0yNTIsNyArMjUwLDcgQEAgdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6
bG9jYXRpb25DaGFuZ2VEbwogICAgIGR1bXAoKTsKIH0KIAotSFJFU1VMVCBGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKElXZWJWaWV3KiAvKndlYlZpZXcqLywgSVdlYkZy
YW1lKiBmcmFtZSkKK0hSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaExvYWRGb3JG
cmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCiAg
ICAgICAgIHByaW50ZigiJXMgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWVcbiIsIGRlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKQEAgLTI2MSw3ICsyNTksNyBA
QCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRGaW5pc2hMb2FkCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZhaWxMb2FkV2l0aEVycm9y
KElXZWJWaWV3KiAvKndlYlZpZXcqLywgSVdlYkVycm9yKiBlcnJvciwgSVdlYkZyYW1lKiBmcmFt
ZSkKK0hSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZhaWxMb2FkV2l0aEVycm9yKF9Jbl9v
cHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkVycm9yKiBlcnJvciwgX0luX29wdF8gSVdlYkZy
YW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxv
YWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkV2l0aEVycm9y
XG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CkBA
IC0yNzAsNyArMjY4LDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbExvYWRX
aQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjp3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkwoSVdlYlZpZXcqIC8qd2ViVmlldyovLCBCU1RSIHVy
bCwgZG91YmxlIC8qZGVsYXlTZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBJV2ViRnJhbWUq
IGZyYW1lKQorSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVs
YXlTZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqKQogewog
ICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQog
ICAgICAgICBwcmludGYoIiVzIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlUyBc
biIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLApAQCAt
Mjc5LDcgKzI3Nyw3IEBAIEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OndpbGxQZXJmb3JtQ2wK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIElXZWJGcmFt
ZSogZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFt
ZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJh
bWVcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsK
QEAgLTI4OCw3ICsyODYsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDYW5jZWxD
bGllCiB9CiAKIAotSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbENsb3NlRnJhbWUoSVdl
YlZpZXcqIC8qd2ViVmlldyovLCBJV2ViRnJhbWUqIC8qZnJhbWUqLykKK0hSRVNVTFQgRnJhbWVM
b2FkRGVsZWdhdGU6OndpbGxDbG9zZUZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8g
SVdlYkZyYW1lKikKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQpAQCAtMzA4LDcgKzMwNiw3
IEBAIEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENsZWFyV2luZG8KICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDbGVhcldpbmRv
d09iamVjdEZvckZyYW1lSW5TY3JpcHRXb3JsZChJV2ViVmlldyogd2ViVmlldywgSVdlYkZyYW1l
KiBmcmFtZSwgSVdlYlNjcmlwdFdvcmxkKiB3b3JsZCkKK0hSRVNVTFQgRnJhbWVMb2FkRGVsZWdh
dGU6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVJblNjcmlwdFdvcmxkKF9Jbl9vcHRfIElX
ZWJWaWV3KiB3ZWJWaWV3LCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lLCBfSW5fb3B0XyBJV2Vi
U2NyaXB0V29ybGQqIHdvcmxkKQogewogICAgIEFTU0VSVF9BUkcod2ViVmlldywgd2ViVmlldyk7
CiAgICAgQVNTRVJUX0FSRyhmcmFtZSwgZnJhbWUpOwpAQCAtMzc1LDcgKzM3Myw3IEBAIHZvaWQg
RnJhbWVMb2FkRGVsZWdhdGU6OmRpZENsZWFyV2luZG93T2IKICAgICBXZWJDb3JlVGVzdFN1cHBv
cnQ6OmluamVjdEludGVybmFsc09iamVjdChjb250ZXh0KTsKIH0KIAotSFJFU1VMVCBGcmFtZUxv
YWREZWxlZ2F0ZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoSVdlYlZpZXcqIC8qc2Vu
ZGVyKi8sIElXZWJGcmFtZSogZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywg
X0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5u
ZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lXG4iLApAQCAtMzk3LDcgKzM5NSw3IEBAIEhSRVNVTFQg
RnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZpbmlzaERvY3UKICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUo
SVdlYlZpZXcqIC8qc2VuZGVyKi8sIElXZWJGcmFtZSogZnJhbWUpCitIUkVTVUxUIEZyYW1lTG9h
ZERlbGVnYXRlOjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmll
dyogLypzZW5kZXIqLywgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJp
bnRmKCIlcyAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLApAQCAtNDA2LDEyICs0
MDQsMTIgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkSGFuZGxlT25sbwogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lKElXZWJWaWV3KiAvKnNlbmRlciovLCBJV2ViRnJhbWUq
IC8qZnJhbWUqLykKK0hSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEluRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl9v
cHRfIElXZWJGcmFtZSogLypmcmFtZSovKQogewogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVT
VUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KElXZWJWaWV3
KiAvKnNlbmRlciovKQorSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudChfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLykKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKICAgICAgICAgcHJp
bnRmKCJkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50XG4iKTsKQEAgLTQxOSw3ICs0MTcsNyBAQCBI
UkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWREaXNwbGF5SW5zCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKLUhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJ1bkluc2VjdXJlQ29udGVudChJ
V2ViVmlldyogLypzZW5kZXIqLywgSVdlYlNlY3VyaXR5T3JpZ2luKiAvKm9yaWdpbiovKQorSFJF
U1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KF9Jbl9vcHRfIElX
ZWJWaWV3KiAvKnNlbmRlciovLCBfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qIC8qb3JpZ2lu
Ki8pCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzKCkpCiAgICAgICAgIHByaW50ZigiZGlkUnVuSW5zZWN1cmVDb250ZW50XG4iKTsKQEAgLTQy
Nyw3ICs0MjUsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSdW5JbnNlY3VyCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6Om9uTm90aWZ5
KElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK0hSRVNVTFQgRnJhbWVMb2FkRGVsZWdh
dGU6Om9uTm90aWZ5KF9Jbl9vcHRfIElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsK
ICAgICBfYnN0cl90IG5vdGlmaWNhdGlvbk5hbWU7CiAgICAgSFJFU1VMVCBociA9IG5vdGlmaWNh
dGlvbi0+bmFtZSgmbm90aWZpY2F0aW9uTmFtZS5HZXRCU1RSKCkpOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDE4ODY5OCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA1LTIwMDcsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMTExICs0Nyw0MyBAQCBwdWJsaWM6CiAgICAg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5nZXQoKTsgfQogCiAgICAgLy8gSVVu
a25vd24KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVm
KCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAg
ICAvLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpm
cmFtZSk7IAotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCAKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUg
KmZyYW1lKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRXJyb3IgKmVycm9yLAotICAgICAgICAv
KiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZENvbW1pdExvYWRGb3JGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVRpdGxl
KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2lu
XSAqLyBCU1RSIHRpdGxlLAotICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwot
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKAot
ICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICov
IElXZWJGcmFtZSAqZnJhbWUpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRpZFJlY2VpdmVJY29uKC8qIFtpbl0gKi8gSVdlYlZpZXcqLCAvKiBbaW5dICovIEhCSVRN
QVAsIC8qIFtpbl0gKi8gSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9IAotCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpbmlzaExvYWRGb3JGcmFtZSgg
Ci0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkZyYW1lICpmcmFtZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZGlkRmFpbExvYWRXaXRoRXJyb3IoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3
ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElXZWJFcnJvciAqZXJyb3IsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmb3JGcmFtZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUoSVdl
YlZpZXcqLCBJV2ViRnJhbWUqKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkwoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsLAotICAgICAg
ICAvKiBbaW5dICovIGRvdWJsZSBkZWxheVNlY29uZHMsCi0gICAgICAgIC8qIFtpbl0gKi8gREFU
RSBmaXJlRGF0ZSwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKLQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3aWxsQ2xvc2VGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7Ci0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2luZG93U2NyaXB0T2JqZWN0
QXZhaWxhYmxlKElXZWJWaWV3KiwKLUpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2Jq
ZWN0KTsKLQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZy
YW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3
KiwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcq
LCBfSW5fb3B0XyBJV2ViRXJyb3IqLCBfSW5fb3B0XyBJV2ViRnJhbWUqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ29tbWl0TG9hZEZvckZyYW1lKF9Jbl9vcHRf
IElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVUaXRsZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8g
QlNUUiB0aXRsZSwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29w
dF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRp
ZFJlY2VpdmVJY29uKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBIQklUTUFQLCBfSW5fb3B0XyBJ
V2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNoTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3Kiwg
X0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGRpZEZhaWxMb2FkV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdl
YkVycm9yKiwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKF9Jbl9vcHRf
IElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTChfSW5fb3B0XyBJ
V2ViVmlldyosIF9Jbl8gQlNUUiB1cmwsIGRvdWJsZSBkZWxheVNlY29uZHMsIERBVEUgZmlyZURh
dGUsIF9Jbl9vcHRfIElXZWJGcmFtZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3
KiwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdpbGxDbG9zZUZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZy
YW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdpbmRvd1Njcmlw
dE9iamVjdEF2YWlsYWJsZShJV2ViVmlldyosIEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2lu
ZG93T2JqZWN0KTsKICAgICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8gSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRDbGVhcldpbmRvd09iamVjdChJV2ViVmlldyosIEpTQ29udGV4dFJlZiwgSlNP
YmplY3RSZWYgd2luZG93T2JqZWN0LCBJV2ViRnJhbWUqKTsKIAogICAgIC8vIElXZWJGcmFtZUxv
YWREZWxlZ2F0ZVByaXZhdGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJW
aWV3ICpzZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7Ci0gICAg
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaXJzdExheW91
dEluRnJhbWUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9IAotICAg
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkSGFuZGxlT25s
b2FkRXZlbnRzRm9yRnJhbWUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIs
Ci0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7Ci0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5G
cmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcq
IHNlbmRlciwgX0luX29wdF8gSVdlYkZyYW1lKik7ICAgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGRpZEZpcnN0TGF5b3V0SW5GcmFtZShfSW5fb3B0XyBJV2ViVmll
dyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkSGFuZGxlT25sb2FkRXZlbnRz
Rm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8gSVdlYkZyYW1lKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEluRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8g
SVdlYkZyYW1lKik7CiAKICAgICAvLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMgotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyKTsKLQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoIAotICAg
ICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YlNlY3VyaXR5T3JpZ2luICpvcmlnaW4pOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVJblNjcmlwdFdvcmxkKElXZWJW
aWV3KiwgSVdlYkZyYW1lKiwgSVdlYlNjcmlwdFdvcmxkKik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUHVzaFN0YXRlV2l0aGluUGFnZUZvckZyYW1lKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfSAKLSAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZvckZy
YW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBb
aW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfSAKLQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRQb3BTdGF0ZVdpdGhpblBhZ2VGb3JG
cmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBFX05PVElNUEw7IH0gCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
X0luX29wdF8gSVdlYlZpZXcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGlkUnVuSW5zZWN1cmVDb250ZW50KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdl
YlNlY3VyaXR5T3JpZ2luKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVJblNjcmlwdFdvcmxkKF9Jbl9vcHRfIElXZWJW
aWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKiwgX0luX29wdF8gSVdlYlNjcmlwdFdvcmxkKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFB1c2hTdGF0ZVdpdGhpblBh
Z2VGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJGcmFtZSopIHsgcmV0
dXJuIEVfTk9USU1QTDsgfSAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3Kiwg
X0luX29wdF8gSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFBvcFN0YXRlV2l0aGluUGFnZUZvckZyYW1lKF9J
bl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CiAKICAgICAvLyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgb25Ob3RpZnkoSVdlYk5vdGlmaWNhdGlvbiopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvbk5vdGlmeShfSW5fb3B0XyBJV2ViTm90
aWZpY2F0aW9uKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEZv
ckZyYW1lSW5Jc29sYXRlZFdvcmxkKElXZWJGcmFtZSosIElXZWJTY3JpcHRXb3JsZCopOwpAQCAt
MTYwLDEwICs5MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9jYXRpb25DaGFuZ2VEb25lKElX
ZWJFcnJvciosIElXZWJGcmFtZSopOwogICAgIHZvaWQgd2ViVmlld1Byb2dyZXNzRmluaXNoZWRO
b3RpZmljYXRpb24oKTsKIAotICAgIFVMT05HIG1fcmVmQ291bnQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEdDQ29udHJvbGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0SW5wdXRDb250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7
CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDEgfTsKIH07CiAKICNlbmRpZiAvLyBGcmFtZUxvYWRE
ZWxlZ2F0ZV9oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVn
YXRlLmNwcAkocmV2aXNpb24gMTg4Njk4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hp
c3RvcnlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQtMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw2
IEBAIHN0YXRpYyBpbmxpbmUgd3N0cmluZyB3c3RyaW5nRnJvbUJTVFIoQlMKIH0KIAogSGlzdG9y
eURlbGVnYXRlOjpIaXN0b3J5RGVsZWdhdGUoKQotICAgIDogbV9yZWZDb3VudCgxKQogewogfQog
CkBAIC00OSwxMCArNDgsMTIgQEAgSGlzdG9yeURlbGVnYXRlOjp+SGlzdG9yeURlbGVnYXRlKCkK
IHsKIH0KIAotICAgIC8vIElVbmtub3duCi1IUkVTVUxUIEhpc3RvcnlEZWxlZ2F0ZTo6UXVlcnlJ
bnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCisvLyBJVW5rbm93bgorSFJF
U1VMVCBIaXN0b3J5RGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAg
IGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmpl
Y3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQog
ICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkhpc3RvcnlEZWxlZ2F0ZSo+KHRo
aXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViSGlzdG9yeURlbGVn
YXRlKSkKQEAgLTY0LDEyICs2NSwxMiBAQCBIUkVTVUxUIEhpc3RvcnlEZWxlZ2F0ZTo6UXVlcnlJ
bnRlcmZhY2UoCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIEhpc3RvcnlEZWxlZ2F0ZTo6
QWRkUmVmKHZvaWQpCitVTE9ORyBIaXN0b3J5RGVsZWdhdGU6OkFkZFJlZigpCiB7CiAgICAgcmV0
dXJuICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcgSGlzdG9yeURlbGVnYXRlOjpSZWxlYXNlKHZv
aWQpCitVTE9ORyBIaXN0b3J5RGVsZWdhdGU6OlJlbGVhc2UoKQogewogICAgIFVMT05HIG5ld1Jl
ZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikKQEAgLTc5LDcgKzgwLDcgQEAgVUxP
TkcgSGlzdG9yeURlbGVnYXRlOjpSZWxlYXNlKHZvaWQpCiB9CiAKIC8vIElXZWJIaXN0b3J5RGVs
ZWdhdGUKLUhSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShJV2ViVmlldyogd2ViVmlldywgSVdlYk5hdmlnYXRpb25EYXRhKiBuYXZpZ2F0aW9uRGF0
YSwgSVdlYkZyYW1lKiB3ZWJGcmFtZSkKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShfSW5fb3B0XyBJV2ViVmlldyogd2ViVmlldywgX0luX29w
dF8gSVdlYk5hdmlnYXRpb25EYXRhKiBuYXZpZ2F0aW9uRGF0YSwgX0luX29wdF8gSVdlYkZyYW1l
KiB3ZWJGcmFtZSkKIHsKICAgICBpZiAoIWdUZXN0UnVubmVyLT5kdW1wSGlzdG9yeURlbGVnYXRl
Q2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybiBTX09LOwpAQCAtMTUwLDcgKzE1MSw3IEBAIEhS
RVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWROYXZpZ2F0ZVdpdGgKICAgICByZXR1cm4gU19PSzsK
IH0KIAotSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZy
b21VUkwoSVdlYlZpZXcqLCBCU1RSIHNvdXJjZVVSTCwgQlNUUiBkZXN0aW5hdGlvblVSTCwgSVdl
YkZyYW1lKikKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RGcm9tVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHNvdXJjZVVSTCwgX0luXyBC
U1RSIGRlc3RpbmF0aW9uVVJMLCBfSW5fb3B0XyBJV2ViRnJhbWUqKQogewogICAgIGlmICghZ1Rl
c3RSdW5uZXItPmR1bXBIaXN0b3J5RGVsZWdhdGVDYWxsYmFja3MoKSkKICAgICAgICAgcmV0dXJu
IFNfT0s7CkBAIC0xNjcsNyArMTY4LDcgQEAgSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OmRpZFBl
cmZvcm1DbGllbgogICAgIHJldHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBIaXN0b3J5RGVs
ZWdhdGU6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkwoSVdlYlZpZXcqIHdlYlZpZXcs
IEJTVFIgc291cmNlVVJMLCBCU1RSIGRlc3RpbmF0aW9uVVJMLCBJV2ViRnJhbWUqIHdlYkZyYW1l
KQorSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21V
UkwoX0luX29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIF9Jbl8gQlNUUiBzb3VyY2VVUkwsIF9Jbl8g
QlNUUiBkZXN0aW5hdGlvblVSTCwgX0luX29wdF8gSVdlYkZyYW1lKiB3ZWJGcmFtZSkKIHsKICAg
ICBpZiAoIWdUZXN0UnVubmVyLT5kdW1wSGlzdG9yeURlbGVnYXRlQ2FsbGJhY2tzKCkpCiAgICAg
ICAgIHJldHVybiBTX09LOwpAQCAtMTg0LDcgKzE4NSw3IEBAIEhSRVNVTFQgSGlzdG9yeURlbGVn
YXRlOjpkaWRQZXJmb3JtU2VydmUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBIaXN0
b3J5RGVsZWdhdGU6OnVwZGF0ZUhpc3RvcnlUaXRsZShJV2ViVmlldyogd2ViVmlldywgQlNUUiB0
aXRsZUJTVFIsIEJTVFIgdXJsQlNUUikKK0hSRVNVTFQgSGlzdG9yeURlbGVnYXRlOjp1cGRhdGVI
aXN0b3J5VGl0bGUoX0luX29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIF9Jbl8gQlNUUiB0aXRsZUJT
VFIsIF9Jbl8gQlNUUiB1cmxCU1RSKQogewogICAgIGlmICghZ1Rlc3RSdW5uZXItPmR1bXBIaXN0
b3J5RGVsZWdhdGVDYWxsYmFja3MoKSkKICAgICAgICAgcmV0dXJuIFNfT0s7CkBAIC0xOTcsNyAr
MTk4LDcgQEAgSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OnVwZGF0ZUhpc3RvcnlUaQogICAgIHJl
dHVybiBTX09LOwogfQogICAgIAotSFJFU1VMVCBIaXN0b3J5RGVsZWdhdGU6OnBvcHVsYXRlVmlz
aXRlZExpbmtzRm9yV2ViVmlldyhJV2ViVmlldyogd2ViVmlldykKK0hSRVNVTFQgSGlzdG9yeURl
bGVnYXRlOjpwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvcldlYlZpZXcoX0luX29wdF8gSVdlYlZpZXcq
IHdlYlZpZXcpCiB7CiAgICAgaWYgKCFnVGVzdFJ1bm5lci0+ZHVtcEhpc3RvcnlEZWxlZ2F0ZUNh
bGxiYWNrcygpKQogICAgICAgICByZXR1cm4gU19PSzsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmgJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MzggKzM0LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5RGVsZWdhdGUoKTsKIAog
ICAgIC8vIElVbmtub3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZigpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFz
ZSgpOwogCiAgICAgLy8gSVdlYkhpc3RvcnlEZWxlZ2F0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSgKLSAgICAgICAg
LyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywgCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYk5h
dmlnYXRpb25EYXRhKiBuYXZpZ2F0aW9uRGF0YSwgCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZy
YW1lKiB3ZWJGcmFtZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTCgKLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
Vmlldyogd2ViVmlldywgCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzb3VyY2VVUkwsIAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZGVzdGluYXRpb25VUkwsIAotICAgICAgICAvKiBbaW5dICov
IElXZWJGcmFtZSogd2ViRnJhbWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RGcm9tVVJMKAotICAgICAgICAvKiBb
aW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHNvdXJj
ZVVSTCwgCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXN0aW5hdGlvblVSTCwgCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYkZyYW1lKiB3ZWJGcmFtZSk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHVwZGF0ZUhpc3RvcnlUaXRsZSgKLSAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyogd2ViVmlldywgCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwg
Ci0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBwb3B1bGF0ZVZpc2l0ZWRMaW5rc0ZvcldlYlZpZXcoCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShfSW5fb3B0XyBJ
V2ViVmlldyosIF9Jbl9vcHRfIElXZWJOYXZpZ2F0aW9uRGF0YSosIF9Jbl9vcHRfIElXZWJGcmFt
ZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGcm9tVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHNvdXJjZVVS
TCwgX0luXyBCU1RSIGRlc3RpbmF0aW9uVVJMLCBfSW5fb3B0XyBJV2ViRnJhbWUqKTsgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdEZyb21VUkwoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgc291cmNlVVJMLCBfSW5f
IEJTVFIgZGVzdGluYXRpb25VUkwsIF9Jbl9vcHRfIElXZWJGcmFtZSopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1cGRhdGVIaXN0b3J5VGl0bGUoX0luX29wdF8gSVdl
YlZpZXcqLCBfSW5fIEJTVFIgdGl0bGUsIF9Jbl8gQlNUUiB1cmwpOyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcG9wdWxhdGVWaXNpdGVkTGlua3NGb3JXZWJWaWV3
KF9Jbl9vcHRfIElXZWJWaWV3Kik7CiAKIHByaXZhdGU6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsK
KyAgICBVTE9ORyBtX3JlZkNvdW50IHsgMSB9OwogfTsKIAogI2VuZGlmIC8vIEhpc3RvcnlEZWxl
Z2F0ZV9oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lE
ZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsMTYg
KzU1LDE1IEBAIHN0YXRpYyB3c3RyaW5nIGR1bXBQYXRoKElET01Ob2RlKiBub2RlKQogfQogCiBQ
b2xpY3lEZWxlZ2F0ZTo6UG9saWN5RGVsZWdhdGUoKQotICAgIDogbV9yZWZDb3VudCgxKQotICAg
ICwgbV9wZXJtaXNzaXZlRGVsZWdhdGUoZmFsc2UpCi0gICAgLCBtX2NvbnRyb2xsZXJUb05vdGlm
eURvbmUoMCkKIHsKIH0KIAogLy8gSVVua25vd24KLUhSRVNVTFQgUG9saWN5RGVsZWdhdGU6OlF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBQb2xp
Y3lEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZP
YmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxw
dHI7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViUG9saWN5RGVsZWdhdGUqPih0aGlzKTsKICAgICBl
bHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlBvbGljeURlbGVnYXRlKSkKQEAgLTc2
LDEyICs3NSwxMiBAQCBIUkVTVUxUIFBvbGljeURlbGVnYXRlOjpRdWVyeUludGVyZmFjZShSCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFBvbGljeURlbGVnYXRlOjpBZGRSZWYodm9pZCkK
K1VMT05HIFBvbGljeURlbGVnYXRlOjpBZGRSZWYoKQogewogICAgIHJldHVybiArK21fcmVmQ291
bnQ7CiB9CiAKLVVMT05HIFBvbGljeURlbGVnYXRlOjpSZWxlYXNlKHZvaWQpCitVTE9ORyBQb2xp
Y3lEZWxlZ2F0ZTo6UmVsZWFzZSgpCiB7CiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50
OwogICAgIGlmICghbmV3UmVmKQpAQCAtOTAsOCArODksOCBAQCBVTE9ORyBQb2xpY3lEZWxlZ2F0
ZTo6UmVsZWFzZSh2b2lkKQogICAgIHJldHVybiBuZXdSZWY7CiB9CiAKLUhSRVNVTFQgUG9saWN5
RGVsZWdhdGU6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oSVdlYlZpZXcqIC8qd2Vi
VmlldyovLCBJUHJvcGVydHlCYWcqIGFjdGlvbkluZm9ybWF0aW9uLCAKLSAgICBJV2ViVVJMUmVx
dWVzdCogcmVxdWVzdCwgSVdlYkZyYW1lKiBmcmFtZSwgSVdlYlBvbGljeURlY2lzaW9uTGlzdGVu
ZXIqIGxpc3RlbmVyKQorSFJFU1VMVCBQb2xpY3lEZWxlZ2F0ZTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyog
YWN0aW9uSW5mb3JtYXRpb24sCisgICAgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3Qs
IF9Jbl9vcHRfIElXZWJGcmFtZSogZnJhbWUsIF9Jbl9vcHRfIElXZWJQb2xpY3lEZWNpc2lvbkxp
c3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBfYnN0cl90IHVybDsKICAgICByZXF1ZXN0LT5VUkwo
JnVybC5HZXRCU1RSKCkpOwpAQCAtMTU2LDEwICsxNTUsNyBAQCBIUkVTVUxUIFBvbGljeURlbGVn
YXRlOjpkZWNpZGVQb2xpY3lGb3JOCiB9CiAKIAotSFJFU1VMVCBQb2xpY3lEZWxlZ2F0ZTo6dW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3lXaXRoRXJyb3IoCi0gICAgLypbaW5dKi8gSVdlYlZpZXcqIC8q
d2ViVmlldyovLCAKLSAgICAvKltpbl0qLyBJV2ViRXJyb3IqIGVycm9yLCAKLSAgICAvKltpbl0q
LyBJV2ViRnJhbWUqIGZyYW1lKQorSFJFU1VMVCBQb2xpY3lEZWxlZ2F0ZTo6dW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3lXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2ViRXJy
b3IqIGVycm9yLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogewogICAgIF9ic3RyX3QgZG9t
YWluU3RyOwogICAgIGVycm9yLT5kb21haW4oJmRvbWFpblN0ci5HZXRCU1RSKCkpOwpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgJKHJldmlzaW9uIDE4ODY5
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCw0NSArMzgsMzUgQEAgcHVibGljOgogICAgIFBvbGljeURl
bGVnYXRlKCk7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7
Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCBy
aWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJQb2xpY3lEZWxlZ2F0ZQotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyog
W2luXSAqLyBJUHJvcGVydHlCYWcgKmFjdGlvbkluZm9ybWF0aW9uLAotICAgICAgICAvKiBbaW5d
ICovIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0LAotICAgICAgICAvKiBbaW5dICovIElXZWJGcmFt
ZSAqZnJhbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIg
Kmxpc3RlbmVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElQ
cm9wZXJ0eUJhZyogYWN0aW9uSW5mb3JtYXRpb24sCisgICAgICAgIF9Jbl9vcHRfIElXZWJVUkxS
ZXF1ZXN0KiwgX0luX29wdF8gSVdlYkZyYW1lKiwgX0luX29wdF8gSVdlYlBvbGljeURlY2lzaW9u
TGlzdGVuZXIqKTsgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElQcm9wZXJ0eUJhZyogYWN0aW9uSW5mb3JtYXRpb24sCisgICAgICAgIF9Jbl9vcHRfIElXZWJV
UkxSZXF1ZXN0KiwgX0luXyBCU1RSIGZyYW1lTmFtZSwgX0luX29wdF8gSVdlYlBvbGljeURlY2lz
aW9uTGlzdGVuZXIqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVfTk9USU1QTDsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVjaWRlUG9saWN5Rm9yTUlN
RVR5cGUoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSVdlYlVS
TFJlcXVlc3QqLAorICAgICAgICBfSW5fb3B0XyBJV2ViRnJhbWUqLCBfSW5fb3B0XyBJV2ViUG9s
aWN5RGVjaXNpb25MaXN0ZW5lciopCisgICAgeworICAgICAgICByZXR1cm4gRV9OT1RJTVBMOwor
ICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBJUHJvcGVydHlCYWcgKmFjdGlvbkluZm9ybWF0
aW9uLAotICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0LAotICAgICAg
ICAvKiBbaW5dICovIEJTVFIgZnJhbWVOYW1lLAotICAgICAgICAvKiBbaW5dICovIElXZWJQb2xp
Y3lEZWNpc2lvbkxpc3RlbmVyICpsaXN0ZW5lcil7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVjaWRlUG9saWN5Rm9yTUlN
RVR5cGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAv
KiBbaW5dICovIEJTVFIgdHlwZSwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMUmVxdWVzdCAq
cmVxdWVzdCwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lLAotICAgICAgICAv
KiBbaW5dICovIElXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyICpsaXN0ZW5lcil7IHJldHVybiBF
X05PVElNUEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3lXaXRoRXJyb3IoIAotICAgICAgICAvKiBbaW5dICovIElX
ZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElXZWJFcnJvciAqZXJyb3IsCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5V2l0aEVycm9yKF9Jbl9v
cHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkVycm9yKiwgX0luX29wdF8gSVdlYkZyYW1lKik7
CiAKICAgICAvLyBQb2xpY3lEZWxlZ2F0ZQogICAgIHZvaWQgc2V0UGVybWlzc2l2ZShib29sIHBl
cm1pc3NpdmUpIHsgbV9wZXJtaXNzaXZlRGVsZWdhdGUgPSBwZXJtaXNzaXZlOyB9CiAgICAgdm9p
ZCBzZXRDb250cm9sbGVyVG9Ob3RpZnlEb25lKFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIpIHsgbV9j
b250cm9sbGVyVG9Ob3RpZnlEb25lID0gY29udHJvbGxlcjsgfQogCiBwcml2YXRlOgotICAgIFVM
T05HIG1fcmVmQ291bnQ7Ci0gICAgYm9vbCBtX3Blcm1pc3NpdmVEZWxlZ2F0ZTsKLSAgICBUZXN0
UnVubmVyKiBtX2NvbnRyb2xsZXJUb05vdGlmeURvbmU7CisgICAgVGVzdFJ1bm5lciogbV9jb250
cm9sbGVyVG9Ob3RpZnlEb25lIHsgbnVsbHB0ciB9OworICAgIFVMT05HIG1fcmVmQ291bnQgeyAx
IH07CisgICAgYm9vbCBtX3Blcm1pc3NpdmVEZWxlZ2F0ZSB7IGZhbHNlIH07CiB9OwogCiAjZW5k
aWYgLy8gUG9saWN5RGVsZWdhdGVfaApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jl
c291cmNlTG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxODg2OTgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE0
LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTU3LDcgKzE1Nyw2IEBAIHdzdHJpbmcgUmVzb3VyY2VMb2FkRGVs
ZWdhdGU6OmRlc2NyaXB0aW8KIH0KIAogUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9h
ZERlbGVnYXRlKCkKLSAgICA6IG1fcmVmQ291bnQoMSkKIHsKIH0KIApAQCAtMTY1LDkgKzE2NCwx
MSBAQCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6flJlc291cmNlTG9hZERlbGVnCiB7CiB9CiAKLUhS
RVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7
Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKCFwcHZPYmplY3QpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9IG51bGxwdHI7CiAgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFs
R1VJRChyaWlkLCBJSURfSVdlYlJlc291cmNlTG9hZERlbGVnYXRlKSkKQEAgLTE4MSwxMiArMTgy
LDEyIEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXIKICAgICByZXR1
cm4gU19PSzsKIH0KIAotVUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OkFkZFJlZih2b2lkKQor
VUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9y
ZWZDb3VudDsKIH0KIAotVUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlbGVhc2Uodm9pZCkK
K1VMT05HIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBuZXdS
ZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC0xOTUsNyArMTk2LDggQEAg
VUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlbGVhc2Uodm9pZAogICAgIHJldHVybiBuZXdS
ZWY7CiB9CiAKLUhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChJV2ViVmlldyogd2ViVmlldywgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElX
ZWJEYXRhU291cmNlKiBkYXRhU291cmNlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCitIUkVT
VUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoX0lu
X29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0
LAorICAgIF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCiB7IAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIF9ic3RyX3QgdXJsU3RyOwpAQCAtMjA5LDkg
KzIxMSw3IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmlkZW50aWZpZXIKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6cmVtb3ZlSWRl
bnRpZmllckZvclJlcXVlc3QoCi0gICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywKLSAg
ICAvKiBbaW5dICovIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK0hSRVNVTFQgUmVzb3VyY2VM
b2FkRGVsZWdhdGU6OnJlbW92ZUlkZW50aWZpZXJGb3JSZXF1ZXN0KF9Jbl9vcHRfIElXZWJWaWV3
KiB3ZWJWaWV3LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAgICAgdXJsTWFwKCkucmVt
b3ZlKGlkZW50aWZpZXIpOwogCkBAIC0yMjksOSArMjI5LDE0IEBAIHN0YXRpYyBib29sIGhvc3RJ
c1VzZWRCeVNvbWVUZXN0c1RvR2VuZXIKICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFsVG8gPT0g
Q0ZTdHJpbmdDb21wYXJlKGhvc3QsIENGU1RSKCIyNTUuMjU1LjI1NS4yNTUiKSwgMCk7CiB9CiAK
LUhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdChJV2ViVmlldyog
d2ViVmlldywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJV2ViVVJMUmVxdWVzdCogcmVxdWVz
dCwKLSAgICBJV2ViVVJMUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UsIElXZWJEYXRhU291cmNl
KiBkYXRhU291cmNlLCBJV2ViVVJMUmVxdWVzdCoqIG5ld1JlcXVlc3QpCitIUkVTVUxUIFJlc291
cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoX0luX29wdF8gSVdlYlZpZXcqIHdlYlZp
ZXcsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJl
cXVlc3QsCisgICAgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlLCBf
SW5fb3B0XyBJV2ViRGF0YVNvdXJjZSogZGF0YVNvdXJjZSwgX0NPTV9PdXRwdHJfb3B0XyBJV2Vi
VVJMUmVxdWVzdCoqIG5ld1JlcXVlc3QpCiB7CisgICAgaWYgKCFuZXdSZXF1ZXN0KQorICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgKm5ld1JlcXVlc3QgPSBudWxscHRyOworCiAgICAg
aWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsK
ICAgICAgICAgcHJpbnRmKCIlUyAtIHdpbGxTZW5kUmVxdWVzdCAlUyByZWRpcmVjdFJlc3BvbnNl
ICVTXG4iLCAKICAgICAgICAgICAgIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGlk
ZW50aWZpZXIpLmNfc3RyKCksCkBAIC0yNDEsMjggKzI0NiwyMyBAQCBIUkVTVUxUIFJlc291cmNl
TG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlCiAKICAgICBpZiAoIWRvbmUgJiYgIWdUZXN0UnVubmVy
LT5kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkpIHsKICAgICAgICAgQ09NUHRyPElXZWJEYXRh
U291cmNlUHJpdmF0ZT4gZGF0YVNvdXJjZVByaXZhdGUoUXVlcnksIGRhdGFTb3VyY2UpOwotICAg
ICAgICBpZiAoIWRhdGFTb3VyY2VQcml2YXRlKSB7Ci0gICAgICAgICAgICAqbmV3UmVxdWVzdCA9
IG51bGxwdHI7CisgICAgICAgIGlmICghZGF0YVNvdXJjZVByaXZhdGUpCiAgICAgICAgICAgICBy
ZXR1cm4gRV9GQUlMOwotICAgICAgICB9CisKICAgICAgICAgZGF0YVNvdXJjZVByaXZhdGUtPnNl
dERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoRkFMU0UpOwogICAgIH0KIAotICAgIGlmICghZG9u
ZSAmJiBnVGVzdFJ1bm5lci0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkgewotICAgICAg
ICAqbmV3UmVxdWVzdCA9IG51bGxwdHI7CisgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT53
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpKQogICAgICAgICByZXR1cm4gU19PSzsKLSAgICB9
CiAKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPndpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsT25SZWRpcmVjdCgpICYmIHJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAgcHJpbnRmKCJS
ZXR1cm5pbmcgbnVsbCBmb3IgdGhpcyByZWRpcmVjdFxuIik7Ci0gICAgICAgICpuZXdSZXF1ZXN0
ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQogCiAgICAgX2JzdHJfdCB1
cmxCc3RyOwogICAgIGlmIChGQUlMRUQocmVxdWVzdC0+VVJMKCZ1cmxCc3RyLkdldEJTVFIoKSkp
KSB7CiAgICAgICAgIHByaW50ZigiUmVxdWVzdCBoYXMgbm8gVVJMXG4iKTsKLSAgICAgICAgKm5l
d1JlcXVlc3QgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KIApAQCAt
Mjg1LDcgKzI4NSw2IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmUK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaXNMb2NhbGhvc3QoaG9zdC5nZXQoKSkg
JiYgIWhvc3RJc1VzZWRCeVNvbWVUZXN0c1RvR2VuZXJhdGVFcnJvcihob3N0LmdldCgpKSAmJiAo
IXRlc3RIb3N0IHx8IGlzTG9jYWxob3N0KHRlc3RIb3N0LmdldCgpKSkpIHsKICAgICAgICAgICAg
ICAgICBwcmludGYoIkJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCAlc1xuIiwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJzdHIpKTsKLSAgICAgICAgICAgICAgICAqbmV3UmVxdWVz
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTMwMyw3ICszMDIsOCBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVn
YXRlOjp3aWxsU2VuZFJlCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgUmVzb3VyY2VM
b2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJV2ViVmlldyog
d2ViVmlldywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIGNoYWxsZW5nZSwgSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCitIUkVTVUxU
IFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
X0luX29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKKyAg
ICBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSwgX0lu
X29wdF8gSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCiB7CiAgICAgQ09NUHRyPElXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4gc2VuZGVyOwogICAgIGlmICghY2hhbGxlbmdl
IHx8IEZBSUxFRChjaGFsbGVuZ2UtPnNlbmRlcigmc2VuZGVyKSkpCkBAIC0zMjksMTEgKzMyOSw4
IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmUKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKAotICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsIAotICAgIC8qIFtpbl0gKi8g
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCAKLSAgICAvKiBbaW5dICovIElXZWJVUkxSZXNwb25z
ZSogcmVzcG9uc2UsIAotICAgIC8qIFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2Up
CitIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoX0luX29w
dF8gSVdlYlZpZXcqIHdlYlZpZXcsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgCisgICAgX0lu
X29wdF8gSVdlYlVSTFJlc3BvbnNlKiByZXNwb25zZSwgX0luX29wdF8gSVdlYkRhdGFTb3VyY2Uq
IGRhdGFTb3VyY2UpCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgcHJpbnRmKCIlUyAtIGRpZFJlY2VpdmVSZXNw
b25zZSAlU1xuIiwKQEAgLTM1OCw3ICszNTUsNyBAQCBIUkVTVUxUIFJlc291cmNlTG9hZERlbGVn
YXRlOjpkaWRSZWNlaXZlCiB9CiAKIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlk
RmluaXNoTG9hZGluZ0Zyb21EYXRhU291cmNlKElXZWJWaWV3KiB3ZWJWaWV3LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlKQorSFJFU1VMVCBSZXNv
dXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZ0Zyb21EYXRhU291cmNlKF9Jbl9vcHRf
IElXZWJWaWV3KiB3ZWJWaWV3LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIF9Jbl9vcHRfIElX
ZWJEYXRhU291cmNlKiBkYXRhU291cmNlKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5l
ci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50ZigiJVMgLSBk
aWRGaW5pc2hMb2FkaW5nXG4iLApAQCAtMzcwLDcgKzM2Nyw3IEBAIEhSRVNVTFQgUmVzb3VyY2VM
b2FkRGVsZWdhdGU6OmRpZEZpbmlzaEwKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAgICAgCi1I
UkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcihJV2Vi
Vmlldyogd2ViVmlldywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJV2ViRXJyb3IqIGVycm9y
LCBJV2ViRGF0YVNvdXJjZSogZGF0YVNvdXJjZSkKK0hSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdh
dGU6OmRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJWaWV3KiB3ZWJWaWV3LCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIF9Jbl9vcHRfIElXZWJFcnJvciogZXJyb3IsIF9Jbl9v
cHRfIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlKQogewogICAgIGlmICghZG9uZSAmJiBnVGVz
dFJ1bm5lci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CiAgICAgICAgIHByaW50Zigi
JVMgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogJVNcbiIsIApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDE4ODY5
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2OSArMzksMzMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJl
c291cmNlTG9hZERlbGVnYXRlKCk7CiAKICAgICAvLyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoq
IHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
dm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmly
dHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05H
IFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAgIC8vIElXZWJSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3
LAotICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0ICpyZXF1ZXN0LAotICAgICAgICAv
KiBbaW5dICovIElXZWJEYXRhU291cmNlICpkYXRhU291cmNlLAotICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsU2VuZFJlcXVlc3QoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMUmVxdWVzdCAqcmVxdWVzdCwKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UsCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSVdlYlVSTFJlcXVlc3QgKipuZXdSZXF1ZXN0KTsKLSAgICAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0g
ICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAotICAgICAgICAvKiBb
aW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLAotICAgICAg
ICAvKiBbaW5dICovIElXZWJEYXRhU291cmNlICpkYXRhU291cmNlKTsKLSAgICAgICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAg
ICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UpIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVj
ZWl2ZVJlc3BvbnNlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAg
ICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYlVSTFJlc3BvbnNlICpyZXNwb25zZSwKLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
RGF0YVNvdXJjZSAqZGF0YVNvdXJjZSk7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlQ29udGVudExlbmd0aCggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLAotICAgICAgICAvKiBbaW5dICovIFVJTlQgbGVuZ3RoLAotICAgICAgICAv
KiBbaW5dICovIElXZWJEYXRhU291cmNlICpkYXRhU291cmNlKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLSAgICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZp
bmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcg
KndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAot
ICAgICAgICAvKiBbaW5dICovIElXZWJEYXRhU291cmNlICpkYXRhU291cmNlKTsKLSAgICAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZhaWxMb2FkaW5nV2l0
aEVycm9yKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAg
LyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYkVycm9yICplcnJvciwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRGF0YVNvdXJjZSAqZGF0
YVNvdXJjZSk7Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwbHVnSW5GYWlsZWRXaXRoRXJyb3IoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElXZWJFcnJvciAqZXJyb3IsCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UpIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCos
IF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsgICAg
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsU2VuZFJlcXVl
c3QoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIF9Jbl9vcHRf
IElXZWJVUkxSZXF1ZXN0KiwgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNlKiwKKyAgICAgICAgX0lu
X29wdF8gSVdlYkRhdGFTb3VyY2UqLCBfQ09NX091dHB0cl9vcHRfIElXZWJVUkxSZXF1ZXN0Kiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSosIF9Jbl9vcHRf
IElXZWJEYXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJWaWV3KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFX05PVElNUEw7CisgICAgfQorICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVJlc3BvbnNlKF9Jbl9vcHRfIElXZWJWaWV3
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBfSW5fb3B0XyBJV2ViVVJMUmVzcG9uc2UqLCBf
SW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopOworICAgICAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoX0luX29wdF8gSVdlYlZp
ZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFVJTlQgbGVuZ3RoLCBfSW5fb3B0XyBJV2Vi
RGF0YVNvdXJjZSopCisgICAgeworICAgICAgICByZXR1cm4gRV9OT1RJTVBMOyAKKyAgICB9Cisg
ICAgICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5pc2hM
b2FkaW5nRnJvbURhdGFTb3VyY2UoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJW
aWV3KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBfSW5fb3B0XyBJV2ViRXJyb3IqLCBfSW5f
b3B0XyBJV2ViRGF0YVNvdXJjZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBwbHVnSW5GYWlsZWRXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJ
V2ViRXJyb3IqLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQogCiAgICAgLy8gSVdlYlJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZTIKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlSWRlbnRpZmllckZvclJlcXVlc3QoCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8g
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVtb3ZlSWRlbnRpZmllckZvclJlcXVlc3QoX0luX29wdF8gSVdlYlZpZXcqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgc3Rk
Ojp3c3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJVUkxSZXF1ZXN0
Kik7CkBAIC0xMTMsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJNYXAmIHVybE1h
cCgpIHsgcmV0dXJuIG1fdXJsTWFwOyB9CiAgICAgSWRlbnRpZmllck1hcCBtX3VybE1hcDsKIAot
ICAgIFVMT05HIG1fcmVmQ291bnQ7CisgICAgVUxPTkcgbV9yZWZDb3VudCB7IDEgfTsKIH07CiAK
ICNlbmRpZiAvLyBSZXNvdXJjZUxvYWREZWxlZ2F0ZV9oCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAxODg2OTgpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
Miw3ICsyNjIsNyBAQCBzaXplX3QgVGVzdFJ1bm5lcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiAg
ICAgaWYgKEZBSUxFRChzaGFyZWRIaXN0b3J5LT5RdWVyeUludGVyZmFjZSgmc2hhcmVkSGlzdG9y
eVByaXZhdGUpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpbnQgY291bnQ7CisgICAgaW50
IGNvdW50ID0gMDsKICAgICBpZiAoRkFJTEVEKHNoYXJlZEhpc3RvcnlQcml2YXRlLT5hbGxJdGVt
cygmY291bnQsIDApKSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDgs
IDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDE1ICs5NiwxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEUlRVbmRvU3RhY2s+IG1fcmVkb1N0YWNrOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxEUlRVbmRvU3RhY2s+IG1fdW5kb1N0YWNrOwotICAgIGJvb2wgbV9pc1JlZG9p
bmc7Ci0gICAgYm9vbCBtX2lzVW5kb2luZzsKKyAgICBib29sIG1faXNSZWRvaW5nIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNVbmRvaW5nIHsgZmFsc2UgfTsKIH07CiAKIERSVFVuZG9NYW5hZ2Vy
OjpEUlRVbmRvTWFuYWdlcigpCiAgICAgOiBtX3JlZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERS
VFVuZG9TdGFjaz4oKSkKICAgICAsIG1fdW5kb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5k
b1N0YWNrPigpKQotICAgICwgbV9pc1JlZG9pbmcoZmFsc2UpCi0gICAgLCBtX2lzVW5kb2luZyhm
YWxzZSkKIHsKIH0KIApAQCAtMTQ4LDggKzE0Niw3IEBAIHZvaWQgRFJUVW5kb01hbmFnZXI6OnVu
ZG8oKQogfQogCiBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6IG1fcmVmQ291bnQoMSkK
LSAgICAsIG1fdW5kb01hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkK
KyAgICA6IG1fdW5kb01hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkK
ICAgICAsIG1fZGVza3RvcE5vdGlmaWNhdGlvbnMobmV3IERSVERlc2t0b3BOb3RpZmljYXRpb25Q
cmVzZW50ZXIpCiB7CiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOwpAQCAtMTYzLDkgKzE2MCwxMSBA
QCB2b2lkIFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogICAgIG1fdW5kb01hbmFnZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCi1IUkVTVUxUIFVJRGVs
ZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJF
U1VMVCBVSURlbGVnYXRlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAo
IXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2JqZWN0ID0g
bnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAg
ICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJVSURlbGVnYXRlKj4odGhpcyk7CiAgICAg
ZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJVSURlbGVnYXRlKSkKQEAgLTE5OSwz
MiArMTk4LDQwIEBAIFVMT05HIFVJRGVsZWdhdGU6OlJlbGVhc2UoKQogICAgIHJldHVybiBuZXdS
ZWY7CiB9CiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6aGFzQ3VzdG9tTWVudUltcGxlbWVudGF0aW9u
KEJPT0wqIGhhc0N1c3RvbU1lbnVzKQorSFJFU1VMVCBVSURlbGVnYXRlOjp3aWxsUGVyZm9ybURy
YWdTb3VyY2VBY3Rpb24oX0luX29wdF8gSVdlYlZpZXcqLCBXZWJEcmFnU291cmNlQWN0aW9uLCBf
SW5fIExQUE9JTlQsIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiBwYXN0ZWJvYXJkLCBfQ09NX091dHB0
cl9vcHRfIElEYXRhT2JqZWN0KiogbmV3UGFzdGVib2FyZCkKK3sKKyAgICBpZiAoIW5ld1Bhc3Rl
Ym9hcmQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKm5ld1Bhc3RlYm9hcmQgPSBu
dWxscHRyOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6
aGFzQ3VzdG9tTWVudUltcGxlbWVudGF0aW9uKF9PdXRfIEJPT0wqIGhhc0N1c3RvbU1lbnVzKQog
ewogICAgICpoYXNDdXN0b21NZW51cyA9IFRSVUU7CiAKICAgICByZXR1cm4gU19PSzsKIH0KIAot
SFJFU1VMVCBVSURlbGVnYXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudShJV2ViVmlldyogLypzZW5k
ZXIqLywgSE1FTlUgLyptZW51Ki8sIExQUE9JTlQgLypwb2ludCovKQorSFJFU1VMVCBVSURlbGVn
YXRlOjp0cmFja0N1c3RvbVBvcHVwTWVudShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywg
X0luXyBITUVOVSAvKm1lbnUqLywgX0luXyBMUFBPSU5UIC8qcG9pbnQqLykKIHsKICAgICAvLyBE
byBub3RoaW5nCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6cmVn
aXN0ZXJVbmRvV2l0aFRhcmdldChJV2ViVW5kb1RhcmdldCogdGFyZ2V0LCBCU1RSIGFjdGlvbk5h
bWUsIElVbmtub3duKiBhY3Rpb25BcmcpCitIUkVTVUxUIFVJRGVsZWdhdGU6OnJlZ2lzdGVyVW5k
b1dpdGhUYXJnZXQoX0luX29wdF8gSVdlYlVuZG9UYXJnZXQqIHRhcmdldCwgX0luXyBCU1RSIGFj
dGlvbk5hbWUsIF9Jbl9vcHRfIElVbmtub3duKiBhY3Rpb25BcmcpCiB7CiAgICAgbV91bmRvTWFu
YWdlci0+cmVnaXN0ZXJVbmRvV2l0aFRhcmdldCh0YXJnZXQsIGFjdGlvbk5hbWUsIGFjdGlvbkFy
Zyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6cmVtb3ZlQWxs
QWN0aW9uc1dpdGhUYXJnZXQoSVdlYlVuZG9UYXJnZXQqKQorSFJFU1VMVCBVSURlbGVnYXRlOjpy
ZW1vdmVBbGxBY3Rpb25zV2l0aFRhcmdldChfSW5fb3B0XyBJV2ViVW5kb1RhcmdldCopCiB7CiAg
ICAgbV91bmRvTWFuYWdlci0+cmVtb3ZlQWxsQWN0aW9ucygpOwogICAgIHJldHVybiBTX09LOwog
fQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OnNldEFjdGlvblRpdGxlKEJTVFIgLyphY3Rpb25UaXRs
ZSovKQorSFJFU1VMVCBVSURlbGVnYXRlOjpzZXRBY3Rpb25UaXRsZShfSW5fIEJTVFIgLyphY3Rp
b25UaXRsZSovKQogewogICAgIC8vIEl0IGlzIG5vdCBuZWNjZXNzYXJ5IHRvIGltcGxlbWVudCB0
aGlzIGZvciBEUlQgYmVjYXVzZSB0aGVyZSBpcwogICAgIC8vIG1lbnUgdG8gd3JpdGUgb3V0IHRo
ZSB0aXRsZSB0by4KQEAgLTI0Myw3ICsyNTAsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJlZG8o
KQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OmNhblVuZG8oQk9P
TCogcmVzdWx0KQorSFJFU1VMVCBVSURlbGVnYXRlOjpjYW5VbmRvKF9PdXRfIEJPT0wqIHJlc3Vs
dCkKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTI1
Miw3ICsyNTksNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OmNhblVuZG8oQk9PTCogcmVzdWx0CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6Y2FuUmVkbyhCT09MKiBy
ZXN1bHQpCitIUkVTVUxUIFVJRGVsZWdhdGU6OmNhblJlZG8oX091dF8gQk9PTCogcmVzdWx0KQog
ewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMjYxLDIx
ICsyNjgsMjEgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpjYW5SZWRvKEJPT0wqIHJlc3VsdAogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OnByaW50RnJhbWUoSVdlYlZp
ZXcqIC8qd2ViVmlldyovLCBJV2ViRnJhbWUqIC8qZnJhbWUqLykKK0hSRVNVTFQgVUlEZWxlZ2F0
ZTo6cHJpbnRGcmFtZShfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJGcmFtZSopCiB7
CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpmdHBEaXJl
Y3RvcnlUZW1wbGF0ZVBhdGgoSVdlYlZpZXcqIC8qd2ViVmlldyovLCBCU1RSKiBwYXRoKQorSFJF
U1VMVCBVSURlbGVnYXRlOjpmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoX0luX29wdF8gSVdlYlZp
ZXcqLCBfX2RlcmVmX29wdF9vdXQgQlNUUiogcGF0aCkKIHsKICAgICBpZiAoIXBhdGgpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKnBhdGggPSAwOworICAgICpwYXRoID0gbnVsbHB0
cjsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2Vi
Vmlld0hlYWRlckhlaWdodChJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIGZsb2F0KiByZXN1bHQpCitI
UkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdIZWFkZXJIZWlnaHQoX0luX29wdF8gSVdlYlZpZXcq
LCBfT3V0XyBmbG9hdCogcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwpAQCAtMjgzLDcgKzI5MCw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2Vi
Vmlld0hlYWRlckhlaWdodCgKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFVJ
RGVsZWdhdGU6OndlYlZpZXdGb290ZXJIZWlnaHQoSVdlYlZpZXcqIC8qd2ViVmlldyovLCBmbG9h
dCogcmVzdWx0KQorSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3Rm9vdGVySGVpZ2h0KF9Jbl9v
cHRfIElXZWJWaWV3KiwgX091dF8gZmxvYXQqIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKQEAgLTI5MSwzNyArMjk4LDQwIEBAIEhSRVNVTFQg
VUlEZWxlZ2F0ZTo6d2ViVmlld0Zvb3RlckhlaWdodCgKICAgICByZXR1cm4gRV9OT1RJTVBMOwog
fQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OmRyYXdIZWFkZXJJblJlY3QoSVdlYlZpZXcqIC8qd2Vi
VmlldyovLCBSRUNUKiAvKnJlY3QqLywgVUxPTkdfUFRSIC8qZHJhd2luZ0NvbnRleHQqLykKK0hS
RVNVTFQgVUlEZWxlZ2F0ZTo6ZHJhd0hlYWRlckluUmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9J
bl8gUkVDVCosIFVMT05HX1BUUiAvKmRyYXdpbmdDb250ZXh0Ki8pCiB7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KElXZWJW
aWV3KiAvKndlYlZpZXcqLywgUkVDVCogLypyZWN0Ki8sIFVMT05HX1BUUiAvKmRyYXdpbmdDb250
ZXh0Ki8sIFVJTlQgLypwYWdlSW5kZXgqLywgVUlOVCAvKnBhZ2VDb3VudCovKQorSFJFU1VMVCBV
SURlbGVnYXRlOjpkcmF3Rm9vdGVySW5SZWN0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBSRUNU
KiwgVUxPTkdfUFRSIC8qZHJhd2luZ0NvbnRleHQqLywgVUlOVCAvKnBhZ2VJbmRleCovLCBVSU5U
IC8qcGFnZUNvdW50Ki8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBV
SURlbGVnYXRlOjp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KElXZWJWaWV3KiAvKndlYlZpZXcq
LywgUkVDVCogLypyZWN0Ki8pCitIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdQcmludGluZ01h
cmdpblJlY3QoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0XyBSRUNUKikKIHsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OmNhblJ1bk1vZGFsKElXZWJWaWV3
KiAvKndlYlZpZXcqLywgQk9PTCogLypjYW5SdW5Cb29sZWFuKi8pCitIUkVTVUxUIFVJRGVsZWdh
dGU6OmNhblJ1bk1vZGFsKF9Jbl9vcHRfIElXZWJWaWV3KiwgX091dF8gQk9PTCogLypjYW5SdW5C
b29sZWFuKi8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVn
YXRlOjpjcmVhdGVNb2RhbERpYWxvZyhJV2ViVmlldyogLypzZW5kZXIqLywgSVdlYlVSTFJlcXVl
c3QqIC8qcmVxdWVzdCovLCBJV2ViVmlldyoqIC8qbmV3V2ViVmlldyovKQorSFJFU1VMVCBVSURl
bGVnYXRlOjpjcmVhdGVNb2RhbERpYWxvZyhfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywg
X0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIC8qcmVxdWVzdCovLCBfQ09NX091dHB0cl9vcHRfIElX
ZWJWaWV3KiogbmV3V2ViVmlldykKIHsKKyAgICBpZiAoIW5ld1dlYlZpZXcpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisgICAgKm5ld1dlYlZpZXcgPSBudWxscHRyOwogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuTW9kYWwoSVdlYlZpZXcqIC8q
d2ViVmlldyovKQorSFJFU1VMVCBVSURlbGVnYXRlOjpydW5Nb2RhbChfSW5fb3B0XyBJV2ViVmll
dyopCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpp
c01lbnVCYXJWaXNpYmxlKElXZWJWaWV3KiAvKndlYlZpZXcqLywgQk9PTCogdmlzaWJsZSkKK0hS
RVNVTFQgVUlEZWxlZ2F0ZTo6aXNNZW51QmFyVmlzaWJsZShfSW5fb3B0XyBJV2ViVmlldyosIF9P
dXRfIEJPT0wqIHZpc2libGUpCiB7CiAgICAgaWYgKCF2aXNpYmxlKQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwpAQCAtMzI5LDEyICszMzksMTIgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjppc01l
bnVCYXJWaXNpYmxlKElXZQogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgVUlE
ZWxlZ2F0ZTo6c2V0TWVudUJhclZpc2libGUoSVdlYlZpZXcqIC8qd2ViVmlldyovLCBCT09MIC8q
dmlzaWJsZSovKQorSFJFU1VMVCBVSURlbGVnYXRlOjpzZXRNZW51QmFyVmlzaWJsZShfSW5fb3B0
XyBJV2ViVmlldyosIEJPT0wgLyp2aXNpYmxlKi8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpydW5EYXRhYmFzZVNpemVMaW1pdFByb21wdChJV2Vi
VmlldyogLyp3ZWJWaWV3Ki8sIEJTVFIgLypkaXNwbGF5TmFtZSovLCBJV2ViRnJhbWUqIC8qaW5p
dGlhdGVkQnlGcmFtZSovLCBCT09MKiBhbGxvd2VkKQorSFJFU1VMVCBVSURlbGVnYXRlOjpydW5E
YXRhYmFzZVNpemVMaW1pdFByb21wdChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiAvKmRp
c3BsYXlOYW1lKi8sIF9Jbl9vcHRfIElXZWJGcmFtZSogLyppbml0aWF0ZWRCeUZyYW1lKi8sIF9P
dXRfIEJPT0wqIGFsbG93ZWQpCiB7CiAgICAgaWYgKCFhbGxvd2VkKQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwpAQCAtMzQyLDMwICszNTIsMzAgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5E
YXRhYmFzZVNpemVMaW1pdAogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgVUlE
ZWxlZ2F0ZTo6cGFpbnRDdXN0b21TY3JvbGxiYXIoSVdlYlZpZXcqIC8qd2ViVmlldyovLCBIREMg
LypoREMqLywgUkVDVCAvKnJlY3QqLywgV2ViU2Nyb2xsQmFyQ29udHJvbFNpemUgLypzaXplKi8s
IFdlYlNjcm9sbGJhckNvbnRyb2xTdGF0ZSAvKnN0YXRlKi8sCi0gICAgV2ViU2Nyb2xsYmFyQ29u
dHJvbFBhcnQgLypwcmVzc2VkUGFydCovLCBCT09MIC8qdmVydGljYWwqLywgZmxvYXQgLyp2YWx1
ZSovLCBmbG9hdCAvKnByb3BvcnRpb24qLywgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIC8q
cGFydHMqLykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6cGFpbnRDdXN0b21TY3JvbGxiYXIoX0luX29w
dF8gSVdlYlZpZXcqLCBfSW5fIEhEQywgUkVDVCwgV2ViU2Nyb2xsQmFyQ29udHJvbFNpemUsIFdl
YlNjcm9sbGJhckNvbnRyb2xTdGF0ZSwKKyAgICBXZWJTY3JvbGxiYXJDb250cm9sUGFydCAvKnBy
ZXNzZWRQYXJ0Ki8sIEJPT0wgLyp2ZXJ0aWNhbCovLCBmbG9hdCAvKnZhbHVlKi8sIGZsb2F0IC8q
cHJvcG9ydGlvbiovLCBXZWJTY3JvbGxiYXJDb250cm9sUGFydE1hc2spCiB7CiAgICAgcmV0dXJu
IEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpwYWludEN1c3RvbVNjcm9sbENv
cm5lcihJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIEhEQyAvKmhEQyovLCBSRUNUIC8qcmVjdCovKQor
SFJFU1VMVCBVSURlbGVnYXRlOjpwYWludEN1c3RvbVNjcm9sbENvcm5lcihfSW5fb3B0XyBJV2Vi
VmlldyosIF9Jbl8gSERDLCBSRUNUKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgVUlEZWxlZ2F0ZTo6c2V0RnJhbWUoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIFJFQ1QqIGZy
YW1lKQorSFJFU1VMVCBVSURlbGVnYXRlOjpzZXRGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogLypz
ZW5kZXIqLywgX0luXyBSRUNUKiBmcmFtZSkKIHsKICAgICBtX2ZyYW1lID0gKmZyYW1lOwogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdGcmFtZShJV2Vi
VmlldyogLypzZW5kZXIqLywgUkVDVCogZnJhbWUpCitIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZp
ZXdGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX091dF8gUkVDVCogZnJhbWUp
CiB7CiAgICAgKmZyYW1lID0gbV9mcmFtZTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VM
VCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlKElXZWJWaWV3
KiAvKnNlbmRlciovLCBCU1RSIG1lc3NhZ2UpCitIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFT
Y3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IF9Jbl8gQlNUUiBtZXNzYWdlKQogewogICAgIGlmICghZG9uZSkgewogICAgICAgICBwcmludGYo
IkFMRVJUOiAlU1xuIiwgbWVzc2FnZSA/IG1lc3NhZ2UgOiBMIiIpOwpAQCAtMzc1LDcgKzM4NSw3
IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGEKICAgICByZXR1cm4g
U19PSzsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVs
V2l0aE1lc3NhZ2UoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIEJTVFIgbWVzc2FnZSwgQk9PTCogcmVz
dWx0KQorSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1l
c3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNzYWdlLCBf
T3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFkb25lKQogICAgICAgICBwcmludGYoIkNP
TkZJUk06ICVTXG4iLCBtZXNzYWdlID8gbWVzc2FnZSA6IEwiIik7CkBAIC0zODUsNyArMzk1LDcg
QEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybQogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bFdpdGhQcm9tcHQoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIEJTVFIgbWVzc2FnZSwgQlNUUiBkZWZh
dWx0VGV4dCwgQlNUUiogcmVzdWx0KQorSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0
VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0KF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBf
SW5fIEJTVFIgbWVzc2FnZSwgX0luXyBCU1RSIGRlZmF1bHRUZXh0LCBfX2RlcmVmX29wdF9vdXQg
QlNUUiogcmVzdWx0KQogewogICAgIGlmICghZG9uZSkKICAgICAgICAgcHJpbnRmKCJQUk9NUFQ6
ICVTLCBkZWZhdWx0IHRleHQ6ICVTXG4iLCBtZXNzYWdlID8gbWVzc2FnZSA6IEwiIiwgZGVmYXVs
dFRleHQgPyBkZWZhdWx0VGV4dCA6IEwiIik7CkBAIC0zOTUsNyArNDA1LDcgQEAgSFJFU1VMVCBV
SURlbGVnYXRlOjpydW5KYXZhU2NyaXB0VGV4dElucAogICAgIHJldHVybiBTX09LOwogfQogCi1I
UkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
KElXZWJWaWV3KiAvKnNlbmRlciovLCBCU1RSIG1lc3NhZ2UsIElXZWJGcmFtZSogLyppbml0aWF0
ZWRCeUZyYW1lKi8sIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVy
Ki8sIF9Jbl8gQlNUUiBtZXNzYWdlLCBfSW5fb3B0XyBJV2ViRnJhbWUqIC8qaW5pdGlhdGVkQnlG
cmFtZSovLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CkBAIC00MDgsNyArNDE4LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRl
OjpydW5CZWZvcmVVbmxvYWRDb25maQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJ
RGVsZWdhdGU6OndlYlZpZXdBZGRNZXNzYWdlVG9Db25zb2xlKElXZWJWaWV3KiAvKnNlbmRlciov
LCBCU1RSIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBCU1RSIHVybCwgQk9PTCBpc0Vycm9yKQor
SFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29uc29sZShfSW5fb3B0XyBJ
V2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBf
SW5fIEJTVFIgdXJsLCBCT09MIGlzRXJyb3IpCiB7CiAgICAgaWYgKGRvbmUpCiAgICAgICAgIHJl
dHVybiBTX09LOwpAQCAtNDI5LDcgKzQzOSw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmll
d0FkZE1lc3NhZ2VUb0MKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRl
Ojpkb0RyYWdEcm9wKElXZWJWaWV3KiAvKnNlbmRlciovLCBJRGF0YU9iamVjdCogb2JqZWN0LCBJ
RHJvcFNvdXJjZSogc291cmNlLCBEV09SRCAvKm9rRWZmZWN0Ki8sIERXT1JEKiBwZXJmb3JtZWRF
ZmZlY3QpCitIUkVTVUxUIFVJRGVsZWdhdGU6OmRvRHJhZ0Ryb3AoX0luX29wdF8gSVdlYlZpZXcq
IC8qc2VuZGVyKi8sIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiBvYmplY3QsIF9Jbl9vcHRfIElEcm9w
U291cmNlKiBzb3VyY2UsIERXT1JEIC8qb2tFZmZlY3QqLywgX091dF8gRFdPUkQqIHBlcmZvcm1l
ZEVmZmVjdCkKIHsKICAgICBpZiAoIXBlcmZvcm1lZEVmZmVjdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKQEAgLTQ0Nyw3ICs0NTcsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OmRvRHJhZ0Ry
b3AoSVdlYlZpZXcqCiAgICAgcmV0dXJuIG9sZURyYWdBbmREcm9wUmV0dXJuVmFsdWU7CiB9CiAK
LUhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld0dldERsZ0NvZGUoSVdlYlZpZXcqIC8qc2VuZGVy
Ki8sIFVJTlQgLyprZXlDb2RlKi8sIExPTkdfUFRSKiBjb2RlKQorSFJFU1VMVCBVSURlbGVnYXRl
Ojp3ZWJWaWV3R2V0RGxnQ29kZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgVUlOVCAv
KmtleUNvZGUqLywgX091dF8gTE9OR19QVFIqIGNvZGUpCiB7CiAgICAgaWYgKCFjb2RlKQogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtNDU1LDE1ICs0NjUsMjAgQEAgSFJFU1VMVCBVSURl
bGVnYXRlOjp3ZWJWaWV3R2V0RGxnQ29kZShJVwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAK
LUhSRVNVTFQgVUlEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KElXZWJWaWV3KiAv
KnNlbmRlciovLCBJV2ViVVJMUmVxdWVzdCogLypyZXF1ZXN0Ki8sIElXZWJWaWV3KiogbmV3V2Vi
VmlldykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KF9Jbl9v
cHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogLypyZXF1
ZXN0Ki8sIF9DT01fT3V0cHRyX29wdF8gSVdlYlZpZXcqKiBuZXdXZWJWaWV3KQogeworICAgIGlm
ICghbmV3V2ViVmlldykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqbmV3V2ViVmll
dyA9IG51bGxwdHI7CisKICAgICBpZiAoITo6Z1Rlc3RSdW5uZXItPmNhbk9wZW5XaW5kb3dzKCkp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CisKICAgICAqbmV3V2ViVmlldyA9IGNyZWF0ZVdlYlZp
ZXdBbmRPZmZzY3JlZW5XaW5kb3coKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBV
SURlbGVnYXRlOjp3ZWJWaWV3Q2xvc2UoSVdlYlZpZXcqIHNlbmRlcikKK0hSRVNVTFQgVUlEZWxl
Z2F0ZTo6d2ViVmlld0Nsb3NlKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIpCiB7CiAgICAgSFdO
RCBob3N0V2luZG93OwogICAgIHNlbmRlci0+aG9zdFdpbmRvdygmaG9zdFdpbmRvdyk7CkBAIC00
NzEsNyArNDg2LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3Q2xvc2UoSVdlYlZpZQog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdGb2N1cyhJ
V2ViVmlldyogc2VuZGVyKQorSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3Rm9jdXMoX0luX29w
dF8gSVdlYlZpZXcqIHNlbmRlcikKIHsKICAgICBIV05EIGhvc3RXaW5kb3c7CiAgICAgc2VuZGVy
LT5ob3N0V2luZG93KCZob3N0V2luZG93KTsKQEAgLTQ3OSwxOCArNDk0LDE4IEBAIEhSRVNVTFQg
VUlEZWxlZ2F0ZTo6d2ViVmlld0ZvY3VzKElXZWJWaWUKICAgICByZXR1cm4gU19PSzsgCiB9CiAK
LUhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld1VuZm9jdXMoSVdlYlZpZXcqIC8qc2VuZGVyKi8p
CitIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdVbmZvY3VzKF9Jbl9vcHRfIElXZWJWaWV3KiAv
KnNlbmRlciovKQogewogICAgIFNldEZvcmVncm91bmRXaW5kb3coR2V0RGVza3RvcFdpbmRvdygp
KTsKICAgICByZXR1cm4gU19PSzsgCiB9CiAKLUhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld1Bh
aW50ZWQoSVdlYlZpZXcqIC8qc2VuZGVyKi8pCitIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdQ
YWludGVkKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovKQogewogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShJV2ViVmll
dyogc2VuZGVyLCBJV2ViRnJhbWUqIGZyYW1lLCBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
QlNUUiBkYXRhYmFzZUlkZW50aWZpZXIpCitIUkVTVUxUIFVJRGVsZWdhdGU6OmV4Y2VlZGVkRGF0
YWJhc2VRdW90YShfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViRnJhbWUq
IGZyYW1lLCBfSW5fb3B0XyBJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgX0luXyBCU1RSIGRh
dGFiYXNlSWRlbnRpZmllcikKIHsKICAgICBfYnN0cl90IHByb3RvY29sOwogICAgIF9ic3RyX3Qg
aG9zdDsKQEAgLTU0MSw2MCArNTU2LDY1IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3QKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBVSURlbGVnYXRlOjpl
bWJlZGRlZFZpZXdXaXRoQXJndW1lbnRzKElXZWJWaWV3KiAvKnNlbmRlciovLCBJV2ViRnJhbWUq
IC8qZnJhbWUqLywgSVByb3BlcnR5QmFnKiAvKmFyZ3VtZW50cyovLCBJV2ViRW1iZWRkZWRWaWV3
KiogdmlldykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6ZW1iZWRkZWRWaWV3V2l0aEFyZ3VtZW50cyhf
SW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luX29wdF8gSVdlYkZyYW1lKiAvKmZyYW1l
Ki8sIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogLyphcmd1bWVudHMqLywgX0NPTV9PdXRwdHJfb3B0
XyBJV2ViRW1iZWRkZWRWaWV3KiogdmlldykKIHsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0gICAgKnZpZXcgPSAwOworICAgICp2aWV3ID0gbnVsbHB0cjsKICAg
ICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdDbG9z
aW5nKElXZWJWaWV3KiAvKnNlbmRlciovKQorSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3Q2xv
c2luZyhfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLykKIHsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdTZXRDdXJzb3IoSVdlYlZpZXcq
IC8qc2VuZGVyKi8sIEhDVVJTT1IgLypjdXJzb3IqLykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6d2Vi
Vmlld1NldEN1cnNvcihfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBIQ1VSU09S
IC8qY3Vyc29yKi8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURl
bGVnYXRlOjp3ZWJWaWV3RGlkSW52YWxpZGF0ZShJV2ViVmlldyogLypzZW5kZXIqLykKK0hSRVNV
TFQgVUlEZWxlZ2F0ZTo6d2ViVmlld0RpZEludmFsaWRhdGUoX0luX29wdF8gSVdlYlZpZXcqIC8q
c2VuZGVyKi8pCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAotSFJFU1VMVCBVSURlbGVn
YXRlOjpzZXRTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUiB0ZXh0KQorSFJFU1VMVCBVSURlbGVn
YXRlOjpzZXRTdGF0dXNUZXh0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHRleHQpCiB7
IAogICAgIGlmIChnVGVzdFJ1bm5lci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQogICAgICAgICBw
cmludGYoIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolU1xuIiwg
dGV4dCA/IHRleHQgOiBMIiIpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJRGVs
ZWdhdGU6OmRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUoSVdlYkRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGUqKiByZXN1bHQpCitIUkVTVUxUIFVJRGVsZWdhdGU6OmRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUoX0NPTV9PdXRwdHJfb3B0XyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZSoqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBtX2Rlc2t0b3BOb3RpZmljYXRp
b25zLmNvcHlSZWZUbyhyZXN1bHQpOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFVJ
RGVsZWdhdGU6OmNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdChJV2ViVmlldyogLypzZW5kZXIqLywg
SVdlYlVSTFJlcXVlc3QqIC8qcmVxdWVzdCovLCBJUHJvcGVydHlCYWcqIC8qd2luZG93RmVhdHVy
ZXMqLywgSVdlYlZpZXcqKiAvKm5ld1dlYlZpZXcqLykKK0hSRVNVTFQgVUlEZWxlZ2F0ZTo6Y3Jl
YXRlV2ViVmlld1dpdGhSZXF1ZXN0KF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSW5f
b3B0XyBJV2ViVVJMUmVxdWVzdCogLypyZXF1ZXN0Ki8sIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyog
Lyp3aW5kb3dGZWF0dXJlcyovLCBfQ09NX091dHB0cl9vcHRfIElXZWJWaWV3KiogbmV3V2ViVmll
dykKIHsKKyAgICBpZiAoIW5ld1dlYlZpZXcpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7Cisg
ICAgKm5ld1dlYlZpZXcgPSBudWxscHRyOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgVUlEZWxlZ2F0ZTo6ZHJhd0JhY2tncm91bmQoSVdlYlZpZXcqIC8qc2VuZGVyKi8sIEhE
QyAvKmhkYyovLCBjb25zdCBSRUNUKiAvKmRpcnR5UmVjdCovKQorSFJFU1VMVCBVSURlbGVnYXRl
OjpkcmF3QmFja2dyb3VuZChfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBIREMs
IF9Jbl8gY29uc3QgUkVDVCogLypkaXJ0eVJlY3QqLykKIHsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQogCi1IUkVTVUxUIFVJRGVsZWdhdGU6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVx
dWVzdChJV2ViVmlldyogLypzZW5kZXIqLywgSVdlYkZyYW1lKiBmcmFtZSwgSVdlYlNlY3VyaXR5
T3JpZ2luKiAvKm9yaWdpbiovLCBJV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciogLypsaXN0
ZW5lciovKQorSFJFU1VMVCBVSURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJl
cXVlc3QoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl9vcHRfIElXZWJGcmFtZSos
IF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiosIF9Jbl9vcHRfIElXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyKikKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFVJ
RGVsZWdhdGU6OmRpZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbihJRE9NRWxlbWVudCogLyplbGVt
ZW50Ki8pCitIUkVTVUxUIFVJRGVsZWdhdGU6OmRpZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbihf
SW5fb3B0XyBJRE9NRWxlbWVudCogLyplbGVtZW50Ki8pCiB7CiAgICAgcHJpbnRmKCJNSVNTSU5H
IFBMVUdJTiBCVVRUT04gUFJFU1NFRFxuIik7CiAgICAgcmV0dXJuIFNfT0s7CiB9Ci0KSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaAkocmV2aXNpb24gMTg4Njk4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTQg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0y
MDA3LCAyMDE0LTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMzM3ICs0MywxMDEgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRVbmRvTWFuYWdlcigpOwogCiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZv
aWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRk
UmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2
b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOworICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJV2ViVUlEZWxlZ2F0
ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVXZWJWaWV3V2l0
aFJlcXVlc3QoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QgKnJlcXVlc3QsCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSVdlYlZpZXcgKipuZXdXZWJWaWV3KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U2hvdyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZp
ZXcgKnNlbmRlcikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0Nsb3NlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
VmlldyAqc2VuZGVyKTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
ZWJWaWV3Rm9jdXMoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIpOwotCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdVbmZvY3VzKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyKTsKLQotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rmlyc3RSZXNwb25kZXIoSVdlYlZpZXcqLCBIV05E
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbWFrZUZpcnN0UmVzcG9uZGVyKElXZWJWaWV3KiwgSFdORCkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3Rh
dHVzVGV4dCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIHRleHQpOwotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdTdGF0dXNUZXh0KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
c2VuZGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnRleHQpIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdl
YlZpZXdBcmVUb29sYmFyc1Zpc2libGUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpz
ZW5kZXIsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqdmlzaWJsZSkgeyByZXR1
cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0VG9vbGJhcnNWaXNpYmxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVy
LAotICAgICAgICAvKiBbaW5dICovIEJPT0wgdmlzaWJsZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9
Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0lzU3RhdHVz
QmFyVmlzaWJsZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICp2aXNpYmxlKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTdGF0dXNCYXJW
aXNpYmxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAv
KiBbaW5dICovIEJPT0wgdmlzaWJsZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0lzUmVzaXphYmxlKCAKLSAgICAg
ICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wgKnJlc2l6YWJsZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UmVzaXphYmxlKCAKLSAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIEJPT0wgcmVzaXphYmxl
KSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwK
LSAgICAgICAgLyogW2luXSAqLyBSRUNUICpmcmFtZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZyYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
VmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFJFQ1QgKmZyYW1lKTsK
LQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDb250ZW50UmVjdCgg
Ci0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyogW2luXSAq
LyBSRUNUICpjb250ZW50UmVjdCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0NvbnRlbnRSZWN0KCAKLSAgICAgICAg
LyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IFJFQ1QgKmNvbnRlbnRSZWN0KSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNz
YWdlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgbWVzc2FnZSk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKCAKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgbWVzc2Fn
ZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOwotCi0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bFdpdGhQcm9tcHQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0gICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBtZXNzYWdlLAotICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVm
YXVsdFRleHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKLQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxXaXRoTWVzc2FnZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRl
ciwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIG1lc3NhZ2UsCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYkZyYW1lICppbml0aWF0ZWRCeUZyYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wgKnJlc3VsdCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lciggCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgKnJlc3VsdExpc3RlbmVyKSB7IHJldHVybiBFX05PVElNUEw7IH0K
LQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAg
LyogW2luXSAqLyBJUHJvcGVydHlCYWcgKmVsZW1lbnRJbmZvcm1hdGlvbiwKLSAgICAgICAgLyog
W2luXSAqLyBVSU5UIG1vZGlmaWVyRmxhZ3MpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVz
dChfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCosIF9D
T01fT3V0cHRyX29wdF8gSVdlYlZpZXcqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlZpZXdTaG93KF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIpIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJW
aWV3Q2xvc2UoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGb2N1cyhfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVy
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMo
X0luX29wdF8gSVdlYlZpZXcqIHNlbmRlcik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlZpZXdGaXJzdFJlc3BvbmRlcihfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRf
IEhXTkQqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbWFrZUZpcnN0UmVzcG9uZGVyKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBI
V05EKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0U3RhdHVzVGV4dChfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fIEJT
VFIgdGV4dCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdT
dGF0dXNUZXh0KF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIsIF9fZGVyZWZfb3B0X291dCBCU1RS
KiB0ZXh0KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViVmlld0FyZVRvb2xiYXJzVmlzaWJsZShfSW5fb3B0XyBJV2ViVmlldyog
c2VuZGVyLCBfT3V0XyBCT09MKiB2aXNpYmxlKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VG9vbGJhcnNWaXNpYmxlKF9Jbl9v
cHRfIElXZWJWaWV3KiBzZW5kZXIsIEJPT0wgdmlzaWJsZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdJc1N0YXR1c0Jh
clZpc2libGUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX091dF8gQk9PTCogdmlzaWJsZSkg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldFN0YXR1c0JhclZpc2libGUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgQk9PTCB2
aXNpYmxlKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViVmlld0lzUmVzaXphYmxlKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIs
IF9PdXRfIEJPT0wgKnJlc2l6YWJsZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFJlc2l6YWJsZShfSW5fb3B0XyBJV2ViVmll
dyogc2VuZGVyLCBCT09MIHJlc2l6YWJsZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3
KiBzZW5kZXIsIF9Jbl8gUkVDVCogZnJhbWUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX091dF8g
UkVDVCogZnJhbWUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRD
b250ZW50UmVjdChfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fIFJFQ1QqIGNvbnRlbnRS
ZWN0KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgd2ViVmlld0NvbnRlbnRSZWN0KF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIsIF9P
dXRfIFJFQ1QgKmNvbnRlbnRSZWN0KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVz
c2FnZShfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fIEJTVFIgbWVzc2FnZSk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkphdmFTY3JpcHRDb25maXJtUGFu
ZWxXaXRoTWVzc2FnZShfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fIEJTVFIgbWVzc2Fn
ZSwgX091dF8gQk9PTCAqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdChfSW5fb3B0XyBJV2Vi
Vmlldyogc2VuZGVyLCBfSW5fIEJTVFIgbWVzc2FnZSwgX0luXyBCU1RSIGRlZmF1bHRUZXh0LCBf
X2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29w
dF8gSVdlYlZpZXcqIHNlbmRlciwgX0luXyBCU1RSIG1lc3NhZ2UsIF9Jbl9vcHRfIElXZWJGcmFt
ZSogaW5pdGlhdGVkQnlGcmFtZSwgX091dF8gQk9PTCAqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1
bHRMaXN0ZW5lcihfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoX0luX29wdF8g
SVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8gSVByb3BlcnR5QmFnKiBlbGVtZW50SW5mb3JtYXRp
b24sIFVJTlQgbW9kaWZpZXJGbGFncykgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KElX
ZWJWaWV3KiwgSVByb3BlcnR5QmFnKiwgSE1FTlUsIEhNRU5VKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmFsaWRhdGVVc2Vy
SW50ZXJmYWNlSXRlbSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0g
ICAgICAgIC8qIFtpbl0gKi8gVUlOVCBpdGVtQ29tbWFuZElELAotICAgICAgICAvKiBbaW5dICov
IEJPT0wgZGVmYXVsdFZhbGlkYXRpb24sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCAqaXNWYWxpZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkUGVyZm9ybUFjdGlvbiggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gVUlOVCBpdGVtQ29tbWFu
ZElELAotICAgICAgICAvKiBbaW5dICovIFVJTlQgc2VuZGVyKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmll
dyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBJRGF0YU9iamVjdCAqZHJhZ2dpbmdJbmZv
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiAq
YWN0aW9uKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbiggCi0gICAgICAg
IC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbiwKLSAgICAgICAgLyogW2luXSAqLyBJRGF0YU9iamVj
dCAqZHJhZ2dpbmdJbmZvKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBM
UFBPSU5UIHBvaW50LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFdlYkRyYWdTb3VyY2VB
Y3Rpb24gKmFjdGlvbikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKCAKLSAgICAg
ICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBXZWJE
cmFnU291cmNlQWN0aW9uIGFjdGlvbiwKLSAgICAgICAgLyogW2luXSAqLyBMUFBPSU5UIHBvaW50
LAotICAgICAgICAvKiBbaW5dICovIElEYXRhT2JqZWN0ICpwYXN0ZWJvYXJkLAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElEYXRhT2JqZWN0ICoqbmV3UGFzdGVib2FyZCkgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5k
ZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gdm9pZCAqaXRlbSwKLSAgICAgICAgLyogW2luXSAqLyBJ
UHJvcGVydHlCYWcgKmVsZW1lbnQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfSAKLSAgICAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1l
bnRhdGlvbiggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqaGFzQ3VzdG9tTWVu
dXMpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFja0N1
c3RvbVBvcHVwTWVudSgvKiBbaW5dICovIElXZWJWaWV3KiBzZW5kZXIsIC8qIFtpbl0gKi8gSE1F
TlUsIC8qIFtpbl0gKi8gTFBQT0lOVCk7Ci0gICAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG1lYXN1cmVDdXN0b21NZW51SXRlbSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyogW2luXSAqLyB2b2lkICptZWFzdXJlSXRl
bSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkcmF3Q3VzdG9tTWVudUl0ZW0oIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gdm9pZCAqZHJhd0l0ZW0pIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0YShJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBF
X05PVElNUEw7IH0KLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVh
blVwQ3VzdG9tTWVudURyYXdpbmdEYXRhKElXZWJWaWV3KiwgSE1FTlUpIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblRha2VG
b2N1cyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyog
W2luXSAqLyBCT09MIGZvcndhcmQsCi0gICAgICAgIC8qIFtvdXRdICovIEJPT0wgKnJlc3VsdCkg
eyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB0YWtlRm9jdXMoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpz
ZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCBmb3J3YXJkKSB7IHJldHVybiBFX05PVElN
UEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0
ZXJVbmRvV2l0aFRhcmdldCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlVuZG9UYXJnZXQgKnRh
cmdldCwKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIGFjdGlvbk5hbWUsCi0gICAgICAgIC8qIFtp
bl0gKi8gSVVua25vd24gKmFjdGlvbkFyZyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0KCAKLSAgICAgICAgLyog
W2luXSAqLyBJV2ViVW5kb1RhcmdldCAqdGFyZ2V0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWN0aW9uVGl0bGUoIAotICAgICAgICAvKiBbaW5dICov
IEJTVFIgYWN0aW9uVGl0bGUpOwotICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKF9Jbl9vcHRfIElXZWJWaWV3KiwgVUlO
VCBpdGVtQ29tbWFuZElELCBCT09MIGRlZmF1bHRWYWxpZGF0aW9uLCBfT3V0XyBCT09MICppc1Zh
bGlkKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hvdWxkUGVyZm9ybUFjdGlvbihfSW5fb3B0XyBJV2ViVmlldyosIFVJTlQgaXRl
bUNvbW1hbmRJRCwgVUlOVCBzZW5kZXIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9y
RHJhZ2dpbmdJbmZvKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSURhdGFPYmplY3QqIGRy
YWdnaW5nSW5mbywgX091dF8gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKiBhY3Rpb24pIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihfSW5fb3B0XyBJV2ViVmlldyosIFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiBkcmFnZ2lu
Z0luZm8pIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KF9Jbl9vcHRfIElXZWJWaWV3
KiwgX0luXyBMUFBPSU5ULCBfT3V0XyBXZWJEcmFnU291cmNlQWN0aW9uKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihfSW5fb3B0XyBJV2ViVmlldyosIFdlYkRyYWdTb3VyY2VBY3Rp
b24sIF9Jbl8gTFBQT0lOVCwgX0luX29wdF8gSURhdGFPYmplY3QqIHBhc3RlYm9hcmQsIF9DT01f
T3V0cHRyX29wdF8gSURhdGFPYmplY3QqKiBuZXdQYXN0ZWJvYXJkKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoX0luX29wdF8g
SVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8gdm9pZCogaXRlbSwgX0luX29wdF8gSVByb3BlcnR5
QmFnKiBlbGVtZW50KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaGFzQ3VzdG9tTWVudUltcGxlbWVudGF0aW9uKF9PdXRfIEJPT0wq
IGhhc0N1c3RvbU1lbnVzKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dHJhY2tDdXN0b21Qb3B1cE1lbnUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX0luXyBITUVO
VSwgX0luXyBMUFBPSU5UKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bWVhc3VyZUN1c3RvbU1lbnVJdGVtKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIsIF9Jbl8gdm9p
ZCogbWVhc3VyZUl0ZW0pIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3Q3VzdG9tTWVudUl0ZW0oX0luX29wdF8gSVdlYlZpZXcq
IHNlbmRlciwgX0luXyB2b2lkKiBkcmF3SXRlbSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZEN1c3RvbU1lbnVEcmF3aW5nRGF0
YShfSW5fb3B0XyBJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5n
RGF0YShfSW5fb3B0XyBJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVGFrZUZvY3VzKF9Jbl9vcHRf
IElXZWJWaWV3KiBzZW5kZXIsIEJPT0wgZm9yd2FyZCwgX091dF8gQk9PTCogcmVzdWx0KSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dGFrZUZvY3VzKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIsIEJPT0wgZm9yd2FyZCkgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
Z2lzdGVyVW5kb1dpdGhUYXJnZXQoX0luX29wdF8gSVdlYlVuZG9UYXJnZXQqLCBfSW5fIEJTVFIg
YWN0aW9uTmFtZSwgX0luX29wdF8gSVVua25vd24qIGFjdGlvbkFyZyk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0KF9Jbl9v
cHRfIElXZWJVbmRvVGFyZ2V0Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEFjdGlvblRpdGxlKF9Jbl8gQlNUUik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHVuZG8oKTsKLSAgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVkbygpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBjYW5VbmRvKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQp
OwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5SZWRvKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpOwotCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByaW50RnJhbWUoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJh
bWUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmdHBEaXJl
Y3RvcnlUZW1wbGF0ZVBhdGgoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnBhdGgpOwotICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3SGVhZGVySGVpZ2h0KCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBmbG9hdCAqcmVzdWx0KTsKLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViVmlld0Zvb3RlckhlaWdodCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZmxvYXQgKnJlc3Vs
dCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdIZWFk
ZXJJblJlY3QoSVdlYlZpZXcqLCBSRUNUKiwgVUxPTkdfUFRSIGRyYXdpbmdDb250ZXh0KTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVj
dChJV2ViVmlldyosIFJFQ1QqLCBVTE9OR19QVFIgZHJhd2luZ0NvbnRleHQsIFVJTlQgcGFnZUlu
ZGV4LCBVSU5UIHBhZ2VDb3VudCk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlZpZXdQcmludGluZ01hcmdpblJlY3QoIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFJFQ1QgKnJl
Y3QpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5SdW5N
b2RhbCggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCAqY2FuUnVuQm9vbGVhbik7Ci0gICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZU1vZGFsRGlhbG9nKCAKLSAgICAgICAg
LyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIElXZWJVUkxS
ZXF1ZXN0ICpyZXF1ZXN0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElXZWJWaWV3ICoq
bmV3V2ViVmlldyk7Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJ1bk1vZGFsKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldyk7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzTWVudUJhclZpc2libGUo
IAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wgKnZpc2libGUpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRNZW51QmFyVmlzaWJsZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gQk9PTCB2aXNpYmxlKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuRGF0YWJhc2VTaXpl
TGltaXRQcm9tcHQoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZGlzcGxheU5hbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdl
YkZyYW1lICppbml0aWF0ZWRCeUZyYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wgKmFsbG93ZWQpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwYWludEN1c3RvbVNjcm9sbGJhciggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndl
YlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSERDIGhEQywKLSAgICAgICAgLyogW2luXSAqLyBS
RUNUIHJlY3QsCi0gICAgICAgIC8qIFtpbl0gKi8gV2ViU2Nyb2xsQmFyQ29udHJvbFNpemUgc2l6
ZSwKLSAgICAgICAgLyogW2luXSAqLyBXZWJTY3JvbGxiYXJDb250cm9sU3RhdGUgc3RhdGUsCi0g
ICAgICAgIC8qIFtpbl0gKi8gV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnQgcHJlc3NlZFBhcnQsCi0g
ICAgICAgIC8qIFtpbl0gKi8gQk9PTCB2ZXJ0aWNhbCwKLSAgICAgICAgLyogW2luXSAqLyBmbG9h
dCB2YWx1ZSwKLSAgICAgICAgLyogW2luXSAqLyBmbG9hdCBwcm9wb3J0aW9uLAotICAgICAgICAv
KiBbaW5dICovIFdlYlNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBwYXJ0cyk7Ci0gICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50Q3VzdG9tU2Nyb2xsQ29ybmVy
KCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2lu
XSAqLyBIREMgaERDLAotICAgICAgICAvKiBbaW5dICovIFJFQ1QgcmVjdCk7Ci0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KElX
ZWJWaWV3KiBzZW5kZXIsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJUHJvcGVydHlCYWcqIHdp
bmRvd0ZlYXR1cmVzLCBJV2ViVmlldyoqIG5ld1dlYlZpZXcpOwotCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdCYWNrZ3JvdW5kKElXZWJWaWV3KiBzZW5kZXIsIEhE
QywgY29uc3QgUkVDVCogZGlydHlSZWN0KTsKLQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3QoSVdlYlZpZXcqIHNl
bmRlciwgSVdlYkZyYW1lKiBmcmFtZSwgSVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIElXZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKiBsaXN0ZW5lcik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUHJlc3NNaXNzaW5nUGx1Z2luQnV0dG9uKElET01FbGVt
ZW50Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblVuZG8oX091
dF8gQk9PTCogcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y2FuUmVkbyhfT3V0XyBCT09MKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwcmludEZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZy
YW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZ0cERpcmVjdG9y
eVRlbXBsYXRlUGF0aChfSW5fb3B0XyBJV2ViVmlldyosIF9fZGVyZWZfb3B0X291dCBCU1RSKiBw
YXRoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0hlYWRl
ckhlaWdodChfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIGZsb2F0Kik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGb290ZXJIZWlnaHQoX0luX29wdF8gSVdl
YlZpZXcqLCBfT3V0XyBmbG9hdCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkcmF3SGVhZGVySW5SZWN0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBSRUNUKiwgVUxP
TkdfUFRSIGRyYXdpbmdDb250ZXh0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZHJhd0Zvb3RlckluUmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gUkVDVCosIFVM
T05HX1BUUiBkcmF3aW5nQ29udGV4dCwgVUlOVCBwYWdlSW5kZXgsIFVJTlQgcGFnZUNvdW50KTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1ByaW50aW5nTWFy
Z2luUmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIFJFQ1QqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuUnVuTW9kYWwoX0luX29wdF8gSVdlYlZpZXcqLCBf
T3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0
ZU1vZGFsRGlhbG9nKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5kZXIsIF9Jbl9vcHRfIElXZWJVUkxS
ZXF1ZXN0KiwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViVmlldyoqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuTW9kYWwoX0luX29wdF8gSVdlYlZpZXcqKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNNZW51QmFyVmlzaWJsZShfSW5fb3B0
XyBJV2ViVmlldyosIF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0TWVudUJhclZpc2libGUoX0luX29wdF8gSVdlYlZpZXcqLCBCT09MKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuRGF0YWJhc2VTaXplTGltaXRQ
cm9tcHQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgZGlzcGxheU5hbWUsIF9Jbl9vcHRf
IElXZWJGcmFtZSogaW5pdGlhdGVkQnlGcmFtZSwgX091dF8gQk9PTCogYWxsb3dlZCk7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50Q3VzdG9tU2Nyb2xsYmFyKF9J
bl9vcHRfIElXZWJWaWV3KiwgX0luXyBIREMsIFJFQ1QsIFdlYlNjcm9sbEJhckNvbnRyb2xTaXpl
LCBXZWJTY3JvbGxiYXJDb250cm9sU3RhdGUsCisgICAgICAgIFdlYlNjcm9sbGJhckNvbnRyb2xQ
YXJ0IHByZXNzZWRQYXJ0LCBCT09MIHZlcnRpY2FsLCBmbG9hdCB2YWx1ZSwgZmxvYXQgcHJvcG9y
dGlvbiwgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRDdXN0b21TY3JvbGxDb3JuZXIoX0luX29wdF8gSVdlYlZp
ZXcqLCBfSW5fIEhEQywgUkVDVCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdChfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBf
SW5fb3B0XyBJV2ViVVJMUmVxdWVzdCosIF9Jbl9vcHRfIElQcm9wZXJ0eUJhZyogd2luZG93RmVh
dHVyZXMsIF9DT01fT3V0cHRyX29wdF8gSVdlYlZpZXcqKik7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGRyYXdCYWNrZ3JvdW5kKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5k
ZXIsIF9Jbl8gSERDLCBfSW5fIGNvbnN0IFJFQ1QqIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVz
dChfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViRnJhbWUqLCBfSW5fb3B0
XyBJV2ViU2VjdXJpdHlPcmlnaW4qLCBfSW5fb3B0XyBJV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lciopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRQcmVzc01p
c3NpbmdQbHVnaW5CdXR0b24oX0luX29wdF8gSURPTUVsZW1lbnQqKTsKIAogcHJvdGVjdGVkOgog
ICAgIC8vIElXZWJVSURlbGVnYXRlUHJpdmF0ZQotCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHVudXNlZDEoKSB7IHJldHVybiBFX05PVElNUEw7IH0KLQogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bnVzZWQyKCkgeyByZXR1cm4gRV9OT1RJTVBM
OyB9Ci0gICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVudXNlZDMo
KSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViVmlld1Njcm9sbGVkKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmll
dyAqc2VuZGVyKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0FkZE1lc3NhZ2VUb0NvbnNvbGUoIAotICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiBt
ZXNzYWdlLAotICAgICAgICAvKiBbaW5dICovIGludCBsaW5lTnVtYmVyLAotICAgICAgICAvKiBb
aW5dICovIEJTVFIgdXJsLAotICAgICAgICAvKiBbaW5dICovIEJPT0wgaXNFcnJvcik7Ci0gICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTaG91bGRJbnRl
cnJ1cHRKYXZhU2NyaXB0KElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQot
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3UmVjZWl2
ZWRGb2N1cyggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlcikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlZpZXdMb3N0Rm9jdXMoSVdlYlZpZXcqLCBIV05EKSB7IHJldHVybiBFX05PVElNUEw7IH0K
LQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb0RyYWdEcm9wKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIElE
YXRhT2JqZWN0ICpkYXRhT2JqZWN0LAotICAgICAgICAvKiBbaW5dICovIElEcm9wU291cmNlICpk
cm9wU291cmNlLAotICAgICAgICAvKiBbaW5dICovIERXT1JEIG9rRWZmZWN0LAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIERXT1JEICpwZXJmb3JtZWRFZmZlY3QpOwotCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdHZXREbGdDb2RlKCAKLSAgICAgICAg
LyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIFVJTlQga2V5
Q29kZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBMT05HX1BUUiAqY29kZSk7Ci0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1BhaW50ZWQoIAotICAg
ICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIpOwotCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZy
YW1lLAotICAgICAgICAvKiBbaW5dICovIElXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luLAotICAg
ICAgICAvKiBbaW5dICovIEJTVFIgZGF0YWJhc2VJZGVudGlmaWVyKTsKLQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbWJlZGRlZFZpZXdXaXRoQXJndW1lbnRzKCAKLSAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAotICAgICAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSAqZnJhbWUsCi0gICAgICAgIC8qIFtpbl0gKi8gSVByb3BlcnR5QmFnICphcmd1bWVu
dHMsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSVdlYkVtYmVkZGVkVmlldyAqKnZpZXcp
OwotICAgICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmll
d0Nsb3NpbmcoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIpOwotICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U2V0Q3Vyc29yKElX
ZWJWaWV3KiBzZW5kZXIsIEhDVVJTT1IpOwotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3ZWJWaWV3RGlkSW52YWxpZGF0ZSggCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKnNlbmRlcik7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSgKLSAgICAgICAgLyogW291dF0gKi8gSVdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUqKiByZXN1bHQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U2Nyb2xsZWQoX0luX29wdF8gSVdlYlZpZXcq
IHNlbmRlcikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdBZGRNZXNzYWdlVG9Db25zb2xlKF9Jbl9vcHRfIElXZWJWaWV3
KiBzZW5kZXIsIF9Jbl8gQlNUUiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgX0luXyBCU1RSIHVy
bCwgQk9PTCBpc0Vycm9yKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
d2ViVmlld1Nob3VsZEludGVycnVwdEphdmFTY3JpcHQoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0
XyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdSZWNlaXZlZEZvY3VzKF9Jbl9vcHRfIElXZWJWaWV3KiBzZW5k
ZXIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB3ZWJWaWV3TG9zdEZvY3VzKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBIV05EKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZG9EcmFnRHJvcChfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJRGF0YU9i
amVjdCosIF9Jbl9vcHRfIElEcm9wU291cmNlKiwgRFdPUkQgb2tFZmZlY3QsIF9PdXRfIERXT1JE
KiBwZXJmb3JtZWRFZmZlY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB3ZWJWaWV3R2V0RGxnQ29kZShfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBVSU5UIGtleUNv
ZGUsIF9PdXRfIExPTkdfUFRSKiBjb2RlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgd2ViVmlld1BhaW50ZWQoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlcik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShf
SW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViRnJhbWUqLCBfSW5fb3B0XyBJ
V2ViU2VjdXJpdHlPcmlnaW4qLCBfSW5fIEJTVFIgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZW1iZWRkZWRWaWV3V2l0aEFyZ3VtZW50
cyhfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyLCBfSW5fb3B0XyBJV2ViRnJhbWUqLCBfSW5fb3B0
XyBJUHJvcGVydHlCYWcqIGFyZ3VtZW50cywgX0NPTV9PdXRwdHJfb3B0XyBJV2ViRW1iZWRkZWRW
aWV3KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Q2xv
c2luZyhfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgd2ViVmlld1NldEN1cnNvcihfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVy
LCBfSW5fIEhDVVJTT1IpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
ZWJWaWV3RGlkSW52YWxpZGF0ZShfSW5fb3B0XyBJV2ViVmlldyogc2VuZGVyKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZShfQ09NX091dHB0cl9vcHRfIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKiopOwog
Ci0gICAgVUxPTkcgICAgICAgICAgICAgICAgICAgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3Jl
ZkNvdW50IHsgMSB9OwogCiBwcml2YXRlOgogICAgIFJFQ1QgbV9mcmFtZTsKSW5kZXg6IFRvb2xz
L1dpbkxhdW5jaGVyL0FjY2Vzc2liaWxpdHlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2luTGF1bmNoZXIvQWNjZXNzaWJpbGl0eURlbGVnYXRlLmNwcAkocmV2aXNpb24gMTg4Njk4
KQorKysgVG9vbHMvV2luTGF1bmNoZXIvQWNjZXNzaWJpbGl0eURlbGVnYXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzQsOSArMzQsMTEgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHdp
bmluZXQuaD4KIAotSFJFU1VMVCBBY2Nlc3NpYmlsaXR5RGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNl
KFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBBY2Nlc3NpYmlsaXR5RGVs
ZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwog
ICAgIGlmIChJc0VxdWFsSUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxJQWNjZXNzaWJpbGl0eURlbGVnYXRlKj4odGhpcyk7CiAgICAgZWxz
ZSBpZiAoSXNFcXVhbElJRChyaWlkLCBJSURfSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSkpCkBAIC00
OCwxMiArNTAsMTIgQEAgSFJFU1VMVCBBY2Nlc3NpYmlsaXR5RGVsZWdhdGU6OlF1ZXJ5SW50ZQog
ICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBBY2Nlc3NpYmlsaXR5RGVsZWdhdGU6OkFkZFJl
Zih2b2lkKQorVUxPTkcgQWNjZXNzaWJpbGl0eURlbGVnYXRlOjpBZGRSZWYoKQogewogICAgIHJl
dHVybiArK21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIEFjY2Vzc2liaWxpdHlEZWxlZ2F0ZTo6UmVs
ZWFzZSh2b2lkKQorVUxPTkcgQWNjZXNzaWJpbGl0eURlbGVnYXRlOjpSZWxlYXNlKCkKIHsKICAg
ICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkluZGV4OiBU
b29scy9XaW5MYXVuY2hlci9BY2Nlc3NpYmlsaXR5RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XaW5MYXVuY2hlci9BY2Nlc3NpYmlsaXR5RGVsZWdhdGUuaAkocmV2aXNpb24gMTg4Njk4
KQorKysgVG9vbHMvV2luTGF1bmNoZXIvQWNjZXNzaWJpbGl0eURlbGVnYXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDE1ICszMCwxNSBAQAogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5RGVsZWdhdGUgOiBw
dWJsaWMgSUFjY2Vzc2liaWxpdHlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgQWNjZXNzaWJpbGl0
eURlbGVnYXRlKCkgOiBtX3JlZkNvdW50KDEpIHsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVj
dCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0g
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIEFj
Y2Vzc2liaWxpdHlEZWxlZ2F0ZSgpIHsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRS
ZWYoKTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJlRnJhbWVMb2FkU3RhcnRl
ZEV2ZW50cygpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJlRnJh
bWVMb2FkRmluaXNoZWRFdmVudHMoKTsKIHByaXZhdGU6Ci0gICAgaW50IG1fcmVmQ291bnQ7Cisg
ICAgaW50IG1fcmVmQ291bnQgeyAxIH07CiB9OwogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dpbkxh
dW5jaGVyL0NvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvQ29tbW9u
LmNwcAkocmV2aXNpb24gMTg4Njk4KQorKysgVG9vbHMvV2luTGF1bmNoZXIvQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgY3JlYXRlQ3Jhc2hSZXBvcnQo
RVhDRVBUSU9OX1BPSU5URVIKICAgICAgICAgJiYgOjpHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9B
TFJFQURZX0VYSVNUUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RkOjp3c3RyaW5nIGZpbGVO
YW1lID0gZGlyZWN0b3J5ICsgTCJcXENyYXNoUmVwb3J0LmRtcCI7CisgICAgc3RkOjp3c3RyaW5n
IGZpbGVOYW1lID0gc3RkOjp3c3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihkaXJl
Y3RvcnkpKSArIEwiXFxDcmFzaFJlcG9ydC5kbXAiOwogICAgIEhBTkRMRSBtaW5pRHVtcEZpbGUg
PSA6OkNyZWF0ZUZpbGUoZmlsZU5hbWUuY19zdHIoKSwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JF
QVRFX0FMV0FZUywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKIAogICAgIGlmIChtaW5pRHVt
cEZpbGUgJiYgbWluaUR1bXBGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CkluZGV4OiBU
b29scy9XaW5MYXVuY2hlci9ET01EZWZhdWx0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2luTGF1bmNoZXIvRE9NRGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiAxODg2OTgpCisrKyBUb29s
cy9XaW5MYXVuY2hlci9ET01EZWZhdWx0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBBbnRob255IEpvaG5zb24uIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqCkBAIC0yOSw5ICsyOSwxMSBAQAogI2luY2x1ZGUgIkRPTURl
ZmF1bHRJbXBsLmgiCiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUhSRVNVTFQgV2ViU2NyaXB0
T2JqZWN0OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hS
RVNVTFQgV2ViU2NyaXB0T2JqZWN0OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0ID0gMDsKKyAg
ICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcHB2T2Jq
ZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkK
ICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJTY3JpcHRPYmplY3QqPih0aGlz
KTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYlNjcmlwdE9iamVjdCkp
CkBAIC00MywxMiArNDUsMTIgQEAgSFJFU1VMVCBXZWJTY3JpcHRPYmplY3Q6OlF1ZXJ5SW50ZXJm
YWNlKAogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBXZWJTY3JpcHRPYmplY3Q6OkFkZFJl
Zih2b2lkKQorVUxPTkcgV2ViU2NyaXB0T2JqZWN0OjpBZGRSZWYoKQogewogICAgIHJldHVybiAr
K21fcmVmQ291bnQ7CiB9CiAKLVVMT05HIFdlYlNjcmlwdE9iamVjdDo6UmVsZWFzZSh2b2lkKQor
VUxPTkcgV2ViU2NyaXB0T2JqZWN0OjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBuZXdSZWYgPSAt
LW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC01OCw5ICs2MCwxMSBAQCBVTE9ORyBX
ZWJTY3JpcHRPYmplY3Q6OlJlbGVhc2Uodm9pZCkKIH0KIAogLy8gRE9NT2JqZWN0IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUhSRVNVTFQgRE9NT2JqZWN0OjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoq
IHBwdk9iamVjdCkKK0hSRVNVTFQgRE9NT2JqZWN0OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKIHsKLSAgICAqcHB2T2JqZWN0
ID0gMDsKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAg
ICAqcHB2T2JqZWN0ID0gbnVsbHB0cjsKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lE
T01PYmplY3QpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SURPTU9iamVjdCo+
KHRoaXMpOwogICAgIGVsc2UKQEAgLTcyLDkgKzc2LDkgQEAgSFJFU1VMVCBET01PYmplY3Q6OlF1
ZXJ5SW50ZXJmYWNlKFJFRklJRAogCiAKIC8vIERPTUV2ZW50TGlzdGVuZXIgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
SFJFU1VMVCBET01FdmVudExpc3RlbmVyOjpRdWVyeUludGVyZmFjZShjb25zdCBJSUQgJnJpaWQs
IHZvaWQqKiBwcHZPYmplY3QpCitIUkVTVUxUIERPTUV2ZW50TGlzdGVuZXI6OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewot
ICAgICpwcHZPYmplY3QgPSAwOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJ
c0VxdWFsR1VJRChyaWlkLCBJSURfSURPTUV2ZW50TGlzdGVuZXIpKQogICAgICAgICAqcHB2T2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SURPTUV2ZW50TGlzdGVuZXIqPih0aGlzKTsKICAgICBlbHNlCkBA
IC04NCwxMiArODgsMTIgQEAgSFJFU1VMVCBET01FdmVudExpc3RlbmVyOjpRdWVyeUludGVyZmFj
ZQogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBET01FdmVudExpc3RlbmVyOjpBZGRSZWYo
dm9pZCkKK1VMT05HIERPTUV2ZW50TGlzdGVuZXI6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuIFdl
YlNjcmlwdE9iamVjdDo6QWRkUmVmKCk7CiB9CiAKLVVMT05HIERPTUV2ZW50TGlzdGVuZXI6OlJl
bGVhc2Uodm9pZCkKK1VMT05HIERPTUV2ZW50TGlzdGVuZXI6OlJlbGVhc2UoKQogewogICAgIHJl
dHVybiBXZWJTY3JpcHRPYmplY3Q6OlJlbGVhc2UoKTsKIH0KSW5kZXg6IFRvb2xzL1dpbkxhdW5j
aGVyL0RPTURlZmF1bHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvRE9N
RGVmYXVsdEltcGwuaAkocmV2aXNpb24gMTg4Njk4KQorKysgVG9vbHMvV2luTGF1bmNoZXIvRE9N
RGVmYXVsdEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQW50aG9ueSBKb2huc29uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQW50aG9ueSBKb2huc29uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDExIEJyZW50IEZ1bGdoYW0uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0zMSw3ICszMiw3IEBACiAKIGNsYXNzIFdlYlNjcmlwdE9iamVj
dCA6IHB1YmxpYyBJV2ViU2NyaXB0T2JqZWN0IHsKIHB1YmxpYzoKLSAgICBXZWJTY3JpcHRPYmpl
Y3QoKSA6IG1fcmVmQ291bnQoMCkKKyAgICBXZWJTY3JpcHRPYmplY3QoKQogICAgIHsKICAgICB9
CiAKQEAgLTQwLDUxICs0MSw1MSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSVVua25vd24K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVG
SUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9E
Q0FMTFRZUEUgQWRkUmVmKHZvaWQpOwotICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZ
UEUgUmVsZWFzZSh2b2lkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7Cisg
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CiAKICAgICAvLyBJ
V2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRo
cm93RXhjZXB0aW9uKEJTVFIsIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZChCU1RSLCBj
b25zdCBWQVJJQU5UW10sIGludCwgVkFSSUFOVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChCU1RS
LCBWQVJJQU5UKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShCU1RSKSB7IHJldHVybiBFX05PVElN
UEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVz
ZW50YXRpb24oQlNUUiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW50LCBW
QVJJQU5UKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW50LCBWQVJJ
QU5UKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEV4Y2VwdGlvbihCU1RSKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKF9Jbl8gQlNU
UiwgX091dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiwgX19pbl9l
Y291bnQoY0FyZ3MpIGNvbnN0IFZBUklBTlRbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJQU5UKikg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGV2YWx1YXRlV2ViU2NyaXB0KF9Jbl8gQlNUUiwgX091dF8gVkFSSUFOVCopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1v
dmVXZWJTY3JpcHRLZXkoX0luXyBCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oX19kZXJl
Zl9vcHRfb3V0IEJTVFIqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkLCBfT3V0
XyBWQVJJQU5UKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQsIFZBUklB
TlQpICB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0RXhjZXB0aW9uKF9Jbl8gQlNUUikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgVUxPTkcgbV9yZWZDb3VudDsKKyAgICBVTE9ORyBtX3JlZkNvdW50
IHsgMCB9OwogfTsKIAogCiBjbGFzcyBET01PYmplY3QgOiBwdWJsaWMgV2ViU2NyaXB0T2JqZWN0
LCBwdWJsaWMgSURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQs
IHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBw
dk9iamVjdCk7CiB9OwogCiAKIGNsYXNzIERPTUV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRE9NT2Jq
ZWN0LCBwdWJsaWMgSURPTUV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIC8vIElVbmtub3du
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIFJlbGVhc2Uodm9pZCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2
T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOwor
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOwogCiAgICAgLy8g
SVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
aHJvd0V4Y2VwdGlvbihCU1RSLCBCT09MKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKEJTVFIs
IGNvbnN0IFZBUklBTlRbXSwgaW50LCBWQVJJQU5UKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChC
U1RSLCBWQVJJQU5UKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoQlNUUikgIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdS
ZXByZXNlbnRhdGlvbihCU1RSKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQg
aW50LCBWQVJJQU5UKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgodW5zaWduZWQgaW50
LCBWQVJJQU5UKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oX0lu
XyBCU1RSLCBfT3V0XyBCT09MKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKF9Jbl8gQlNUUiwg
X19pbl9lY291bnQoY0FyZ3MpIGNvbnN0IFZBUklBTlRbXSwgaW50IGNBcmdzLCBfT3V0XyBWQVJJ
QU5UKikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdChfSW5fIEJTVFIsIF9PdXRfIFZBUklBTlQqKSAg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJlbW92ZVdlYlNjcmlwdEtleShfSW5fIEJTVFIpICB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRp
b24oX19kZXJlZl9vcHRfb3V0IEJTVFIqKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCh1bnNp
Z25lZCwgX091dF8gVkFSSUFOVCopICB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KHVuc2ln
bmVkLCBWQVJJQU5UKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbihfSW5fIEJTVFIpIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQogCiAgICAgLy8gSURPTUV2ZW50TGlzdGVuZXIKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaGFuZGxlRXZlbnQoSURPTUV2ZW50KikgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhbmRsZUV2ZW50
KF9Jbl9vcHRfIElET01FdmVudCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogfTsKIAogI2VuZGlm
CkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9QYWdlTG9hZFRlc3RDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1BhZ2VMb2FkVGVzdENsaWVudC5jcHAJKHJldmlzaW9u
IDE4ODY5OCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1BhZ2VMb2FkVGVzdENsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzYsMTkgKzM2LDggQEAgc3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIHdhaXRG
b3JOZXdSZQogCiBQYWdlTG9hZFRlc3RDbGllbnQ6OlBhZ2VMb2FkVGVzdENsaWVudChXaW5MYXVu
Y2hlciogaG9zdCwgYm9vbCBwYWdlTG9hZFRlc3RpbmcpCiAgICAgOiBtX2hvc3QoaG9zdCkKLSAg
ICAsIG1fcGFnZUxvYWRFbmRUaW1lKDApCi0gICAgLCBtX3RvdGFsVGltZSgwKQotICAgICwgbV90
b3RhbFNxdWFyZVJvb3RzT2ZUaW1lKDApCi0gICAgLCBtX2xvbmdlc3RUaW1lKDApCi0gICAgLCBt
X2dlb21ldHJpY01lYW5Qcm9kdWN0U3VtKDEuMCkKLSAgICAsIG1fZnJhbWVzKDApCi0gICAgLCBt
X29uTG9hZEV2ZW50cygwKQotICAgICwgbV9jdXJyZW50VVJMSW5kZXgoMCkKLSAgICAsIG1fY3Vy
cmVudFJlcGV0aXRpb24oMCkKLSAgICAsIG1fcGFnZXNUaW1lZCgwKQogICAgICwgbV9yZXBldGl0
aW9ucyhwYWdlTG9hZFRlc3RpbmcgPyAyMCA6IDEpCiAgICAgLCBtX3dhaXRGb3JMb2FkVG9SZWFs
bHlFbmQodGhpcywgJlBhZ2VMb2FkVGVzdENsaWVudDo6ZW5kUGFnZUxvYWQpCi0gICAgLCBtX2N1
cnJlbnRQYWdlTG9hZEZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9wYWdlTG9hZFRlc3RpbmcocGFn
ZUxvYWRUZXN0aW5nKQogewogfQpJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvUGFnZUxvYWRUZXN0
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvUGFnZUxvYWRUZXN0Q2xp
ZW50LmgJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL1dpbkxhdW5jaGVyL1BhZ2VMb2FkVGVz
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZHVtcFJ1blN0YXRpc3RpY3MoKTsKIAogICAgIFdpbkxhdW5jaGVyKiBtX2hvc3Q7
Ci0gICAgQ0ZBYnNvbHV0ZVRpbWUgbV9wYWdlTG9hZEVuZFRpbWU7Ci0gICAgQ0ZUaW1lSW50ZXJ2
YWwgbV90b3RhbFRpbWU7Ci0gICAgQ0ZUaW1lSW50ZXJ2YWwgbV90b3RhbFNxdWFyZVJvb3RzT2ZU
aW1lOwotICAgIENGVGltZUludGVydmFsIG1fbG9uZ2VzdFRpbWU7CisgICAgQ0ZBYnNvbHV0ZVRp
bWUgbV9wYWdlTG9hZEVuZFRpbWUgeyAwIH07CisgICAgQ0ZUaW1lSW50ZXJ2YWwgbV90b3RhbFRp
bWUgeyAwIH07CisgICAgQ0ZUaW1lSW50ZXJ2YWwgbV90b3RhbFNxdWFyZVJvb3RzT2ZUaW1lIHsg
MCB9OworICAgIENGVGltZUludGVydmFsIG1fbG9uZ2VzdFRpbWUgeyAwIH07CiAgICAgVmVjdG9y
PENGQWJzb2x1dGVUaW1lPiBtX3N0YXJ0VGltZXM7CiAgICAgVmVjdG9yPENGQWJzb2x1dGVUaW1l
PiBtX2VuZFRpbWVzOwogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fbG9hZGluZ1N1YnJlc291cmNl
czsKQEAgLTE0MywxNSArMTQzLDE1IEBAIHByaXZhdGU6CiAjaWYgT1MoV0lORE9XUykKICAgICBf
YnN0cl90IG1fdXJsOwogI2VuZGlmCi0gICAgZG91YmxlIG1fZ2VvbWV0cmljTWVhblByb2R1Y3RT
dW07Ci0gICAgdW5zaWduZWQgbV9mcmFtZXM7Ci0gICAgdW5zaWduZWQgbV9vbkxvYWRFdmVudHM7
Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50VVJMSW5kZXg7Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50
UmVwZXRpdGlvbjsKLSAgICB1bnNpZ25lZCBtX3BhZ2VzVGltZWQ7CisgICAgZG91YmxlIG1fZ2Vv
bWV0cmljTWVhblByb2R1Y3RTdW0geyAxLjAgfTsKKyAgICB1bnNpZ25lZCBtX2ZyYW1lcyB7IDAg
fTsKKyAgICB1bnNpZ25lZCBtX29uTG9hZEV2ZW50cyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2N1
cnJlbnRVUkxJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRSZXBldGl0aW9uIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fcGFnZXNUaW1lZCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3Jl
cGV0aXRpb25zOwogCi0gICAgYm9vbCBtX2N1cnJlbnRQYWdlTG9hZEZpbmlzaGVkOworICAgIGJv
b2wgbV9jdXJyZW50UGFnZUxvYWRGaW5pc2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhZ2VM
b2FkVGVzdGluZzsKIH07CiAKSW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVn
YXRlLmNwcAkocmV2aXNpb24gMTg4Njk4KQorKysgVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJV
SURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbS4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBbGV4IENocmlzdGVuc2VuLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKQEAgLTM3LDIwICszNywyMyBAQAogCiBzdGF0aWMgY29uc3Qg
aW50IE1BUkdJTiA9IDIwOwogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFByaW50V2ViVUlE
ZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZShJV2ViVmlldyosIEJT
VFIgbWVzc2FnZSkKK0hSRVNVTFQgUHJpbnRXZWJVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxl
cnRQYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIG1lc3NhZ2Up
CiB7CiAgICAgOjpNZXNzYWdlQm94VygwLCBtZXNzYWdlLCBMIkphdmFTY3JpcHQgQWxlcnQiLCBN
Ql9PSyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UHJpbnRXZWJVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2Uo
SVdlYlZpZXcqLCBCU1RSIG1lc3NhZ2UsIEJPT0wqIHJlc3VsdCkKK0hSRVNVTFQgUHJpbnRXZWJV
SURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8g
SVdlYlZpZXcqLCBfSW5fIEJTVFIgbWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQogewogICAg
ICpyZXN1bHQgPSA6Ok1lc3NhZ2VCb3hXKDAsIG1lc3NhZ2UsIEwiSmF2YVNjcmlwdCBDb25maXJt
IiwgTUJfT0tDQU5DRUwpID09IElET0s7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQg
UHJpbnRXZWJVSURlbGVnYXRlOjpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QoSVdlYlZpZXcqLCBJ
V2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlZpZXcqKikKK0hSRVNVTFQgUHJpbnRXZWJVSURl
bGVnYXRlOjpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5f
b3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViVmlldyoq
IG5ld1dlYlZpZXcpCiB7CisgICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworICAgICpuZXdXZWJWaWV3ID0gbnVsbHB0cjsKICAgICBpZiAoIXJlcXVlc3QpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKQEAgLTc4LDkgKzgxLDExIEBAIEhSRVNVTFQgUHJp
bnRXZWJVSURlbGVnYXRlOjpjcmVhdGVXZWJWaWUKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJF
U1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lk
KiogcHB2T2JqZWN0KQorSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQogewotICAg
ICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0VxdWFsSUlEKHJp
aWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2Vi
VUlEZWxlZ2F0ZSo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxJSUQocmlpZCwgSUlEX0lX
ZWJVSURlbGVnYXRlKSkKQEAgLTkyLDEyICs5NywxMiBAQCBIUkVTVUxUIFByaW50V2ViVUlEZWxl
Z2F0ZTo6UXVlcnlJbnRlcmZhCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLVVMT05HIFByaW50V2Vi
VUlEZWxlZ2F0ZTo6QWRkUmVmKHZvaWQpCitVTE9ORyBQcmludFdlYlVJRGVsZWdhdGU6OkFkZFJl
ZigpCiB7CiAgICAgcmV0dXJuICsrbV9yZWZDb3VudDsKIH0KIAotVUxPTkcgUHJpbnRXZWJVSURl
bGVnYXRlOjpSZWxlYXNlKHZvaWQpCitVTE9ORyBQcmludFdlYlVJRGVsZWdhdGU6OlJlbGVhc2Uo
KQogewogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1JlZikK
QEAgLTEwOSw3ICsxMTQsNyBAQCBVTE9ORyBQcmludFdlYlVJRGVsZWdhdGU6OlJlbGVhc2Uodm9p
ZCkKIHR5cGVkZWYgX2NvbV9wdHJfdDxfY29tX0lJSUQ8SVdlYkZyYW1lLCAmX191dWlkb2YoSVdl
YkZyYW1lKT4+IElXZWJGcmFtZVB0cjsKIHR5cGVkZWYgX2NvbV9wdHJfdDxfY29tX0lJSUQ8SVdl
YkZyYW1lUHJpdmF0ZSwgJl9fdXVpZG9mKElXZWJGcmFtZVByaXZhdGUpPj4gSVdlYkZyYW1lUHJp
dmF0ZVB0cjsKIAotSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdQcmludGluZ01h
cmdpblJlY3QoSVdlYlZpZXcqIHZpZXcsIFJFQ1QqIHJlY3QpCitIUkVTVUxUIFByaW50V2ViVUlE
ZWxlZ2F0ZTo6d2ViVmlld1ByaW50aW5nTWFyZ2luUmVjdChfSW5fb3B0XyBJV2ViVmlldyogdmll
dywgX091dF8gUkVDVCogcmVjdCkKIHsKICAgICBpZiAoIXZpZXcgfHwgIXJlY3QpCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CkBAIC0xMzQsNyArMTM5LDE1IEBAIEhSRVNVTFQgUHJpbnRXZWJV
SURlbGVnYXRlOjp3ZWJWaWV3UHJpbnQKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBQ
cmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdIZWFkZXJIZWlnaHQoSVdlYlZpZXcqIHdlYlZpZXcs
IGZsb2F0KiBoZWlnaHQpCitIUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3KiwgV2ViRHJhZ1NvdXJjZUFjdGlvbiwg
X0luXyBMUFBPSU5ULCBfSW5fb3B0XyBJRGF0YU9iamVjdCosIF9DT01fT3V0cHRyX29wdF8gSURh
dGFPYmplY3QqKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CisgICAgKnJlc3VsdCA9IG51bGxwdHI7CisgICAgcmV0dXJuIEVfTk9USU1QTDsK
K30KKworSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdIZWFkZXJIZWlnaHQoX0lu
X29wdF8gSVdlYlZpZXcqIHdlYlZpZXcsIF9PdXRfIGZsb2F0KiBoZWlnaHQpCiB7CiAgICAgaWYg
KCF3ZWJWaWV3IHx8ICFoZWlnaHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0xNTAs
NyArMTYzLDcgQEAgSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdIZWFkZQogICAg
IHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0Zv
b3RlckhlaWdodChJV2ViVmlldyogd2ViVmlldywgZmxvYXQqIGhlaWdodCkKK0hSRVNVTFQgUHJp
bnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3Rm9vdGVySGVpZ2h0KF9Jbl9vcHRfIElXZWJWaWV3KiB3
ZWJWaWV3LCBfT3V0XyBmbG9hdCogaGVpZ2h0KQogewogICAgIGlmICghd2ViVmlldyB8fCAhaGVp
Z2h0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTY2LDcgKzE3OSw3IEBAIEhSRVNV
TFQgUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3Rm9vdGUKICAgICByZXR1cm4gU19PSzsKIH0K
IAotSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdIZWFkZXJJblJlY3QoSVdlYlZpZXcq
IHdlYlZpZXcsIFJFQ1QqIHJlY3QsIFVMT05HX1BUUiBkcmF3aW5nQ29udGV4dCkKK0hSRVNVTFQg
UHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KF9Jbl9vcHRfIElXZWJWaWV3KiB3
ZWJWaWV3LCBfSW5fIFJFQ1QqIHJlY3QsIFVMT05HX1BUUiBkcmF3aW5nQ29udGV4dCkKIHsKICAg
ICBpZiAoIXdlYlZpZXcgfHwgIXJlY3QpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0x
OTUsNyArMjA4LDcgQEAgSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdIZWFkZXJJbgog
ICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6ZHJhd0Zv
b3RlckluUmVjdChJV2ViVmlldyogd2ViVmlldywgUkVDVCogcmVjdCwgVUxPTkdfUFRSIGRyYXdp
bmdDb250ZXh0LCBVSU5UIHBhZ2VJbmRleCwgVUlOVCBwYWdlQ291bnQpCitIUkVTVUxUIFByaW50
V2ViVUlEZWxlZ2F0ZTo6ZHJhd0Zvb3RlckluUmVjdChfSW5fb3B0XyBJV2ViVmlldyogd2ViVmll
dywgX0luXyBSRUNUKiByZWN0LCBVTE9OR19QVFIgZHJhd2luZ0NvbnRleHQsIFVJTlQgcGFnZUlu
ZGV4LCBVSU5UIHBhZ2VDb3VudCkKIHsKICAgICBpZiAoIXdlYlZpZXcgfHwgIXJlY3QpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CkBAIC0yMjMsMyArMjM2LDExIEBAIEhSRVNVTFQgUHJpbnRX
ZWJVSURlbGVnYXRlOjpkcmF3Rm9vdGVySW4KIAogICAgIHJldHVybiBTX09LOwogfQorCitIUkVT
VUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6Y3JlYXRlTW9kYWxEaWFsb2coX0luX29wdF8gSVdlYlZp
ZXcqLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCosIF9DT01fT3V0cHRyX29wdF8gSVdlYlZpZXcq
KiB3ZWJWaWV3KQoreworICAgIGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKyAgICAqd2ViVmlldyA9IG51bGxwdHI7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KSW5k
ZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxODg2OTgp
CisrKyBUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE0LTIw
MTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEJyZW50IEZ1bGdoYW0uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0zMSw3OSArMzEsNzkgQEAKIAogY2xhc3MgUHJpbnRXZWJVSURlbGVnYXRlIDogcHVibGljIElX
ZWJVSURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBQcmludFdlYlVJRGVsZWdhdGUoKSA6IG1fcmVm
Q291bnQoMSkge30KKyAgICBQcmludFdlYlVJRGVsZWdhdGUoKSB7IH0KIAogICAgIC8vIElVbmtu
b3duCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIEFkZFJlZih2b2lkKTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIFJlbGVhc2Uodm9pZCk7Ci0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KElXZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3Qq
LCBJV2ViVmlldyoqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
Vmlld1Nob3coSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0Nsb3NlKElXZWJWaWV3KikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZp
ZXdGb2N1cyhJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3VW5mb2N1cyhJV2ViVmlldyopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJW
aWV3Rmlyc3RSZXNwb25kZXIoSVdlYlZpZXcqLCBIV05EKikgIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtYWtlRmlyc3RSZXNwb25k
ZXIoSVdlYlZpZXcqLCBIV05EKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U3RhdHVzVGV4dChJV2ViVmlldyosIEJTVFIpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB3ZWJWaWV3U3RhdHVzVGV4dChJV2ViVmlldyosIEJTVFIqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0FyZVRvb2xi
YXJzVmlzaWJsZShJV2ViVmlldyosIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VG9vbGJhcnNWaXNpYmxlKElXZWJW
aWV3KiwgQk9PTCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHdlYlZpZXdJc1N0YXR1c0JhclZpc2libGUoSVdlYlZpZXcqLCBCT09M
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldFN0YXR1c0JhclZpc2libGUoSVdlYlZpZXcqLCBCT09MKSB7IHJldHVybiBFX05P
VElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0lz
UmVzaXphYmxlKElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRSZXNpemFibGUoSVdlYlZpZXcqLCBC
T09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0RnJhbWUoSVdlYlZpZXcqLCBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGcmFtZShJV2Vi
VmlldyosIFJFQ1QqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0Q29udGVudFJlY3QoSVdlYlZpZXcqLCBSRUNUKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdl
YlZpZXdDb250ZW50UmVjdChJV2ViVmlldyosIFJFQ1QqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZShJV2ViVmlldyosIEJTVFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoSVdl
YlZpZXcqLCBCU1RSLCBCT09MKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQoSVdlYlZpZXcqLCBCU1RS
LCBCU1RSLCBCU1RSKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
KElXZWJWaWV3KiwgQlNUUiwgSVdlYkZyYW1lKiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5PcGVuUGFuZWxGb3JG
aWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyKElXZWJWaWV3KiwgSVdlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KElXZWJWaWV3KiwgSVByb3Bl
cnR5QmFnKiwgVUlOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KElXZWJWaWV3Kiwg
SVByb3BlcnR5QmFnKiwgSE1FTlUsIEhNRU5VKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbGlkYXRlVXNlckludGVyZmFjZUl0
ZW0oSVdlYlZpZXcqLCBVSU5ULCBCT09MLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZFBlcmZvcm1BY3Rpb24o
SVdlYlZpZXcqLCBVSU5ULCBVSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRy
YWdnaW5nSW5mbyhJV2ViVmlldyosIElEYXRhT2JqZWN0KiwgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKElXZWJWaWV3KiwgV2Vi
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBJRGF0YU9iamVjdCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50KElXZWJWaWV3KiwgTFBQT0lOVCwgV2ViRHJhZ1NvdXJjZUFjdGlvbiopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oSVdlYlZpZXcqLCBXZWJEcmFnU291cmNlQWN0
aW9uLCBMUFBPSU5ULCBJRGF0YU9iamVjdCosIElEYXRhT2JqZWN0KiopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChJV2ViVmlldyosIHZvaWQqLCBJUHJvcGVydHlCYWcqKSB7IHJldHVybiBF
X05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ3Vz
dG9tTWVudUltcGxlbWVudGF0aW9uKEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHJhY2tDdXN0b21Qb3B1cE1lbnUoSVdl
YlZpZXcqLCBITUVOVSwgTFBQT0lOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgUmVsZWFzZSgpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElX
ZWJVUkxSZXF1ZXN0KiwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViVmlldyoqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1Nob3coX0luX29wdF8gSVdlYlZpZXcq
KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2ViVmlld0Nsb3NlKF9Jbl9vcHRfIElXZWJWaWV3KikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGb2N1cyhf
SW5fb3B0XyBJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3VW5mb2N1cyhfSW5fb3B0XyBJV2ViVmlldyop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3ZWJWaWV3Rmlyc3RSZXNwb25kZXIoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0XyBIV05E
KikgIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBtYWtlRmlyc3RSZXNwb25kZXIoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEhXTkQp
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRTdGF0dXNUZXh0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
Vmlld1N0YXR1c1RleHQoX0luX29wdF8gSVdlYlZpZXcqLCBfX2RlcmVmX29wdF9vdXQgQlNUUiop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxlKF9Jbl9vcHRfIElXZWJWaWV3KiwgX091dF8g
Qk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRUb29sYmFyc1Zpc2libGUoX0luX29wdF8gSVdlYlZpZXcqLCBCT09MKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgd2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZShfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIEJP
T0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0U3RhdHVzQmFyVmlzaWJsZShfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB3ZWJWaWV3SXNSZXNpemFibGUoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0XyBCT09MKikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFJlc2l6YWJsZShfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGcmFtZShfSW5f
b3B0XyBJV2ViVmlldyosIF9Jbl8gUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdl
YlZpZXcqLCBfT3V0XyBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENvbnRlbnRSZWN0KF9Jbl9vcHRfIElXZWJWaWV3
KiwgX0luXyBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdDb250ZW50UmVjdChfSW5fb3B0XyBJV2ViVmlldyos
IF9PdXRfIFJFQ1QqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZShfSW5f
b3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZShfSW5fb3B0XyBJ
V2ViVmlldyosIF9Jbl8gQlNUUiwgX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0KF9J
bl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSLCBfSW5fIEJTVFIsIF9fZGVyZWZfb3B0X291dCBC
U1RSKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRf
IElXZWJWaWV3KiwgX0luXyBCU1RSLCBJV2ViRnJhbWUqLCBfT3V0XyBCT09MKikgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bk9w
ZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIoX0luX29wdF8gSVdlYlZpZXcq
LCBfSW5fb3B0XyBJV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIqKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJUHJvcGVydHlCYWcqLCBV
SU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQoX0luX29wdF8gSVdlYlZpZXcqLCBf
SW5fb3B0XyBJUHJvcGVydHlCYWcqLCBfSW5fIEhNRU5VLCBfT3V0XyBITUVOVSopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2YWxp
ZGF0ZVVzZXJJbnRlcmZhY2VJdGVtKF9Jbl9vcHRfIElXZWJWaWV3KiwgVUlOVCwgQk9PTCwgX091
dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzaG91bGRQZXJmb3JtQWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3KiwgVUlO
VCwgVUlOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm8oX0lu
X29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJRGF0YU9iamVjdCosIF9Jbl9vcHRfIFdlYkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihf
SW5fb3B0XyBJV2ViVmlldyosIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgX0luX29wdF8gSURh
dGFPYmplY3QqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChfSW5fb3B0XyBJV2Vi
VmlldyosIF9Jbl8gTFBQT0lOVCwgX091dF8gV2ViRHJhZ1NvdXJjZUFjdGlvbiopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oX0luX29wdF8gSVdlYlZpZXcqLCBXZWJEcmFnU291cmNl
QWN0aW9uLCBfSW5fIExQUE9JTlQsIF9Jbl9vcHRfIElEYXRhT2JqZWN0KiwgX0NPTV9PdXRwdHJf
b3B0XyBJRGF0YU9iamVjdCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoX0luX29wdF8gSVdlYlZpZXcqLCB2b2lkKiwgSVBy
b3BlcnR5QmFnKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGhhc0N1c3RvbU1lbnVJbXBsZW1lbnRhdGlvbihfT3V0XyBCT09MKikg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRyYWNrQ3VzdG9tUG9wdXBNZW51KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBITUVOVSwg
X0luXyBMUFBPSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbWVhc3VyZUN1c3RvbU1lbnVJdGVtKElXZWJWaWV3Kiwgdm9pZCop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkcmF3Q3VzdG9tTWVudUl0ZW0oSVdlYlZpZXcqLCB2b2lkKikgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZEN1c3RvbU1l
bnVEcmF3aW5nRGF0YShJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xlYW5VcEN1c3RvbU1lbnVEcmF3
aW5nRGF0YShJV2ViVmlldyosIEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVGFrZUZvY3VzKElXZWJWaWV3KiwgQk9P
TCwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB0YWtlRm9jdXMoSVdlYlZpZXcqLCBCT09MKSB7IHJldHVybiBFX05PVElN
UEw7IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVnaXN0ZXJVbmRv
V2l0aFRhcmdldChJV2ViVW5kb1RhcmdldCosIEJTVFIsIElVbmtub3duKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUFs
bEFjdGlvbnNXaXRoVGFyZ2V0KElXZWJVbmRvVGFyZ2V0KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFjdGlvblRpdGxlKEJT
VFIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhZGRDdXN0b21NZW51RHJhd2luZ0RhdGEoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5f
IEhNRU5VKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2xlYW5VcEN1c3RvbU1lbnVEcmF3aW5nRGF0YShfSW5fb3B0XyBJV2ViVmll
dyosIF9Jbl8gSE1FTlUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjYW5UYWtlRm9jdXMoX0luX29wdF8gSVdlYlZpZXcqLCBCT09M
LCBfT3V0XyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRha2VGb2N1cyhfSW5fb3B0XyBJV2ViVmlldyosIEJPT0wpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZWdpc3RlclVuZG9XaXRoVGFyZ2V0KF9Jbl9vcHRfIElXZWJVbmRvVGFyZ2V0KiwgX0luXyBC
U1RSLCBfSW5fb3B0XyBJVW5rbm93biopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBbGxBY3Rpb25zV2l0aFRhcmdldChf
SW5fb3B0XyBJV2ViVW5kb1RhcmdldCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBY3Rpb25UaXRsZShfSW5fIEJTVFIpIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB1bmRvKCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlZG8oKSB7IHJldHVybiBFX05PVElNUEw7IH0KLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVW5kbyhCT09MKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblJlZG8oQk9PTCop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBwcmludEZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lICopIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmdHBEaXJlY3RvcnlU
ZW1wbGF0ZVBhdGgoSVdlYlZpZXcqLCBCU1RSKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdIZWFkZXJIZWlnaHQoSVdl
YlZpZXcqLCBmbG9hdCopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
ZWJWaWV3Rm9vdGVySGVpZ2h0KElXZWJWaWV3KiwgZmxvYXQqKTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0hlYWRlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBV
TE9OR19QVFIpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmF3Rm9v
dGVySW5SZWN0KElXZWJWaWV3KiwgUkVDVCosIFVMT05HX1BUUiwgVUlOVCwgVUlOVCk7Ci0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdQcmludGluZ01hcmdpblJl
Y3QoSVdlYlZpZXcqLCBSRUNUKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNhblJ1bk1vZGFsKElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVNb2RhbERpYWxvZyhJ
V2ViVmlldyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bk1vZGFsKElXZWJW
aWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGlzTWVudUJhclZpc2libGUoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1lbnVC
YXJWaXNpYmxlKElXZWJWaWV3KiwgQk9PTCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkRhdGFiYXNlU2l6ZUxpbWl0UHJvbXB0
KElXZWJWaWV3KiwgQlNUUiwgSVdlYkZyYW1lKiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludEN1c3RvbVNjcm9s
bGJhcihJV2ViVmlldyosIEhEQywgUkVDVCwgV2ViU2Nyb2xsQmFyQ29udHJvbFNpemUsIFdlYlNj
cm9sbGJhckNvbnRyb2xTdGF0ZSwgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnQsIEJPT0wsIGZsb2F0
LCBmbG9hdCwgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrKSB7IHJldHVybiBFX05PVElNUEw7
IH0KLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRDdXN0b21TY3Jv
bGxDb3JuZXIoSVdlYlZpZXcqLCBIREMsIFJFQ1QpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5VbmRvKF9PdXRfIEJPT0wqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2FuUmVkbyhfT3V0XyBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByaW50RnJhbWUoX0luX29wdF8gSVdlYlZpZXcq
LCBfSW5fb3B0XyBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKF9Jbl9v
cHRfIElXZWJWaWV3KiwgX19kZXJlZl9vcHRfb3V0IEJTVFIqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0hlYWRlckhl
aWdodChfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRfIGZsb2F0Kik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGb290ZXJIZWlnaHQoX0luX29wdF8gSVdlYlZp
ZXcqLCBfT3V0XyBmbG9hdCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkcmF3SGVhZGVySW5SZWN0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBSRUNUKiwgVUxPTkdf
UFRSKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3Rlcklu
UmVjdChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gUkVDVCosIFVMT05HX1BUUiwgVUlOVCwgVUlO
VCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdQcmludGlu
Z01hcmdpblJlY3QoX0luX29wdF8gSVdlYlZpZXcqLCBfT3V0XyBSRUNUKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblJ1bk1vZGFsKF9Jbl9vcHRfIElXZWJWaWV3
KiwgX091dF8gQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVNb2RhbERpYWxvZyhfSW5fb3B0XyBJV2ViVmlldyos
IF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViVmlldyoqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuTW9kYWwoX0luX29wdF8g
SVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgaXNNZW51QmFyVmlzaWJsZShfSW5fb3B0XyBJV2ViVmlldyosIF9PdXRf
IEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0TWVudUJhclZpc2libGUoX0luX29wdF8gSVdlYlZpZXcqLCBCT09MKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcnVuRGF0YWJhc2VTaXplTGltaXRQcm9tcHQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJT
VFIsIF9Jbl9vcHRfIElXZWJGcmFtZSosIF9PdXRfIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRDdXN0b21TY3Jv
bGxiYXIoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEhEQywgUkVDVCwgV2ViU2Nyb2xsQmFyQ29u
dHJvbFNpemUsIFdlYlNjcm9sbGJhckNvbnRyb2xTdGF0ZSwgV2ViU2Nyb2xsYmFyQ29udHJvbFBh
cnQsIEJPT0wsIGZsb2F0LCBmbG9hdCwgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cGFpbnRDdXN0b21TY3JvbGxDb3JuZXIoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEhEQywgUkVD
VCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAKIHByaXZhdGU6Ci0gICAgaW50IG1fcmVmQ291bnQ7
CisgICAgaW50IG1fcmVmQ291bnQgeyAxIH07CiB9OwogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dp
bkxhdW5jaGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
aW5MYXVuY2hlci9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDE4ODY5OCkKKysr
IFRvb2xzL1dpbkxhdW5jaGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUs
OSArMzUsMTEgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8d2luaW5ldC5oPgog
Ci1IUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlp
ZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlF1ZXJ5
SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0
KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2T2JqZWN0KQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxscHRyOwogICAgIGlmIChJc0Vx
dWFsSUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNf
Y2FzdDxJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0Vx
dWFsSUlEKHJpaWQsIElJRF9JV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUpKQpAQCAtNDksMTIgKzUx
LDEyIEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXIKICAgICByZXR1
cm4gU19PSzsKIH0KIAotVUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OkFkZFJlZih2b2lkKQor
VUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OkFkZFJlZigpCiB7CiAgICAgcmV0dXJuICsrbV9y
ZWZDb3VudDsKIH0KIAotVUxPTkcgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlbGVhc2Uodm9pZCkK
K1VMT05HIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZWxlYXNlKCkKIHsKICAgICBVTE9ORyBuZXdS
ZWYgPSAtLW1fcmVmQ291bnQ7CiAgICAgaWYgKCFuZXdSZWYpCkBAIC02Myw3ICs2NSw3IEBAIFVM
T05HIFJlc291cmNlTG9hZERlbGVnYXRlOjpSZWxlYXNlKHZvaWQKICAgICByZXR1cm4gbmV3UmVm
OwogfQogCi1IUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjppZGVudGlmaWVyRm9ySW5pdGlh
bFJlcXVlc3QoSVdlYlZpZXcqLCBJV2ViVVJMUmVxdWVzdCosIElXZWJEYXRhU291cmNlKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQorSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6aWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdl
YlVSTFJlcXVlc3QqLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpA
QCAtNzMsMzIgKzc1LDM1IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmlkZW50aWZp
ZXIKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6
d2lsbFNlbmRSZXF1ZXN0KElXZWJWaWV3KiwgdW5zaWduZWQgbG9uZywgSVdlYlVSTFJlcXVlc3Qq
LCBJV2ViVVJMUmVzcG9uc2UqLCBJV2ViRGF0YVNvdXJjZSosIElXZWJVUkxSZXF1ZXN0KiopCitI
UkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoX0luX29wdF8gSVdl
YlZpZXcqLCB1bnNpZ25lZCBsb25nLCBfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCosIF9Jbl9vcHRf
IElXZWJVUkxSZXNwb25zZSosIF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKiwgX0NPTV9PdXRwdHJf
b3B0XyBJV2ViVVJMUmVxdWVzdCoqIHJlc3VsdCkKIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBJV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqLCBJV2ViRGF0YVNvdXJjZSopCitIUkVTVUxUIFJlc291
cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29w
dF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopCiB7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkQ2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqLCBJV2ViRGF0YVNvdXJjZSopCitIUkVTVUxUIFJlc291cmNl
TG9hZERlbGVnYXRlOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJ
V2ViVmlldyosIHVuc2lnbmVkIGxvbmcsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSosIF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKikKIHsKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwogfQogCi1IUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBJV2ViVVJMUmVzcG9uc2UqLCBJV2ViRGF0YVNv
dXJjZSopCitIUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
X0luX29wdF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBfSW5fb3B0XyBJV2ViVVJMUmVzcG9u
c2UqLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopCiB7CiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
IH0KIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBVSU5ULCBJV2ViRGF0YVNvdXJjZSopCitIUkVT
VUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChfSW5fb3B0
XyBJV2ViVmlldyosIHVuc2lnbmVkIGxvbmcsIFVJTlQsIF9Jbl9vcHRfIElXZWJEYXRhU291cmNl
KikKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFJlc291cmNlTG9hZERl
bGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2UoSVdlYlZpZXcqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIElXZWJEYXRhU291cmNlKikKK0hSRVNVTFQgUmVzb3VyY2VMb2Fk
RGVsZWdhdGU6OmRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZShfSW5fb3B0XyBJV2ViVmll
dyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgX0luX29wdF8gSVdlYkRhdGFTb3VyY2UqKQog
ewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xMDgsNyAr
MTEzLDcgQEAgSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoTAogICAgIHJl
dHVybiBTX09LOwogfQogCi1IUkVTVUxUIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRGYWlsTG9h
ZGluZ1dpdGhFcnJvcihJV2ViVmlldyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgSVdlYkVy
cm9yKiwgSVdlYkRhdGFTb3VyY2UqKQorSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGlk
RmFpbExvYWRpbmdXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIF9Jbl9vcHRfIElXZWJFcnJvciosIF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKikK
IHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTE4LDcg
KzEyMyw3IEBAIEhSRVNVTFQgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRpZEZhaWxMb2EKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6cGx1Z0luRmFp
bGVkV2l0aEVycm9yKElXZWJWaWV3KiwgSVdlYkVycm9yKiwgSVdlYkRhdGFTb3VyY2UqKQorSFJF
U1VMVCBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6cGx1Z0luRmFpbGVkV2l0aEVycm9yKF9Jbl9vcHRf
IElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkVycm9yKiwgX0luX29wdF8gSVdlYkRhdGFTb3VyY2Uq
KQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1Jl
c291cmNlTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL1dpbkxhdW5j
aGVyL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDI3ICszMywyNyBAQCBjbGFz
cyBXaW5MYXVuY2hlcjsKIGNsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlIDogcHVibGljIElXZWJS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkRGVsZWdhdGUo
V2luTGF1bmNoZXIqIGNsaWVudCkKLSAgICAgICAgOiBtX3JlZkNvdW50KDEpLCBtX2NsaWVudChj
bGllbnQpIHsgfQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkgeyB9CiAKICAgICAvLyBJVW5r
bm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAogICAg
IC8vIElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoSVdlYlZpZXcqLCBJV2ViVVJM
UmVxdWVzdCosIElXZWJEYXRhU291cmNlKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFNlbmRSZXF1ZXN0KElXZWJW
aWV3KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBJV2ViVVJMUmVxdWVzdCosIElXZWJVUkxS
ZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSwgSVdlYkRhdGFTb3VyY2UqLCBJV2ViVVJMUmVxdWVz
dCoqIG5ld1JlcXVlc3QpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSosIElXZWJEYXRhU291
cmNlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElXZWJWaWV3KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqLCBJV2ViRGF0YVNvdXJjZSopOwotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlUmVzcG9uc2UoSVdl
YlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIElXZWJVUkxSZXNwb25zZSosIElXZWJE
YXRhU291cmNlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJl
Y2VpdmVDb250ZW50TGVuZ3RoKElXZWJWaWV3KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBV
SU5UIGxlbmd0aCwgSVdlYkRhdGFTb3VyY2UqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkRmluaXNoTG9hZGluZ0Zyb21EYXRhU291cmNlKElXZWJWaWV3KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBJV2ViRGF0YVNvdXJjZSopOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcihJV2ViVmlldyos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgSVdlYkVycm9yKiwgSVdlYkRhdGFTb3VyY2UqKTsK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGx1Z0luRmFpbGVkV2l0aEVy
cm9yKElXZWJWaWV3KiwgSVdlYkVycm9yKiwgSVdlYkRhdGFTb3VyY2UqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KF9J
bl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqLCBfSW5fb3B0XyBJV2Vi
RGF0YVNvdXJjZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxTZW5kUmVxdWVzdChfSW5fb3B0XyBJV2ViVmlldyos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqLCBfSW5f
b3B0XyBJV2ViVVJMUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UsIF9Jbl9vcHRfIElXZWJEYXRh
U291cmNlKiwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViVVJMUmVxdWVzdCoqIG5ld1JlcXVlc3QpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSosIF9Jbl9vcHRfIElX
ZWJEYXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJWaWV3KiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UqLCBfSW5fb3B0XyBJV2ViRGF0YVNvdXJjZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlUmVzcG9uc2UoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIF9Jbl9vcHRfIElXZWJVUkxSZXNwb25zZSosIF9Jbl9vcHRf
IElXZWJEYXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKF9Jbl9vcHRfIElXZWJWaWV3KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBVSU5UIGxlbmd0aCwgX0luX29wdF8gSVdlYkRhdGFTb3VyY2UqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNoTG9hZGluZ0Zyb21E
YXRhU291cmNlKF9Jbl9vcHRfIElXZWJWaWV3KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBf
SW5fb3B0XyAgSVdlYkRhdGFTb3VyY2UqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkRmFpbExvYWRpbmdXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIF9Jbl9vcHRfIElXZWJFcnJvciosIF9Jbl9vcHRfIElXZWJE
YXRhU291cmNlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBsdWdJ
bkZhaWxlZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZWJFcnJvcios
IF9Jbl9vcHRfIElXZWJEYXRhU291cmNlKik7CiAKIHByaXZhdGU6CiAgICAgV2luTGF1bmNoZXIq
IG1fY2xpZW50OwotICAgIGludCBtX3JlZkNvdW50OworICAgIGludCBtX3JlZkNvdW50IHsgMSB9
OwogfTsKIAogI2VuZGlmIC8vIFJlc291cmNlTG9hZERlbGVnYXRlCkluZGV4OiBUb29scy9XaW5M
YXVuY2hlci9XZWJEb3dubG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XaW5M
YXVuY2hlci9XZWJEb3dubG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gMTg4Njk4KQorKysgVG9v
bHMvV2luTGF1bmNoZXIvV2ViRG93bmxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxzaGxvYmouaD4KIAogV2ViRG93bmxvYWREZWxlZ2F0
ZTo6V2ViRG93bmxvYWREZWxlZ2F0ZSgpCi0gICAgOiBtX3JlZkNvdW50KDEpCiB7CiB9CiAKQEAg
LTM3LDkgKzM2LDExIEBAIFdlYkRvd25sb2FkRGVsZWdhdGU6On5XZWJEb3dubG9hZERlbGVnYXQK
IHsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZERlbGVnYXRlOjpR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKK0hSRVNVTFQgV2Vi
RG93bmxvYWREZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCiB7Ci0gICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYg
KCFwcHZPYmplY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKnBwdk9iamVjdCA9
IG51bGxwdHI7CiAKICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAg
ICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJEb3dubG9hZERlbGVnYXRlKj4odGhp
cyk7CkBAIC01MiwxMyArNTMsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3du
bG9hZERlbAogICAgIHJldHVybiBTX09LOwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZERlbGVnYXRlOjpBZGRSZWYodm9pZCkKK1VMT05HIFdlYkRvd25sb2FkRGVsZWdh
dGU6OkFkZFJlZigpCiB7CiAgICAgbV9yZWZDb3VudCsrOwogICAgIHJldHVybiBtX3JlZkNvdW50
OwogfQogCi1VTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZERlbGVnYXRlOjpSZWxl
YXNlKHZvaWQpCitVTE9ORyBXZWJEb3dubG9hZERlbGVnYXRlOjpSZWxlYXNlKCkKIHsKICAgICBt
X3JlZkNvdW50LS07CiAgICAgaW50IHJlZkNvdW50ID0gbV9yZWZDb3VudDsKQEAgLTY3LDggKzY4
LDExIEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkRGVsZWcKICAgICByZXR1
cm4gcmVmQ291bnQ7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWRE
ZWxlZ2F0ZTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoSVdlYkRvd25s
b2FkKiBkb3dubG9hZCwgQlNUUiBmaWxlbmFtZSkKK0hSRVNVTFQgV2ViRG93bmxvYWREZWxlZ2F0
ZTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoX0luX29wdF8gSVdlYkRv
d25sb2FkKiBkb3dubG9hZCwgX0luXyBCU1RSIGZpbGVuYW1lKQogeworICAgIGlmICghZG93bmxv
YWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKICAgICB3Y2hhcl90IGRlc2t0b3BEaXJl
Y3RvcnlbTUFYX1BBVEhdOwogICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBDU0lE
TF9ERVNLVE9QLCAwLCAwLCBkZXNrdG9wRGlyZWN0b3J5KSkpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CkBAIC04Miw2MCArODYsNzMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3du
bG9hZERlbAogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRvd25sb2FkRGVsZWdhdGU6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElX
ZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hh
bGxlbmdlKQorSFJFU1VMVCBXZWJEb3dubG9hZERlbGVnYXRlOjpkaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5fb3B0XyBJ
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkRGVs
ZWdhdGU6OmRpZENyZWF0ZURlc3RpbmF0aW9uKElXZWJEb3dubG9hZCogZG93bmxvYWQsIEJTVFIg
ZGVzdGluYXRpb24pCitIUkVTVUxUIFdlYkRvd25sb2FkRGVsZWdhdGU6OmRpZENyZWF0ZURlc3Rp
bmF0aW9uKF9Jbl9vcHRfIElXZWJEb3dubG9hZCogZG93bmxvYWQsIF9Jbl8gQlNUUiBkZXN0aW5h
dGlvbikKIHsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkRGVsZWdhdGU6OmRpZEZhaWxXaXRoRXJyb3IoSVdlYkRvd25sb2Fk
KiBkb3dubG9hZCwgSVdlYkVycm9yKiBlcnJvcikKK0hSRVNVTFQgV2ViRG93bmxvYWREZWxlZ2F0
ZTo6ZGlkRmFpbFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5f
b3B0XyBJV2ViRXJyb3IqIGVycm9yKQogeworICAgIGlmICghZG93bmxvYWQpCisgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CisKICAgICBkb3dubG9hZC0+UmVsZWFzZSgpOwogICAgIHJldHVybiBT
X09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkRGVsZWdhdGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJV2ViRG93bmxvYWQqIGRvd25sb2Fk
LCBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKK0hSRVNVTFQgV2Vi
RG93bmxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9v
cHRfIElXZWJEb3dubG9hZCogZG93bmxvYWQsIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSogY2hhbGxlbmdlKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURh
dGFPZkxlbmd0aChJV2ViRG93bmxvYWQqIGRvd25sb2FkLCB1bnNpZ25lZCBsZW5ndGgpCitIUkVT
VUxUIFdlYkRvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhT2ZMZW5ndGgoX0luX29wdF8g
SVdlYkRvd25sb2FkKiBkb3dubG9hZCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBF
X05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWREZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKElXZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJVUkxS
ZXNwb25zZSogcmVzcG9uc2UpCitIUkVTVUxUIFdlYkRvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2Vp
dmVSZXNwb25zZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5fb3B0XyBJV2Vi
VVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWREZWxlZ2F0ZTo6c2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUoSVdlYkRvd25sb2FkKiBkb3dubG9hZCwgQlNUUiBlbmNvZGlu
Z1R5cGUsIEJPT0wqIHNob3VsZERlY29kZSkKK0hSRVNVTFQgV2ViRG93bmxvYWREZWxlZ2F0ZTo6
c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoX0luX29wdF8gSVdlYkRvd25sb2FkKiBk
b3dubG9hZCwgX0luXyBCU1RSIGVuY29kaW5nVHlwZSwgX091dF8gQk9PTCogc2hvdWxkRGVjb2Rl
KQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWREZWxlZ2F0ZTo6d2lsbFJlc3VtZVdpdGhSZXNwb25zZShJV2ViRG93bmxv
YWQqIGRvd25sb2FkLCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBsb25nIGxvbmcgZnJvbUJ5
dGUpCitIUkVTVUxUIFdlYkRvd25sb2FkRGVsZWdhdGU6OndpbGxSZXN1bWVXaXRoUmVzcG9uc2Uo
X0luX29wdF8gSVdlYkRvd25sb2FkKiBkb3dubG9hZCwgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNl
KiByZXNwb25zZSwgbG9uZyBsb25nIGZyb21CeXRlKQogewogICAgIHJldHVybiBFX05PVElNUEw7
CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWREZWxlZ2F0ZTo6d2ls
bFNlbmRSZXF1ZXN0KElXZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJNdXRhYmxlVVJMUmVxdWVz
dCogcmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlLCBJV2ViTXV0YWJs
ZVVSTFJlcXVlc3QqKiBmaW5hbFJlcXVlc3QpCitIUkVTVUxUIFdlYkRvd25sb2FkRGVsZWdhdGU6
OndpbGxTZW5kUmVxdWVzdChfSW5fb3B0XyBJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBfSW5fb3B0
XyBJV2ViTXV0YWJsZVVSTFJlcXVlc3QqIHJlcXVlc3QsCisgICAgX0luX29wdF8gSVdlYlVSTFJl
c3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlLCBfQ09NX091dHB0cl9vcHRfIElXZWJNdXRhYmxlVVJM
UmVxdWVzdCoqIGZpbmFsUmVxdWVzdCkKIHsKKyAgICBpZiAoIWZpbmFsUmVxdWVzdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZmluYWxSZXF1ZXN0ID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25s
b2FkRGVsZWdhdGU6OmRpZEJlZ2luKElXZWJEb3dubG9hZCogZG93bmxvYWQpCitIUkVTVUxUIFdl
YkRvd25sb2FkRGVsZWdhdGU6OmRpZEJlZ2luKF9Jbl9vcHRfIElXZWJEb3dubG9hZCogZG93bmxv
YWQpCiB7CisgICAgaWYgKCFkb3dubG9hZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwog
ICAgIGRvd25sb2FkLT5BZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZERlbGVnYXRlOjpkaWRGaW5pc2goSVdlYkRvd25s
b2FkKiBkb3dubG9hZCkKK0hSRVNVTFQgV2ViRG93bmxvYWREZWxlZ2F0ZTo6ZGlkRmluaXNoKF9J
bl9vcHRfIElXZWJEb3dubG9hZCogZG93bmxvYWQpCiB7CisgICAgaWYgKCFkb3dubG9hZCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwogICAgIGRvd25sb2FkLT5SZWxlYXNlKCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XZWJEb3dubG9hZERlbGVn
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2ViRG93bmxvYWREZWxlZ2F0
ZS5oCShyZXZpc2lvbiAxODg2OTgpCisrKyBUb29scy9XaW5MYXVuY2hlci9XZWJEb3dubG9hZERl
bGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICszNCwyNSBAQCBwdWJsaWM6CiAgICAg
V2ViRG93bmxvYWREZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwgfldlYkRvd25sb2FkRGVsZWdhdGUo
KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBSZWxlYXNlKHZvaWQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKTsKIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShJV2ViRG93bmxvYWQqLCBCU1RSIGZpbGVuYW1lKTsKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoSVdlYkRvd25sb2FkKiwgSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENyZWF0ZURlc3RpbmF0aW9u
KElXZWJEb3dubG9hZCosIEJTVFIgZGVzdGluYXRpb24pOwotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkaWRGYWlsV2l0aEVycm9yKElXZWJEb3dubG9hZCosIElXZWJFcnJv
ciopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYkRvd25sb2FkKiwgSVdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJl
Y2VpdmVEYXRhT2ZMZW5ndGgoSVdlYkRvd25sb2FkKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVJlc3BvbnNlKElXZWJE
b3dubG9hZCosIElXZWJVUkxSZXNwb25zZSopOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShJV2ViRG93bmxvYWQq
LCBCU1RSIGVuY29kaW5nVHlwZSwgQk9PTCogc2hvdWxkRGVjb2RlKTsKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFJlc3VtZVdpdGhSZXNwb25zZShJV2ViRG93bmxv
YWQqLCBJV2ViVVJMUmVzcG9uc2UqLCBsb25nIGxvbmcgZnJvbUJ5dGUpOwotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsU2VuZFJlcXVlc3QoSVdlYkRvd25sb2FkKiwg
SVdlYk11dGFibGVVUkxSZXF1ZXN0KiwgSVdlYlVSTFJlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
LCBJV2ViTXV0YWJsZVVSTFJlcXVlc3QqKiBmaW5hbFJlcXVlc3QpOwotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRCZWdpbihJV2ViRG93bmxvYWQqKTsKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNoKElXZWJEb3dubG9hZCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCBfSW5fIEJTVFIgZmls
ZW5hbWUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCBfSW5fb3B0XyBJ
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkQ3JlYXRlRGVzdGluYXRpb24oX0luX29wdF8gSVdlYkRvd25sb2Fk
KiwgX0luXyBCU1RSIGRlc3RpbmF0aW9uKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkRmFpbFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCBfSW5fb3B0
XyBJV2ViRXJyb3IqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJEb3dubG9hZCosIF9J
bl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKF9Jbl9vcHRfIElX
ZWJEb3dubG9hZCosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZFJlY2VpdmVSZXNwb25zZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCBf
SW5fb3B0XyBJV2ViVVJMUmVzcG9uc2UqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoX0luX29wdF8gSVdlYkRv
d25sb2FkKiwgX0luXyBCU1RSIGVuY29kaW5nVHlwZSwgX091dF8gQk9PTCogc2hvdWxkRGVjb2Rl
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFJlc3VtZVdpdGhS
ZXNwb25zZShfSW5fb3B0XyBJV2ViRG93bmxvYWQqLCBfSW5fb3B0XyBJV2ViVVJMUmVzcG9uc2Uq
LCBsb25nIGxvbmcgZnJvbUJ5dGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB3aWxsU2VuZFJlcXVlc3QoX0luX29wdF8gSVdlYkRvd25sb2FkKiwgX0luX29wdF8gSVdl
Yk11dGFibGVVUkxSZXF1ZXN0KiwgX0luX29wdF8gSVdlYlVSTFJlc3BvbnNlKiByZWRpcmVjdFJl
c3BvbnNlLCBfQ09NX091dHB0cl9vcHRfIElXZWJNdXRhYmxlVVJMUmVxdWVzdCoqIGZpbmFsUmVx
dWVzdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEJlZ2luKF9J
bl9vcHRfIElXZWJEb3dubG9hZCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkaWRGaW5pc2goX0luX29wdF8gSVdlYkRvd25sb2FkKik7CiAKIHByaXZhdGU6Ci0gICAg
aW50IG1fcmVmQ291bnQ7CisgICAgaW50IG1fcmVmQ291bnQgeyAxIH07CiB9OwogCiAjZW5kaWYK
SW5kZXg6IFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyV2ViSG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0LmNwcAkocmV2aXNpb24g
MTg4Njk4KQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDgsIDIwMTMtMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBCcmVudCBGdWxnaGFtLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBBcHBjZWxl
cmF0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBB
bGV4IENocmlzdGVuc2VuLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjQsMjQgKzY0LDI0IEBA
IEhSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0Ojp1cGRhdGVBZGRyZXMKICAgICBJV2ViRnJhbWVQ
dHIgbWFpbkZyYW1lOwogICAgIEhSRVNVTFQgaHIgPSB3ZWJWaWV3Lm1haW5GcmFtZSgmbWFpbkZy
YW1lLkdldEludGVyZmFjZVB0cigpKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBocjsKIAogICAgIElXZWJEYXRhU291cmNlUHRyIGRhdGFT
b3VyY2U7CiAgICAgaHIgPSBtYWluRnJhbWUtPmRhdGFTb3VyY2UoJmRhdGFTb3VyY2UuR2V0SW50
ZXJmYWNlUHRyKCkpOwogICAgIGlmIChGQUlMRUQoaHIpIHx8ICFkYXRhU291cmNlKQogICAgICAg
ICBociA9IG1haW5GcmFtZS0+cHJvdmlzaW9uYWxEYXRhU291cmNlKCZkYXRhU291cmNlLkdldElu
dGVyZmFjZVB0cigpKTsKICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhZGF0YVNvdXJjZSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBocjsKIAogICAgIElXZWJNdXRhYmxlVVJMUmVx
dWVzdFB0ciByZXF1ZXN0OwogICAgIGhyID0gZGF0YVNvdXJjZS0+cmVxdWVzdCgmcmVxdWVzdC5H
ZXRJbnRlcmZhY2VQdHIoKSk7CiAgICAgaWYgKEZBSUxFRChocikgfHwgIXJlcXVlc3QpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gaHI7CiAKICAgICBfYnN0cl90IGZyYW1lVVJM
OwogICAgIGhyID0gcmVxdWVzdC0+bWFpbkRvY3VtZW50VVJMKGZyYW1lVVJMLkdldEFkZHJlc3Mo
KSk7CiAgICAgaWYgKEZBSUxFRChocikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gaHI7CiAKICAgICBpZiAoZnJhbWVVUkwubGVuZ3RoKCkpIHsKICAgICAgICAgbV9jbGllbnQt
PnBhZ2VMb2FkVGVzdENsaWVudCgpLnNldFBhZ2VVUkwoZnJhbWVVUkwpOwpAQCAtOTAsNyArOTAs
NyBAQCBIUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6dXBkYXRlQWRkcmVzCiAKICAgICBsb2Fk
VVJMKGZyYW1lVVJMKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBTX09LOwogfQogCiB2
b2lkIFdpbkxhdW5jaGVyV2ViSG9zdDo6bG9hZFVSTChfYnN0cl90JiB1cmwpCkBAIC05OCwxMCAr
OTgsMTIgQEAgdm9pZCBXaW5MYXVuY2hlcldlYkhvc3Q6OmxvYWRVUkwoX2JzdHJfdAogICAgIDo6
U2VuZE1lc3NhZ2UobV9oVVJMQmFyV25kLCBzdGF0aWNfY2FzdDxVSU5UPihXTV9TRVRURVhUKSwg
MCwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KHVybC5HZXRCU1RSKCkpKTsKIH0KIAotSFJFU1VM
VCBXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoSVdl
YlZpZXcqLCBJV2ViRXJyb3IgKmVycm9yLCBJV2ViRnJhbWUqKQorSFJFU1VMVCBXaW5MYXVuY2hl
cldlYkhvc3Q6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZp
ZXcqLCBfSW5fb3B0XyBJV2ViRXJyb3IgKmVycm9yLCBfSW5fb3B0XyBJV2ViRnJhbWUqKQogewog
ICAgIF9ic3RyX3QgZXJyb3JEZXNjcmlwdGlvbjsKLSAgICBIUkVTVUxUIGhyID0gZXJyb3ItPmxv
Y2FsaXplZERlc2NyaXB0aW9uKGVycm9yRGVzY3JpcHRpb24uR2V0QWRkcmVzcygpKTsKKyAgICBI
UkVTVUxUIGhyID0gRV9QT0lOVEVSOworICAgIGlmIChlcnJvcikKKyAgICAgICAgaHIgPSBlcnJv
ci0+bG9jYWxpemVkRGVzY3JpcHRpb24oZXJyb3JEZXNjcmlwdGlvbi5HZXRBZGRyZXNzKCkpOwog
ICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gTCJGYWlsZWQg
dG8gbG9hZCBwYWdlIGFuZCB0byBsb2NhbGl6ZSBlcnJvciBkZXNjcmlwdGlvbi4iOwogCkBAIC0x
MTEsOSArMTEzLDExIEBAIEhSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRGYWlsUHJvdmkK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXaW5MYXVuY2hlcldlYkhvc3Q6OlF1ZXJ5
SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorSFJFU1VMVCBXaW5MYXVu
Y2hlcldlYkhvc3Q6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRy
XyB2b2lkKiogcHB2T2JqZWN0KQogewotICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmICghcHB2
T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3QgPSBudWxs
cHRyOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAq
cHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkZyYW1lTG9hZERlbGVnYXRlKj4odGhpcyk7CiAg
ICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lXZWJGcmFtZUxvYWREZWxlZ2F0ZSkp
CkBAIC0xNDQsNyArMTQ4LDcgQEAgdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJRE9NRWxl
bWVudAogdHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJRE9NRXZlbnRUYXJnZXQsICZfX3V1
aWRvZihJRE9NRXZlbnRUYXJnZXQpPj4gSURPTUV2ZW50VGFyZ2V0UHRyOwogdHlwZWRlZiBfY29t
X3B0cl90PF9jb21fSUlJRDxJV2ViRnJhbWUyLCAmX191dWlkb2YoSVdlYkZyYW1lMik+PiBJV2Vi
RnJhbWUyUHRyOwogCi1IUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKElXZWJWaWV3KiB3ZWJWaWV3LCBJV2ViRnJhbWUqIGZyYW1lKQorSFJFU1VMVCBXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyog
d2ViVmlldywgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lIHx8
ICF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTgzLDcgKzE4Nyw3IEBA
IEhSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRGaW5pc2hMb2EKICAgICByZXR1cm4gaHI7
CiB9CiAKLUhSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKiBmcmFtZSkKK0hSRVNVTFQgV2luTGF1bmNo
ZXJXZWJIb3N0OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJW
aWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTkyLDMwICsxOTYsMzAgQEAgSFJFU1VMVCBXaW5MYXVu
Y2hlcldlYkhvc3Q6OmRpZFN0YXJ0UHJvdgogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxU
IFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFpbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2Vi
RXJyb3IqLCBJV2ViRnJhbWUqKQorSFJFU1VMVCBXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZEZhaWxM
b2FkV2l0aEVycm9yKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkVycm9yKiwgX0lu
X29wdF8gSVdlYkZyYW1lKikKIHsKICAgICBtX2NsaWVudC0+cGFnZUxvYWRUZXN0Q2xpZW50KCku
ZGlkRmFpbExvYWQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXaW5MYXVuY2hl
cldlYkhvc3Q6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKElXZWJWaWV3KiBzZW5kZXIs
IElXZWJGcmFtZSogZnJhbWUpCitIUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8g
SVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBJV2ViRGF0YVNvdXJjZVB0ciBkYXRhU291cmNlOwog
ICAgIEhSRVNVTFQgaHIgPSBmcmFtZS0+ZGF0YVNvdXJjZSgmZGF0YVNvdXJjZS5HZXRJbnRlcmZh
Y2VQdHIoKSk7CiAgICAgaWYgKEZBSUxFRChocikgfHwgIWRhdGFTb3VyY2UpCiAgICAgICAgIGhy
ID0gZnJhbWUtPnByb3Zpc2lvbmFsRGF0YVNvdXJjZSgmZGF0YVNvdXJjZS5HZXRJbnRlcmZhY2VQ
dHIoKSk7CiAgICAgaWYgKEZBSUxFRChocikgfHwgIWRhdGFTb3VyY2UpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gaHI7CiAKICAgICBJV2ViTXV0YWJsZVVSTFJlcXVlc3RQdHIg
cmVxdWVzdDsKICAgICBociA9IGRhdGFTb3VyY2UtPnJlcXVlc3QoJnJlcXVlc3QuR2V0SW50ZXJm
YWNlUHRyKCkpOwogICAgIGlmIChGQUlMRUQoaHIpIHx8ICFyZXF1ZXN0KQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIGhyOwogCiAgICAgX2JzdHJfdCBmcmFtZVVSTDsKICAgICBo
ciA9IHJlcXVlc3QtPm1haW5Eb2N1bWVudFVSTChmcmFtZVVSTC5HZXRBZGRyZXNzKCkpOwogICAg
IGlmIChGQUlMRUQoaHIpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGhyOwog
CiAgICAgaWYgKGZyYW1lVVJMLmxlbmd0aCgpKQogICAgICAgICBtX2NsaWVudC0+cGFnZUxvYWRU
ZXN0Q2xpZW50KCkuZGlkSGFuZGxlT25Mb2FkRXZlbnRzKCk7CkBAIC0yMjMsNyArMjI3LDcgQEAg
SFJFU1VMVCBXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZEhhbmRsZU9ubAogICAgIHJldHVybiBTX09L
OwogfQogCi1IUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmlyc3RMYXlvdXRJbkZyYW1l
KElXZWJWaWV3KiwgSVdlYkZyYW1lKiBmcmFtZSkKK0hSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0
OjpkaWRGaXJzdExheW91dEluRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2Vi
RnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CkluZGV4OiBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlcldlYkhvc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlcldlYkhvc3QuaAkocmV2aXNpb24g
MTg4Njk4KQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXJXZWJIb3N0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE4ICszMywxOCBAQCBjbGFzcyBXaW5MYXVuY2hlcjsKIGNsYXNzIFdp
bkxhdW5jaGVyV2ViSG9zdCA6IHB1YmxpYyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUsIHB1YmxpYyBJ
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlIHsKIHB1YmxpYzoKICAgICBXaW5MYXVuY2hlcldl
Ykhvc3QoV2luTGF1bmNoZXIqIGNsaWVudCwgSFdORCB1cmxCYXIpCi0gICAgICAgIDogbV9yZWZD
b3VudCgxKSwgbV9jbGllbnQoY2xpZW50KSwgbV9oVVJMQmFyV25kKHVybEJhcikgeyB9CisgICAg
ICAgIDogbV9jbGllbnQoY2xpZW50KSwgbV9oVVJMQmFyV25kKHVybEJhcikgeyB9CiAKICAgICAv
LyBJVW5rbm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIEFkZFJlZigpOwogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
UmVsZWFzZSgpOwogCiAgICAgLy8gSVdlYkZyYW1lTG9hZERlbGVnYXRlCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
SVdlYlZpZXcqLCBJV2ViRnJhbWUqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
SVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9Ci0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoSVdl
YlZpZXcqLCBJV2ViRXJyb3IqLCBJV2ViRnJhbWUqKTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkQ29tbWl0TG9hZEZvckZyYW1lKElXZWJWaWV3KiB3ZWJWaWV3LCBJ
V2ViRnJhbWUqKQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdl
YkZyYW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKF9Jbl9vcHRfIElXZWJW
aWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
KF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkVycm9yKiwgX0luX29wdF8gSVdlYkZy
YW1lKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENvbW1pdExv
YWRGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyogd2ViVmlldywgX0luX29wdF8gSVdlYkZyYW1l
KikKICAgICB7CiAgICAgICAgIGlmICghd2ViVmlldykKICAgICAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CkBAIC01MiwyMyArNTIsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdXBkYXRl
QWRkcmVzc0Jhcigqd2ViVmlldyk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlVGl0bGUoSVdlYlZpZXcqLCBCU1RSIHRpdGxlLCBJ
V2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRpZENoYW5nZUljb25zKElXZWJWaWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4g
U19PSzsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZl
SWNvbihJV2ViVmlldyosIEhCSVRNQVAsIElXZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNoTG9hZEZvckZyYW1l
KElXZWJWaWV3KiwgSVdlYkZyYW1lKik7ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRpZEZhaWxMb2FkV2l0aEVycm9yKElXZWJWaWV3KiwgSVdlYkVycm9yKiwgSVdl
YkZyYW1lKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKikgeyByZXR1
cm4gU19PSzsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0VG9VUkwoSVdlYlZpZXcqLCBCU1RSIHVybCwgZG91YmxlIGRlbGF5
U2Vjb25kcywgREFURSBmaXJlRGF0ZSwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsQ2xvc2VGcmFtZShJV2ViVmlldyos
IElXZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVRpdGxlKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RS
IHRpdGxlLCBfSW5fb3B0XyBJV2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKF9Jbl9vcHRfIElXZWJW
aWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlSWNvbihfSW5fb3B0XyBJV2ViVmll
dyosIF9Jbl8gSEJJVE1BUCwgX0luX29wdF8gSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWUoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2ViRnJhbWUqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmFpbExvYWRXaXRoRXJyb3IoX0luX29wdF8g
SVdlYlZpZXcqLCBfSW5fb3B0XyBJV2ViRXJyb3IqLCBfSW5fb3B0XyBJV2ViRnJhbWUqKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlRm9yRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2ViRnJhbWUqKSB7
IHJldHVybiBTX09LOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNU
UiB1cmwsIGRvdWJsZSBkZWxheVNlY29uZHMsIERBVEUgZmlyZURhdGUsIF9Jbl9vcHRfIElXZWJG
cmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShfSW5fb3B0XyBJV2ViVmlldyos
IF9Jbl9vcHRfIElXZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbENsb3NlRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqLCBf
SW5fb3B0XyBJV2ViRnJhbWUqKSB7IHJldHVybiBTX09LOyB9CiAgICAgdmlydHVhbCAvKiBbbG9j
YWxdICovIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2luZG93U2NyaXB0T2JqZWN0QXZhaWxh
YmxlKElXZWJWaWV3KiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikgIHsgcmV0dXJuIFNfT0s7
IH0KICAgICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8gSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRDbGVhcldpbmRvd09iamVjdChJV2ViVmlldyosIEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYs
IElXZWJGcmFtZSopIHsgcmV0dXJuIFNfT0s7IH0KIAogICAgIC8vIElXZWJGcmFtZUxvYWREZWxl
Z2F0ZVByaXZhdGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoSVdlYlZpZXcqIHNlbmRlciwgSVdlYkZyYW1lKikgeyBy
ZXR1cm4gU19PSzsgfQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRG
aXJzdExheW91dEluRnJhbWUoSVdlYlZpZXcqIHNlbmRlciwgSVdlYkZyYW1lKik7Ci0gICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUoSVdlYlZpZXcq
IHNlbmRlciwgSVdlYkZyYW1lKikgIHsgcmV0dXJuIFNfT0s7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoX0luX29w
dF8gSVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8gSVdlYkZyYW1lKikgeyByZXR1cm4gU19PSzsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaXJzdExheW91dElu
RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8gSVdlYkZyYW1lKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEhhbmRsZU9ubG9hZEV2ZW50
c0ZvckZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luX29wdF8gSVdlYkZyYW1lKik7CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEluRnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIHNlbmRlciwgX0luX29wdF8gSVdlYkZy
YW1lKikgIHsgcmV0dXJuIFNfT0s7IH0KIAogICAgIHZvaWQgbG9hZFVSTChfYnN0cl90Jik7CiAK
QEAgLTc5LDYgKzc5LDYgQEAgcHJpdmF0ZToKICAgICBIV05EIG1faFVSTEJhclduZCB7IDAgfTsK
ICAgICBIR0RJT0JKIG1fVVJMQmFyRm9udCB7IDAgfTsKICAgICBIR0RJT0JKIG1fb2xkRm9udCB7
IDAgfTsKLSAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OworICAgIFVMT05HIG1fcmVmQ291bnQg
eyAxIH07CiAgICAgV2luTGF1bmNoZXIqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogfTsKSW5kZXg6
IFRvb2xzL1dpbkxhdW5jaGVyL1dpbk1haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dpbkxh
dW5jaGVyL1dpbk1haW4uY3BwCShyZXZpc2lvbiAxODg2OTgpCisrKyBUb29scy9XaW5MYXVuY2hl
ci9XaW5NYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxMy0yMDE1IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgQnJl
bnQgRnVsZ2hhbS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAsIDIwMTEgQXBwY2VsZXJhdG9yLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQWxleCBDaHJpc3RlbnNlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3JGb3JXaW5kb3coSFdORCk7CiB9CiAKLWludCBXSU5BUEkgd1dpbk1haW4oSElOU1RBTkNF
LCBISU5TVEFOQ0UsIFBXU1RSLCBpbnQgbkNtZFNob3cpCitpbnQgV0lOQVBJIHdXaW5NYWluKF9J
bl8gSElOU1RBTkNFIGhJbnN0YW5jZSwgX0luX29wdF8gSElOU1RBTkNFIGhQcmV2SW5zdGFuY2Us
IF9Jbl8gTFBXU1RSIGxwc3RyQ21kTGluZSwgX0luXyBpbnQgbkNtZFNob3cpCiB7CiAjaWZkZWYg
X0NSVERCR19NQVBfQUxMT0MKICAgICBfQ3J0U2V0UmVwb3J0RmlsZShfQ1JUX1dBUk4sIF9DUlRE
QkdfRklMRV9TVERFUlIpOwpJbmRleDogVG9vbHMvd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVy
TWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVy
TWFpbi5jcHAJKHJldmlzaW9uIDE4ODY5OCkKKysrIFRvb2xzL3dpbi9ETExMYXVuY2hlci9ETExM
YXVuY2hlck1haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHdzdHJpbmcgZ2V0TGFzdEVycm9yU3RyaW5nKEhSRVNVTAogI2lmIFVTRV9DT05TT0xFX0VOVFJZ
X1BPSU5UCiBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogI2Vsc2UKLWlu
dCBXSU5BUEkgd1dpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGhQcmV2SW5z
dGFuY2UsIExQV1NUUiBscHN0ckNtZExpbmUsIGludCBuQ21kU2hvdykKK2ludCBXSU5BUEkgd1dp
bk1haW4oX0luXyBISU5TVEFOQ0UgaEluc3RhbmNlLCBfSW5fb3B0XyBISU5TVEFOQ0UgaFByZXZJ
bnN0YW5jZSwgX0luXyBMUFdTVFIgbHBzdHJDbWRMaW5lLCBfSW5fIGludCBuQ21kU2hvdykKICNl
bmRpZgogewogI2lmIGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCg==
</data>
<flag name="review"
          id="284684"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>