<?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>82740</bug_id>
          
          <creation_ts>2012-03-30 09:46:24 -0700</creation_ts>
          <short_desc>Move wxWebKit API into WebKit namespace.</short_desc>
          <delta_ts>2012-03-30 16:35:06 -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>WebKit wx</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Malcolm MacLeod">mmacleod</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kevino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>592231</commentid>
    <comment_count>0</comment_count>
      <attachid>134831</attachid>
    <who name="Malcolm MacLeod">mmacleod</who>
    <bug_when>2012-03-30 09:46:24 -0700</bug_when>
    <thetext>Created attachment 134831
Patch to move wxWebKit API into WebKit namespace.

Move wxWebKit API into WebKit namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592643</commentid>
    <comment_count>1</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2012-03-30 16:35:06 -0700</bug_when>
    <thetext>Landed in r12746, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134831</attachid>
            <date>2012-03-30 09:46:24 -0700</date>
            <delta_ts>2012-03-30 10:42:52 -0700</delta_ts>
            <desc>Patch to move wxWebKit API into WebKit namespace.</desc>
            <filename>namespaces.patch</filename>
            <type>text/plain</type>
            <size>138754</size>
            <attacher name="Malcolm MacLeod">mmacleod</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd3gvV2ViU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxMTI1NDQpCisrKyBTb3Vy
Y2UvV2ViS2l0L3d4L1dlYlNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMy
LDE1IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogCi12b2lkIHd4V2ViU2V0dGluZ3M6OlNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCBzaXpl
KQorbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU2V0dGluZ3M6OlNldERlZmF1bHRGaXhl
ZEZvbnRTaXplKGludCBzaXplKQogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAgICBtX3Nl
dHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzaXplKTsKIH0KICAgICAKLWludCB3eFdl
YlNldHRpbmdzOjpHZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgpIGNvbnN0CitpbnQgV2ViU2V0dGlu
Z3M6OkdldERlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29uc3QKIHsKICAgICBpZiAobV9zZXR0aW5n
cykKICAgICAgICAgcmV0dXJuIG1fc2V0dGluZ3MtPmRlZmF1bHRGaXhlZEZvbnRTaXplKCk7CkBA
IC00NiwxMyArNDgsMTMgQEAKICAgICByZXR1cm4gMDsKIH0KICAgICAKLXZvaWQgd3hXZWJTZXR0
aW5nczo6U2V0RGVmYXVsdEZvbnRTaXplKGludCBzaXplKQordm9pZCBXZWJTZXR0aW5nczo6U2V0
RGVmYXVsdEZvbnRTaXplKGludCBzaXplKQogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAg
ICBtX3NldHRpbmdzLT5zZXREZWZhdWx0Rm9udFNpemUoc2l6ZSk7CiB9CiAKLWludCB3eFdlYlNl
dHRpbmdzOjpHZXREZWZhdWx0Rm9udFNpemUoKSBjb25zdAoraW50IFdlYlNldHRpbmdzOjpHZXRE
ZWZhdWx0Rm9udFNpemUoKSBjb25zdAogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAgICBy
ZXR1cm4gbV9zZXR0aW5ncy0+ZGVmYXVsdEZvbnRTaXplKCk7CkBAIC02MCwxMyArNjIsMTMgQEAK
ICAgICByZXR1cm4gMDsKIH0KICAgICAKLXZvaWQgd3hXZWJTZXR0aW5nczo6U2V0TWluaW11bUZv
bnRTaXplKGludCBzaXplKQordm9pZCBXZWJTZXR0aW5nczo6U2V0TWluaW11bUZvbnRTaXplKGlu
dCBzaXplKQogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAgICBtX3NldHRpbmdzLT5zZXRN
aW5pbXVtRm9udFNpemUoc2l6ZSk7CiB9CiAKLWludCB3eFdlYlNldHRpbmdzOjpHZXRNaW5pbXVt
Rm9udFNpemUoKSBjb25zdAoraW50IFdlYlNldHRpbmdzOjpHZXRNaW5pbXVtRm9udFNpemUoKSBj
b25zdAogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAgICByZXR1cm4gbV9zZXR0aW5ncy0+
bWluaW11bUZvbnRTaXplKCk7CkBAIC03NCwxMyArNzYsMTMgQEAKICAgICByZXR1cm4gMDsKIH0K
ICAgICAKLXZvaWQgd3hXZWJTZXR0aW5nczo6U2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJv
b2wgbG9hZEF1dG9tYXRpY2FsbHkpCit2b2lkIFdlYlNldHRpbmdzOjpTZXRMb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkoYm9vbCBsb2FkQXV0b21hdGljYWxseSkKIHsKICAgICBpZiAobV9zZXR0aW5n
cykKICAgICAgICAgbV9zZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGxvYWRB
dXRvbWF0aWNhbGx5KTsKIH0KICAgICAKLWJvb2wgd3hXZWJTZXR0aW5nczo6TG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KCkgY29uc3QKK2Jvb2wgV2ViU2V0dGluZ3M6OkxvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBt
X3NldHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKTsKQEAgLTg4LDEzICs5MCwxMyBA
QAogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLXZvaWQgd3hXZWJTZXR0aW5nczo6U2V0SmF2
YVNjcmlwdEVuYWJsZWQoYm9vbCBlbmFibGVkKQordm9pZCBXZWJTZXR0aW5nczo6U2V0SmF2YVNj
cmlwdEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAg
ICBtX3NldHRpbmdzLT5zZXRTY3JpcHRFbmFibGVkKGVuYWJsZWQpOwogfQogCi1ib29sIHd4V2Vi
U2V0dGluZ3M6OklzSmF2YVNjcmlwdEVuYWJsZWQoKSBjb25zdAorYm9vbCBXZWJTZXR0aW5nczo6
SXNKYXZhU2NyaXB0RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2V0dGluZ3MpCiAgICAg
ICAgIHJldHVybiBtX3NldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKTsKQEAgLTEwMiwxMyArMTA0
LDEzIEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotdm9pZCB3eFdlYlNldHRpbmdzOjpT
ZXRMb2NhbFN0b3JhZ2VQYXRoKGNvbnN0IHd4U3RyaW5nJiBwYXRoKQordm9pZCBXZWJTZXR0aW5n
czo6U2V0TG9jYWxTdG9yYWdlUGF0aChjb25zdCB3eFN0cmluZyYgcGF0aCkKIHsKICAgICBpZiAo
bV9zZXR0aW5ncykKICAgICAgICAgbV9zZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKHBhdGgpOwogfQogCi13eFN0cmluZyB3eFdlYlNldHRpbmdzOjpHZXRMb2NhbFN0b3JhZ2VQ
YXRoKCkgY29uc3QKK3d4U3RyaW5nIFdlYlNldHRpbmdzOjpHZXRMb2NhbFN0b3JhZ2VQYXRoKCkg
Y29uc3QKIHsKICAgICBpZiAobV9zZXR0aW5ncykKICAgICAgICAgcmV0dXJuIG1fc2V0dGluZ3Mt
PmxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgpOwpAQCAtMTE2LDcgKzExOCw3IEBACiAgICAgcmV0
dXJuIHd4RW1wdHlTdHJpbmc7CiB9CiAKLXZvaWQgd3hXZWJTZXR0aW5nczo6U2V0RWRpdGFibGVM
aW5rQmVoYXZpb3Iod3hFZGl0YWJsZUxpbmtCZWhhdmlvciBiZWhhdmlvcikKK3ZvaWQgV2ViU2V0
dGluZ3M6OlNldEVkaXRhYmxlTGlua0JlaGF2aW9yKHd4RWRpdGFibGVMaW5rQmVoYXZpb3IgYmVo
YXZpb3IpCiB7CiAgICAgV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3Igd2ViQ29yZUJlaGF2
aW9yOwogICAgIGlmIChtX3NldHRpbmdzKSB7CkBAIC0xNDAsNyArMTQyLDcgQEAKICAgICB9CiB9
CiAKLXd4RWRpdGFibGVMaW5rQmVoYXZpb3Igd3hXZWJTZXR0aW5nczo6R2V0RWRpdGFibGVMaW5r
QmVoYXZpb3IoKSBjb25zdAord3hFZGl0YWJsZUxpbmtCZWhhdmlvciBXZWJTZXR0aW5nczo6R2V0
RWRpdGFibGVMaW5rQmVoYXZpb3IoKSBjb25zdAogewogICAgIHd4RWRpdGFibGVMaW5rQmVoYXZp
b3IgYmVoYXZpb3IgPSB3eEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjsKICAgICBpZiAobV9z
ZXR0aW5ncykgewpAQCAtMTY1LDEzICsxNjcsMTMgQEAKICAgICByZXR1cm4gYmVoYXZpb3I7CiB9
CiAKLXZvaWQgd3hXZWJTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBlbmFibGVkKQor
dm9pZCBXZWJTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAg
IGlmIChtX3NldHRpbmdzKQogICAgICAgICBtX3NldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZChl
bmFibGVkKTsKIH0gIAogCi1ib29sIHd4V2ViU2V0dGluZ3M6OkFyZVBsdWdpbnNFbmFibGVkKCkg
Y29uc3QKK2Jvb2wgV2ViU2V0dGluZ3M6OkFyZVBsdWdpbnNFbmFibGVkKCkgY29uc3QKIHsKICAg
ICBpZiAobV9zZXR0aW5ncykKICAgICAgICAgcmV0dXJuIG1fc2V0dGluZ3MtPmFyZVBsdWdpbnNF
bmFibGVkKCk7CkBAIC0xNzksMTMgKzE4MSwxMyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCB3eFdlYlNldHRpbmdzOjpTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKK3ZvaWQgV2ViU2V0dGluZ3M6OlNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogICAgIGlmIChtX3NldHRpbmdzKQogICAgICAgICBtX3NldHRpbmdzLT5zZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCi1ib29sIHd4V2ViU2V0dGluZ3M6OlBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKQorYm9vbCBXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpCiB7CiAgICAgaWYgKG1fc2V0dGluZ3MpCiAgICAgICAgIG1fc2V0dGluZ3MtPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKQEAgLTE5MywxMyArMTk1LDEzIEBACiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIHd4V2ViU2V0dGluZ3M6OlNldFVzZXNQYWdlQ2FjaGUoYm9vbCBl
bmFibGVkKQordm9pZCBXZWJTZXR0aW5nczo6U2V0VXNlc1BhZ2VDYWNoZShib29sIGVuYWJsZWQp
CiB7CiAgICAgaWYgKG1fc2V0dGluZ3MpCiAgICAgICAgIG1fc2V0dGluZ3MtPnNldFVzZXNQYWdl
Q2FjaGUoZW5hYmxlZCk7CiB9CiAKLWJvb2wgd3hXZWJTZXR0aW5nczo6VXNlc1BhZ2VDYWNoZSgp
Citib29sIFdlYlNldHRpbmdzOjpVc2VzUGFnZUNhY2hlKCkKIHsKICAgICBpZiAobV9zZXR0aW5n
cykKICAgICAgICAgbV9zZXR0aW5ncy0+dXNlc1BhZ2VDYWNoZSgpOwpAQCAtMjA3LDE2ICsyMDks
MTggQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgd3hXZWJTZXR0aW5nczo6U2V0T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViU2V0
dGluZ3M6OlNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sIGVuYWJsZWQp
CiB7CiAgICAgaWYgKG1fc2V0dGluZ3MpCiAgICAgICAgIG1fc2V0dGluZ3MtPnNldE9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChlbmFibGVkKTsKIH0KIAotYm9vbCB3eFdlYlNldHRp
bmdzOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQorYm9vbCBXZWJTZXR0aW5n
czo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKIHsKICAgICBpZiAobV9zZXR0
aW5ncykKICAgICAgICAgbV9zZXR0aW5ncy0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKCk7CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQorICAgIAorfQpJbmRleDogU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmNwcAkocmV2aXNpb24gMTEyNTQ0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwyNSArNjksMjcg
QEAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViVmlld1ByaXZhdGUuaCIKIAor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUg
aW50IHd4TmF2VHlwZUZyb21XZWJOYXZUeXBlKE5hdmlnYXRpb25UeXBlIHR5cGUpewogICAgIGlm
ICh0eXBlID09IE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQpCi0gICAgICAgIHJldHVybiB3eFdF
QlZJRVdfTkFWX0xJTktfQ0xJQ0tFRDsKKyAgICAgICAgcmV0dXJuIFdFQlZJRVdfTkFWX0xJTktf
Q0xJQ0tFRDsKICAgICAKICAgICBpZiAodHlwZSA9PSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0
ZWQpCi0gICAgICAgIHJldHVybiB3eFdFQlZJRVdfTkFWX0ZPUk1fU1VCTUlUVEVEOworICAgICAg
ICByZXR1cm4gV0VCVklFV19OQVZfRk9STV9TVUJNSVRURUQ7CiAgICAgICAgIAogICAgIGlmICh0
eXBlID09IE5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQpCi0gICAgICAgIHJldHVybiB3eFdFQlZJ
RVdfTkFWX0JBQ0tfTkVYVDsKKyAgICAgICAgcmV0dXJuIFdFQlZJRVdfTkFWX0JBQ0tfTkVYVDsK
ICAgICAgICAgCiAgICAgaWYgKHR5cGUgPT0gTmF2aWdhdGlvblR5cGVSZWxvYWQpCi0gICAgICAg
IHJldHVybiB3eFdFQlZJRVdfTkFWX1JFTE9BRDsKKyAgICAgICAgcmV0dXJuIFdFQlZJRVdfTkFW
X1JFTE9BRDsKICAgICAgICAgCiAgICAgaWYgKHR5cGUgPT0gTmF2aWdhdGlvblR5cGVGb3JtUmVz
dWJtaXR0ZWQpCi0gICAgICAgIHJldHVybiB3eFdFQlZJRVdfTkFWX0ZPUk1fUkVTVUJNSVRURUQ7
CisgICAgICAgIHJldHVybiBXRUJWSUVXX05BVl9GT1JNX1JFU1VCTUlUVEVEOwogICAgICAgICAK
LSAgICByZXR1cm4gd3hXRUJWSUVXX05BVl9PVEhFUjsKKyAgICByZXR1cm4gV0VCVklFV19OQVZf
T1RIRVI7CiB9CiAKIEZyYW1lTG9hZGVyQ2xpZW50V3g6OkZyYW1lTG9hZGVyQ2xpZW50V3goKQpA
QCAtMTAzLDEzICsxMDUsMTMgQEAKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpz
ZXRGcmFtZSh3eFdlYkZyYW1lICpmcmFtZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0
RnJhbWUoV2ViS2l0OjpXZWJGcmFtZSAqZnJhbWUpCiB7CiAgICAgbV93ZWJGcmFtZSA9IGZyYW1l
OwogICAgIG1fZnJhbWUgPSBtX3dlYkZyYW1lLT5tX2ltcGwtPmZyYW1lOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OnNldFdlYlZpZXcod3hXZWJWaWV3ICp3ZWJ2aWV3KQordm9pZCBG
cmFtZUxvYWRlckNsaWVudFd4OjpzZXRXZWJWaWV3KFdlYktpdDo6V2ViVmlldyAqd2VidmlldykK
IHsKICAgICBtX3dlYlZpZXcgPSB3ZWJ2aWV3OwogfQpAQCAtMjM4LDggKzI0MCw4IEBACiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKIHsK
ICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIHd4V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50
KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0U3RhdGUod3hXRUJWSUVXX0xPQURfT05M
T0FEX0hBTkRMRUQpOworICAgICAgICBXZWJLaXQ6OldlYlZpZXdMb2FkRXZlbnQgd2tFdmVudCht
X3dlYlZpZXcpOworICAgICAgICB3a0V2ZW50LlNldFN0YXRlKFdFQlZJRVdfTE9BRF9PTkxPQURf
SEFORExFRCk7CiAgICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB3a0V2ZW50
LlNldEZyYW1lKG1fd2ViRnJhbWUpOwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxl
cigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCk7CkBAIC0yOTYsOCArMjk4LDggQEAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB7CiAg
ICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICB3eFdlYlZpZXdMb2FkRXZlbnQgd2tFdmVudCht
X3dlYlZpZXcpOwotICAgICAgICB3a0V2ZW50LlNldFN0YXRlKHd4V0VCVklFV19MT0FEX05FR09U
SUFUSU5HKTsKKyAgICAgICAgV2ViS2l0OjpXZWJWaWV3TG9hZEV2ZW50IHdrRXZlbnQobV93ZWJW
aWV3KTsKKyAgICAgICAgd2tFdmVudC5TZXRTdGF0ZShXRUJWSUVXX0xPQURfTkVHT1RJQVRJTkcp
OwogICAgICAgICB3a0V2ZW50LlNldFVSTChtX2ZyYW1lLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB3a0V2
ZW50LlNldEZyYW1lKG1fd2ViRnJhbWUpOwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFu
ZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCk7CkBAIC0zMTIsNyArMzE0LDcgQEAKICAgICAg
ICAgaWYgKG1fd2ViRnJhbWUgPT0gbV93ZWJWaWV3LT5HZXRNYWluRnJhbWUoKSkKICAgICAgICAg
ICAgIG1fd2ViVmlldy0+U2V0UGFnZVRpdGxlKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgCi0g
ICAgICAgIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Cisg
ICAgICAgIFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwogICAg
ICAgICB3a0V2ZW50LlNldEZyYW1lKG1fd2ViRnJhbWUpOwogICAgICAgICB3a0V2ZW50LlNldFRp
dGxlKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIo
KS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwpAQCAtMzIzLDggKzMyNSw4IEBACiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fd2Vi
VmlldykgewotICAgICAgICB3eFdlYlZpZXdMb2FkRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwot
ICAgICAgICB3a0V2ZW50LlNldFN0YXRlKHd4V0VCVklFV19MT0FEX1RSQU5TRkVSUklORyk7Cisg
ICAgICAgIFdlYktpdDo6V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7CisgICAg
ICAgIHdrRXZlbnQuU2V0U3RhdGUoV0VCVklFV19MT0FEX1RSQU5TRkVSUklORyk7CiAgICAgICAg
IHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXF1
ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB3a0V2ZW50LlNldEZyYW1lKG1fd2ViRnJh
bWUpOwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQo
d2tFdmVudCk7CkBAIC0zMzQsOCArMzM2LDggQEAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6
ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKQogewogICAgIGlmIChtX3dlYlZpZXcpIHsK
LSAgICAgICAgd3hXZWJWaWV3TG9hZEV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKLSAgICAgICAg
d2tFdmVudC5TZXRTdGF0ZSh3eFdFQlZJRVdfTE9BRF9ET0NfQ09NUExFVEVEKTsKKyAgICAgICAg
V2ViS2l0OjpXZWJWaWV3TG9hZEV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKKyAgICAgICAgd2tF
dmVudC5TZXRTdGF0ZShXRUJWSUVXX0xPQURfRE9DX0NPTVBMRVRFRCk7CiAgICAgICAgIHdrRXZl
bnQuU2V0VVJMKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKICAgICAgICAg
d2tFdmVudC5TZXRGcmFtZShtX3dlYkZyYW1lKTsKICAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVu
dEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwpAQCAtNDAzLDggKzQwNSw4IEBACiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9u
KCkKIHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIHd4V2ViVmlld0xvYWRFdmVudCB3
a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0U3RhdGUod3hXRUJWSUVXX0xP
QURfRExfQ09NUExFVEVEKTsKKyAgICAgICAgV2ViS2l0OjpXZWJWaWV3TG9hZEV2ZW50IHdrRXZl
bnQobV93ZWJWaWV3KTsKKyAgICAgICAgd2tFdmVudC5TZXRTdGF0ZShXRUJWSUVXX0xPQURfRExf
Q09NUExFVEVEKTsKICAgICAgICAgd2tFdmVudC5TZXRVUkwobV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB3a0V2ZW50LlNldEZyYW1lKG1fd2ViRnJhbWUpOwog
ICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVu
dCk7CkBAIC03NzksOCArNzgxLDggQEAKICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsKICAg
ICB9CiAgICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICB3eFdlYlZpZXdMb2FkRXZlbnQgd2tF
dmVudChtX3dlYlZpZXcpOwotICAgICAgICB3a0V2ZW50LlNldFN0YXRlKHd4V0VCVklFV19MT0FE
X0ZBSUxFRCk7CisgICAgICAgIFdlYktpdDo6V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50KG1fd2Vi
Vmlldyk7CisgICAgICAgIHdrRXZlbnQuU2V0U3RhdGUoV0VCVklFV19MT0FEX0ZBSUxFRCk7CiAg
ICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB3a0V2ZW50LlNldEZyYW1lKG1f
d2ViRnJhbWUpOwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNz
RXZlbnQod2tFdmVudCk7CkBAIC04MjQsNyArODI2LDcgQEAKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudCB3a0V2
ZW50KG1fd2ViVmlldyk7CisgICAgICAgIFdlYktpdDo6V2ViVmlld05ld1dpbmRvd0V2ZW50IHdr
RXZlbnQobV93ZWJWaWV3KTsKICAgICAgICAgd2tFdmVudC5TZXRVUkwocmVxdWVzdC51cmwoKS5z
dHJpbmcoKSk7CiAgICAgICAgIHdrRXZlbnQuU2V0VGFyZ2V0TmFtZSh0YXJnZXROYW1lKTsKICAg
ICAgICAgd2tFdmVudC5TZXRGcmFtZShtX3dlYkZyYW1lKTsKQEAgLTg0NSw3ICs4NDcsNyBAQAog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAg
d3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKKyAgICAgICAgV2Vi
S2l0OjpXZWJWaWV3QmVmb3JlTG9hZEV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKICAgICAgICAg
d2tFdmVudC5TZXROYXZpZ2F0aW9uVHlwZSh3eE5hdlR5cGVGcm9tV2ViTmF2VHlwZShhY3Rpb24u
dHlwZSgpKSk7CiAgICAgICAgIHdrRXZlbnQuU2V0VVJMKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkp
OwogICAgICAgICB3a0V2ZW50LlNldEZyYW1lKG1fd2ViRnJhbWUpOwpAQCAtODgwLDcgKzg4Miw3
IEBACiAgICAgZGF0YS0+bWFyZ2luV2lkdGggPSBtYXJnaW5XaWR0aDsKICAgICBkYXRhLT5tYXJn
aW5IZWlnaHQgPSBtYXJnaW5IZWlnaHQ7CiAKLSAgICB3eFdlYkZyYW1lKiBuZXdGcmFtZSA9IG5l
dyB3eFdlYkZyYW1lKG1fd2ViVmlldywgbV93ZWJGcmFtZSwgZGF0YSk7CisgICAgV2ViS2l0OjpX
ZWJGcmFtZSogbmV3RnJhbWUgPSBuZXcgV2ViS2l0OjpXZWJGcmFtZShtX3dlYlZpZXcsIG1fd2Vi
RnJhbWUsIGRhdGEpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBjaGlsZEZyYW1lID0gYWRvcHRSZWYo
bmV3RnJhbWUtPm1faW1wbC0+ZnJhbWUpOwogCkBAIC05NDUsNyArOTQ3LDcgQEAKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICB3eFdlYlZpZXdXaW5kb3dP
YmplY3RDbGVhcmVkRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOworICAgICAgICBXZWJLaXQ6Oldl
YlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwogICAgICAg
ICBGcmFtZSogY29yZUZyYW1lID0gbV93ZWJWaWV3LT5HZXRNYWluRnJhbWUoKS0+R2V0RnJhbWUo
KTsKICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSB0b0dsb2JhbFJlZihjb3Jl
RnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5n
bG9iYWxFeGVjKCkpOwogICAgICAgICBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QgPSB0b1JlZihj
b3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oCShyZXZpc2lvbiAxMTI1NDQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvQ2hyb21lQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDEzIEBACiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKIAordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGllbnRX
eCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogcHVibGljOgotICAgIENocm9tZUNsaWVudFd4KHd4
V2ViVmlldyopOworICAgIENocm9tZUNsaWVudFd4KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5D
aHJvbWVDbGllbnRXeCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKTsKIApA
QCAtMTQ4LDcgKzE1MCw3IEBACiAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgd3hXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgV2ViVmlldyog
bV93ZWJWaWV3OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0VkaXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMTI1NDQpCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw4IEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBDdHJsS2V5ID0gMSA8PCAwOwpAQCAtMjUzLDkgKzI1NSw5IEBACiAgICAgRnJhbWUqIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
CiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIHd4V2ViVmlldyogd2ViS2l0V2luID0gZHluYW1p
Y19jYXN0PHd4V2ViVmlldyo+KGZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCkpOworICAgICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9IGR5bmFt
aWNfY2FzdDxXZWJLaXQ6OldlYlZpZXcqPihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBs
YXRmb3JtUGFnZUNsaWVudCgpKTsKICAgICAgICAgaWYgKHdlYktpdFdpbikgewotICAgICAgICAg
ICAgd3hXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQgd2tFdmVudCh3ZWJLaXRXaW4pOworICAg
ICAgICAgICAgV2ViS2l0OjpXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQgd2tFdmVudCh3ZWJL
aXRXaW4pOwogICAgICAgICAgICAgd2ViS2l0V2luLT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vz
c0V2ZW50KHdrRXZlbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjgxLDcgKzI4Myw3IEBACiAg
ICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAKICAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgd3hXZWJWaWV3KiB3ZWJLaXRX
aW4gPSBkeW5hbWljX2Nhc3Q8d3hXZWJWaWV3Kj4oZnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygp
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CisgICAgICAgIFdlYlZpZXcqIHdlYktpdFdpbiA9IGR5
bmFtaWNfY2FzdDxXZWJWaWV3Kj4oZnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKSk7CiAgICAgICAgIGlmICh3ZWJLaXRXaW4pCiAgICAgICAgICAgICB3ZWJL
aXRXaW4tPm1faW1wbC0+dW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKICAgICB9CkBAIC0yOTIsNyAr
Mjk0LDcgQEAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIGlmIChmcmFtZSkgewotICAgICAgICB3eFdlYlZp
ZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDx3eFdlYlZpZXcqPihmcmFtZS0+dmlldygpLT5o
b3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKKyAgICAgICAgV2ViVmlldyogd2Vi
S2l0V2luID0gZHluYW1pY19jYXN0PFdlYlZpZXcqPihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKICAgICAgICAgaWYgKHdlYktpdFdpbikKICAgICAg
ICAgICAgIHdlYktpdFdpbi0+bV9pbXBsLT5yZWRvU3RhY2suYXBwZW5kKHN0ZXApOwogICAgIH0K
QEAgLTMwMyw3ICszMDUsNyBAQAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIAogICAgIGlmIChmcmFtZSkgewot
ICAgICAgICB3eFdlYlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDx3eFdlYlZpZXcqPihm
cmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKKyAgICAg
ICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8V2ViS2l0OjpXZWJW
aWV3Kj4oZnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7
CiAgICAgICAgIGlmICh3ZWJLaXRXaW4pIHsKICAgICAgICAgICAgIHdlYktpdFdpbi0+bV9pbXBs
LT5yZWRvU3RhY2suY2xlYXIoKTsKICAgICAgICAgICAgIHdlYktpdFdpbi0+bV9pbXBsLT51bmRv
U3RhY2suY2xlYXIoKTsKQEAgLTMyNiw3ICszMjgsNyBAQAogICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgaWYg
KGZyYW1lKSB7Ci0gICAgICAgIHd4V2ViVmlldyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PHd4
V2ViVmlldyo+KGZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCkpOworICAgICAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDxX
ZWJLaXQ6OldlYlZpZXcqPihmcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFn
ZUNsaWVudCgpKTsKICAgICAgICAgaWYgKHdlYktpdFdpbikgewogICAgICAgICAgICAgcmV0dXJu
IHdlYktpdFdpbi0+bV9pbXBsLT51bmRvU3RhY2suc2l6ZSgpICE9IDA7CiAgICAgICAgIH0KQEAg
LTMzOSw3ICszNDEsNyBAQAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAg
IHd4V2ViVmlldyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PHd4V2ViVmlldyo+KGZyYW1lLT52
aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOworICAgICAgICBXZWJL
aXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDxXZWJLaXQ6OldlYlZpZXcqPihm
cmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKICAgICAg
ICAgaWYgKHdlYktpdFdpbiAmJiB3ZWJLaXRXaW4pIHsKICAgICAgICAgICAgIHJldHVybiB3ZWJL
aXRXaW4tPm1faW1wbC0+cmVkb1N0YWNrLnNpemUoKSAhPSAwOwogICAgICAgICB9CkBAIC0zNTIs
NyArMzU0LDcgQEAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIGlmIChmcmFtZSkgewotICAgICAgICB3eFdl
YlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDx3eFdlYlZpZXcqPihmcmFtZS0+dmlldygp
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKKyAgICAgICAgV2ViS2l0OjpX
ZWJWaWV3KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3Kj4oZnJhbWUt
PnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CiAgICAgICAgIGlm
ICh3ZWJLaXRXaW4pIHsKICAgICAgICAgICAgIHdlYktpdFdpbi0+bV9pbXBsLT51bmRvU3RhY2su
bGFzdCgpLT51bmFwcGx5KCk7CiAgICAgICAgICAgICB3ZWJLaXRXaW4tPm1faW1wbC0+dW5kb1N0
YWNrLnJlbW92ZSgtLXdlYktpdFdpbi0+bV9pbXBsLT51bmRvU3RhY2suZW5kKCkpOwpAQCAtMzY1
LDcgKzM2Nyw3IEBACiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAoZnJhbWUpIHsgICAgCi0gICAgICAg
IHd4V2ViVmlldyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PHd4V2ViVmlldyo+KGZyYW1lLT52
aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOworICAgICAgICBXZWJL
aXQ6OldlYlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDxXZWJLaXQ6OldlYlZpZXcqPihm
cmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKICAgICAg
ICAgaWYgKHdlYktpdFdpbikgewogICAgICAgICAgICAgd2ViS2l0V2luLT5tX2ltcGwtPnJlZG9T
dGFjay5sYXN0KCktPnJlYXBwbHkoKTsKICAgICAgICAgICAgIHdlYktpdFdpbi0+bV9pbXBsLT5y
ZWRvU3RhY2sucmVtb3ZlKC0td2ViS2l0V2luLT5tX2ltcGwtPnJlZG9TdGFjay5lbmQoKSk7CkBA
IC00ODgsOSArNDkwLDkgQEAKIHZvaWQgRWRpdG9yQ2xpZW50V3g6OnJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogewogICAgIGlmIChmcmFtZSkgewotICAgICAgICB3eFdl
YlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDx3eFdlYlZpZXcqPihmcmFtZS0+dmlldygp
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKKyAgICAgICAgV2ViS2l0OjpX
ZWJWaWV3KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8V2ViS2l0OjpXZWJWaWV3Kj4oZnJhbWUt
PnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CiAgICAgICAgIGlm
ICh3ZWJLaXRXaW4pIHsKLSAgICAgICAgICAgIHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVu
dCB3a0V2ZW50KHdlYktpdFdpbik7CisgICAgICAgICAgICBXZWJLaXQ6OldlYlZpZXdTZWxlY3Rp
b25DaGFuZ2VkRXZlbnQgd2tFdmVudCh3ZWJLaXRXaW4pOwogICAgICAgICAgICAgd2ViS2l0V2lu
LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5oCShyZXZpc2lvbiAxMTI1NDQpCisrKyBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw5ICszNywxMyBAQAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAotY2xhc3Mgd3hXZWJGcmFtZTsKLWNsYXNzIHd4V2ViVmlldzsKK25h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYlZpZXc7CisKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CkBAIC01NiwxMCArNjAsMTAgQEAKICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnRXeCgpOwog
ICAgICAgICB+RnJhbWVMb2FkZXJDbGllbnRXeCgpOwogICAgICAgICAKLSAgICAgICAgd3hXZWJG
cmFtZSogd2ViRnJhbWUoKSB7IHJldHVybiBtX3dlYkZyYW1lOyB9Ci0gICAgICAgIHZvaWQgc2V0
RnJhbWUod3hXZWJGcmFtZSAqZnJhbWUpOwotICAgICAgICB3eFdlYlZpZXcqIHdlYlZpZXcoKSB7
IHJldHVybiBtX3dlYlZpZXc7IH0KLSAgICAgICAgdm9pZCBzZXRXZWJWaWV3KHd4V2ViVmlldyAq
d2Vidmlldyk7CisgICAgICAgIFdlYktpdDo6V2ViRnJhbWUqIHdlYkZyYW1lKCkgeyByZXR1cm4g
bV93ZWJGcmFtZTsgfQorICAgICAgICB2b2lkIHNldEZyYW1lKFdlYktpdDo6V2ViRnJhbWUgKmZy
YW1lKTsKKyAgICAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJW
aWV3OyB9CisgICAgICAgIHZvaWQgc2V0V2ViVmlldyhXZWJLaXQ6OldlYlZpZXcgKndlYnZpZXcp
OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7IC8vIG1haW5seSBm
b3IgYXNzZXJ0aW9ucwogCkBAIC0yMzEsOSArMjM1LDkgQEAKICAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB3eFdlYkZyYW1lICptX3dlYkZyYW1lOworICAgICAg
ICBXZWJLaXQ6OldlYkZyYW1lICptX3dlYkZyYW1lOwogICAgICAgICBGcmFtZSogbV9mcmFtZTsK
LSAgICAgICAgd3hXZWJWaWV3ICptX3dlYlZpZXc7CisgICAgICAgIFdlYktpdDo6V2ViVmlldyAq
bV93ZWJWaWV3OwogICAgICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CiAgICAgICAgIGJv
b2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNs
aWVudFd4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Vk
aXRvckNsaWVudFd4LmgJKHJldmlzaW9uIDExMjU0NCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVkaXRvckNsaWVudFd4IDogcHVibGlj
IEVkaXRvckNsaWVudCwgcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKLWZyaWVuZCBjbGFzcyA6
Ond4V2ViVmlldzsKLWZyaWVuZCBjbGFzcyA6Ond4V2ViRnJhbWU7CitmcmllbmQgY2xhc3MgV2Vi
S2l0OjpXZWJWaWV3OworZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViRnJhbWU7CiAKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5FZGl0b3JDbGllbnRXeCgpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMTI1NDQp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
d3hXZWJLaXRXaW5kb3dGZWF0dXJlcyB3a0ZlYXR1cmVzZm9yV2luZG93RmVhdHVyZXMoY29uc3Qg
V2luZG93RmVhdHVyZXMmIGZlYXR1cmVzKQorV2ViS2l0V2luZG93RmVhdHVyZXMgd2tGZWF0dXJl
c2ZvcldpbmRvd0ZlYXR1cmVzKGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJlcykKIHsKLSAg
ICB3eFdlYktpdFdpbmRvd0ZlYXR1cmVzIHdrRmVhdHVyZXM7CisgICAgV2ViS2l0V2luZG93RmVh
dHVyZXMgd2tGZWF0dXJlczsKICAgICB3a0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlID0gZmVhdHVy
ZXMubWVudUJhclZpc2libGU7CiAgICAgd2tGZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gZmVh
dHVyZXMuc3RhdHVzQmFyVmlzaWJsZTsKICAgICB3a0ZlYXR1cmVzLnRvb2xCYXJWaXNpYmxlID0g
ZmVhdHVyZXMudG9vbEJhclZpc2libGU7CkBAIC03Niw3ICs3Niw3IEBACiAgICAgcmV0dXJuIHdr
RmVhdHVyZXM7CiB9CiAKLUNocm9tZUNsaWVudFd4OjpDaHJvbWVDbGllbnRXeCh3eFdlYlZpZXcq
IHdlYlZpZXcpCitDaHJvbWVDbGllbnRXeDo6Q2hyb21lQ2xpZW50V3goV2ViVmlldyogd2ViVmll
dykKIHsKICAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OwogfQpAQCAtMTM5LDEzICsxMzksMTMgQEAK
IFBhZ2UqIENocm9tZUNsaWVudFd4OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJikKIHsKICAgICBQYWdlKiBteVBhZ2UgPSAwOwotICAgIHd4V2ViVmlld05ld1dp
bmRvd0V2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKKyAgICBXZWJWaWV3TmV3V2luZG93RXZlbnQg
d2tFdmVudChtX3dlYlZpZXcpOwogICAgIAotICAgIHd4V2ViS2l0V2luZG93RmVhdHVyZXMgd2tG
ZWF0dXJlcyA9IHdrRmVhdHVyZXNmb3JXaW5kb3dGZWF0dXJlcyhmZWF0dXJlcyk7CisgICAgV2Vi
S2l0V2luZG93RmVhdHVyZXMgd2tGZWF0dXJlcyA9IHdrRmVhdHVyZXNmb3JXaW5kb3dGZWF0dXJl
cyhmZWF0dXJlcyk7CiAgICAgd2tFdmVudC5TZXRXaW5kb3dGZWF0dXJlcyh3a0ZlYXR1cmVzKTsK
ICAgICAKICAgICBpZiAobV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50
KHdrRXZlbnQpKSB7Ci0gICAgICAgIGlmICh3eFdlYlZpZXcqIHdlYlZpZXcgPSB3a0V2ZW50Lkdl
dFdlYlZpZXcoKSkgeworICAgICAgICBpZiAoV2ViVmlldyogd2ViVmlldyA9IHdrRXZlbnQuR2V0
V2ViVmlldygpKSB7CiAgICAgICAgICAgICBXZWJWaWV3UHJpdmF0ZSogaW1wbCA9IHdlYlZpZXct
Pm1faW1wbDsKICAgICAgICAgICAgIGlmIChpbXBsKQogICAgICAgICAgICAgICAgIG15UGFnZSA9
IGltcGwtPnBhZ2U7CkBAIC0yMzQsMTEgKzIzNCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKIHsKICAgICBpZiAo
bV93ZWJWaWV3KSB7Ci0gICAgICAgIHd4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQgd2tFdmVu
dChtX3dlYlZpZXcpOworICAgICAgICBXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudCB3a0V2ZW50
KG1fd2ViVmlldyk7CiAgICAgICAgIHdrRXZlbnQuU2V0TWVzc2FnZShtZXNzYWdlKTsKICAgICAg
ICAgd2tFdmVudC5TZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpOwogICAgICAgICB3a0V2ZW50LlNl
dFNvdXJjZUlEKHNvdXJjZUlEKTsKLSAgICAgICAgd2tFdmVudC5TZXRMZXZlbChzdGF0aWNfY2Fz
dDx3eFdlYlZpZXdDb25zb2xlTWVzc2FnZUxldmVsPihsZXZlbCkpOworICAgICAgICB3a0V2ZW50
LlNldExldmVsKHN0YXRpY19jYXN0PFdlYlZpZXdDb25zb2xlTWVzc2FnZUxldmVsPihsZXZlbCkp
OwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tF
dmVudCk7CiAgICAgfQogfQpAQCAtMjcxLDcgKzI3MSw3IEBACiB2b2lkIENocm9tZUNsaWVudFd4
OjpydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIHd4V2ViVmlld0FsZXJ0RXZlbnQgd2tF
dmVudChtX3dlYlZpZXcpOworICAgICAgICBXZWJWaWV3QWxlcnRFdmVudCB3a0V2ZW50KG1fd2Vi
Vmlldyk7CiAgICAgICAgIHdrRXZlbnQuU2V0TWVzc2FnZShzdHJpbmcpOwogICAgICAgICBpZiAo
IW1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KSkKICAg
ICAgICAgICAgIHd4TWVzc2FnZUJveChzdHJpbmcsIHd4VCgiSmF2YVNjcmlwdCBBbGVydCIpLCB3
eE9LKTsKQEAgLTI4Miw3ICsyODIsNyBAQAogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAg
ICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICB3eFdlYlZpZXdDb25maXJtRXZlbnQgd2tFdmVu
dChtX3dlYlZpZXcpOworICAgICAgICBXZWJWaWV3Q29uZmlybUV2ZW50IHdrRXZlbnQobV93ZWJW
aWV3KTsKICAgICAgICAgd2tFdmVudC5TZXRNZXNzYWdlKHN0cmluZyk7CiAgICAgICAgIGlmICht
X3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCkpCiAgICAg
ICAgICAgICByZXN1bHQgPSB3a0V2ZW50LkdldFJldHVybkNvZGUoKSA9PSB3eElEX1lFUzsKQEAg
LTI5OCw3ICsyOTgsNyBAQAogYm9vbCBDaHJvbWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdFByb21w
dChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZh
dWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KQogewogICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAg
ICAgd3hXZWJWaWV3UHJvbXB0RXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOworICAgICAgICBXZWJW
aWV3UHJvbXB0RXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwogICAgICAgICB3a0V2ZW50LlNldE1l
c3NhZ2UobWVzc2FnZSk7CiAgICAgICAgIHdrRXZlbnQuU2V0UmVzcG9uc2UoZGVmYXVsdFZhbHVl
KTsKICAgICAgICAgaWYgKG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVu
dCh3a0V2ZW50KSkgewpAQCAtNDExLDkgKzQxMSw5IEBACiAKIHZvaWQgQ2hyb21lQ2xpZW50V3g6
OnByaW50KEZyYW1lKiBmcmFtZSkKIHsKLSAgICB3eFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtpdChm
cmFtZSk7CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKICAgICBpZiAod2Vi
RnJhbWUpIHsKLSAgICAgICAgd3hXZWJWaWV3UHJpbnRGcmFtZUV2ZW50IGV2ZW50KG1fd2ViVmll
dyk7CisgICAgICAgIFdlYlZpZXdQcmludEZyYW1lRXZlbnQgZXZlbnQobV93ZWJWaWV3KTsKICAg
ICAgICAgZXZlbnQuU2V0V2ViRnJhbWUod2ViRnJhbWUpOwogICAgICAgICBpZiAoIW1fd2ViVmll
dy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudChldmVudCkpCiAgICAgICAgICAgICB3
ZWJGcmFtZS0+UHJpbnQodHJ1ZSk7CkBAIC00MjUsNyArNDI1LDcgQEAKIHsKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgcXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CiAKLSAgICBpZiAod3hXZWJGcmFt
ZSogd2ViRnJhbWUgPSBtX3dlYlZpZXctPkdldE1haW5GcmFtZSgpKQorICAgIGlmIChXZWJGcmFt
ZSogd2ViRnJhbWUgPSBtX3dlYlZpZXctPkdldE1haW5GcmFtZSgpKQogICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gd2ViRnJhbWUtPkdldEZyYW1lKCkpCiAgICAgICAgICAgICBpZiAoRG9jdW1l
bnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgaWYgKCFE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihkb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlNldHRpbmdzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJTZXR0aW5ncy5oCShyZXZpc2lvbiAxMTI1
NDQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDggQEAKIGNsYXNzIFNldHRpbmdzOwogfQogCituYW1lc3BhY2UgV2ViS2l0IHsK
KwogZW51bSB3eEVkaXRhYmxlTGlua0JlaGF2aW9yIHsKICAgICB3eEVkaXRhYmxlTGlua0RlZmF1
bHRCZWhhdmlvciwKICAgICB3eEVkaXRhYmxlTGlua0Fsd2F5c0xpdmUsCkBAIC00OSwyNSArNTEs
MjUgQEAKIH07CiAKIC8qKgotICAgIEBjbGFzcyB3eFdlYlNldHRpbmdzCisgICAgQGNsYXNzIFdl
YlNldHRpbmdzCiAgICAgCiAgICAgVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIGNv
bmZpZ3VyYWJsZSBhc3BlY3RzIG9mIHRoZSBXZWJLaXQgZW5naW5lLgogICAgIAotICAgIERvIG5v
dCBpbnN0YW50aWF0ZSB0aGlzIG9iamVjdCBkaXJlY3RseS4gSW5zdGVhZCwgY3JlYXRlIGEgd3hX
ZWJWaWV3IGFuZAotICAgIGNhbGwgaXRzIHd4V2ViVmlldzo6R2V0V2ViU2V0dGluZ3MoKSBtZXRo
b2QgdG8gZ2V0IGFuZCBjaGFuZ2UgdGhhdCBXZWJWaWV3J3Mgc2V0dGluZ3MuCisgICAgRG8gbm90
IGluc3RhbnRpYXRlIHRoaXMgb2JqZWN0IGRpcmVjdGx5LiBJbnN0ZWFkLCBjcmVhdGUgYSBXZWJW
aWV3IGFuZAorICAgIGNhbGwgaXRzIFdlYlZpZXc6OkdldFdlYlNldHRpbmdzKCkgbWV0aG9kIHRv
IGdldCBhbmQgY2hhbmdlIHRoYXQgV2ViVmlldydzIHNldHRpbmdzLgogICAgIAogKi8KIAotY2xh
c3MgV1hETExJTVBFWFBfV0VCS0lUIHd4V2ViU2V0dGluZ3M6IHB1YmxpYyB3eE9iamVjdCB7Citj
bGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViU2V0dGluZ3M6IHB1YmxpYyB3eE9iamVjdCB7CiBw
dWJsaWM6Ci0gICAgd3hXZWJTZXR0aW5ncyhXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpIDoK
KyAgICBXZWJTZXR0aW5ncyhXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpIDoKICAgICAgICAg
d3hPYmplY3QoKSwKICAgICAgICAgbV9zZXR0aW5ncyhzZXR0aW5ncykKLSAgICB7fQorICAgIHsg
fQogICAgIAotICAgIHd4V2ViU2V0dGluZ3MoKSA6IHd4T2JqZWN0KCkge30KKyAgICBXZWJTZXR0
aW5ncygpIDogd3hPYmplY3QoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIH53eFdlYlNldHRpbmdz
KCkgeyB9CisgICAgdmlydHVhbCB+V2ViU2V0dGluZ3MoKSB7IH0KIAogICAgIC8qKgogICAgICAg
ICBTZXRzIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZml4ZWQgZm9udHMuCkBAIC0xMzEsMTIg
KzEzMywxMiBAQAogICAgIHd4U3RyaW5nIEdldExvY2FsU3RvcmFnZVBhdGgoKSBjb25zdDsKICAg
ICAKICAgICAvKioKLSAgICAgICAgU2V0cyBob3cgbGlua3MgYXJlIGhhbmRsZWQgd2hlbiB0aGUg
d3hXZWJWaWV3IGlzIGluIGVkaXRpbmcgbW9kZS4gCisgICAgICAgIFNldHMgaG93IGxpbmtzIGFy
ZSBoYW5kbGVkIHdoZW4gdGhlIFdlYlZpZXcgaXMgaW4gZWRpdGluZyBtb2RlLiAKICAgICAqLyAg
ICAKICAgICB2b2lkIFNldEVkaXRhYmxlTGlua0JlaGF2aW9yKHd4RWRpdGFibGVMaW5rQmVoYXZp
b3IgYmVoYXZpb3IpOwogICAgIAogICAgIC8qKgotICAgICAgICBSZXR1cm5zIGhvdyBsaW5rcyBh
cmUgaGFuZGxlZCB3aGVuIHRoZSB3eFdlYlZpZXcgaXMgaW4gZWRpdGluZyBtb2RlLiAKKyAgICAg
ICAgUmV0dXJucyBob3cgbGlua3MgYXJlIGhhbmRsZWQgd2hlbiB0aGUgV2ViVmlldyBpcyBpbiBl
ZGl0aW5nIG1vZGUuIAogICAgICovICAgCiAgICAgd3hFZGl0YWJsZUxpbmtCZWhhdmlvciBHZXRF
ZGl0YWJsZUxpbmtCZWhhdmlvcigpIGNvbnN0OwogICAgIApAQCAtMTg2LDQgKzE4OCw2IEBACiAK
IH07CiAKK30KKwogI2VuZGlmIC8vIFdlYlNldHRpbmdzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTI2NDQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI2MCBAQAorMjAxMi0wMy0yOSAgTWFsY29sbSBNYWNMZW9kICA8bWFs
Y29sbS5tYWNsZW9kQHRzaHdhbmVkamUuY29tPgorCisgICAgICAgIFt3eF0gTW92ZSB3eFdlYktp
dCBBUEkgaW50byBXZWJLaXQgbmFtZXNwYWNlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQnJvd3NlclNoZWxsLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VTb3VyY2VWaWV3RnJhbWU6OlBhZ2VTb3VyY2VW
aWV3RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6OldlYkJyb3dzZXJT
aGVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6fldlYkJyb3dzZXJTaGVs
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6U2hvd0RlYnVnTWVudSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25RdWl0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQnJvd3NlclNoZWxsOjpPbkFib3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3Nl
clNoZWxsOjpPbkxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpP
bkxvYWRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25CZWZvcmVM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPbkFkZHJlc3NCYXJFbnRl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25TZWFyY2hDdHJsRW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6Ok9uQ3V0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQnJvd3NlclNoZWxsOjpPbkNvcHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm93
c2VyU2hlbGw6Ok9uUGFzdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6Ok9u
QmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25Gb3J3YXJkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPblN0b3ApOgorICAgICAgICAoV2ViS2l0
OjpXZWJCcm93c2VyU2hlbGw6Ok9uUmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3Nl
clNoZWxsOjpPbk1ha2VUZXh0TGFyZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNo
ZWxsOjpPbk1ha2VUZXh0U21hbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVs
bDo6T25HZXRTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm93c2VyU2hlbGw6Ok9uU2V0
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3NlclNoZWxsOjpPbkJyb3dzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJTaGVsbDo6T25FZGl0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQnJvd3NlclNoZWxsOjpPblJ1blNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJy
b3dzZXJTaGVsbDo6T25FZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb3dzZXJT
aGVsbDo6T25HZXRFZGl0Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvd3Nl
clNoZWxsOjpPblByaW50KToKKyAgICAgICAgKiBXZWJCcm93c2VyU2hlbGwuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogV2ViRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFNlbGVjdGlvbjo6V2ViS2l0U2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0U2VsZWN0aW9uOjpHZXRSb290RWRpdGFibGVFbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0U2VsZWN0aW9uOjpHZXRBc1JhbmdlKToKKyAgICAg
ICAgKiBXZWJET01TZWxlY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2Vi
RWRpdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29t
bWFuZDo6V2ViRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFuZDo6
fldlYkVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdENvbW1hbmQ6OlNldE5v
ZGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFuZDo6QXBwbHkpOgor
ICAgICAgICAqIFdlYkVkaXQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OldlYkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6On5XZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpHZXROYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkdldEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OlN0b3ApOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6UmVsb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OkdldFBhZ2VTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6U2V0UGFnZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpHZXRJ
bm5lclRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0QXNNYXJrdXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpHZXRTZWxlY3Rpb25Bc0hUTUwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6R2V0U2VsZWN0aW9uQXNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OkdldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpSdW5TY3Jp
cHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6RXhlY3V0ZUVkaXRDb21tYW5kKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkdldEVkaXRDb21tYW5kU3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6R2V0RWRpdENvbW1hbmRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkxvYWRV
UkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6R2V0VVJMKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OkdvQmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpHb0Zvcndh
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Q2FuR29CYWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OkNhbkdvRm9yd2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpVbmRvKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OlJlZG8pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6Q2FuVW5kbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpDYW5S
ZWRvKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkNhbkluY3JlYXNlVGV4dFNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpDYW5EZWNyZWFzZVRleHRTaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
UmVzZXRUZXh0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpNYWtlRWRpdGFibGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6SXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpDYW5Db3B5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkNvcHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Q2FuQ3V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OkN1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpDYW5QYXN0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpQYXN0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpQcmludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OlNob3VsZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OkdldENvbXBhdGliaWxpdHlNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OkdyYW50VW5pdmVyc2FsQWNjZXNzKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndrRmVhdHVyZXNmb3JXaW5kb3dGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6Q2hyb21lQ2xpZW50V3gpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50V3g6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFd4OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeDo6cHJpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmV4
Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50V3gpOgorICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6
OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRXeDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRX
eDo6cmVnaXN0ZXJSZWRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
V3g6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmNhblJlZG8p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnVuZG8pOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50V3g6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKEVkaXRvckNsaWVudFd4KToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d3hOYXZUeXBlRnJvbVdlYk5hdlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRXeDo6c2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRXeDo6c2V0V2ViVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4
OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRj
aERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFd4Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZCk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6d2Vi
RnJhbWUpOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRXeCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFd4Ojp3ZWJWaWV3KToKKyAgICAgICAgKiBXZWJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0
RGVmYXVsdEZpeGVkRm9udFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6R2V0
RGVmYXVsdEZpeGVkRm9udFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0
RGVmYXVsdEZvbnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OkdldERlZmF1
bHRGb250U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpTZXRNaW5pbXVtRm9u
dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6R2V0TWluaW11bUZvbnRTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OlNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpMb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0SmF2YVNjcmlwdEVuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6SXNKYXZhU2NyaXB0RW5hYmxlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpTZXRMb2NhbFN0b3JhZ2VQYXRoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OkdldExvY2FsU3RvcmFnZVBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0RWRpdGFibGVMaW5rQmVoYXZpb3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6R2V0RWRpdGFibGVMaW5rQmVoYXZpb3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6U2V0UGx1Z2luc0VuYWJsZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTZXR0aW5nczo6QXJlUGx1Z2luc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXR0aW5nczo6U2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2V0dGluZ3M6OlNldFVzZXNQYWdlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0
aW5nczo6VXNlc1BhZ2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzOjpTZXRP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKiBX
ZWJTZXR0aW5ncy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdMb2FkRXZlbnQ6Oldl
YlZpZXdMb2FkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3QmVmb3JlTG9hZEV2ZW50
OjpXZWJWaWV3QmVmb3JlTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld05ld1dp
bmRvd0V2ZW50OjpXZWJWaWV3TmV3V2luZG93RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3UmlnaHRDbGlja0V2ZW50OjpXZWJWaWV3UmlnaHRDbGlja0V2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQ6OldlYlZpZXdDb25zb2xlTWVzc2FnZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0FsZXJ0RXZlbnQ6OldlYlZpZXdBbGVydEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NvbmZpcm1FdmVudDo6V2ViVmlld0NvbmZp
cm1FdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdQcm9tcHRFdmVudDo6V2ViVmlld1By
b21wdEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudDo6
V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdXaW5k
b3dPYmplY3RDbGVhcmVkRXZlbnQ6OldlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQ6OldlYlZpZXdDb250
ZW50c0NoYW5nZWRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdTZWxlY3Rpb25DaGFu
Z2VkRXZlbnQ6OldlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3UHJpbnRGcmFtZUV2ZW50OjpXZWJWaWV3UHJpbnRGcmFtZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0RPTUVsZW1lbnRJbmZvOjpXZWJWaWV3RE9NRWxlbWVudEluZm8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXRDYWNoZVBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OkdldENhY2hlUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0RPTUVsZW1lbnRJbmZvOjp+V2ViVmlld0RPTUVsZW1lbnRJbmZvKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6On5XZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6T25UTFdBY3RpdmF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTdG9w
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6UmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6R2V0UGFnZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OlNldFBh
Z2VTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRJbm5lclRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRBc01hcmt1cCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OkdldEV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpHZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRTZWxlY3Rp
b25Bc0hUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRTZWxlY3Rpb25Bc1RleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXRUcmFuc3BhcmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OklzVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
OjpSdW5TY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpFeGVjdXRlRWRpdENvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRFZGl0Q29tbWFuZFN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6R2V0RWRpdENvbW1hbmRWYWx1ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OkxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRN
YWluRnJhbWVVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHb0JhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpHb0ZvcndhcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
OjpDYW5Hb0JhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5Hb0ZvcndhcmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5JbmNyZWFzZVRleHRTaXplKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6SW5jcmVhc2VUZXh0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OkNhbkRlY3JlYXNlVGV4dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpE
ZWNyZWFzZVRleHRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6UmVzZXRUZXh0U2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Ok1ha2VFZGl0YWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OklzRWRpdGFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpP
blBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6RmluZFN0cmluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6Ok9uU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Ok9u
TW91c2VFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpPbkNvbnRleHRNZW51RXZl
bnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6T25NZW51U2VsZWN0RXZlbnRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6T25Nb3VzZUNhcHR1cmVMb3N0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6Q2FuQ29weSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkNvcHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5DdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpDdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpDYW5QYXN0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OlBhc3RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
T25LZXlFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpPblNldEZvY3VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6T25LaWxsRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpIaXRUZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6U2hvdWxkQ2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OkFyZURhdGFiYXNlc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpT
ZXRQcm94eUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXRXZWJTZXR0aW5ncyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkdldENvbXBhdGliaWxpdHlNb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6R3JhbnRVbml2ZXJzYWxBY2Nlc3MpOgorICAgICAgICAqIFdl
YlZpZXcuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogYmluZGluZ3MvcHl0aG9uL3dl
YnZpZXcuaToKKwogMjAxMi0wMy0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UgY2FsbGJhY2ss
IHNpbmNlIG5vCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDExMjU0NCkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxNSArMTAz
LDIyIEBACiB9CiAjZW5kaWYKIAorI2lmIE9TKERBUldJTikKKy8vIHByb3RvdHlwZSAtIGZ1bmN0
aW9uIGlzIGluIFdlYlN5c3RlbUludGVyZmFjZS5tbQordm9pZCBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSh2b2lkKTsKKyNlbmRpZgorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyB3eFdl
YlZpZXcgRXZlbnRzCisvLyBXZWJWaWV3IEV2ZW50cwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1JTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyh3eFdlYlZpZXdMb2FkRXZlbnQsIHd4Q29tbWFuZEV2
ZW50KQorbmFtZXNwYWNlIFdlYktpdCB7CiAKK0lNUExFTUVOVF9EWU5BTUlDX0NMQVNTKFdlYlZp
ZXdMb2FkRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQorCiBERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9X
RUJWSUVXX0xPQUQpCiAKLXd4V2ViVmlld0xvYWRFdmVudDo6d3hXZWJWaWV3TG9hZEV2ZW50KHd4
V2luZG93KiB3aW4pCitXZWJWaWV3TG9hZEV2ZW50OjpXZWJWaWV3TG9hZEV2ZW50KHd4V2luZG93
KiB3aW4pCiB7CiAgICAgU2V0RXZlbnRUeXBlKCB3eEVWVF9XRUJWSUVXX0xPQUQpOwogICAgIFNl
dEV2ZW50T2JqZWN0KCB3aW4gKTsKQEAgLTExOSwxMSArMTI2LDExIEBACiAgICAgICAgIFNldElk
KHdpbi0+R2V0SWQoKSk7CiB9CiAKLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld0Jl
Zm9yZUxvYWRFdmVudCwgd3hDb21tYW5kRXZlbnQpCitJTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhX
ZWJWaWV3QmVmb3JlTG9hZEV2ZW50LCB3eENvbW1hbmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZ
UEUod3hFVlRfV0VCVklFV19CRUZPUkVfTE9BRCkKIAotd3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50
Ojp3eFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQod3hXaW5kb3cqIHdpbikKK1dlYlZpZXdCZWZvcmVM
b2FkRXZlbnQ6OldlYlZpZXdCZWZvcmVMb2FkRXZlbnQod3hXaW5kb3cqIHdpbikKIHsKICAgICBt
X2NhbmNlbGxlZCA9IGZhbHNlOwogICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX0JFRk9S
RV9MT0FEKTsKQEAgLTEzMiwxMSArMTM5LDExIEBACiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQo
KSk7CiB9CiAKLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld05ld1dpbmRvd0V2ZW50
LCB3eENvbW1hbmRFdmVudCkKK0lNUExFTUVOVF9EWU5BTUlDX0NMQVNTKFdlYlZpZXdOZXdXaW5k
b3dFdmVudCwgd3hDb21tYW5kRXZlbnQpCiAKIERFRklORV9FVkVOVF9UWVBFKHd4RVZUX1dFQlZJ
RVdfTkVXX1dJTkRPVykKIAotd3hXZWJWaWV3TmV3V2luZG93RXZlbnQ6Ond4V2ViVmlld05ld1dp
bmRvd0V2ZW50KHd4V2luZG93KiB3aW4pCitXZWJWaWV3TmV3V2luZG93RXZlbnQ6OldlYlZpZXdO
ZXdXaW5kb3dFdmVudCh3eFdpbmRvdyogd2luKQogewogICAgIFNldEV2ZW50VHlwZSh3eEVWVF9X
RUJWSUVXX05FV19XSU5ET1cpOwogICAgIFNldEV2ZW50T2JqZWN0KHdpbik7CkBAIC0xNDQsMTEg
KzE1MSwxMSBAQAogICAgICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwogfQogCi1JTVBMRU1FTlRf
RFlOQU1JQ19DTEFTUyh3eFdlYlZpZXdSaWdodENsaWNrRXZlbnQsIHd4Q29tbWFuZEV2ZW50KQor
SU1QTEVNRU5UX0RZTkFNSUNfQ0xBU1MoV2ViVmlld1JpZ2h0Q2xpY2tFdmVudCwgd3hDb21tYW5k
RXZlbnQpCiAKIERFRklORV9FVkVOVF9UWVBFKHd4RVZUX1dFQlZJRVdfUklHSFRfQ0xJQ0spCiAK
LXd4V2ViVmlld1JpZ2h0Q2xpY2tFdmVudDo6d3hXZWJWaWV3UmlnaHRDbGlja0V2ZW50KHd4V2lu
ZG93KiB3aW4pCitXZWJWaWV3UmlnaHRDbGlja0V2ZW50OjpXZWJWaWV3UmlnaHRDbGlja0V2ZW50
KHd4V2luZG93KiB3aW4pCiB7CiAgICAgU2V0RXZlbnRUeXBlKHd4RVZUX1dFQlZJRVdfUklHSFRf
Q0xJQ0spOwogICAgIFNldEV2ZW50T2JqZWN0KHdpbik7CkBAIC0xNTYsMTEgKzE2MywxMSBAQAog
ICAgICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwogfQogCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFT
Uyh3eFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50LCB3eENvbW1hbmRFdmVudCkKK0lNUExFTUVO
VF9EWU5BTUlDX0NMQVNTKFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50LCB3eENvbW1hbmRFdmVu
dCkKIAogREVGSU5FX0VWRU5UX1RZUEUod3hFVlRfV0VCVklFV19DT05TT0xFX01FU1NBR0UpCiAK
LXd4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQ6Ond4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZl
bnQod3hXaW5kb3cqIHdpbikKK1dlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50OjpXZWJWaWV3Q29u
c29sZU1lc3NhZ2VFdmVudCh3eFdpbmRvdyogd2luKQogewogICAgIFNldEV2ZW50VHlwZSh3eEVW
VF9XRUJWSUVXX0NPTlNPTEVfTUVTU0FHRSk7CiAgICAgU2V0RXZlbnRPYmplY3Qod2luKTsKQEAg
LTE2OCwxMSArMTc1LDExIEBACiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7CiB9CiAKLUlN
UExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld0FsZXJ0RXZlbnQsIHd4Q29tbWFuZEV2ZW50
KQorSU1QTEVNRU5UX0RZTkFNSUNfQ0xBU1MoV2ViVmlld0FsZXJ0RXZlbnQsIHd4Q29tbWFuZEV2
ZW50KQogCiBERUZJTkVfRVZFTlRfVFlQRSh3eEVWVF9XRUJWSUVXX0pTX0FMRVJUKQogCi13eFdl
YlZpZXdBbGVydEV2ZW50Ojp3eFdlYlZpZXdBbGVydEV2ZW50KHd4V2luZG93KiB3aW4pCitXZWJW
aWV3QWxlcnRFdmVudDo6V2ViVmlld0FsZXJ0RXZlbnQod3hXaW5kb3cqIHdpbikKIHsKICAgICBT
ZXRFdmVudFR5cGUod3hFVlRfV0VCVklFV19KU19BTEVSVCk7CiAgICAgU2V0RXZlbnRPYmplY3Qo
d2luKTsKQEAgLTE4MCwxMSArMTg3LDExIEBACiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7
CiB9CiAKLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld0NvbmZpcm1FdmVudCwgd3hD
b21tYW5kRXZlbnQpCitJTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3Q29uZmlybUV2ZW50
LCB3eENvbW1hbmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZUEUod3hFVlRfV0VCVklFV19KU19D
T05GSVJNKQogCi13eFdlYlZpZXdDb25maXJtRXZlbnQ6Ond4V2ViVmlld0NvbmZpcm1FdmVudCh3
eFdpbmRvdyogd2luKQorV2ViVmlld0NvbmZpcm1FdmVudDo6V2ViVmlld0NvbmZpcm1FdmVudCh3
eFdpbmRvdyogd2luKQogewogICAgIFNldEV2ZW50VHlwZSh3eEVWVF9XRUJWSUVXX0pTX0NPTkZJ
Uk0pOwogICAgIFNldEV2ZW50T2JqZWN0KHdpbik7CkBAIC0xOTIsMTEgKzE5OSwxMSBAQAogICAg
ICAgICBTZXRJZCh3aW4tPkdldElkKCkpOwogfQogCi1JTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyh3
eFdlYlZpZXdQcm9tcHRFdmVudCwgd3hDb21tYW5kRXZlbnQpCitJTVBMRU1FTlRfRFlOQU1JQ19D
TEFTUyhXZWJWaWV3UHJvbXB0RXZlbnQsIHd4Q29tbWFuZEV2ZW50KQogCiBERUZJTkVfRVZFTlRf
VFlQRSh3eEVWVF9XRUJWSUVXX0pTX1BST01QVCkKIAotd3hXZWJWaWV3UHJvbXB0RXZlbnQ6Ond4
V2ViVmlld1Byb21wdEV2ZW50KHd4V2luZG93KiB3aW4pCitXZWJWaWV3UHJvbXB0RXZlbnQ6Oldl
YlZpZXdQcm9tcHRFdmVudCh3eFdpbmRvdyogd2luKQogewogICAgIFNldEV2ZW50VHlwZSh3eEVW
VF9XRUJWSUVXX0pTX1BST01QVCk7CiAgICAgU2V0RXZlbnRPYmplY3Qod2luKTsKQEAgLTIwNCwx
MSArMjExLDExIEBACiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7CiB9CiAKLUlNUExFTUVO
VF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCwgd3hDb21tYW5kRXZl
bnQpCitJTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50LCB3
eENvbW1hbmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZUEUod3hFVlRfV0VCVklFV19SRUNFSVZF
RF9USVRMRSkKIAotd3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50Ojp3eFdlYlZpZXdSZWNlaXZl
ZFRpdGxlRXZlbnQod3hXaW5kb3cqIHdpbikKK1dlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQ6Oldl
YlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQod3hXaW5kb3cqIHdpbikKIHsKICAgICBTZXRFdmVudFR5
cGUod3hFVlRfV0VCVklFV19SRUNFSVZFRF9USVRMRSk7CiAgICAgU2V0RXZlbnRPYmplY3Qod2lu
KTsKQEAgLTIxNiwxMSArMjIzLDExIEBACiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7CiB9
CiAKLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRF
dmVudCwgd3hDb21tYW5kRXZlbnQpCitJTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3V2lu
ZG93T2JqZWN0Q2xlYXJlZEV2ZW50LCB3eENvbW1hbmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZ
UEUod3hFVlRfV0VCVklFV19XSU5ET1dfT0JKRUNUX0NMRUFSRUQpCiAKLXd4V2ViVmlld1dpbmRv
d09iamVjdENsZWFyZWRFdmVudDo6d3hXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50KHd4
V2luZG93KiB3aW4pCitXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50OjpXZWJWaWV3V2lu
ZG93T2JqZWN0Q2xlYXJlZEV2ZW50KHd4V2luZG93KiB3aW4pCiB7CiAgICAgU2V0RXZlbnRUeXBl
KHd4RVZUX1dFQlZJRVdfV0lORE9XX09CSkVDVF9DTEVBUkVEKTsKICAgICBTZXRFdmVudE9iamVj
dCh3aW4pOwpAQCAtMjI4LDExICsyMzUsMTEgQEAKICAgICAgICAgU2V0SWQod2luLT5HZXRJZCgp
KTsKIH0KIAotSU1QTEVNRU5UX0RZTkFNSUNfQ0xBU1Mod3hXZWJWaWV3Q29udGVudHNDaGFuZ2Vk
RXZlbnQsIHd4Q29tbWFuZEV2ZW50KQorSU1QTEVNRU5UX0RZTkFNSUNfQ0xBU1MoV2ViVmlld0Nv
bnRlbnRzQ2hhbmdlZEV2ZW50LCB3eENvbW1hbmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZUEUo
d3hFVlRfV0VCVklFV19DT05URU5UU19DSEFOR0VEKQogCi13eFdlYlZpZXdDb250ZW50c0NoYW5n
ZWRFdmVudDo6d3hXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQod3hXaW5kb3cqIHdpbikKK1dl
YlZpZXdDb250ZW50c0NoYW5nZWRFdmVudDo6V2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50KHd4
V2luZG93KiB3aW4pCiB7CiAgICAgU2V0RXZlbnRUeXBlKHd4RVZUX1dFQlZJRVdfQ09OVEVOVFNf
Q0hBTkdFRCk7CiAgICAgU2V0RXZlbnRPYmplY3Qod2luKTsKQEAgLTI0MCwxMSArMjQ3LDExIEBA
CiAgICAgICAgIFNldElkKHdpbi0+R2V0SWQoKSk7CiB9CiAKLUlNUExFTUVOVF9EWU5BTUlDX0NM
QVNTKHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudCwgd3hDb21tYW5kRXZlbnQpCitJTVBM
RU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50LCB3eENvbW1h
bmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZUEUod3hFVlRfV0VCVklFV19TRUxFQ1RJT05fQ0hB
TkdFRCkKIAotd3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50Ojp3eFdlYlZpZXdTZWxlY3Rp
b25DaGFuZ2VkRXZlbnQod3hXaW5kb3cqIHdpbikKK1dlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZl
bnQ6OldlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQod3hXaW5kb3cqIHdpbikKIHsKICAgICBT
ZXRFdmVudFR5cGUod3hFVlRfV0VCVklFV19TRUxFQ1RJT05fQ0hBTkdFRCk7CiAgICAgU2V0RXZl
bnRPYmplY3Qod2luKTsKQEAgLTI1MiwxMSArMjU5LDExIEBACiAgICAgICAgIFNldElkKHdpbi0+
R2V0SWQoKSk7CiB9CiAKLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1ByaW50RnJh
bWVFdmVudCwgd3hDb21tYW5kRXZlbnQpCitJTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3
UHJpbnRGcmFtZUV2ZW50LCB3eENvbW1hbmRFdmVudCkKIAogREVGSU5FX0VWRU5UX1RZUEUod3hF
VlRfV0VCVklFV19QUklOVF9GUkFNRSkKIAotd3hXZWJWaWV3UHJpbnRGcmFtZUV2ZW50Ojp3eFdl
YlZpZXdQcmludEZyYW1lRXZlbnQod3hXaW5kb3cqIHdpbikKK1dlYlZpZXdQcmludEZyYW1lRXZl
bnQ6OldlYlZpZXdQcmludEZyYW1lRXZlbnQod3hXaW5kb3cqIHdpbikKIHsKICAgICBTZXRFdmVu
dFR5cGUod3hFVlRfV0VCVklFV19QUklOVF9GUkFNRSk7CiAgICAgU2V0RXZlbnRPYmplY3Qod2lu
KTsKQEAgLTI2OCwyMCArMjc1LDIwIEBACiAvLyBET00gRWxlbWVudCBpbmZvIGRhdGEgdHlwZQog
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotd3hXZWJWaWV3RE9NRWxlbWVudEluZm86Ond4V2ViVmlld0RPTUVsZW1lbnRJbmZvKCkg
OgorV2ViVmlld0RPTUVsZW1lbnRJbmZvOjpXZWJWaWV3RE9NRWxlbWVudEluZm8oKSA6CiAgICAg
bV9pc1NlbGVjdGVkKGZhbHNlKSwKICAgICBtX3RleHQod3hFbXB0eVN0cmluZyksCiAgICAgbV9p
bWFnZVNyYyh3eEVtcHR5U3RyaW5nKSwKICAgICBtX2xpbmsod3hFbXB0eVN0cmluZyksCi0gICAg
bV91cmxFbGVtZW50KE5VTEwpLAotICAgIG1faW5uZXJOb2RlKE5VTEwpCisgICAgbV91cmxFbGVt
ZW50KDApLAorICAgIG1faW5uZXJOb2RlKDApCiB7CiB9CiAKLXN0YXRpYyB3eFdlYlZpZXdDYWNo
ZVBvbGljeSBnc19jYWNoZVBvbGljeTsKK3N0YXRpYyBXZWJWaWV3Q2FjaGVQb2xpY3kgZ3NfY2Fj
aGVQb2xpY3k7CiAKIC8qIHN0YXRpYyAqLwotdm9pZCB3eFdlYlZpZXc6OlNldENhY2hlUG9saWN5
KGNvbnN0IHd4V2ViVmlld0NhY2hlUG9saWN5JiBjYWNoZVBvbGljeSkKK3ZvaWQgV2ViVmlldzo6
U2V0Q2FjaGVQb2xpY3koY29uc3QgV2ViVmlld0NhY2hlUG9saWN5JiBjYWNoZVBvbGljeSkKIHsK
ICAgICBXZWJDb3JlOjpNZW1vcnlDYWNoZSogZ2xvYmFsQ2FjaGUgPSBXZWJDb3JlOjptZW1vcnlD
YWNoZSgpOwogICAgIGdsb2JhbENhY2hlLT5zZXRDYXBhY2l0aWVzKGNhY2hlUG9saWN5LkdldE1p
bkRlYWRDYXBhY2l0eSgpLApAQCAtMjkzLDEyICszMDAsMTIgQEAKIH0KIAogLyogc3RhdGljICov
Ci13eFdlYlZpZXdDYWNoZVBvbGljeSB3eFdlYlZpZXc6OkdldENhY2hlUG9saWN5KCkKK1dlYlZp
ZXdDYWNoZVBvbGljeSBXZWJWaWV3OjpHZXRDYWNoZVBvbGljeSgpCiB7CiAgICAgcmV0dXJuIGdz
X2NhY2hlUG9saWN5OwogfQogCi13eFdlYlZpZXdET01FbGVtZW50SW5mbzo6d3hXZWJWaWV3RE9N
RWxlbWVudEluZm8oY29uc3Qgd3hXZWJWaWV3RE9NRWxlbWVudEluZm8mIG90aGVyKQorV2ViVmll
d0RPTUVsZW1lbnRJbmZvOjpXZWJWaWV3RE9NRWxlbWVudEluZm8oY29uc3QgV2ViVmlld0RPTUVs
ZW1lbnRJbmZvJiBvdGhlcikKIHsKICAgICBtX2lzU2VsZWN0ZWQgPSBvdGhlci5tX2lzU2VsZWN0
ZWQ7CiAgICAgbV90ZXh0ID0gb3RoZXIubV90ZXh0OwpAQCAtMzA4LDcgKzMxNSw3IEBACiAgICAg
bV91cmxFbGVtZW50ID0gb3RoZXIubV91cmxFbGVtZW50OwogfQogCi13eFdlYlZpZXdET01FbGVt
ZW50SW5mbzo6fnd4V2ViVmlld0RPTUVsZW1lbnRJbmZvKCkgCitXZWJWaWV3RE9NRWxlbWVudElu
Zm86On5XZWJWaWV3RE9NRWxlbWVudEluZm8oKSAKIHsKICAgICBpZiAobV9pbm5lck5vZGUpCiAg
ICAgICAgIGRlbGV0ZSBtX2lubmVyTm9kZTsKQEAgLTMxNywyOSArMzI0LDI0IEBACiAgICAgICAg
IGRlbGV0ZSBtX3VybEVsZW1lbnQ7CiB9CiAKLSNpZiBPUyhEQVJXSU4pCi0vLyBwcm90b3R5cGUg
LSBmdW5jdGlvbiBpcyBpbiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0KLXZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCk7Ci0jZW5kaWYKLQotQkVHSU5fRVZFTlRfVEFCTEUod3hXZWJW
aWV3LCB3eFdpbmRvdykKLSAgICBFVlRfUEFJTlQod3hXZWJWaWV3OjpPblBhaW50KQotICAgIEVW
VF9TSVpFKHd4V2ViVmlldzo6T25TaXplKQotICAgIEVWVF9NT1VTRV9FVkVOVFMod3hXZWJWaWV3
OjpPbk1vdXNlRXZlbnRzKQotICAgIEVWVF9DT05URVhUX01FTlUod3hXZWJWaWV3OjpPbkNvbnRl
eHRNZW51RXZlbnRzKQotICAgIEVWVF9LRVlfRE9XTih3eFdlYlZpZXc6Ok9uS2V5RXZlbnRzKQot
ICAgIEVWVF9LRVlfVVAod3hXZWJWaWV3OjpPbktleUV2ZW50cykKLSAgICBFVlRfQ0hBUih3eFdl
YlZpZXc6Ok9uS2V5RXZlbnRzKQotICAgIEVWVF9TRVRfRk9DVVMod3hXZWJWaWV3OjpPblNldEZv
Y3VzKQotICAgIEVWVF9LSUxMX0ZPQ1VTKHd4V2ViVmlldzo6T25LaWxsRm9jdXMpCi0gICAgRVZU
X01PVVNFX0NBUFRVUkVfTE9TVCh3eFdlYlZpZXc6Ok9uTW91c2VDYXB0dXJlTG9zdCkKK0JFR0lO
X0VWRU5UX1RBQkxFKFdlYlZpZXcsIHd4V2luZG93KQorICAgIEVWVF9QQUlOVChXZWJWaWV3OjpP
blBhaW50KQorICAgIEVWVF9TSVpFKFdlYlZpZXc6Ok9uU2l6ZSkKKyAgICBFVlRfTU9VU0VfRVZF
TlRTKFdlYlZpZXc6Ok9uTW91c2VFdmVudHMpCisgICAgRVZUX0NPTlRFWFRfTUVOVShXZWJWaWV3
OjpPbkNvbnRleHRNZW51RXZlbnRzKQorICAgIEVWVF9LRVlfRE9XTihXZWJWaWV3OjpPbktleUV2
ZW50cykKKyAgICBFVlRfS0VZX1VQKFdlYlZpZXc6Ok9uS2V5RXZlbnRzKQorICAgIEVWVF9DSEFS
KFdlYlZpZXc6Ok9uS2V5RXZlbnRzKQorICAgIEVWVF9TRVRfRk9DVVMoV2ViVmlldzo6T25TZXRG
b2N1cykKKyAgICBFVlRfS0lMTF9GT0NVUyhXZWJWaWV3OjpPbktpbGxGb2N1cykKKyAgICBFVlRf
TU9VU0VfQ0FQVFVSRV9MT1NUKFdlYlZpZXc6Ok9uTW91c2VDYXB0dXJlTG9zdCkKIEVORF9FVkVO
VF9UQUJMRSgpCiAKLUlNUExFTUVOVF9EWU5BTUlDX0NMQVNTKHd4V2ViVmlldywgd3hXaW5kb3cp
CitJTVBMRU1FTlRfRFlOQU1JQ19DTEFTUyhXZWJWaWV3LCB3eFdpbmRvdykKIAotY29uc3Qgd3hD
aGFyKiB3eFdlYlZpZXdOYW1lU3RyID0gd3hUKCJ3ZWJWaWV3Iik7Citjb25zdCB3eENoYXIqIFdl
YlZpZXdOYW1lU3RyID0gd3hUKCJ3ZWJWaWV3Iik7CiAKLXd4V2ViVmlldzo6d3hXZWJWaWV3KCkg
OgorV2ViVmlldzo6V2ViVmlldygpIDoKICAgICBtX3RleHRNYWduaWZpZXIoMS4wKSwKICAgICBt
X2lzSW5pdGlhbGl6ZWQoZmFsc2UpLAogICAgIG1fYmVpbmdEZXN0cm95ZWQoZmFsc2UpLApAQCAt
MzQ4LDcgKzM1MCw3IEBACiB7CiB9CiAKLXd4V2ViVmlldzo6d3hXZWJWaWV3KHd4V2luZG93KiBw
YXJlbnQsIGNvbnN0IHd4U3RyaW5nJiB1cmwsIGludCBpZCwgY29uc3Qgd3hQb2ludCYgcG9zaXRp
b24sIAorV2ViVmlldzo6V2ViVmlldyh3eFdpbmRvdyogcGFyZW50LCBjb25zdCB3eFN0cmluZyYg
dXJsLCBpbnQgaWQsIGNvbnN0IHd4UG9pbnQmIHBvc2l0aW9uLCAKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSwgbG9uZyBzdHlsZSwgY29uc3Qgd3hTdHJpbmcmIG5hbWUp
IDoKICAgICBtX3RleHRNYWduaWZpZXIoMS4wKSwKICAgICBtX2lzSW5pdGlhbGl6ZWQoZmFsc2Up
LApAQCAtMzU5LDcgKzM2MSw3IEBACiAgICAgQ3JlYXRlKHBhcmVudCwgdXJsLCBpZCwgcG9zaXRp
b24sIHNpemUsIHN0eWxlLCBuYW1lKTsKIH0KIAotYm9vbCB3eFdlYlZpZXc6OkNyZWF0ZSh3eFdp
bmRvdyogcGFyZW50LCBjb25zdCB3eFN0cmluZyYgdXJsLCBpbnQgaWQsIGNvbnN0IHd4UG9pbnQm
IHBvc2l0aW9uLCAKK2Jvb2wgV2ViVmlldzo6Q3JlYXRlKHd4V2luZG93KiBwYXJlbnQsIGNvbnN0
IHd4U3RyaW5nJiB1cmwsIGludCBpZCwgY29uc3Qgd3hQb2ludCYgcG9zaXRpb24sIAogICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUsIGxvbmcgc3R5bGUsIGNvbnN0IHd4
U3RyaW5nJiBuYW1lKQogewogI2lmIE9TKERBUldJTikKQEAgLTQwMSw5ICs0MDMsOSBAQAogICAg
IG1faW1wbC0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBlZGl0
b3JDbGllbnQtPnNldFBhZ2UobV9pbXBsLT5wYWdlKTsKICAgICAKLSAgICBtX21haW5GcmFtZSA9
IG5ldyB3eFdlYkZyYW1lKHRoaXMpOworICAgIG1fbWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lKHRo
aXMpOwogCi0gICAgLy8gRGVmYXVsdCBzZXR0aW5ncyAtIHdlIHNob3VsZCBoYXZlIHd4V2ViVmll
d1NldHRpbmdzIGNsYXNzIGZvciB0aGlzCisgICAgLy8gRGVmYXVsdCBzZXR0aW5ncyAtIHdlIHNo
b3VsZCBoYXZlIFdlYlZpZXdTZXR0aW5ncyBjbGFzcyBmb3IgdGhpcwogICAgIC8vIGV2ZW50dWFs
bHkKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ltcGwtPnBhZ2UtPnNldHRp
bmdzKCk7CiAgICAgc2V0dGluZ3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSh0cnVlKTsK
QEAgLTQyOCw3ICs0MzAsNyBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi13eFdlYlZpZXc6On53
eFdlYlZpZXcoKQorV2ViVmlldzo6fldlYlZpZXcoKQogewogICAgIG1fYmVpbmdEZXN0cm95ZWQg
PSB0cnVlOwogICAgIApAQCAtNDQyLDEwICs0NDQsMTAgQEAKICAgICBtX2ltcGwtPnBhZ2UgPSAw
OyAgIAogfQogCi0vLyBOT1RFOiBiaW5kaW5nIHRvIHRoaXMgZXZlbnQgaW4gdGhlIHd4V2ViVmll
dyBjb25zdHJ1Y3RvciBpcyB0b28gZWFybHkgaW4gCisvLyBOT1RFOiBiaW5kaW5nIHRvIHRoaXMg
ZXZlbnQgaW4gdGhlIFdlYlZpZXcgY29uc3RydWN0b3IgaXMgdG9vIGVhcmx5IGluIAogLy8gc29t
ZSBjYXNlcywgYnV0IGxlYXZlIHRoZSBldmVudCBoYW5kbGVyIGhlcmUgc28gdGhhdCB1c2VycyBj
YW4gYmluZCB0byBpdAogLy8gYXQgYSBsYXRlciB0aW1lIGlmIHRoZXkgaGF2ZSBhY3RpdmF0aW9u
IHN0YXRlIHByb2JsZW1zLgotdm9pZCB3eFdlYlZpZXc6Ok9uVExXQWN0aXZhdGVkKHd4QWN0aXZh
dGVFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZpZXc6Ok9uVExXQWN0aXZhdGVkKHd4QWN0aXZhdGVF
dmVudCYgZXZlbnQpCiB7ICAgICAgICAKICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+cGFnZSAm
JiBtX2ltcGwtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpKQogICAgICAgICBtX2ltcGwtPnBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5zZXRBY3RpdmUoZXZlbnQuR2V0QWN0aXZlKCkpOwpAQCAtNDU0
LDE5ICs0NTYsMTkgQEAKICAgICAKIH0KIAotdm9pZCB3eFdlYlZpZXc6OlN0b3AoKQordm9pZCBX
ZWJWaWV3OjpTdG9wKCkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIG1fbWFpbkZy
YW1lLT5TdG9wKCk7CiB9CiAKLXZvaWQgd3hXZWJWaWV3OjpSZWxvYWQoKQordm9pZCBXZWJWaWV3
OjpSZWxvYWQoKQogewogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgbV9tYWluRnJhbWUt
PlJlbG9hZCgpOwogfQogCi13eFN0cmluZyB3eFdlYlZpZXc6OkdldFBhZ2VTb3VyY2UoKQord3hT
dHJpbmcgV2ViVmlldzo6R2V0UGFnZVNvdXJjZSgpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQog
ICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkdldFBhZ2VTb3VyY2UoKTsKQEAgLTQ3NCwxMyAr
NDc2LDEzIEBACiAgICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7CiB9CiAKLXZvaWQgd3hXZWJWaWV3
OjpTZXRQYWdlU291cmNlKGNvbnN0IHd4U3RyaW5nJiBzb3VyY2UsIGNvbnN0IHd4U3RyaW5nJiBi
YXNlVXJsLCBjb25zdCB3eFN0cmluZyYgbWltZXR5cGUpCit2b2lkIFdlYlZpZXc6OlNldFBhZ2VT
b3VyY2UoY29uc3Qgd3hTdHJpbmcmIHNvdXJjZSwgY29uc3Qgd3hTdHJpbmcmIGJhc2VVcmwsIGNv
bnN0IHd4U3RyaW5nJiBtaW1ldHlwZSkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAg
IG1fbWFpbkZyYW1lLT5TZXRQYWdlU291cmNlKHNvdXJjZSwgYmFzZVVybCwgbWltZXR5cGUpOwog
fQogCi13eFN0cmluZyB3eFdlYlZpZXc6OkdldElubmVyVGV4dCgpCit3eFN0cmluZyBXZWJWaWV3
OjpHZXRJbm5lclRleHQoKQogewogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJu
IG1fbWFpbkZyYW1lLT5HZXRJbm5lclRleHQoKTsKQEAgLTQ4OCw3ICs0OTAsNyBAQAogICAgIHJl
dHVybiB3eEVtcHR5U3RyaW5nOwogfQogCi13eFN0cmluZyB3eFdlYlZpZXc6OkdldEFzTWFya3Vw
KCkKK3d4U3RyaW5nIFdlYlZpZXc6OkdldEFzTWFya3VwKCkKIHsKICAgICBpZiAobV9tYWluRnJh
bWUpCiAgICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+R2V0QXNNYXJrdXAoKTsKQEAgLTQ5Niw3
ICs0OTgsNyBAQAogICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwogfQogCi13eFN0cmluZyB3eFdl
YlZpZXc6OkdldEV4dGVybmFsUmVwcmVzZW50YXRpb24oKQord3hTdHJpbmcgV2ViVmlldzo6R2V0
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAg
ICByZXR1cm4gbV9tYWluRnJhbWUtPkdldEV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKQEAgLTUw
NCw3ICs1MDYsNyBAQAogICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwogfQogCi13eFdlYktpdFNl
bGVjdGlvbiB3eFdlYlZpZXc6OkdldFNlbGVjdGlvbigpCitXZWJLaXRTZWxlY3Rpb24gV2ViVmll
dzo6R2V0U2VsZWN0aW9uKCkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIHJldHVy
biBtX21haW5GcmFtZS0+R2V0U2VsZWN0aW9uKCk7CkBAIC01MTIsNyArNTE0LDcgQEAKICAgICBy
ZXR1cm4gMDsKIH0KIAotd3hTdHJpbmcgd3hXZWJWaWV3OjpHZXRTZWxlY3Rpb25Bc0hUTUwoKQor
d3hTdHJpbmcgV2ViVmlldzo6R2V0U2VsZWN0aW9uQXNIVE1MKCkKIHsKICAgICBpZiAobV9tYWlu
RnJhbWUpCiAgICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+R2V0U2VsZWN0aW9uQXNIVE1MKCk7
CkBAIC01MjAsNyArNTIyLDcgQEAKICAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKIH0KIAotd3hT
dHJpbmcgd3hXZWJWaWV3OjpHZXRTZWxlY3Rpb25Bc1RleHQoKQord3hTdHJpbmcgV2ViVmlldzo6
R2V0U2VsZWN0aW9uQXNUZXh0KCkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIHJl
dHVybiBtX21haW5GcmFtZS0+R2V0U2VsZWN0aW9uQXNUZXh0KCk7CkBAIC01MjgsNyArNTMwLDcg
QEAKICAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKIH0KIAotdm9pZCB3eFdlYlZpZXc6OlNldFRy
YW5zcGFyZW50KGJvb2wgdHJhbnNwYXJlbnQpCit2b2lkIFdlYlZpZXc6OlNldFRyYW5zcGFyZW50
KGJvb2wgdHJhbnNwYXJlbnQpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gMDsKICAg
ICBpZiAobV9tYWluRnJhbWUpCkBAIC01NDAsNyArNTQyLDcgQEAKICAgICBmcmFtZS0+dmlldygp
LT5zZXRUcmFuc3BhcmVudCh0cmFuc3BhcmVudCk7CiB9CiAKLWJvb2wgd3hXZWJWaWV3OjpJc1Ry
YW5zcGFyZW50KCkgY29uc3QKK2Jvb2wgV2ViVmlldzo6SXNUcmFuc3BhcmVudCgpIGNvbnN0CiB7
CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gMDsKICAgICBpZiAobV9tYWluRnJhbWUpCkBA
IC01NTIsNyArNTU0LDcgQEAKICAgICByZXR1cm4gZnJhbWUtPnZpZXcoKS0+aXNUcmFuc3BhcmVu
dCgpOwogfQogCi13eFN0cmluZyB3eFdlYlZpZXc6OlJ1blNjcmlwdChjb25zdCB3eFN0cmluZyYg
amF2YXNjcmlwdCkKK3d4U3RyaW5nIFdlYlZpZXc6OlJ1blNjcmlwdChjb25zdCB3eFN0cmluZyYg
amF2YXNjcmlwdCkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIHJldHVybiBtX21h
aW5GcmFtZS0+UnVuU2NyaXB0KGphdmFzY3JpcHQpOwpAQCAtNTYwLDE5ICs1NjIsMTkgQEAKICAg
ICByZXR1cm4gd3hFbXB0eVN0cmluZzsKIH0KIAotYm9vbCB3eFdlYlZpZXc6OkV4ZWN1dGVFZGl0
Q29tbWFuZChjb25zdCB3eFN0cmluZyYgY29tbWFuZCwgY29uc3Qgd3hTdHJpbmcmIHBhcmFtZXRl
cikKK2Jvb2wgV2ViVmlldzo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IHd4U3RyaW5nJiBjb21t
YW5kLCBjb25zdCB3eFN0cmluZyYgcGFyYW1ldGVyKQogewogICAgIGlmIChtX21haW5GcmFtZSkK
ICAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5FeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZCwg
cGFyYW1ldGVyKTsKIH0KIAotRWRpdFN0YXRlIHd4V2ViVmlldzo6R2V0RWRpdENvbW1hbmRTdGF0
ZShjb25zdCB3eFN0cmluZyYgY29tbWFuZCkgY29uc3QKK0VkaXRTdGF0ZSBXZWJWaWV3OjpHZXRF
ZGl0Q29tbWFuZFN0YXRlKGNvbnN0IHd4U3RyaW5nJiBjb21tYW5kKSBjb25zdAogewogICAgIGlm
IChtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5HZXRFZGl0Q29tbWFu
ZFN0YXRlKGNvbW1hbmQpOwogfQogCi13eFN0cmluZyB3eFdlYlZpZXc6OkdldEVkaXRDb21tYW5k
VmFsdWUoY29uc3Qgd3hTdHJpbmcmIGNvbW1hbmQpIGNvbnN0Cit3eFN0cmluZyBXZWJWaWV3OjpH
ZXRFZGl0Q29tbWFuZFZhbHVlKGNvbnN0IHd4U3RyaW5nJiBjb21tYW5kKSBjb25zdAogewogICAg
IGlmIChtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5HZXRFZGl0Q29t
bWFuZFZhbHVlKGNvbW1hbmQpOwpAQCAtNTgwLDEzICs1ODIsMTMgQEAKICAgICByZXR1cm4gd3hF
bXB0eVN0cmluZzsKIH0KIAotdm9pZCB3eFdlYlZpZXc6OkxvYWRVUkwoY29uc3Qgd3hTdHJpbmcm
IHVybCkKK3ZvaWQgV2ViVmlldzo6TG9hZFVSTChjb25zdCB3eFN0cmluZyYgdXJsKQogewogICAg
IGlmIChtX21haW5GcmFtZSkKICAgICAgICAgbV9tYWluRnJhbWUtPkxvYWRVUkwodXJsKTsKIH0K
IAotd3hTdHJpbmcgd3hXZWJWaWV3OjpHZXRNYWluRnJhbWVVUkwoKSBjb25zdAord3hTdHJpbmcg
V2ViVmlldzo6R2V0TWFpbkZyYW1lVVJMKCkgY29uc3QKIHsKICAgICBpZiAobV9tYWluRnJhbWUp
CiAgICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+R2V0VVJMKCk7CkBAIC01OTQsNyArNTk2LDcg
QEAKICAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKIH0KIAotYm9vbCB3eFdlYlZpZXc6OkdvQmFj
aygpCitib29sIFdlYlZpZXc6OkdvQmFjaygpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAg
ICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkdvQmFjaygpOwpAQCAtNjAyLDcgKzYwNCw3IEBACiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHd4V2ViVmlldzo6R29Gb3J3YXJkKCkKK2Jvb2wg
V2ViVmlldzo6R29Gb3J3YXJkKCkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIHJl
dHVybiBtX21haW5GcmFtZS0+R29Gb3J3YXJkKCk7CkBAIC02MTAsNyArNjEyLDcgQEAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgd3hXZWJWaWV3OjpDYW5Hb0JhY2soKQorYm9vbCBXZWJW
aWV3OjpDYW5Hb0JhY2soKQogewogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJu
IG1fbWFpbkZyYW1lLT5DYW5Hb0JhY2soKTsKQEAgLTYxOCw3ICs2MjAsNyBAQAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCB3eFdlYlZpZXc6OkNhbkdvRm9yd2FyZCgpCitib29sIFdlYlZp
ZXc6OkNhbkdvRm9yd2FyZCgpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAgICByZXR1
cm4gbV9tYWluRnJhbWUtPkNhbkdvRm9yd2FyZCgpOwpAQCAtNjI2LDcgKzYyOCw3IEBACiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHd4V2ViVmlldzo6Q2FuSW5jcmVhc2VUZXh0U2l6ZSgp
IGNvbnN0Citib29sIFdlYlZpZXc6OkNhbkluY3JlYXNlVGV4dFNpemUoKSBjb25zdAogewogICAg
IGlmIChtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5DYW5JbmNyZWFz
ZVRleHRTaXplKCk7CkBAIC02MzQsMTMgKzYzNiwxMyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCB3eFdlYlZpZXc6OkluY3JlYXNlVGV4dFNpemUoKQordm9pZCBXZWJWaWV3OjpJbmNy
ZWFzZVRleHRTaXplKCkKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAgICAgIG1fbWFpbkZy
YW1lLT5JbmNyZWFzZVRleHRTaXplKCk7CiB9CiAKLWJvb2wgd3hXZWJWaWV3OjpDYW5EZWNyZWFz
ZVRleHRTaXplKCkgY29uc3QKK2Jvb2wgV2ViVmlldzo6Q2FuRGVjcmVhc2VUZXh0U2l6ZSgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFtZS0+Q2FuRGVj
cmVhc2VUZXh0U2l6ZSgpOwpAQCAtNjQ4LDI1ICs2NTAsMjUgQEAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgd3hXZWJWaWV3OjpEZWNyZWFzZVRleHRTaXplKCkKK3ZvaWQgV2ViVmlldzo6
RGVjcmVhc2VUZXh0U2l6ZSgpCiB7ICAgICAgICAKICAgICBpZiAobV9tYWluRnJhbWUpCiAgICAg
ICAgIG1fbWFpbkZyYW1lLT5EZWNyZWFzZVRleHRTaXplKCk7CiB9CiAKLXZvaWQgd3hXZWJWaWV3
OjpSZXNldFRleHRTaXplKCkKK3ZvaWQgV2ViVmlldzo6UmVzZXRUZXh0U2l6ZSgpCiB7CiAgICAg
aWYgKG1fbWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFtZS0+UmVzZXRUZXh0U2l6ZSgpOyAg
ICAKIH0KIAotdm9pZCB3eFdlYlZpZXc6Ok1ha2VFZGl0YWJsZShib29sIGVuYWJsZSkKK3ZvaWQg
V2ViVmlldzo6TWFrZUVkaXRhYmxlKGJvb2wgZW5hYmxlKQogewogICAgIGlmIChtX21haW5GcmFt
ZSkKICAgICAgICAgbV9tYWluRnJhbWUtPk1ha2VFZGl0YWJsZShlbmFibGUpOwogfQogCi1ib29s
IHd4V2ViVmlldzo6SXNFZGl0YWJsZSgpIGNvbnN0Citib29sIFdlYlZpZXc6OklzRWRpdGFibGUo
KSBjb25zdAogewogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIG1fbWFpbkZy
YW1lLT5Jc0VkaXRhYmxlKCk7CkBAIC02ODAsNyArNjgyLDcgQEAKICAqIEV2ZW50IGZvcndhcmRp
bmcgZnVuY3Rpb25zIHRvIHNlbmQgZXZlbnRzIGRvd24gdG8gV2ViQ29yZS4KICAqLwogCi12b2lk
IHd4V2ViVmlldzo6T25QYWludCh3eFBhaW50RXZlbnQmIGV2ZW50KQordm9pZCBXZWJWaWV3OjpP
blBhaW50KHd4UGFpbnRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKG1fYmVpbmdEZXN0cm95ZWQg
fHwgIW1fbWFpbkZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC03MjAsNyArNzIyLDcgQEAKICAg
ICB9CiB9CiAKLWJvb2wgd3hXZWJWaWV3OjpGaW5kU3RyaW5nKGNvbnN0IHd4U3RyaW5nJiBzdHJp
bmcsIGJvb2wgZm9yd2FyZCwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIHdyYXBTZWxlY3Rpb24s
IGJvb2wgc3RhcnRJblNlbGVjdGlvbikKK2Jvb2wgV2ViVmlldzo6RmluZFN0cmluZyhjb25zdCB3
eFN0cmluZyYgc3RyaW5nLCBib29sIGZvcndhcmQsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCB3
cmFwU2VsZWN0aW9uLCBib29sIHN0YXJ0SW5TZWxlY3Rpb24pCiB7CiAgICAgaWYgKG1fbWFpbkZy
YW1lKQogICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkZpbmRTdHJpbmcoc3RyaW5nLCBmb3J3
YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFwU2VsZWN0aW9uLCBzdGFydEluU2VsZWN0aW9uKTsKQEAg
LTcyOCw3ICs3MzAsNyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCB3eFdlYlZpZXc6
Ok9uU2l6ZSh3eFNpemVFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZpZXc6Ok9uU2l6ZSh3eFNpemVF
dmVudCYgZXZlbnQpCiB7IAogICAgIGlmIChtX2lzSW5pdGlhbGl6ZWQgJiYgbV9tYWluRnJhbWUp
IHsKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUtPkdldEZyYW1l
KCk7CkBAIC03NDgsNyArNzUwLDcgQEAKICNlbmRpZgogfQogCi12b2lkIHd4V2ViVmlldzo6T25N
b3VzZUV2ZW50cyh3eE1vdXNlRXZlbnQmIGV2ZW50KQordm9pZCBXZWJWaWV3OjpPbk1vdXNlRXZl
bnRzKHd4TW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgZXZlbnQuU2tpcCgpOwogICAgIApAQCAt
ODIwLDkgKzgyMiw5IEBACiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3Zl
ZCh3a0V2ZW50KTsKIH0KIAotdm9pZCB3eFdlYlZpZXc6Ok9uQ29udGV4dE1lbnVFdmVudHMod3hD
b250ZXh0TWVudUV2ZW50JiBldmVudCkKK3ZvaWQgV2ViVmlldzo6T25Db250ZXh0TWVudUV2ZW50
cyh3eENvbnRleHRNZW51RXZlbnQmIGV2ZW50KQogewotICAgIENvbm5lY3Qod3hFVlRfQ09NTUFO
RF9NRU5VX1NFTEVDVEVELCB3eENvbW1hbmRFdmVudEhhbmRsZXIod3hXZWJWaWV3OjpPbk1lbnVT
ZWxlY3RFdmVudHMpLCBOVUxMLCB0aGlzKTsKKyAgICBDb25uZWN0KHd4RVZUX0NPTU1BTkRfTUVO
VV9TRUxFQ1RFRCwgd3hDb21tYW5kRXZlbnRIYW5kbGVyKFdlYlZpZXc6Ok9uTWVudVNlbGVjdEV2
ZW50cyksIDAsIHRoaXMpOwogICAgIG1faW1wbC0+cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVy
KCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICB3eFBvaW50IGxvY2FsRXZlbnRQb2ludCA9IFNj
cmVlblRvQ2xpZW50KGV2ZW50LkdldFBvc2l0aW9uKCkpOwogCkBAIC04NTMsMTAgKzg1NSwxMCBA
QAogCiAgICAgUG9wdXBNZW51KG1lbnVXeCwgbG9jYWxFdmVudFBvaW50KTsKICAgICAKLSAgICBE
aXNjb25uZWN0KHd4RVZUX0NPTU1BTkRfTUVOVV9TRUxFQ1RFRCwgd3hDb21tYW5kRXZlbnRIYW5k
bGVyKHd4V2ViVmlldzo6T25NZW51U2VsZWN0RXZlbnRzKSwgTlVMTCwgdGhpcyk7CisgICAgRGlz
Y29ubmVjdCh3eEVWVF9DT01NQU5EX01FTlVfU0VMRUNURUQsIHd4Q29tbWFuZEV2ZW50SGFuZGxl
cihXZWJWaWV3OjpPbk1lbnVTZWxlY3RFdmVudHMpLCAwLCB0aGlzKTsKIH0KIAotdm9pZCB3eFdl
YlZpZXc6Ok9uTWVudVNlbGVjdEV2ZW50cyh3eENvbW1hbmRFdmVudCYgZXZlbnQpCit2b2lkIFdl
YlZpZXc6Ok9uTWVudVNlbGVjdEV2ZW50cyh3eENvbW1hbmRFdmVudCYgZXZlbnQpCiB7CiAgICAg
Ly8gd2Ugc2hvdWxkbid0IGhpdCB0aGlzIHVubGVzcyB0aGVyZSdzIGEgY29udGV4dCBtZW51IHNo
b3dpbmcKICAgICBXZWJDb3JlOjpDb250ZXh0TWVudSogY29yZU1lbnUgPSBtX2ltcGwtPnBhZ2Ut
PmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jb250ZXh0TWVudSgpOwpAQCAtODcyLDEzICs4NzQs
MTMgQEAKICAgICBkZWxldGUgaXRlbTsKIH0KIAotdm9pZCB3eFdlYlZpZXc6Ok9uTW91c2VDYXB0
dXJlTG9zdCh3eE1vdXNlQ2FwdHVyZUxvc3RFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZpZXc6Ok9u
TW91c2VDYXB0dXJlTG9zdCh3eE1vdXNlQ2FwdHVyZUxvc3RFdmVudCYgZXZlbnQpCiB7CiAgICAg
Ly8gZG8gbm90aGluZyAtIHVuZm9ydHVuYXRlbHksIHdlIE1VU1QgaGFuZGxlIHRoaXMgZXZlbnQg
ZHVlIHRvIHd4V2lkZ2V0cyBydWxlcywKICAgICAvLyBvdGhlcndpc2Ugd2Ugd2lsbCBhc3NlcnQs
IGV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vdGhpbmcgZm9yIHVzIHRvIGRvIGhlcmUuCiB9CiAKLWJv
b2wgd3hXZWJWaWV3OjpDYW5Db3B5KCkKK2Jvb2wgV2ViVmlldzo6Q2FuQ29weSgpCiB7CiAgICAg
aWYgKG1fbWFpbkZyYW1lKQogICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkNhbkNvcHkoKTsK
QEAgLTg4NiwxMyArODg4LDEzIEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHd4V2Vi
Vmlldzo6Q29weSgpCit2b2lkIFdlYlZpZXc6OkNvcHkoKQogewogICAgIGlmIChtX21haW5GcmFt
ZSkKICAgICAgICAgbV9tYWluRnJhbWUtPkNvcHkoKTsKIH0KIAotYm9vbCB3eFdlYlZpZXc6OkNh
bkN1dCgpCitib29sIFdlYlZpZXc6OkNhbkN1dCgpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQog
ICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkNhbkN1dCgpOwpAQCAtOTAwLDEzICs5MDIsMTMg
QEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgd3hXZWJWaWV3OjpDdXQoKQordm9pZCBX
ZWJWaWV3OjpDdXQoKQogewogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgbV9tYWluRnJh
bWUtPkN1dCgpOwogfQogCi1ib29sIHd4V2ViVmlldzo6Q2FuUGFzdGUoKQorYm9vbCBXZWJWaWV3
OjpDYW5QYXN0ZSgpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAgICByZXR1cm4gbV9t
YWluRnJhbWUtPkNhblBhc3RlKCk7CkBAIC05MTQsMTMgKzkxNiwxMyBAQAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCB3eFdlYlZpZXc6OlBhc3RlKCkKK3ZvaWQgV2ViVmlldzo6UGFzdGUo
KQogewogICAgIGlmIChtX21haW5GcmFtZSkKICAgICAgICAgbV9tYWluRnJhbWUtPlBhc3RlKCk7
CiB9CiAKLXZvaWQgd3hXZWJWaWV3OjpPbktleUV2ZW50cyh3eEtleUV2ZW50JiBldmVudCkKK3Zv
aWQgV2ViVmlldzo6T25LZXlFdmVudHMod3hLZXlFdmVudCYgZXZlbnQpCiB7CiAgICAgV2ViQ29y
ZTo6RnJhbWUqIGZyYW1lID0gMDsKICAgICBpZiAobV9pbXBsLT5wYWdlKQpAQCAtMTA1NSw3ICsx
MDU3LDcgQEAKICAgICBldmVudC5Ta2lwKCk7CiB9CiAKLXZvaWQgd3hXZWJWaWV3OjpPblNldEZv
Y3VzKHd4Rm9jdXNFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZpZXc6Ok9uU2V0Rm9jdXMod3hGb2N1
c0V2ZW50JiBldmVudCkKIHsKICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+cGFnZSAmJiBtX2lt
cGwtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpKSB7CiAgICAgICAgIG1faW1wbC0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPnNldEZvY3VzZWQodHJ1ZSk7CkBAIC0xMDY4LDcgKzEwNzAsNyBAQAog
ICAgIGV2ZW50LlNraXAoKTsKIH0KIAotdm9pZCB3eFdlYlZpZXc6Ok9uS2lsbEZvY3VzKHd4Rm9j
dXNFdmVudCYgZXZlbnQpCit2b2lkIFdlYlZpZXc6Ok9uS2lsbEZvY3VzKHd4Rm9jdXNFdmVudCYg
ZXZlbnQpCiB7CiAgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPnBhZ2UgJiYgbV9pbXBsLT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKSkgewogICAgICAgICBtX2ltcGwtPnBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5zZXRGb2N1c2VkKGZhbHNlKTsKQEAgLTEwODksMTUgKzEwOTEsMTUgQEAKICAgICBl
dmVudC5Ta2lwKCk7CiB9CiAKLXd4V2ViVmlld0RPTUVsZW1lbnRJbmZvIHd4V2ViVmlldzo6SGl0
VGVzdChjb25zdCB3eFBvaW50JiBwb3MpIGNvbnN0CitXZWJWaWV3RE9NRWxlbWVudEluZm8gV2Vi
Vmlldzo6SGl0VGVzdChjb25zdCB3eFBvaW50JiBwb3MpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWFp
bkZyYW1lKQogICAgICAgICByZXR1cm4gbV9tYWluRnJhbWUtPkhpdFRlc3QocG9zKTsKIAotICAg
IHJldHVybiB3eFdlYlZpZXdET01FbGVtZW50SW5mbygpOworICAgIHJldHVybiBXZWJWaWV3RE9N
RWxlbWVudEluZm8oKTsKIH0KIAotYm9vbCB3eFdlYlZpZXc6OlNob3VsZENsb3NlKCkgY29uc3QK
K2Jvb2wgV2ViVmlldzo6U2hvdWxkQ2xvc2UoKSBjb25zdAogewogICAgIGlmIChtX21haW5GcmFt
ZSkKICAgICAgICAgcmV0dXJuIG1fbWFpbkZyYW1lLT5TaG91bGRDbG9zZSgpOwpAQCAtMTEwNiw3
ICsxMTA4LDcgQEAKIH0KIAogLyogc3RhdGljICovCi12b2lkIHd4V2ViVmlldzo6U2V0RGF0YWJh
c2VEaXJlY3RvcnkoY29uc3Qgd3hTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQordm9pZCBXZWJW
aWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeShjb25zdCB3eFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnkpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJhc2VEaXJlY3Rv
cnkpOwpAQCAtMTExNCw3ICsxMTE2LDcgQEAKIH0KIAogLyogc3RhdGljICovCi13eFN0cmluZyB3
eFdlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KCkKK3d4U3RyaW5nIFdlYlZpZXc6OkdldERh
dGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIHJldHVy
biBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBh
dGgoKTsKQEAgLTExMjQsNyArMTEyNiw3IEBACiB9CiAKIC8qIHN0YXRpYyAqLwotdm9pZCB3eFdl
YlZpZXc6OlNldERhdGFiYXNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQordm9pZCBXZWJWaWV3OjpT
ZXREYXRhYmFzZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGVuYWJs
ZWQpOwpAQCAtMTEzMiw3ICsxMTM0LDcgQEAKIH0KIAogLyogc3RhdGljICovCi1ib29sIHd4V2Vi
Vmlldzo6QXJlRGF0YWJhc2VzRW5hYmxlZCgpCitib29sIFdlYlZpZXc6OkFyZURhdGFiYXNlc0Vu
YWJsZWQoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgcmV0dXJuIFdlYkNvcmU6
OkFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CkBAIC0xMTU1LDcgKzExNTcsNyBAQAog
fQogCiAvKiBzdGF0aWMgKi8KLXZvaWQgd3hXZWJWaWV3OjpTZXRQcm94eUluZm8oY29uc3Qgd3hT
dHJpbmcmIGhvc3QsCit2b2lkIFdlYlZpZXc6OlNldFByb3h5SW5mbyhjb25zdCB3eFN0cmluZyYg
aG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwb3J0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eFByb3h5VHlwZSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgdXNlcm5hbWUsCkBAIC0xMTY2LDE2
ICsxMTY4LDE2IEBACiAgICAgICAgIG1nci0+c2V0UHJveHlJbmZvKGhvc3QsIHBvcnQsIGN1cmxQ
cm94eVR5cGUodHlwZSksIHVzZXJuYW1lLCBwYXNzd29yZCk7CiB9CiAKLXd4V2ViU2V0dGluZ3Mg
d3hXZWJWaWV3OjpHZXRXZWJTZXR0aW5ncygpCitXZWJTZXR0aW5ncyBXZWJWaWV3OjpHZXRXZWJT
ZXR0aW5ncygpCiB7CiAgICAgQVNTRVJUKG1faW1wbC0+cGFnZSk7CiAgICAgaWYgKG1faW1wbC0+
cGFnZSkKLSAgICAgICAgcmV0dXJuIHd4V2ViU2V0dGluZ3MobV9pbXBsLT5wYWdlLT5zZXR0aW5n
cygpKTsKKyAgICAgICAgcmV0dXJuIFdlYlNldHRpbmdzKG1faW1wbC0+cGFnZS0+c2V0dGluZ3Mo
KSk7CiAgICAgCi0gICAgcmV0dXJuIHd4V2ViU2V0dGluZ3MoKTsKKyAgICByZXR1cm4gV2ViU2V0
dGluZ3MoKTsKIH0KIAotd3hXZWJLaXRDb21wYXRpYmlsaXR5TW9kZSB3eFdlYlZpZXc6OkdldENv
bXBhdGliaWxpdHlNb2RlKCkgY29uc3QKK1dlYktpdENvbXBhdGliaWxpdHlNb2RlIFdlYlZpZXc6
OkdldENvbXBhdGliaWxpdHlNb2RlKCkgY29uc3QKIHsKICAgICBpZiAobV9tYWluRnJhbWUpCiAg
ICAgICAgIHJldHVybiBtX21haW5GcmFtZS0+R2V0Q29tcGF0aWJpbGl0eU1vZGUoKTsKQEAgLTEx
ODMsOCArMTE4NSwxMCBAQAogICAgIHJldHVybiBRdWlya3NNb2RlOwogfQogCi12b2lkIHd4V2Vi
Vmlldzo6R3JhbnRVbml2ZXJzYWxBY2Nlc3MoKQordm9pZCBXZWJWaWV3OjpHcmFudFVuaXZlcnNh
bEFjY2VzcygpCiB7CiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAgICBtX21haW5GcmFtZS0+
R3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsKIH0KKworfQpJbmRleDogU291cmNlL1dlYktpdC93eC9X
ZWJCcm93c2VyU2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViQnJv
d3NlclNoZWxsLmNwcAkocmV2aXNpb24gMTEyNTQ0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJC
cm93c2VyU2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICoKLSAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBk
ZWZhdWx0IG5ldyB3aW5kb3cgaW1wbGVtZW50YXRpb24gZm9yIHd4V2ViVmlldyBjbGllbnRzCisg
KiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZGVmYXVsdCBuZXcgd2luZG93IGltcGxlbWVudGF0aW9u
IGZvciBXZWJWaWV3IGNsaWVudHMKICAqIHdobyBkb24ndCB3YW50L25lZWQgdG8gcm9sbCB0aGVp
ciBvd24gYnJvd3NlciBmcmFtZSBVSS4KICAqLwogIApAQCAtNDAsNyArNDAsOSBAQAogI2luY2x1
ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJWaWV3UHJpdmF0ZS5oIgogCi13eFBhZ2VTb3Vy
Y2VWaWV3RnJhbWU6Ond4UGFnZVNvdXJjZVZpZXdGcmFtZShjb25zdCB3eFN0cmluZyYgc291cmNl
KQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1BhZ2VTb3VyY2VWaWV3RnJhbWU6OlBhZ2VTb3VyY2VW
aWV3RnJhbWUoY29uc3Qgd3hTdHJpbmcmIHNvdXJjZSkKICAgICAgICAgOiB3eEZyYW1lKE5VTEws
IHd4SURfQU5ZLCBfKCJQYWdlIFNvdXJjZSBWaWV3IiksIHd4RGVmYXVsdFBvc2l0aW9uLCB3eFNp
emUoNjAwLCA1MDApKQogewogICAgIHd4VGV4dEN0cmwqIGNvbnRyb2wgPSBuZXcgd3hUZXh0Q3Ry
bCh0aGlzLCAtMSwgc291cmNlLCB3eERlZmF1bHRQb3NpdGlvbiwgd3hEZWZhdWx0U2l6ZSwgd3hU
RV9NVUxUSUxJTkUpOwpAQCAtNjksMzUgKzcxLDM1IEBACiAgICAgSURfR0VUX0VESVRfQ09NTUFO
RF9TVEFURSA9IHd4SURfSElHSEVTVCArIDIwCiB9OwogCi1CRUdJTl9FVkVOVF9UQUJMRSh3eFdl
YkJyb3dzZXJTaGVsbCwgd3hGcmFtZSkKLSAgICBFVlRfTUVOVSh3eElEX0NVVCwgd3hXZWJCcm93
c2VyU2hlbGw6Ok9uQ3V0KQotICAgIEVWVF9NRU5VKHd4SURfQ09QWSwgd3hXZWJCcm93c2VyU2hl
bGw6Ok9uQ29weSkKLSAgICBFVlRfTUVOVSh3eElEX1BBU1RFLCB3eFdlYkJyb3dzZXJTaGVsbDo6
T25QYXN0ZSkKLSAgICBFVlRfTUVOVSh3eElEX0VYSVQsICB3eFdlYkJyb3dzZXJTaGVsbDo6T25R
dWl0KQotICAgIEVWVF9NRU5VKHd4SURfQUJPVVQsIHd4V2ViQnJvd3NlclNoZWxsOjpPbkFib3V0
KQotICAgIEVWVF9NRU5VKElEX0xPQURGSUxFLCB3eFdlYkJyb3dzZXJTaGVsbDo6T25Mb2FkRmls
ZSkKLSAgICBFVlRfVEVYVF9FTlRFUihJRF9URVhUQ1RSTCwgd3hXZWJCcm93c2VyU2hlbGw6Ok9u
QWRkcmVzc0JhckVudGVyKQotICAgIEVWVF9URVhUX0VOVEVSKElEX1NFQVJDSENUUkwsIHd4V2Vi
QnJvd3NlclNoZWxsOjpPblNlYXJjaEN0cmxFbnRlcikKLSAgICBFVlRfV0VCVklFV19MT0FEKElE
X1dFQlZJRVcsIHd4V2ViQnJvd3NlclNoZWxsOjpPbkxvYWRFdmVudCkKLSAgICBFVlRfV0VCVklF
V19CRUZPUkVfTE9BRChJRF9XRUJWSUVXLCB3eFdlYkJyb3dzZXJTaGVsbDo6T25CZWZvcmVMb2Fk
KQotICAgIEVWVF9NRU5VKElEX0JBQ0ssIHd4V2ViQnJvd3NlclNoZWxsOjpPbkJhY2spCi0gICAg
RVZUX01FTlUoSURfRk9SV0FSRCwgd3hXZWJCcm93c2VyU2hlbGw6Ok9uRm9yd2FyZCkKLSAgICBF
VlRfTUVOVShJRF9TVE9QLCB3eFdlYkJyb3dzZXJTaGVsbDo6T25TdG9wKQotICAgIEVWVF9NRU5V
KElEX1JFTE9BRCwgd3hXZWJCcm93c2VyU2hlbGw6Ok9uUmVsb2FkKQotICAgIEVWVF9NRU5VKElE
X01BS0VfVEVYVF9MQVJHRVIsIHd4V2ViQnJvd3NlclNoZWxsOjpPbk1ha2VUZXh0TGFyZ2VyKQot
ICAgIEVWVF9NRU5VKElEX01BS0VfVEVYVF9TTUFMTEVSLCB3eFdlYkJyb3dzZXJTaGVsbDo6T25N
YWtlVGV4dFNtYWxsZXIpCi0gICAgRVZUX01FTlUoSURfR0VUX1NPVVJDRSwgd3hXZWJCcm93c2Vy
U2hlbGw6Ok9uR2V0U291cmNlKQotICAgIEVWVF9NRU5VKElEX1NFVF9TT1VSQ0UsIHd4V2ViQnJv
d3NlclNoZWxsOjpPblNldFNvdXJjZSkKLSAgICBFVlRfTUVOVShJRF9CUk9XU0UsIHd4V2ViQnJv
d3NlclNoZWxsOjpPbkJyb3dzZSkKLSAgICBFVlRfTUVOVShJRF9FRElULCB3eFdlYkJyb3dzZXJT
aGVsbDo6T25FZGl0KQotICAgIEVWVF9NRU5VKElEX1JVTl9TQ1JJUFQsIHd4V2ViQnJvd3NlclNo
ZWxsOjpPblJ1blNjcmlwdCkKLSAgICBFVlRfTUVOVShJRF9FRElUX0NPTU1BTkQsIHd4V2ViQnJv
d3NlclNoZWxsOjpPbkVkaXRDb21tYW5kKQotICAgIEVWVF9NRU5VKElEX0dFVF9FRElUX0NPTU1B
TkRfU1RBVEUsIHd4V2ViQnJvd3NlclNoZWxsOjpPbkdldEVkaXRDb21tYW5kU3RhdGUpCi0gICAg
RVZUX01FTlUod3hJRF9QUklOVCwgd3hXZWJCcm93c2VyU2hlbGw6Ok9uUHJpbnQpCitCRUdJTl9F
VkVOVF9UQUJMRShXZWJCcm93c2VyU2hlbGwsIHd4RnJhbWUpCisgICAgRVZUX01FTlUod3hJRF9D
VVQsIFdlYkJyb3dzZXJTaGVsbDo6T25DdXQpCisgICAgRVZUX01FTlUod3hJRF9DT1BZLCBXZWJC
cm93c2VyU2hlbGw6Ok9uQ29weSkKKyAgICBFVlRfTUVOVSh3eElEX1BBU1RFLCBXZWJCcm93c2Vy
U2hlbGw6Ok9uUGFzdGUpCisgICAgRVZUX01FTlUod3hJRF9FWElULCAgV2ViQnJvd3NlclNoZWxs
OjpPblF1aXQpCisgICAgRVZUX01FTlUod3hJRF9BQk9VVCwgV2ViQnJvd3NlclNoZWxsOjpPbkFi
b3V0KQorICAgIEVWVF9NRU5VKElEX0xPQURGSUxFLCBXZWJCcm93c2VyU2hlbGw6Ok9uTG9hZEZp
bGUpCisgICAgRVZUX1RFWFRfRU5URVIoSURfVEVYVENUUkwsIFdlYkJyb3dzZXJTaGVsbDo6T25B
ZGRyZXNzQmFyRW50ZXIpCisgICAgRVZUX1RFWFRfRU5URVIoSURfU0VBUkNIQ1RSTCwgV2ViQnJv
d3NlclNoZWxsOjpPblNlYXJjaEN0cmxFbnRlcikKKyAgICBFVlRfV0VCVklFV19MT0FEKElEX1dF
QlZJRVcsIFdlYkJyb3dzZXJTaGVsbDo6T25Mb2FkRXZlbnQpCisgICAgRVZUX1dFQlZJRVdfQkVG
T1JFX0xPQUQoSURfV0VCVklFVywgV2ViQnJvd3NlclNoZWxsOjpPbkJlZm9yZUxvYWQpCisgICAg
RVZUX01FTlUoSURfQkFDSywgV2ViQnJvd3NlclNoZWxsOjpPbkJhY2spCisgICAgRVZUX01FTlUo
SURfRk9SV0FSRCwgV2ViQnJvd3NlclNoZWxsOjpPbkZvcndhcmQpCisgICAgRVZUX01FTlUoSURf
U1RPUCwgV2ViQnJvd3NlclNoZWxsOjpPblN0b3ApCisgICAgRVZUX01FTlUoSURfUkVMT0FELCBX
ZWJCcm93c2VyU2hlbGw6Ok9uUmVsb2FkKQorICAgIEVWVF9NRU5VKElEX01BS0VfVEVYVF9MQVJH
RVIsIFdlYkJyb3dzZXJTaGVsbDo6T25NYWtlVGV4dExhcmdlcikKKyAgICBFVlRfTUVOVShJRF9N
QUtFX1RFWFRfU01BTExFUiwgV2ViQnJvd3NlclNoZWxsOjpPbk1ha2VUZXh0U21hbGxlcikKKyAg
ICBFVlRfTUVOVShJRF9HRVRfU09VUkNFLCBXZWJCcm93c2VyU2hlbGw6Ok9uR2V0U291cmNlKQor
ICAgIEVWVF9NRU5VKElEX1NFVF9TT1VSQ0UsIFdlYkJyb3dzZXJTaGVsbDo6T25TZXRTb3VyY2Up
CisgICAgRVZUX01FTlUoSURfQlJPV1NFLCBXZWJCcm93c2VyU2hlbGw6Ok9uQnJvd3NlKQorICAg
IEVWVF9NRU5VKElEX0VESVQsIFdlYkJyb3dzZXJTaGVsbDo6T25FZGl0KQorICAgIEVWVF9NRU5V
KElEX1JVTl9TQ1JJUFQsIFdlYkJyb3dzZXJTaGVsbDo6T25SdW5TY3JpcHQpCisgICAgRVZUX01F
TlUoSURfRURJVF9DT01NQU5ELCBXZWJCcm93c2VyU2hlbGw6Ok9uRWRpdENvbW1hbmQpCisgICAg
RVZUX01FTlUoSURfR0VUX0VESVRfQ09NTUFORF9TVEFURSwgV2ViQnJvd3NlclNoZWxsOjpPbkdl
dEVkaXRDb21tYW5kU3RhdGUpCisgICAgRVZUX01FTlUod3hJRF9QUklOVCwgV2ViQnJvd3NlclNo
ZWxsOjpPblByaW50KQogRU5EX0VWRU5UX1RBQkxFKCkKIAogCi13eFdlYkJyb3dzZXJTaGVsbDo6
d3hXZWJCcm93c2VyU2hlbGwoY29uc3Qgd3hTdHJpbmcmIHRpdGxlLCBjb25zdCB3eFN0cmluZyYg
dXJsKSA6IAorV2ViQnJvd3NlclNoZWxsOjpXZWJCcm93c2VyU2hlbGwoY29uc3Qgd3hTdHJpbmcm
IHRpdGxlLCBjb25zdCB3eFN0cmluZyYgdXJsKSA6IAogICAgICAgICB3eEZyYW1lKE5VTEwsIHd4
SURfQU5ZLCB0aXRsZSwgd3hEZWZhdWx0UG9zaXRpb24sIHd4U2l6ZSg2MDAsIDUwMCkpLAogICAg
ICAgICBtX2NoZWNrQmVmb3JlTG9hZChmYWxzZSkKIHsKQEAgLTE2NiwyMSArMTY4LDIxIEBACiAg
ICAgCiAgICAgU2V0VG9vbEJhcih0b29sYmFyKTsKIAotICAgIC8vIENyZWF0ZSB0aGUgd3hXZWJW
aWV3IFdpbmRvdwotICAgIHdlYnZpZXcgPSBuZXcgd3hXZWJWaWV3KCh3eFdpbmRvdyopdGhpcywg
dXJsLCBJRF9XRUJWSUVXLCB3eERlZmF1bHRQb3NpdGlvbiwgd3hTaXplKDIwMCwgMjAwKSk7Cisg
ICAgLy8gQ3JlYXRlIHRoZSBXZWJWaWV3IFdpbmRvdworICAgIHdlYnZpZXcgPSBuZXcgV2ViVmll
dygod3hXaW5kb3cqKXRoaXMsIHVybCwgSURfV0VCVklFVywgd3hEZWZhdWx0UG9zaXRpb24sIHd4
U2l6ZSgyMDAsIDIwMCkpOwogICAgIHdlYnZpZXctPlNldEJhY2tncm91bmRDb2xvdXIoKnd4V0hJ
VEUpOwogCiAgICAgLy8gY3JlYXRlIGEgc3RhdHVzIGJhciBqdXN0IGZvciBmdW4gKGJ5IGRlZmF1
bHQgd2l0aCAxIHBhbmUgb25seSkKICAgICBDcmVhdGVTdGF0dXNCYXIoMik7CiB9CiAKLXd4V2Vi
QnJvd3NlclNoZWxsOjp+d3hXZWJCcm93c2VyU2hlbGwoKQorV2ViQnJvd3NlclNoZWxsOjp+V2Vi
QnJvd3NlclNoZWxsKCkKIHsKICAgICBpZiAobV9kZWJ1Z01lbnUgJiYgR2V0TWVudUJhcigpLT5G
aW5kTWVudShfKCImRGVidWciKSkgPT0gd3hOT1RfRk9VTkQpCiAgICAgICAgIGRlbGV0ZSBtX2Rl
YnVnTWVudTsKIH0KIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVsbDo6U2hvd0RlYnVnTWVudShib29s
IHNob3cpCit2b2lkIFdlYkJyb3dzZXJTaGVsbDo6U2hvd0RlYnVnTWVudShib29sIHNob3cpCiB7
CiAgICAgaW50IGRlYnVnTWVudSA9IEdldE1lbnVCYXIoKS0+RmluZE1lbnUoXygiJkRlYnVnIikp
OwogICAgIGlmIChzaG93ICYmIGRlYnVnTWVudSA9PSB3eE5PVF9GT1VORCkgewpAQCAtMTk1LDIz
ICsxOTcsMjMgQEAKIAogLy8gZXZlbnQgaGFuZGxlcnMKIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVs
bDo6T25RdWl0KHd4Q29tbWFuZEV2ZW50JiBXWFVOVVNFRChldmVudCkpCit2b2lkIFdlYkJyb3dz
ZXJTaGVsbDo6T25RdWl0KHd4Q29tbWFuZEV2ZW50JiBXWFVOVVNFRChldmVudCkpCiB7CiAgICAg
Ly8gdHJ1ZSBpcyB0byBmb3JjZSB0aGUgZnJhbWUgdG8gY2xvc2UKICAgICBDbG9zZSh0cnVlKTsK
IH0KIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVsbDo6T25BYm91dCh3eENvbW1hbmRFdmVudCYgV1hV
TlVTRUQoZXZlbnQpKQordm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9uQWJvdXQod3hDb21tYW5kRXZl
bnQmIFdYVU5VU0VEKGV2ZW50KSkKIHsKICAgICB3eFN0cmluZyBtc2c7Ci0gICAgbXNnLlByaW50
ZihfVCgiVGhpcyBpcyB0aGUgQWJvdXQgZGlhbG9nIG9mIHRoZSB3eFdlYktpdCBzYW1wbGUuXG4i
KQorICAgIG1zZy5QcmludGYoX1QoIlRoaXMgaXMgdGhlIEFib3V0IGRpYWxvZyBvZiB0aGUgV2Vi
S2l0IHNhbXBsZS5cbiIpCiAgICAgICAgICAgICAgICBfVCgiV2VsY29tZSB0byAlcyIpLCB3eFZF
UlNJT05fU1RSSU5HKTsKIAotICAgIHd4TWVzc2FnZUJveChtc2csIF9UKCJBYm91dCB3eFdlYktp
dCBTYW1wbGUiKSwgd3hPSyB8IHd4SUNPTl9JTkZPUk1BVElPTiwgdGhpcyk7CisgICAgd3hNZXNz
YWdlQm94KG1zZywgX1QoIkFib3V0IFdlYktpdCBTYW1wbGUiKSwgd3hPSyB8IHd4SUNPTl9JTkZP
Uk1BVElPTiwgdGhpcyk7CiAKIH0KIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVsbDo6T25Mb2FkRmls
ZSh3eENvbW1hbmRFdmVudCYgV1hVTlVTRUQoZXZlbnQpKQordm9pZCBXZWJCcm93c2VyU2hlbGw6
Ok9uTG9hZEZpbGUod3hDb21tYW5kRXZlbnQmIFdYVU5VU0VEKGV2ZW50KSkKIHsKICAgICB3eEZp
bGVEaWFsb2cqIGRpYWxvZyA9IG5ldyB3eEZpbGVEaWFsb2codGhpcywgd3hUKCJDaG9vc2UgYSBm
aWxlIikpOwogICAgIGlmIChkaWFsb2ctPlNob3dNb2RhbCgpID09IHd4SURfT0spIHsgIApAQCAt
MjIyLDI5ICsyMjQsMjYgQEAKICAgICB9CiB9CiAKLXZvaWQgd3hXZWJCcm93c2VyU2hlbGw6Ok9u
TG9hZEV2ZW50KHd4V2ViVmlld0xvYWRFdmVudCYgZXZlbnQpCit2b2lkIFdlYkJyb3dzZXJTaGVs
bDo6T25Mb2FkRXZlbnQoV2ViVmlld0xvYWRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKEdldFN0
YXR1c0JhcigpICE9IE5VTEwpewotICAgICAgICBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSB3eFdF
QlZJRVdfTE9BRF9ORUdPVElBVElORykgeworICAgICAgICBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9
PSBXRUJWSUVXX0xPQURfTkVHT1RJQVRJTkcpIHsKICAgICAgICAgICAgIEdldFN0YXR1c0Jhcigp
LT5TZXRTdGF0dXNUZXh0KF8oIkNvbnRhY3RpbmcgIikgKyBldmVudC5HZXRVUkwoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSB3eFdFQlZJRVdfTE9B
RF9UUkFOU0ZFUlJJTkcpIHsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5HZXRTdGF0ZSgpID09
IFdFQlZJRVdfTE9BRF9UUkFOU0ZFUlJJTkcpIHsKICAgICAgICAgICAgIEdldFN0YXR1c0Jhcigp
LT5TZXRTdGF0dXNUZXh0KF8oIkxvYWRpbmcgIikgKyBldmVudC5HZXRVUkwoKSk7CiAgICAgICAg
ICAgICBpZiAoZXZlbnQuR2V0RnJhbWUoKSA9PSB3ZWJ2aWV3LT5HZXRNYWluRnJhbWUoKSkKICAg
ICAgICAgICAgICAgICBhZGRyZXNzQmFyLT5TZXRWYWx1ZShldmVudC5HZXRVUkwoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSB3eFdFQlZJRVdfTE9B
RF9PTkxPQURfSEFORExFRCkgeworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LkdldFN0YXRlKCkg
PT0gV0VCVklFV19MT0FEX09OTE9BRF9IQU5ETEVEKSB7CiAgICAgICAgICAgICBHZXRTdGF0dXNC
YXIoKS0+U2V0U3RhdHVzVGV4dChfKCJMb2FkIGNvbXBsZXRlLiIpKTsKICAgICAgICAgICAgIGlm
IChldmVudC5HZXRGcmFtZSgpID09IHdlYnZpZXctPkdldE1haW5GcmFtZSgpKQogICAgICAgICAg
ICAgICAgIFNldFRpdGxlKHdlYnZpZXctPkdldFBhZ2VUaXRsZSgpKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChldmVudC5HZXRTdGF0ZSgpID09IHd4V0VCVklFV19MT0FEX0ZBSUxFRCkg
eworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LkdldFN0YXRlKCkgPT0gV0VCVklFV19MT0FEX0ZB
SUxFRCkgewogICAgICAgICAgICAgR2V0U3RhdHVzQmFyKCktPlNldFN0YXR1c1RleHQoXygiRmFp
bGVkIHRvIGxvYWQgIikgKyBldmVudC5HZXRVUkwoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAK
LXZvaWQgd3hXZWJCcm93c2VyU2hlbGw6Ok9uQmVmb3JlTG9hZCh3eFdlYlZpZXdCZWZvcmVMb2Fk
RXZlbnQmIG15RXZlbnQpCit2b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25CZWZvcmVMb2FkKFdlYlZp
ZXdCZWZvcmVMb2FkRXZlbnQmIG15RXZlbnQpCiB7CiAgICAgaWYgKG1fY2hlY2tCZWZvcmVMb2Fk
KSB7CiAgICAgICAgIGludCByZXBseSA9IHd4TWVzc2FnZUJveChfKCJXb3VsZCB5b3UgbGlrZSB0
byBjb250aW51ZSBsb2FkaW5nICIpICsgbXlFdmVudC5HZXRVUkwoKSArIHd4VCgiPyIpLCBfKCJD
b250aW51ZSBMb2FkaW5nPyIpLCB3eFlFU19OTyk7IApAQCAtMjU0LDYyICsyNTMsNjIgQEAKICAg
ICB9CiB9CiAKLXZvaWQgd3hXZWJCcm93c2VyU2hlbGw6Ok9uQWRkcmVzc0JhckVudGVyKHd4Q29t
bWFuZEV2ZW50JiBldmVudCkKK3ZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkFkZHJlc3NCYXJFbnRl
cih3eENvbW1hbmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKHdlYnZpZXcpCiAgICAgICAgIHdl
YnZpZXctPkxvYWRVUkwoYWRkcmVzc0Jhci0+R2V0VmFsdWUoKSk7CiB9CiAKLXZvaWQgd3hXZWJC
cm93c2VyU2hlbGw6Ok9uU2VhcmNoQ3RybEVudGVyKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKK3Zv
aWQgV2ViQnJvd3NlclNoZWxsOjpPblNlYXJjaEN0cmxFbnRlcih3eENvbW1hbmRFdmVudCYgZXZl
bnQpCiB7CiAgICAgaWYgKHdlYnZpZXcpIHsKICAgICAgICAgd2Vidmlldy0+TG9hZFVSTCh3eFN0
cmluZzo6Rm9ybWF0KHd4VCgiaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9ybHM9ZW4mcT0l
cyZpZT1VVEYtOCZvZT1VVEYtOCIpLCBzZWFyY2hDdHJsLT5HZXRWYWx1ZSgpLndjX3N0cigpKSk7
CiAgICAgfQogfQogCi12b2lkIHd4V2ViQnJvd3NlclNoZWxsOjpPbkN1dCh3eENvbW1hbmRFdmVu
dCYgZXZlbnQpCit2b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25DdXQod3hDb21tYW5kRXZlbnQmIGV2
ZW50KQogewogICAgIGlmICh3ZWJ2aWV3ICYmIHdlYnZpZXctPkNhbkN1dCgpKQogICAgICAgICB3
ZWJ2aWV3LT5DdXQoKTsKIH0KIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVsbDo6T25Db3B5KHd4Q29t
bWFuZEV2ZW50JiBldmVudCkKK3ZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkNvcHkod3hDb21tYW5k
RXZlbnQmIGV2ZW50KQogewogICAgIGlmICh3ZWJ2aWV3ICYmIHdlYnZpZXctPkNhbkNvcHkoKSkK
ICAgICAgICAgd2Vidmlldy0+Q29weSgpOwogfQogCi12b2lkIHd4V2ViQnJvd3NlclNoZWxsOjpP
blBhc3RlKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKK3ZvaWQgV2ViQnJvd3NlclNoZWxsOjpPblBh
c3RlKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAod2VidmlldyAmJiB3ZWJ2aWV3
LT5DYW5QYXN0ZSgpKQogICAgICAgICB3ZWJ2aWV3LT5QYXN0ZSgpOwogfQogCi12b2lkIHd4V2Vi
QnJvd3NlclNoZWxsOjpPbkJhY2sod3hDb21tYW5kRXZlbnQmIGV2ZW50KQordm9pZCBXZWJCcm93
c2VyU2hlbGw6Ok9uQmFjayh3eENvbW1hbmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKHdlYnZp
ZXcpCiAgICAgICAgIHdlYnZpZXctPkdvQmFjaygpOwogfQogCi12b2lkIHd4V2ViQnJvd3NlclNo
ZWxsOjpPbkZvcndhcmQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQordm9pZCBXZWJCcm93c2VyU2hl
bGw6Ok9uRm9yd2FyZCh3eENvbW1hbmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKHdlYnZpZXcp
CiAgICAgICAgIHdlYnZpZXctPkdvRm9yd2FyZCgpOwogfQogCi12b2lkIHd4V2ViQnJvd3NlclNo
ZWxsOjpPblN0b3Aod3hDb21tYW5kRXZlbnQmIG15RXZlbnQpCit2b2lkIFdlYkJyb3dzZXJTaGVs
bDo6T25TdG9wKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQogewogICAgIGlmICh3ZWJ2aWV3KQog
ICAgICAgICB3ZWJ2aWV3LT5TdG9wKCk7CiB9CiAKLXZvaWQgd3hXZWJCcm93c2VyU2hlbGw6Ok9u
UmVsb2FkKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQordm9pZCBXZWJCcm93c2VyU2hlbGw6Ok9u
UmVsb2FkKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQogewogICAgIGlmICh3ZWJ2aWV3KQogICAg
ICAgICB3ZWJ2aWV3LT5SZWxvYWQoKTsKIH0KIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVsbDo6T25N
YWtlVGV4dExhcmdlcih3eENvbW1hbmRFdmVudCYgbXlFdmVudCkKK3ZvaWQgV2ViQnJvd3NlclNo
ZWxsOjpPbk1ha2VUZXh0TGFyZ2VyKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQogewogICAgIGlm
ICh3ZWJ2aWV3KSB7CiAgICAgICAgIGlmICh3ZWJ2aWV3LT5DYW5JbmNyZWFzZVRleHRTaXplKCkp
CkBAIC0zMTcsNyArMzE2LDcgQEAKICAgICB9CiB9CiAKLXZvaWQgd3hXZWJCcm93c2VyU2hlbGw6
Ok9uTWFrZVRleHRTbWFsbGVyKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQordm9pZCBXZWJCcm93
c2VyU2hlbGw6Ok9uTWFrZVRleHRTbWFsbGVyKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KQogewog
ICAgIGlmICh3ZWJ2aWV3KSB7CiAgICAgICAgIGlmICh3ZWJ2aWV3LT5DYW5EZWNyZWFzZVRleHRT
aXplKCkpCkBAIC0zMjUsMzMgKzMyNCwzMyBAQAogICAgIH0KIH0KIAotdm9pZCB3eFdlYkJyb3dz
ZXJTaGVsbDo6T25HZXRTb3VyY2Uod3hDb21tYW5kRXZlbnQmIG15RXZlbnQpCit2b2lkIFdlYkJy
b3dzZXJTaGVsbDo6T25HZXRTb3VyY2Uod3hDb21tYW5kRXZlbnQmIG15RXZlbnQpCiB7CiAgICAg
aWYgKHdlYnZpZXcpIHsKLSAgICAgICAgd3hQYWdlU291cmNlVmlld0ZyYW1lKiBwYWdlU291cmNl
RnJhbWUgPSBuZXcgd3hQYWdlU291cmNlVmlld0ZyYW1lKHdlYnZpZXctPkdldFBhZ2VTb3VyY2Uo
KSk7CisgICAgICAgIFBhZ2VTb3VyY2VWaWV3RnJhbWUqIHBhZ2VTb3VyY2VGcmFtZSA9IG5ldyBQ
YWdlU291cmNlVmlld0ZyYW1lKHdlYnZpZXctPkdldFBhZ2VTb3VyY2UoKSk7CiAgICAgICAgIHBh
Z2VTb3VyY2VGcmFtZS0+U2hvdygpOwogICAgIH0KIH0KIAotdm9pZCB3eFdlYkJyb3dzZXJTaGVs
bDo6T25TZXRTb3VyY2Uod3hDb21tYW5kRXZlbnQmIGV2ZW50KQordm9pZCBXZWJCcm93c2VyU2hl
bGw6Ok9uU2V0U291cmNlKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAod2Vidmll
dykKICAgICAgICAgd2Vidmlldy0+U2V0UGFnZVNvdXJjZSh3eFN0cmluZyh3eFQoIjxwPkhlbGxv
IFdvcmxkITwvcD4iKSkpOwogfQogCi12b2lkIHd4V2ViQnJvd3NlclNoZWxsOjpPbkJyb3dzZSh3
eENvbW1hbmRFdmVudCYgZXZlbnQpCit2b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25Ccm93c2Uod3hD
b21tYW5kRXZlbnQmIGV2ZW50KQogewogICAgIGlmICh3ZWJ2aWV3KQogICAgICAgICB3ZWJ2aWV3
LT5NYWtlRWRpdGFibGUoIWV2ZW50LklzQ2hlY2tlZCgpKTsKIH0KIAotdm9pZCB3eFdlYkJyb3dz
ZXJTaGVsbDo6T25FZGl0KHd4Q29tbWFuZEV2ZW50JiBldmVudCkKK3ZvaWQgV2ViQnJvd3NlclNo
ZWxsOjpPbkVkaXQod3hDb21tYW5kRXZlbnQmIGV2ZW50KQogewogICAgIGlmICh3ZWJ2aWV3KQog
ICAgICAgICB3ZWJ2aWV3LT5NYWtlRWRpdGFibGUoZXZlbnQuSXNDaGVja2VkKCkpOwogfQogCi12
b2lkIHd4V2ViQnJvd3NlclNoZWxsOjpPblJ1blNjcmlwdCh3eENvbW1hbmRFdmVudCYgbXlFdmVu
dCkKK3ZvaWQgV2ViQnJvd3NlclNoZWxsOjpPblJ1blNjcmlwdCh3eENvbW1hbmRFdmVudCYgbXlF
dmVudCkKIHsKICAgICBpZiAod2VidmlldykgewogICAgICAgICB3eFRleHRFbnRyeURpYWxvZyog
ZGlhbG9nID0gbmV3IHd4VGV4dEVudHJ5RGlhbG9nKHRoaXMsIF8oIlR5cGUgaW4gYSBKYXZhU2Ny
aXB0IHRvIGV4ZWN0dXRlLiIpKTsKQEAgLTM2Miw3ICszNjEsNyBAQAogICAgIH0KIH0KIAotdm9p
ZCB3eFdlYkJyb3dzZXJTaGVsbDo6T25FZGl0Q29tbWFuZCh3eENvbW1hbmRFdmVudCYgbXlFdmVu
dCkKK3ZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkVkaXRDb21tYW5kKHd4Q29tbWFuZEV2ZW50JiBt
eUV2ZW50KQogewogICAgIGlmICh3ZWJ2aWV3KSB7CiAgICAgICAgIGlmICghd2Vidmlldy0+SXNF
ZGl0YWJsZSgpKSB7CkBAIC0zODAsNyArMzc5LDcgQEAKICAgICB9CiB9CiAKLXZvaWQgd3hXZWJC
cm93c2VyU2hlbGw6Ok9uR2V0RWRpdENvbW1hbmRTdGF0ZSh3eENvbW1hbmRFdmVudCYgbXlFdmVu
dCkKK3ZvaWQgV2ViQnJvd3NlclNoZWxsOjpPbkdldEVkaXRDb21tYW5kU3RhdGUod3hDb21tYW5k
RXZlbnQmIG15RXZlbnQpCiB7CiAgICAgaWYgKHdlYnZpZXcpIHsKICAgICAgICAgaWYgKCF3ZWJ2
aWV3LT5Jc0VkaXRhYmxlKCkpIHsKQEAgLTQwMiw4ICs0MDEsMTAgQEAKICAgICB9CiB9CiAKLXZv
aWQgd3hXZWJCcm93c2VyU2hlbGw6Ok9uUHJpbnQod3hDb21tYW5kRXZlbnQmIG15RXZlbnQpCit2
b2lkIFdlYkJyb3dzZXJTaGVsbDo6T25QcmludCh3eENvbW1hbmRFdmVudCYgbXlFdmVudCkKIHsK
ICAgICBpZiAod2VidmlldyAmJiB3ZWJ2aWV3LT5HZXRNYWluRnJhbWUoKSkKICAgICAgICAgd2Vi
dmlldy0+R2V0TWFpbkZyYW1lKCktPlByaW50KCk7CiB9CisgICAgCit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L2JpbmRpbmdzL3B5dGhvbi93ZWJ2aWV3LmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93eC9iaW5kaW5ncy9weXRob24vd2Vidmlldy5pCShyZXZpc2lvbiAxMTI1NDQpCisr
KyBTb3VyY2UvV2ViS2l0L3d4L2JpbmRpbmdzL3B5dGhvbi93ZWJ2aWV3LmkJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDYgKzUxLDEwIEBACiAjaW5jbHVkZSAiV2ViRE9NUmFuZ2UuaCIKICNpbmNsdWRl
ICJXZWJET01XZWJLaXRBbmltYXRpb25MaXN0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK3N0YXRpYyBjb25zdCB3eFN0cmluZyB3eFB5V2ViVmlld05hbWVTdHIoV2ViVmlld05hbWVT
dHIpOworCiAjaWZuZGVmIF9fV1hNU1dfXwogUHlPYmplY3QqIGNyZWF0ZURPTU5vZGVTdWJ0eXBl
KFdlYkRPTU5vZGUqIHB0ciwgYm9vbCBzZXRUaGlzT3duLCBib29sIGlzVmFsdWVPYmplY3QpCiB7
CkBAIC0xMzYsMTIgKzE0MCwxMCBAQAogJXR5cGVtYXAob3V0KSBXZWJET01TdHJpbmcmICAgICAg
ICAgICB7ICRyZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCgkMS51dGY4KCkuZGF0YSgpLCAk
MS51dGY4KCkubGVuZ3RoKCksIE5VTEwpOyB9CiAjZW5kaWYKIAotTUFLRV9DT05TVF9XWFNUUklO
RyhXZWJWaWV3TmFtZVN0cik7CitNdXN0SGF2ZUFwcChXZWJCcm93c2VyU2hlbGwpOworTXVzdEhh
dmVBcHAoV2ViRnJhbWUpOworTXVzdEhhdmVBcHAoV2ViVmlldyk7CiAKLU11c3RIYXZlQXBwKHd4
V2ViQnJvd3NlclNoZWxsKTsKLU11c3RIYXZlQXBwKHd4V2ViRnJhbWUpOwotTXVzdEhhdmVBcHAo
d3hXZWJWaWV3KTsKLQogJWluY2x1ZGUgV2ViS2l0RGVmaW5lcy5oCiAKICNpZm5kZWYgX19XWE1T
V19fCkBAIC0xNjIsNyArMTY0LDcgQEAKICVpbmNsdWRlIFdlYlNldHRpbmdzLmgKICVpbmNsdWRl
IFdlYlZpZXcuaAogCi0lZXh0ZW5kIHd4V2ViRnJhbWUgeworJWV4dGVuZCBXZWJLaXQ6OldlYkZy
YW1lIHsKICAgICAlcHl0aG9uY29kZSB7CiAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIp
OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpcyA9PSBvdGhlci50aGlzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3d4L1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YlZpZXcuaAkocmV2aXNpb24gMTEyNTQ0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICAK
LSNpZm5kZWYgV1hXRUJWSUVXX0gKLSNkZWZpbmUgV1hXRUJWSUVXX0gKKyNpZm5kZWYgV2ViVmll
d19oCisjZGVmaW5lIFdlYlZpZXdfaAogCiAjaW5jbHVkZSAid3gvd3hwcmVjLmgiCiAjaWZuZGVm
IFdYX1BSRUNPTVAKQEAgLTQwLDcgKzQwLDYgQEAKIAogY2xhc3MgV2ViVmlld1ByaXZhdGU7CiBj
bGFzcyBXZWJWaWV3RnJhbWVEYXRhOwotY2xhc3Mgd3hXZWJGcmFtZTsKIAogdHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbENvbnRleHRSZWY7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKQEAgLTUwLDIyICs0OSwyNiBAQAogICAgIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50V3g7CiB9CiAKK3N0YXRpYyBjb25zdCBpbnQgZGVmYXVsdENhY2hl
Q2FwYWNpdHkgPSA4MTkyICogMTAyNDsgLy8gbWlycm9ycyBNZW1vcnlDYWNoZS5jcHAKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOworCiAjaWZuZGVmIFNXSUcKLWV4dGVy
biBXWERMTElNUEVYUF9XRUJLSVQgY29uc3Qgd3hDaGFyKiB3eFdlYlZpZXdOYW1lU3RyOworZXh0
ZXJuIFdYRExMSU1QRVhQX1dFQktJVCBjb25zdCB3eENoYXIqIFdlYlZpZXdOYW1lU3RyOwogI2Vu
ZGlmCiAKLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdENhY2hlQ2FwYWNpdHkgPSA4MTkyICogMTAy
NDsgLy8gbWlycm9ycyBNZW1vcnlDYWNoZS5jcHAKLQotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lU
IHd4V2ViVmlld0NhY2hlUG9saWN5CitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0Nh
Y2hlUG9saWN5CiB7CiBwdWJsaWM6Ci0gICAgd3hXZWJWaWV3Q2FjaGVQb2xpY3kodW5zaWduZWQg
bWluRGVhZCA9IDAsIHVuc2lnbmVkIG1heERlYWQgPSBkZWZhdWx0Q2FjaGVDYXBhY2l0eSwgdW5z
aWduZWQgdG90YWxDYXBhY2l0eSA9IGRlZmF1bHRDYWNoZUNhcGFjaXR5KQorICAgIFdlYlZpZXdD
YWNoZVBvbGljeSh1bnNpZ25lZCBtaW5EZWFkID0gMCwgdW5zaWduZWQgbWF4RGVhZCA9IGRlZmF1
bHRDYWNoZUNhcGFjaXR5LCB1bnNpZ25lZCB0b3RhbENhcGFjaXR5ID0gZGVmYXVsdENhY2hlQ2Fw
YWNpdHkpCiAgICAgICAgIDogbV9taW5EZWFkQ2FwYWNpdHkobWluRGVhZCkKICAgICAgICAgLCBt
X21heERlYWRDYXBhY2l0eShtYXhEZWFkKQogICAgICAgICAsIG1fY2FwYWNpdHkodG90YWxDYXBh
Y2l0eSkKICAgICB7fQogCi0gICAgfnd4V2ViVmlld0NhY2hlUG9saWN5KCkge30KKyAgICB+V2Vi
Vmlld0NhY2hlUG9saWN5KCkge30KIAogICAgIHVuc2lnbmVkIEdldENhcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9jYXBhY2l0eTsgfQogICAgIHZvaWQgU2V0Q2FwYWNpdHkoaW50IGNhcGFjaXR5
KSB7IG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsgfQpAQCAtMTAyLDkgKzEwNSw5IEBACiAgICAgU29j
a3M1SG9zdG5hbWUKIH07CiAKLWNsYXNzIFdYRExMSU1QRVhQX1dFQktJVCB3eFdlYlZpZXcgOiBw
dWJsaWMgd3hXaW5kb3cKK2NsYXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJWaWV3IDogcHVibGlj
IHd4V2luZG93CiB7Ci0gICAgLy8gQ2hyb21lQ2xpZW50V3ggbmVlZHMgdG8gZ2V0IHRoZSBQYWdl
KiBzdG9yZWQgYnkgdGhlIHd4V2ViVmlldworICAgIC8vIENocm9tZUNsaWVudFd4IG5lZWRzIHRv
IGdldCB0aGUgUGFnZSogc3RvcmVkIGJ5IHRoZSBXZWJWaWV3CiAgICAgLy8gZm9yIHRoZSBjcmVh
dGVXaW5kb3cgZnVuY3Rpb24uIAogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGll
bnRXeDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDsKQEAg
LTExMiwyMSArMTE1LDIxIEBACiBwdWJsaWM6CiAgICAgLy8gY3RvcihzKQogI2lmIFNXSUcKLSAg
ICAlcHl0aG9uQXBwZW5kIHd4V2ViVmlldyAgICAic2VsZi5fc2V0T09SSW5mbyhzZWxmKSIKLSAg
ICAlcHl0aG9uQXBwZW5kIHd4V2ViVmlldygpICAiIgorICAgICVweXRob25BcHBlbmQgV2ViVmll
dyAgICAic2VsZi5fc2V0T09SSW5mbyhzZWxmKSIKKyAgICAlcHl0aG9uQXBwZW5kIFdlYlZpZXco
KSAgIiIKICNlbmRpZgogCi0gICAgd3hXZWJWaWV3KHd4V2luZG93KiBwYXJlbnQsCisgICAgV2Vi
Vmlldyh3eFdpbmRvdyogcGFyZW50LAogICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgdXJs
ID0gImFib3V0OmJsYW5rIiwgCiAgICAgICAgICAgICAgIGludCBpZCA9IHd4SURfQU5ZLAogICAg
ICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb2ludCA9IHd4RGVmYXVsdFBvc2l0aW9uLAogICAg
ICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUgPSB3eERlZmF1bHRTaXplLAogICAgICAgICAg
ICAgICBsb25nIHN0eWxlID0gMCwKLSAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUg
PSB3eFdlYlZpZXdOYW1lU3RyKTsgLy8gRm9yIHd4V2ViVmlldyBpbnRlcm5hbCBkYXRhIHBhc3Np
bmcKKyAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIG5hbWUgPSBXZWJWaWV3TmFtZVN0cik7
IC8vIEZvciBXZWJWaWV3IGludGVybmFsIGRhdGEgcGFzc2luZwogI2lmIFNXSUcKLSAgICAlcmVu
YW1lKFByZVdlYlZpZXcpIHd4V2ViVmlldygpOworICAgICVyZW5hbWUoUHJlV2ViVmlldykgV2Vi
VmlldygpOwogI2Vsc2UKLSAgICB3eFdlYlZpZXcoKTsKKyAgICBXZWJWaWV3KCk7CiAjZW5kaWYK
ICAgICAKICAgICBib29sIENyZWF0ZSh3eFdpbmRvdyogcGFyZW50LApAQCAtMTM1LDEwICsxMzgs
MTAgQEAKICAgICAgICAgICAgICAgICBjb25zdCB3eFBvaW50JiBwb2ludCA9IHd4RGVmYXVsdFBv
c2l0aW9uLAogICAgICAgICAgICAgICAgIGNvbnN0IHd4U2l6ZSYgc2l6ZSA9IHd4RGVmYXVsdFNp
emUsCiAgICAgICAgICAgICAgICAgbG9uZyBzdHlsZSA9IDAsCi0gICAgICAgICAgICAgICAgY29u
c3Qgd3hTdHJpbmcmIG5hbWUgPSB3eFdlYlZpZXdOYW1lU3RyKTsgLy8gRm9yIHd4V2ViVmlldyBp
bnRlcm5hbCBkYXRhIHBhc3NpbmcKKyAgICAgICAgICAgICAgICBjb25zdCB3eFN0cmluZyYgbmFt
ZSA9IFdlYlZpZXdOYW1lU3RyKTsgLy8gRm9yIFdlYlZpZXcgaW50ZXJuYWwgZGF0YSBwYXNzaW5n
CiAgICAgCiAjaWZuZGVmIFNXSUcKLSAgICB2aXJ0dWFsIH53eFdlYlZpZXcoKTsKKyAgICB2aXJ0
dWFsIH5XZWJWaWV3KCk7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIExvYWRVUkwoY29uc3Qgd3hT
dHJpbmcmIHVybCk7CkBAIC0xNjYsNyArMTY5LDcgQEAKICAgICB3eFN0cmluZyBHZXRBc01hcmt1
cCgpOwogICAgIHd4U3RyaW5nIEdldEV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKICAgICAKLSAg
ICB3eFdlYktpdFNlbGVjdGlvbiBHZXRTZWxlY3Rpb24oKTsKKyAgICBXZWJLaXRTZWxlY3Rpb24g
R2V0U2VsZWN0aW9uKCk7CiAgICAgd3hTdHJpbmcgR2V0U2VsZWN0aW9uQXNIVE1MKCk7CiAgICAg
d3hTdHJpbmcgR2V0U2VsZWN0aW9uQXNUZXh0KCk7CiAgICAgCkBAIC0xOTMsMTYgKzE5NiwxNiBA
QAogICAgIHd4U3RyaW5nIEdldFBhZ2VUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0K
ICAgICB2b2lkIFNldFBhZ2VUaXRsZShjb25zdCB3eFN0cmluZyYgdGl0bGUpIHsgbV90aXRsZSA9
IHRpdGxlOyB9CiAgICAgCi0gICAgd3hXZWJGcmFtZSogR2V0TWFpbkZyYW1lKCkgeyByZXR1cm4g
bV9tYWluRnJhbWU7IH0KKyAgICBXZWJGcmFtZSogR2V0TWFpbkZyYW1lKCkgeyByZXR1cm4gbV9t
YWluRnJhbWU7IH0KICAgICAKICAgICB3eFN0cmluZyBHZXRNYWluRnJhbWVVUkwoKSBjb25zdDsK
IAotICAgIHd4V2ViVmlld0RPTUVsZW1lbnRJbmZvIEhpdFRlc3QoY29uc3Qgd3hQb2ludCYgcG9z
KSBjb25zdDsKKyAgICBXZWJWaWV3RE9NRWxlbWVudEluZm8gSGl0VGVzdChjb25zdCB3eFBvaW50
JiBwb3MpIGNvbnN0OwogICAgIAogICAgIGJvb2wgU2hvdWxkQ2xvc2UoKSBjb25zdDsKICAgICAg
IAotICAgIHN0YXRpYyB2b2lkIFNldENhY2hlUG9saWN5KGNvbnN0IHd4V2ViVmlld0NhY2hlUG9s
aWN5JiBjYWNoZVBvbGljeSk7Ci0gICAgc3RhdGljIHd4V2ViVmlld0NhY2hlUG9saWN5IEdldENh
Y2hlUG9saWN5KCk7CisgICAgc3RhdGljIHZvaWQgU2V0Q2FjaGVQb2xpY3koY29uc3QgV2ViVmll
d0NhY2hlUG9saWN5JiBjYWNoZVBvbGljeSk7CisgICAgc3RhdGljIFdlYlZpZXdDYWNoZVBvbGlj
eSBHZXRDYWNoZVBvbGljeSgpOwogCiAgICAgdm9pZCBTZXRNb3VzZVdoZWVsWm9vbXMoYm9vbCBt
b3VzZVdoZWVsWm9vbXMpIHsgbV9tb3VzZVdoZWVsWm9vbXMgPSBtb3VzZVdoZWVsWm9vbXM7IH0K
ICAgICBib29sIEdldE1vdXNlV2hlZWxab29tcygpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VXaGVl
bFpvb21zOyB9CkBAIC0yMjYsOCArMjI5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgd3hTdHJpbmcmIHVzZXJuYW1lID0gd3hFbXB0eVN0cmluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTdHJpbmcmIHBhc3N3b3JkID0gd3hFbXB0eVN0cmlu
Zyk7CiAKLSAgICB3eFdlYlNldHRpbmdzIEdldFdlYlNldHRpbmdzKCk7Ci0gICAgd3hXZWJLaXRD
b21wYXRpYmlsaXR5TW9kZSBHZXRDb21wYXRpYmlsaXR5TW9kZSgpIGNvbnN0OworICAgIFdlYlNl
dHRpbmdzIEdldFdlYlNldHRpbmdzKCk7CisgICAgV2ViS2l0Q29tcGF0aWJpbGl0eU1vZGUgR2V0
Q29tcGF0aWJpbGl0eU1vZGUoKSBjb25zdDsKICAgICAKICAgICAvKgogICAgICAgICBUaGlzIG1l
dGhvZCBhbGxvd3MgY3Jvc3Mgc2l0ZS1zY3JpcHRpbmcgKFhTUykgaW4gdGhlIFdlYlZpZXcuIApA
QCAtMjUzLDE0ICsyNTYsMTQgQEAKICAgICAvLyBhbnkgY2xhc3Mgd2lzaGluZyB0byBwcm9jZXNz
IHd4V2luZG93cyBldmVudHMgbXVzdCB1c2UgdGhpcyBtYWNybwogI2lmbmRlZiBTV0lHCiAgICAg
REVDTEFSRV9FVkVOVF9UQUJMRSgpCi0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKHd4V2ViVmll
dykKKyAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlldykKICNlbmRpZgogICAgIGZsb2F0
IG1fdGV4dE1hZ25pZmllcjsKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKICAgICBib29sIG1f
YmVpbmdEZXN0cm95ZWQ7CiAgICAgYm9vbCBtX21vdXNlV2hlZWxab29tczsKICAgICBXZWJWaWV3
UHJpdmF0ZSogbV9pbXBsOwotICAgIHd4V2ViRnJhbWUqIG1fbWFpbkZyYW1lOworICAgIFdlYkZy
YW1lKiBtX21haW5GcmFtZTsKICAgICB3eFN0cmluZyBtX3RpdGxlOwogICAgIAogfTsKQEAgLTI3
MCwzMSArMjczLDMxIEBACiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGVudW0gewotICAgIHd4
V0VCVklFV19MT0FEX1NUQVJURUQgPSAxLAotICAgIHd4V0VCVklFV19MT0FEX05FR09USUFUSU5H
ID0gMiwKLSAgICB3eFdFQlZJRVdfTE9BRF9SRURJUkVDVElORyA9IDQsCi0gICAgd3hXRUJWSUVX
X0xPQURfVFJBTlNGRVJSSU5HID0gOCwKLSAgICB3eFdFQlZJRVdfTE9BRF9TVE9QUEVEID0gMTYs
Ci0gICAgd3hXRUJWSUVXX0xPQURfRkFJTEVEID0gMzIsCi0gICAgd3hXRUJWSUVXX0xPQURfRExf
Q09NUExFVEVEID0gNjQsCi0gICAgd3hXRUJWSUVXX0xPQURfRE9DX0NPTVBMRVRFRCA9IDEyOCwK
LSAgICB3eFdFQlZJRVdfTE9BRF9PTkxPQURfSEFORExFRCA9IDI1NiwKLSAgICB3eFdFQlZJRVdf
TE9BRF9XSU5ET1dfT0JKRUNUX0NMRUFSRUQgPSA1MTIKKyAgICBXRUJWSUVXX0xPQURfU1RBUlRF
RCA9IDEsCisgICAgV0VCVklFV19MT0FEX05FR09USUFUSU5HID0gMiwKKyAgICBXRUJWSUVXX0xP
QURfUkVESVJFQ1RJTkcgPSA0LAorICAgIFdFQlZJRVdfTE9BRF9UUkFOU0ZFUlJJTkcgPSA4LAor
ICAgIFdFQlZJRVdfTE9BRF9TVE9QUEVEID0gMTYsCisgICAgV0VCVklFV19MT0FEX0ZBSUxFRCA9
IDMyLAorICAgIFdFQlZJRVdfTE9BRF9ETF9DT01QTEVURUQgPSA2NCwKKyAgICBXRUJWSUVXX0xP
QURfRE9DX0NPTVBMRVRFRCA9IDEyOCwKKyAgICBXRUJWSUVXX0xPQURfT05MT0FEX0hBTkRMRUQg
PSAyNTYsCisgICAgV0VCVklFV19MT0FEX1dJTkRPV19PQkpFQ1RfQ0xFQVJFRCA9IDUxMgogfTsK
IAogZW51bSB7Ci0gICAgd3hXRUJWSUVXX05BVl9MSU5LX0NMSUNLRUQgPSAxLAotICAgIHd4V0VC
VklFV19OQVZfQkFDS19ORVhUID0gMiwKLSAgICB3eFdFQlZJRVdfTkFWX0ZPUk1fU1VCTUlUVEVE
ID0gNCwKLSAgICB3eFdFQlZJRVdfTkFWX1JFTE9BRCA9IDgsCi0gICAgd3hXRUJWSUVXX05BVl9G
T1JNX1JFU1VCTUlUVEVEID0gMTYsCi0gICAgd3hXRUJWSUVXX05BVl9PVEhFUiA9IDMyCisgICAg
V0VCVklFV19OQVZfTElOS19DTElDS0VEID0gMSwKKyAgICBXRUJWSUVXX05BVl9CQUNLX05FWFQg
PSAyLAorICAgIFdFQlZJRVdfTkFWX0ZPUk1fU1VCTUlUVEVEID0gNCwKKyAgICBXRUJWSUVXX05B
Vl9SRUxPQUQgPSA4LAorICAgIFdFQlZJRVdfTkFWX0ZPUk1fUkVTVUJNSVRURUQgPSAxNiwKKyAg
ICBXRUJWSUVXX05BVl9PVEhFUiA9IDMyCiB9OwogCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQg
d3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50CitjbGFzcyBX
WERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0JlZm9yZUxvYWRFdmVudCA6IHB1YmxpYyB3eENvbW1h
bmRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKCB3eFdl
YlZpZXdCZWZvcmVMb2FkRXZlbnQgKQorICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3
QmVmb3JlTG9hZEV2ZW50KQogI2VuZGlmCiAKIHB1YmxpYzoKQEAgLTMwNCwyMyArMzA3LDIzIEBA
CiAgICAgdm9pZCBTZXRVUkwoY29uc3Qgd3hTdHJpbmcmIHVybCkgeyBtX3VybCA9IHVybDsgfQog
ICAgIHZvaWQgU2V0TmF2aWdhdGlvblR5cGUoaW50IG5hdlR5cGUpIHsgbV9uYXZUeXBlID0gbmF2
VHlwZTsgfQogICAgIGludCBHZXROYXZpZ2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2
VHlwZTsgfQotICAgIHd4V2ViRnJhbWUqIEdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZTsgfQotICAgIHZvaWQgU2V0RnJhbWUod3hXZWJGcmFtZSogZnJhbWUpIHsgbV9mcmFtZSA9IGZy
YW1lOyB9CisgICAgV2ViRnJhbWUqIEdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsg
fQorICAgIHZvaWQgU2V0RnJhbWUoV2ViRnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUgPSBmcmFtZTsg
fQogCi0gICAgd3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50KCB3eFdpbmRvdyogd2luID0gKHd4V2lu
ZG93KikgTlVMTCApOwotICAgIHd4RXZlbnQgKkNsb25lKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG5l
dyB3eFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQoKnRoaXMpOyB9CisgICAgV2ViVmlld0JlZm9yZUxv
YWRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7CisgICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29u
c3QgeyByZXR1cm4gbmV3IFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQoKnRoaXMpOyB9CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NhbmNlbGxlZDsKICAgICB3eFN0cmluZyBtX3VybDsKICAgICBpbnQg
bV9uYXZUeXBlOwotICAgIHd4V2ViRnJhbWUqIG1fZnJhbWU7CisgICAgV2ViRnJhbWUqIG1fZnJh
bWU7CiB9OwogCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgd3hXZWJWaWV3TG9hZEV2ZW50IDog
cHVibGljIHd4Q29tbWFuZEV2ZW50CitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0xv
YWRFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVD
TEFSRV9EWU5BTUlDX0NMQVNTKCB3eFdlYlZpZXdMb2FkRXZlbnQgKQorICAgIERFQ0xBUkVfRFlO
QU1JQ19DTEFTUyhXZWJWaWV3TG9hZEV2ZW50KQogI2VuZGlmCiAKIHB1YmxpYzoKQEAgLTMyOCwy
MiArMzMxLDIyIEBACiAgICAgdm9pZCBTZXRTdGF0ZShjb25zdCBpbnQgc3RhdGUpIHsgbV9zdGF0
ZSA9IHN0YXRlOyB9CiAgICAgd3hTdHJpbmcgR2V0VVJMKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICB2b2lkIFNldFVSTChjb25zdCB3eFN0cmluZyYgdXJsKSB7IG1fdXJsID0gdXJsOyB9
Ci0gICAgd3hXZWJGcmFtZSogR2V0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0g
ICAgdm9pZCBTZXRGcmFtZSh3eFdlYkZyYW1lKiBmcmFtZSkgeyBtX2ZyYW1lID0gZnJhbWU7IH0K
KyAgICBXZWJGcmFtZSogR2V0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisgICAg
dm9pZCBTZXRGcmFtZShXZWJGcmFtZSogZnJhbWUpIHsgbV9mcmFtZSA9IGZyYW1lOyB9CiAKLSAg
ICB3eFdlYlZpZXdMb2FkRXZlbnQoIHd4V2luZG93KiB3aW4gPSAod3hXaW5kb3cqKSBOVUxMICk7
Ci0gICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld0xv
YWRFdmVudCgqdGhpcyk7IH0KKyAgICBXZWJWaWV3TG9hZEV2ZW50KHd4V2luZG93KiB3aW4gPSAw
KTsKKyAgICB3eEV2ZW50ICpDbG9uZSh2b2lkKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld0xv
YWRFdmVudCgqdGhpcyk7IH0KIAogcHJpdmF0ZToKICAgICBpbnQgbV9zdGF0ZTsKICAgICB3eFN0
cmluZyBtX3VybDsKLSAgICB3eFdlYkZyYW1lKiBtX2ZyYW1lOworICAgIFdlYkZyYW1lKiBtX2Zy
YW1lOwogfTsKIAotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIHd4V2ViS2l0V2luZG93RmVhdHVy
ZXMKK2NsYXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJLaXRXaW5kb3dGZWF0dXJlcwogewogcHVi
bGljOgotICAgIHd4V2ViS2l0V2luZG93RmVhdHVyZXMoKQorICAgIFdlYktpdFdpbmRvd0ZlYXR1
cmVzKCkKICAgICAgICAgOiBtZW51QmFyVmlzaWJsZSh0cnVlKQogICAgICAgICAsIHN0YXR1c0Jh
clZpc2libGUodHJ1ZSkKICAgICAgICAgLCB0b29sQmFyVmlzaWJsZSh0cnVlKQpAQCAtMzY0LDEw
ICszNjcsMTAgQEAKICAgICBib29sIGRpYWxvZzsKIH07CiAKLWNsYXNzIFdYRExMSU1QRVhQX1dF
QktJVCB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAorY2xh
c3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYlZpZXdOZXdXaW5kb3dFdmVudCA6IHB1YmxpYyB3eENv
bW1hbmRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKCB3
eFdlYlZpZXdOZXdXaW5kb3dFdmVudCApCisgICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKFdlYlZp
ZXdOZXdXaW5kb3dFdmVudCkKICNlbmRpZgogCiBwdWJsaWM6CkBAIC0zNzUsNTcgKzM3OCw1NyBA
QAogICAgIHZvaWQgU2V0VVJMKGNvbnN0IHd4U3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0K
ICAgICB3eFN0cmluZyBHZXRUYXJnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXROYW1l
OyB9CiAgICAgdm9pZCBTZXRUYXJnZXROYW1lKGNvbnN0IHd4U3RyaW5nJiBuYW1lKSB7IG1fdGFy
Z2V0TmFtZSA9IG5hbWU7IH0KLSAgICB3eFdlYlZpZXcqIEdldFdlYlZpZXcoKSB7IHJldHVybiBt
X3dlYlZpZXc7IH0KLSAgICB2b2lkIFNldFdlYlZpZXcod3hXZWJWaWV3KiB3ZWJWaWV3KSB7IG1f
d2ViVmlldyA9IHdlYlZpZXc7IH0KLSAgICB3eFdlYktpdFdpbmRvd0ZlYXR1cmVzIEdldFdpbmRv
d0ZlYXR1cmVzKCkgeyByZXR1cm4gbV9mZWF0dXJlczsgfQotICAgIHZvaWQgU2V0V2luZG93RmVh
dHVyZXMod3hXZWJLaXRXaW5kb3dGZWF0dXJlcyBmZWF0dXJlcykgeyBtX2ZlYXR1cmVzID0gZmVh
dHVyZXM7IH0KLSAgICB3eFdlYkZyYW1lKiBHZXRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWU7IH0KLSAgICB2b2lkIFNldEZyYW1lKHd4V2ViRnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUgPSBm
cmFtZTsgfQorICAgIFdlYlZpZXcqIEdldFdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0K
KyAgICB2b2lkIFNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldykgeyBtX3dlYlZpZXcgPSB3ZWJW
aWV3OyB9CisgICAgV2ViS2l0V2luZG93RmVhdHVyZXMgR2V0V2luZG93RmVhdHVyZXMoKSB7IHJl
dHVybiBtX2ZlYXR1cmVzOyB9CisgICAgdm9pZCBTZXRXaW5kb3dGZWF0dXJlcyhXZWJLaXRXaW5k
b3dGZWF0dXJlcyBmZWF0dXJlcykgeyBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7IH0KKyAgICBXZWJG
cmFtZSogR2V0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisgICAgdm9pZCBTZXRG
cmFtZShXZWJGcmFtZSogZnJhbWUpIHsgbV9mcmFtZSA9IGZyYW1lOyB9CiAKLSAgICB3eFdlYlZp
ZXdOZXdXaW5kb3dFdmVudCggd3hXaW5kb3cqIHdpbiA9IHN0YXRpY19jYXN0PHd4V2luZG93Kj4o
TlVMTCkpOwotICAgIHd4RXZlbnQgKkNsb25lKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG5ldyB3eFdl
YlZpZXdOZXdXaW5kb3dFdmVudCgqdGhpcyk7IH0KKyAgICBXZWJWaWV3TmV3V2luZG93RXZlbnQo
d3hXaW5kb3cqIHdpbiA9IDApOworICAgIHd4RXZlbnQgKkNsb25lKCkgY29uc3QgeyByZXR1cm4g
bmV3IFdlYlZpZXdOZXdXaW5kb3dFdmVudCgqdGhpcyk7IH0KIAogcHJpdmF0ZToKLSAgICB3eFdl
YlZpZXcqIG1fd2ViVmlldzsKLSAgICB3eFdlYkZyYW1lKiBtX2ZyYW1lOwotICAgIHd4V2ViS2l0
V2luZG93RmVhdHVyZXMgbV9mZWF0dXJlczsKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAg
V2ViRnJhbWUqIG1fZnJhbWU7CisgICAgV2ViS2l0V2luZG93RmVhdHVyZXMgbV9mZWF0dXJlczsK
ICAgICB3eFN0cmluZyBtX3VybDsKICAgICB3eFN0cmluZyBtX3RhcmdldE5hbWU7CiB9OwogCi1j
bGFzcyBXWERMTElNUEVYUF9XRUJLSVQgd3hXZWJWaWV3UmlnaHRDbGlja0V2ZW50IDogcHVibGlj
IHd4Q29tbWFuZEV2ZW50CitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld1JpZ2h0Q2xp
Y2tFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVD
TEFSRV9EWU5BTUlDX0NMQVNTKCB3eFdlYlZpZXdSaWdodENsaWNrRXZlbnQgKQorICAgIERFQ0xB
UkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3UmlnaHRDbGlja0V2ZW50KQogI2VuZGlmCiAKIHB1Ymxp
YzoKLSAgICB3eFdlYlZpZXdSaWdodENsaWNrRXZlbnQoIHd4V2luZG93KiB3aW4gPSBzdGF0aWNf
Y2FzdDx3eFdpbmRvdyo+KE5VTEwpKTsKLSAgICB3eEV2ZW50ICpDbG9uZSh2b2lkKSBjb25zdCB7
IHJldHVybiBuZXcgd3hXZWJWaWV3UmlnaHRDbGlja0V2ZW50KCp0aGlzKTsgfQorICAgIFdlYlZp
ZXdSaWdodENsaWNrRXZlbnQod3hXaW5kb3cqIHdpbiA9IDApOworICAgIHd4RXZlbnQgKkNsb25l
KCkgY29uc3QgeyByZXR1cm4gbmV3IFdlYlZpZXdSaWdodENsaWNrRXZlbnQoKnRoaXMpOyB9CiAg
ICAgCi0gICAgd3hXZWJWaWV3RE9NRWxlbWVudEluZm8gR2V0SW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mbzsgfQotICAgIHZvaWQgU2V0SW5mbyh3eFdlYlZpZXdET01FbGVtZW50SW5mbyBpbmZv
KSB7IG1faW5mbyA9IGluZm87IH0KKyAgICBXZWJWaWV3RE9NRWxlbWVudEluZm8gR2V0SW5mbygp
IGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQorICAgIHZvaWQgU2V0SW5mbyhXZWJWaWV3RE9NRWxl
bWVudEluZm8gaW5mbykgeyBtX2luZm8gPSBpbmZvOyB9CiAgICAgCiAgICAgd3hQb2ludCBHZXRQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KICAgICB2b2lkIFNldFBvc2l0
aW9uKHd4UG9pbnQgcG9zKSB7IG1fcG9zaXRpb24gPSBwb3M7IH0KIAogcHJpdmF0ZToKLSAgICB3
eFdlYlZpZXdET01FbGVtZW50SW5mbyBtX2luZm87CisgICAgV2ViVmlld0RPTUVsZW1lbnRJbmZv
IG1faW5mbzsKICAgICB3eFBvaW50IG1fcG9zaXRpb247CiB9OwogCiAvLyBjb3BpZWQgZnJvbSBw
YWdlL0NvbnNvbGUuaAotZW51bSB3eFdlYlZpZXdDb25zb2xlTWVzc2FnZUxldmVsIHsKK2VudW0g
V2ViVmlld0NvbnNvbGVNZXNzYWdlTGV2ZWwgewogICAgIFRpcE1lc3NhZ2VMZXZlbCwKICAgICBM
b2dNZXNzYWdlTGV2ZWwsCiAgICAgV2FybmluZ01lc3NhZ2VMZXZlbCwKICAgICBFcnJvck1lc3Nh
Z2VMZXZlbAogfTsKIAotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIHd4V2ViVmlld0NvbnNvbGVN
ZXNzYWdlRXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQKK2NsYXNzIFdYRExMSU1QRVhQX1dF
QktJVCBXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAog
ewogI2lmbmRlZiBTV0lHCi0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKCB3eFdlYlZpZXdDb25z
b2xlTWVzc2FnZUV2ZW50ICkKKyAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld0NvbnNv
bGVNZXNzYWdlRXZlbnQpCiAjZW5kaWYKIAogcHVibGljOgpAQCAtNDM4LDk1ICs0NDEsOTUgQEAK
ICAgICB3eFN0cmluZyBHZXRTb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0K
ICAgICB2b2lkIFNldFNvdXJjZUlEKGNvbnN0IHd4U3RyaW5nJiBzb3VyY2VJRCkgeyBtX3NvdXJj
ZUlEID0gc291cmNlSUQ7IH0KIAotICAgIHd4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQoIHd4
V2luZG93KiB3aW4gPSAod3hXaW5kb3cqKSBOVUxMICk7Ci0gICAgd3hFdmVudCAqQ2xvbmUodm9p
ZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQoKnRoaXMp
OyB9CisgICAgV2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQod3hXaW5kb3cqIHdpbiA9IDApOwor
ICAgIHd4RXZlbnQgKkNsb25lKCkgY29uc3QgeyByZXR1cm4gbmV3IFdlYlZpZXdDb25zb2xlTWVz
c2FnZUV2ZW50KCp0aGlzKTsgfQogCi0gICAgd3hXZWJWaWV3Q29uc29sZU1lc3NhZ2VMZXZlbCBH
ZXRMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGV2ZWw7IH0KLSAgICB2b2lkIFNldExldmVsKHd4
V2ViVmlld0NvbnNvbGVNZXNzYWdlTGV2ZWwgbGV2ZWwpIHsgbV9sZXZlbCA9IGxldmVsOyB9Cisg
ICAgV2ViVmlld0NvbnNvbGVNZXNzYWdlTGV2ZWwgR2V0TGV2ZWwoKSBjb25zdCB7IHJldHVybiBt
X2xldmVsOyB9CisgICAgdm9pZCBTZXRMZXZlbChXZWJWaWV3Q29uc29sZU1lc3NhZ2VMZXZlbCBs
ZXZlbCkgeyBtX2xldmVsID0gbGV2ZWw7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBpbnQg
bV9saW5lTnVtYmVyOwogICAgIHd4U3RyaW5nIG1fbWVzc2FnZTsKICAgICB3eFN0cmluZyBtX3Nv
dXJjZUlEOwotICAgIHd4V2ViVmlld0NvbnNvbGVNZXNzYWdlTGV2ZWwgbV9sZXZlbDsKKyAgICBX
ZWJWaWV3Q29uc29sZU1lc3NhZ2VMZXZlbCBtX2xldmVsOwogfTsKIAotY2xhc3MgV1hETExJTVBF
WFBfV0VCS0lUIHd4V2ViVmlld0FsZXJ0RXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQKK2Ns
YXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJWaWV3QWxlcnRFdmVudCA6IHB1YmxpYyB3eENvbW1h
bmRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKCB3eFdl
YlZpZXdBbGVydEV2ZW50ICkKKyAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld0FsZXJ0
RXZlbnQpCiAjZW5kaWYKIAogcHVibGljOgogICAgIHd4U3RyaW5nIEdldE1lc3NhZ2UoKSBjb25z
dCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICB2b2lkIFNldE1lc3NhZ2UoY29uc3Qgd3hTdHJp
bmcmIG1lc3NhZ2UpIHsgbV9tZXNzYWdlID0gbWVzc2FnZTsgfQogCi0gICAgd3hXZWJWaWV3QWxl
cnRFdmVudCggd3hXaW5kb3cqIHdpbiA9ICh3eFdpbmRvdyopIE5VTEwgKTsKLSAgICB3eEV2ZW50
ICpDbG9uZSh2b2lkKSBjb25zdCB7IHJldHVybiBuZXcgd3hXZWJWaWV3QWxlcnRFdmVudCgqdGhp
cyk7IH0KKyAgICBXZWJWaWV3QWxlcnRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7CisgICAgd3hF
dmVudCAqQ2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld0FsZXJ0RXZlbnQoKnRoaXMp
OyB9CiAKIHByaXZhdGU6CiAgICAgd3hTdHJpbmcgbV9tZXNzYWdlOwogfTsKIAotY2xhc3MgV1hE
TExJTVBFWFBfV0VCS0lUIHd4V2ViVmlld0NvbmZpcm1FdmVudCA6IHB1YmxpYyB3eFdlYlZpZXdB
bGVydEV2ZW50CitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0NvbmZpcm1FdmVudCA6
IHB1YmxpYyBXZWJWaWV3QWxlcnRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVDTEFSRV9E
WU5BTUlDX0NMQVNTKCB3eFdlYlZpZXdDb25maXJtRXZlbnQgKQorICAgIERFQ0xBUkVfRFlOQU1J
Q19DTEFTUyhXZWJWaWV3Q29uZmlybUV2ZW50KQogI2VuZGlmCiAKIHB1YmxpYzogICAKICAgICBp
bnQgR2V0UmV0dXJuQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmV0dXJuQ29kZTsgfQogICAgIHZv
aWQgU2V0UmV0dXJuQ29kZShpbnQgY29kZSkgeyBtX3JldHVybkNvZGUgPSBjb2RlOyB9CiAKLSAg
ICB3eFdlYlZpZXdDb25maXJtRXZlbnQoIHd4V2luZG93KiB3aW4gPSAod3hXaW5kb3cqKSBOVUxM
ICk7Ci0gICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmll
d0NvbmZpcm1FdmVudCgqdGhpcyk7IH0KKyAgICBXZWJWaWV3Q29uZmlybUV2ZW50KHd4V2luZG93
KiB3aW4gPSAwKTsKKyAgICB3eEV2ZW50ICpDbG9uZSgpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJW
aWV3Q29uZmlybUV2ZW50KCp0aGlzKTsgfQogCiBwcml2YXRlOgogICAgIGludCBtX3JldHVybkNv
ZGU7CiB9OwogCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgd3hXZWJWaWV3UHJvbXB0RXZlbnQg
OiBwdWJsaWMgd3hXZWJWaWV3Q29uZmlybUV2ZW50CitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQg
V2ViVmlld1Byb21wdEV2ZW50IDogcHVibGljIFdlYlZpZXdDb25maXJtRXZlbnQKIHsKICNpZm5k
ZWYgU1dJRwotICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyggd3hXZWJWaWV3UHJvbXB0RXZlbnQg
KQorICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3UHJvbXB0RXZlbnQpCiAjZW5kaWYK
IAogcHVibGljOiAgIAogICAgIHd4U3RyaW5nIEdldFJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQogICAgIHZvaWQgU2V0UmVzcG9uc2UoY29uc3Qgd3hTdHJpbmcmIHJlc3Bv
bnNlKSB7IG1fcmVzcG9uc2UgPSByZXNwb25zZTsgfQogCi0gICAgd3hXZWJWaWV3UHJvbXB0RXZl
bnQoIHd4V2luZG93KiB3aW4gPSAod3hXaW5kb3cqKSBOVUxMICk7Ci0gICAgd3hFdmVudCAqQ2xv
bmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld1Byb21wdEV2ZW50KCp0aGlzKTsg
fQorICAgIFdlYlZpZXdQcm9tcHRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7CisgICAgd3hFdmVu
dCAqQ2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld1Byb21wdEV2ZW50KCp0aGlzKTsg
fQogCiBwcml2YXRlOgogICAgIHd4U3RyaW5nIG1fcmVzcG9uc2U7CiB9OwogCi1jbGFzcyBXWERM
TElNUEVYUF9XRUJLSVQgd3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50IDogcHVibGljIHd4Q29t
bWFuZEV2ZW50CitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld1JlY2VpdmVkVGl0bGVF
dmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudAogewogI2lmbmRlZiBTV0lHCi0gICAgREVDTEFS
RV9EWU5BTUlDX0NMQVNTKCB3eFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQgKQorICAgIERFQ0xB
UkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50KQogI2VuZGlmCiAKIHB1
YmxpYzoKICAgICB3eFN0cmluZyBHZXRUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0K
ICAgICB2b2lkIFNldFRpdGxlKGNvbnN0IHd4U3RyaW5nJiB0aXRsZSkgeyBtX3RpdGxlID0gdGl0
bGU7IH0KIAotICAgIHd4V2ViRnJhbWUqIEdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZTsgfQotICAgIHZvaWQgU2V0RnJhbWUod3hXZWJGcmFtZSogZnJhbWUpIHsgbV9mcmFtZSA9IGZy
YW1lOyB9CisgICAgV2ViRnJhbWUqIEdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsg
fQorICAgIHZvaWQgU2V0RnJhbWUoV2ViRnJhbWUqIGZyYW1lKSB7IG1fZnJhbWUgPSBmcmFtZTsg
fQogCi0gICAgd3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50KCB3eFdpbmRvdyogd2luID0gc3Rh
dGljX2Nhc3Q8d3hXaW5kb3cqPihOVUxMKSk7Ci0gICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29u
c3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCgqdGhpcyk7IH0KKyAg
ICBXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50KHd4V2luZG93KiB3aW4gPSAwKTsKKyAgICB3eEV2
ZW50ICpDbG9uZSgpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50
KCp0aGlzKTsgfQogCiBwcml2YXRlOgogICAgIHd4U3RyaW5nIG1fdGl0bGU7Ci0gICAgd3hXZWJG
cmFtZSogbV9mcmFtZTsKKyAgICBXZWJGcmFtZSogbV9mcmFtZTsKIH07CiAKLWNsYXNzIFdYRExM
SU1QRVhQX1dFQktJVCB3eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnQgOiBwdWJsaWMg
d3hDb21tYW5kRXZlbnQKK2NsYXNzIFdYRExMSU1QRVhQX1dFQktJVCBXZWJWaWV3V2luZG93T2Jq
ZWN0Q2xlYXJlZEV2ZW50IDogcHVibGljIHd4Q29tbWFuZEV2ZW50CiB7CiAjaWZuZGVmIFNXSUcK
LSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoIHd4V2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRF
dmVudCApCisgICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKFdlYlZpZXdXaW5kb3dPYmplY3RDbGVh
cmVkRXZlbnQpCiAjZW5kaWYKIAogcHVibGljOgpAQCAtNTM2LDg5ICs1MzksODkgQEAKICAgICBK
U09iamVjdFJlZiBHZXRXaW5kb3dPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd09iamVj
dDsgfQogICAgIHZvaWQgU2V0V2luZG93T2JqZWN0KEpTT2JqZWN0UmVmIG9iamVjdCkgeyBtX3dp
bmRvd09iamVjdCA9IG9iamVjdDsgfQogCi0gICAgd3hXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJl
ZEV2ZW50KCB3eFdpbmRvdyogd2luID0gc3RhdGljX2Nhc3Q8d3hXaW5kb3cqPihOVUxMKSk7Ci0g
ICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2ViVmlld1dpbmRv
d09iamVjdENsZWFyZWRFdmVudCgqdGhpcyk7IH0KKyAgICBXZWJWaWV3V2luZG93T2JqZWN0Q2xl
YXJlZEV2ZW50KHd4V2luZG93KiB3aW4gPSAwKTsKKyAgICB3eEV2ZW50ICpDbG9uZSgpIGNvbnN0
IHsgcmV0dXJuIG5ldyBXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50KCp0aGlzKTsgfQog
CiBwcml2YXRlOgogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBtX2pzQ29udGV4dDsKICAgICBKU09i
amVjdFJlZiBtX3dpbmRvd09iamVjdDsKIH07CiAKLWNsYXNzIFdYRExMSU1QRVhQX1dFQktJVCB3
eFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudCB7Citj
bGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50IDogcHVi
bGljIHd4Q29tbWFuZEV2ZW50IHsKICNpZm5kZWYgU1dJRwotICAgIERFQ0xBUkVfRFlOQU1JQ19D
TEFTUyh3eFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCkKKyAgICBERUNMQVJFX0RZTkFNSUNf
Q0xBU1MoV2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50KQogI2VuZGlmCiAKIHB1YmxpYzoKLSAg
ICB3eFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCh3eFdpbmRvdyogd2luID0gc3RhdGljX2Nh
c3Q8d3hXaW5kb3cqPigwKSk7Ci0gICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1
cm4gbmV3IHd4V2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50KCp0aGlzKTsgfQorICAgIFdlYlZp
ZXdDb250ZW50c0NoYW5nZWRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7CisgICAgd3hFdmVudCAq
Q2xvbmUoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViVmlld0NvbnRlbnRzQ2hhbmdlZEV2ZW50KCp0
aGlzKTsgfQogfTsKIAotY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIHd4V2ViVmlld1NlbGVjdGlv
bkNoYW5nZWRFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRFdmVudCB7CitjbGFzcyBXWERMTElNUEVY
UF9XRUJLSVQgV2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudCA6IHB1YmxpYyB3eENvbW1hbmRF
dmVudCB7CiAjaWZuZGVmIFNXSUcKLSAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1Mod3hXZWJWaWV3
U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KQorICAgIERFQ0xBUkVfRFlOQU1JQ19DTEFTUyhXZWJWaWV3
U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KQogI2VuZGlmCiAKIHB1YmxpYzoKLSAgICB3eFdlYlZpZXdT
ZWxlY3Rpb25DaGFuZ2VkRXZlbnQod3hXaW5kb3cqIHdpbiA9IHN0YXRpY19jYXN0PHd4V2luZG93
Kj4oMCkpOwotICAgIHd4RXZlbnQgKkNsb25lKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG5ldyB3eFdl
YlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKnRoaXMpOyB9CisgICAgV2ViVmlld1NlbGVjdGlv
bkNoYW5nZWRFdmVudCh3eFdpbmRvdyogd2luID0gMCk7CisgICAgd3hFdmVudCAqQ2xvbmUoKSBj
b25zdCB7IHJldHVybiBuZXcgV2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudCgqdGhpcyk7IH0K
IH07CiAKLWNsYXNzIFdYRExMSU1QRVhQX1dFQktJVCB3eFdlYlZpZXdQcmludEZyYW1lRXZlbnQg
OiBwdWJsaWMgd3hDb21tYW5kRXZlbnQgeworY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYlZp
ZXdQcmludEZyYW1lRXZlbnQgOiBwdWJsaWMgd3hDb21tYW5kRXZlbnQgewogI2lmbmRlZiBTV0lH
Ci0gICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKHd4V2ViVmlld1ByaW50RnJhbWVFdmVudCkKKyAg
ICBERUNMQVJFX0RZTkFNSUNfQ0xBU1MoV2ViVmlld1ByaW50RnJhbWVFdmVudCkKICNlbmRpZgog
ICAgIAogcHVibGljOgotICAgIHd4V2ViVmlld1ByaW50RnJhbWVFdmVudCh3eFdpbmRvdyogd2lu
ID0gMCk7Ci0gICAgd3hFdmVudCAqQ2xvbmUodm9pZCkgY29uc3QgeyByZXR1cm4gbmV3IHd4V2Vi
Vmlld1ByaW50RnJhbWVFdmVudCgqdGhpcyk7IH0KKyAgICBXZWJWaWV3UHJpbnRGcmFtZUV2ZW50
KHd4V2luZG93KiB3aW4gPSAwKTsKKyAgICB3eEV2ZW50ICpDbG9uZSgpIGNvbnN0IHsgcmV0dXJu
IG5ldyBXZWJWaWV3UHJpbnRGcmFtZUV2ZW50KCp0aGlzKTsgfQogICAgIAotICAgIHd4V2ViRnJh
bWUqIEdldFdlYkZyYW1lKCkgeyByZXR1cm4gbV93ZWJGcmFtZTsgfQotICAgIHZvaWQgU2V0V2Vi
RnJhbWUod3hXZWJGcmFtZSogZnJhbWUpIHsgbV93ZWJGcmFtZSA9IGZyYW1lOyB9CisgICAgV2Vi
RnJhbWUqIEdldFdlYkZyYW1lKCkgeyByZXR1cm4gbV93ZWJGcmFtZTsgfQorICAgIHZvaWQgU2V0
V2ViRnJhbWUoV2ViRnJhbWUqIGZyYW1lKSB7IG1fd2ViRnJhbWUgPSBmcmFtZTsgfQogcHJpdmF0
ZToKLSAgICB3eFdlYkZyYW1lKiBtX3dlYkZyYW1lOworICAgIFdlYkZyYW1lKiBtX3dlYkZyYW1l
OwogfTsKIAotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdMb2FkRXZlbnRG
dW5jdGlvbikod3hXZWJWaWV3TG9hZEV2ZW50Jik7Ci10eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxl
cjo6Knd4V2ViVmlld0JlZm9yZUxvYWRFdmVudEZ1bmN0aW9uKSh3eFdlYlZpZXdCZWZvcmVMb2Fk
RXZlbnQmKTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3TmV3V2luZG93
RXZlbnRGdW5jdGlvbikod3hXZWJWaWV3TmV3V2luZG93RXZlbnQmKTsKLXR5cGVkZWYgdm9pZCAo
d3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3UmlnaHRDbGlja0V2ZW50RnVuY3Rpb24pKHd4V2ViVmll
d1JpZ2h0Q2xpY2tFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZp
ZXdDb25zb2xlTWVzc2FnZUV2ZW50RnVuY3Rpb24pKHd4V2ViVmlld0NvbnNvbGVNZXNzYWdlRXZl
bnQmKTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3QWxlcnRFdmVudEZ1
bmN0aW9uKSh3eFdlYlZpZXdBbGVydEV2ZW50Jik7Ci10eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxl
cjo6Knd4V2ViVmlld0NvbmZpcm1FdmVudEZ1bmN0aW9uKSh3eFdlYlZpZXdDb25maXJtRXZlbnQm
KTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3UHJvbXB0RXZlbnRGdW5j
dGlvbikod3hXZWJWaWV3UHJvbXB0RXZlbnQmKTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVy
Ojoqd3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50RnVuY3Rpb24pKHd4V2ViVmlld1JlY2VpdmVk
VGl0bGVFdmVudCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdXaW5k
b3dPYmplY3RDbGVhcmVkRnVuY3Rpb24pKHd4V2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRFdmVu
dCYpOwotdHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6Oip3eFdlYlZpZXdDb250ZW50c0NoYW5n
ZWRGdW5jdGlvbikod3hXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnQmKTsKLXR5cGVkZWYgdm9p
ZCAod3hFdnRIYW5kbGVyOjoqd3hXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEZ1bmN0aW9uKSh3eFdl
YlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnQmKTsKLXR5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVy
Ojoqd3hXZWJWaWV3UHJpbnRGcmFtZUZ1bmN0aW9uKSh3eFdlYlZpZXdQcmludEZyYW1lRXZlbnQm
KTsKK3R5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoqV2ViVmlld0xvYWRFdmVudEZ1bmN0aW9u
KShXZWJWaWV3TG9hZEV2ZW50Jik7Cit0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6KldlYlZp
ZXdCZWZvcmVMb2FkRXZlbnRGdW5jdGlvbikoV2ViVmlld0JlZm9yZUxvYWRFdmVudCYpOwordHlw
ZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3TmV3V2luZG93RXZlbnRGdW5jdGlvbiko
V2ViVmlld05ld1dpbmRvd0V2ZW50Jik7Cit0eXBlZGVmIHZvaWQgKHd4RXZ0SGFuZGxlcjo6Kldl
YlZpZXdSaWdodENsaWNrRXZlbnRGdW5jdGlvbikoV2ViVmlld1JpZ2h0Q2xpY2tFdmVudCYpOwor
dHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudEZ1
bmN0aW9uKShXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudCYpOwordHlwZWRlZiB2b2lkICh3eEV2
dEhhbmRsZXI6OipXZWJWaWV3QWxlcnRFdmVudEZ1bmN0aW9uKShXZWJWaWV3QWxlcnRFdmVudCYp
OwordHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3Q29uZmlybUV2ZW50RnVuY3Rp
b24pKFdlYlZpZXdDb25maXJtRXZlbnQmKTsKK3R5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVyOjoq
V2ViVmlld1Byb21wdEV2ZW50RnVuY3Rpb24pKFdlYlZpZXdQcm9tcHRFdmVudCYpOwordHlwZWRl
ZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50RnVuY3Rpb24p
KFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQmKTsKK3R5cGVkZWYgdm9pZCAod3hFdnRIYW5kbGVy
OjoqV2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRGdW5jdGlvbikoV2ViVmlld1dpbmRvd09iamVj
dENsZWFyZWRFdmVudCYpOwordHlwZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3Q29u
dGVudHNDaGFuZ2VkRnVuY3Rpb24pKFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudCYpOwordHlw
ZWRlZiB2b2lkICh3eEV2dEhhbmRsZXI6OipXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEZ1bmN0aW9u
KShXZWJWaWV3U2VsZWN0aW9uQ2hhbmdlZEV2ZW50Jik7Cit0eXBlZGVmIHZvaWQgKHd4RXZ0SGFu
ZGxlcjo6KldlYlZpZXdQcmludEZyYW1lRnVuY3Rpb24pKFdlYlZpZXdQcmludEZyYW1lRXZlbnQm
KTsKIAotI2RlZmluZSB3eFdlYlZpZXdMb2FkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAod3hP
YmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQod3hX
ZWJWaWV3TG9hZEV2ZW50RnVuY3Rpb24sICZmdW5jKQotI2RlZmluZSB3eFdlYlZpZXdCZWZvcmVM
b2FkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2
ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQod3hXZWJWaWV3QmVmb3JlTG9hZEV2ZW50RnVu
Y3Rpb24sICZmdW5jKQotI2RlZmluZSB3eFdlYlZpZXdOZXdXaW5kb3dFdmVudEhhbmRsZXIoZnVu
YykgXAotICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRp
Y0Nhc3RFdmVudCh3eFdlYlZpZXdOZXdXaW5kb3dFdmVudEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZp
bmUgd3hXZWJWaWV3UmlnaHRDbGlja0V2ZW50SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2JqZWN0
RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmll
d1JpZ2h0Q2xpY2tFdmVudEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZpbmUgd3hXZWJWaWV3Q29uc29s
ZU1lc3NhZ2VFdmVudEhhbmRsZXIoZnVuYykgXAotICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24p
KHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdDb25zb2xlTWVzc2Fn
ZUV2ZW50RnVuY3Rpb24sICZmdW5jKQotI2RlZmluZSB3eFdlYlZpZXdBbGVydEV2ZW50SGFuZGxl
cihmdW5jKSBcCi0gICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0aW9uKXd4
U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmlld0FsZXJ0RXZlbnRGdW5jdGlvbiwgJmZ1bmMpCi0jZGVm
aW5lIHd4V2ViVmlld0NvbmZpcm1FdmVudEhhbmRsZXIoZnVuYykgXAotICAgICh3eE9iamVjdEV2
ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdD
b25maXJtRXZlbnRGdW5jdGlvbiwgJmZ1bmMpCi0jZGVmaW5lIHd4V2ViVmlld1Byb21wdEV2ZW50
SGFuZGxlcihmdW5jKSBcCi0gICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0
aW9uKXd4U3RhdGljQ2FzdEV2ZW50KHd4V2ViVmlld1Byb21wdEV2ZW50RnVuY3Rpb24sICZmdW5j
KQotI2RlZmluZSB3eFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAg
ICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZl
bnQod3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50RnVuY3Rpb24sICZmdW5jKQotI2RlZmluZSB3
eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAod3hP
YmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQod3hX
ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEZ1bmN0aW9uLCAmZnVuYykKLSNkZWZpbmUgd3hXZWJW
aWV3Q29udGVudHNDaGFuZ2VkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKLSAgICAod3hPYmplY3RFdmVu
dEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQod3hXZWJWaWV3Q29u
dGVudHNDaGFuZ2VkRXZlbnRGdW5jdGlvbiwgJmZ1bmMpCi0jZGVmaW5lIHd4V2ViVmlld1NlbGVj
dGlvbkNoYW5nZWRFdmVudEhhbmRsZXIoZnVuYykgXAotICAgICh3eE9iamVjdEV2ZW50RnVuY3Rp
b24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdTZWxlY3Rpb25D
aGFuZ2VkRXZlbnRGdW5jdGlvbiwgJmZ1bmMpCi0jZGVmaW5lIHd4V2ViVmlld1ByaW50RnJhbWVF
dmVudEhhbmRsZXIoZnVuYykgXAotICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRG
dW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudCh3eFdlYlZpZXdQcmludEZyYW1lRXZlbnRGdW5jdGlv
biwgJmZ1bmMpCisjZGVmaW5lIFdlYlZpZXdMb2FkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKKyAgICAo
d3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQo
V2ViVmlld0xvYWRFdmVudEZ1bmN0aW9uLCAmZnVuYykKKyNkZWZpbmUgV2ViVmlld0JlZm9yZUxv
YWRFdmVudEhhbmRsZXIoZnVuYykgXAorICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZl
bnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudChXZWJWaWV3QmVmb3JlTG9hZEV2ZW50RnVuY3Rp
b24sICZmdW5jKQorI2RlZmluZSBXZWJWaWV3TmV3V2luZG93RXZlbnRIYW5kbGVyKGZ1bmMpIFwK
KyAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0
RXZlbnQoV2ViVmlld05ld1dpbmRvd0V2ZW50RnVuY3Rpb24sICZmdW5jKQorI2RlZmluZSBXZWJW
aWV3UmlnaHRDbGlja0V2ZW50SGFuZGxlcihmdW5jKSBcCisgICAgKHd4T2JqZWN0RXZlbnRGdW5j
dGlvbikod3hFdmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdSaWdodENsaWNr
RXZlbnRGdW5jdGlvbiwgJmZ1bmMpCisjZGVmaW5lIFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50
SGFuZGxlcihmdW5jKSBcCisgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hFdmVudEZ1bmN0
aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdDb25zb2xlTWVzc2FnZUV2ZW50RnVuY3Rpb24s
ICZmdW5jKQorI2RlZmluZSBXZWJWaWV3QWxlcnRFdmVudEhhbmRsZXIoZnVuYykgXAorICAgICh3
eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudChX
ZWJWaWV3QWxlcnRFdmVudEZ1bmN0aW9uLCAmZnVuYykKKyNkZWZpbmUgV2ViVmlld0NvbmZpcm1F
dmVudEhhbmRsZXIoZnVuYykgXAorICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRG
dW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudChXZWJWaWV3Q29uZmlybUV2ZW50RnVuY3Rpb24sICZm
dW5jKQorI2RlZmluZSBXZWJWaWV3UHJvbXB0RXZlbnRIYW5kbGVyKGZ1bmMpIFwKKyAgICAod3hP
YmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQoV2Vi
Vmlld1Byb21wdEV2ZW50RnVuY3Rpb24sICZmdW5jKQorI2RlZmluZSBXZWJWaWV3UmVjZWl2ZWRU
aXRsZUV2ZW50SGFuZGxlcihmdW5jKSBcCisgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikod3hF
dmVudEZ1bmN0aW9uKXd4U3RhdGljQ2FzdEV2ZW50KFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnRG
dW5jdGlvbiwgJmZ1bmMpCisjZGVmaW5lIFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZlbnRI
YW5kbGVyKGZ1bmMpIFwKKyAgICAod3hPYmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rp
b24pd3hTdGF0aWNDYXN0RXZlbnQoV2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRGdW5jdGlvbiwg
JmZ1bmMpCisjZGVmaW5lIFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudEhhbmRsZXIoZnVuYykg
XAorICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nh
c3RFdmVudChXZWJWaWV3Q29udGVudHNDaGFuZ2VkRXZlbnRGdW5jdGlvbiwgJmZ1bmMpCisjZGVm
aW5lIFdlYlZpZXdTZWxlY3Rpb25DaGFuZ2VkRXZlbnRIYW5kbGVyKGZ1bmMpIFwKKyAgICAod3hP
YmplY3RFdmVudEZ1bmN0aW9uKSh3eEV2ZW50RnVuY3Rpb24pd3hTdGF0aWNDYXN0RXZlbnQoV2Vi
Vmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudEZ1bmN0aW9uLCAmZnVuYykKKyNkZWZpbmUgV2ViVmll
d1ByaW50RnJhbWVFdmVudEhhbmRsZXIoZnVuYykgXAorICAgICh3eE9iamVjdEV2ZW50RnVuY3Rp
b24pKHd4RXZlbnRGdW5jdGlvbil3eFN0YXRpY0Nhc3RFdmVudChXZWJWaWV3UHJpbnRGcmFtZUV2
ZW50RnVuY3Rpb24sICZmdW5jKQogCiAjaWZuZGVmIFNXSUcKIEJFR0lOX0RFQ0xBUkVfRVZFTlRf
VFlQRVMoKQpAQCAtNjQzLDg3ICs2NDYsODcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aW5pZCwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHd4V2ViVmlld0xvYWRFdmVudEZ1bmN0aW9uKSAmIGZ1
bmMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+
KE5VTEwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViVmlld0xvYWRFdmVudEZ1
bmN0aW9uKSAmIGZ1bmMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDx3eE9iamVjdCo+KDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUg
RVZUX1dFQlZJRVdfQkVGT1JFX0xPQUQod2luaWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgICAgICBERUNMQVJFX0VWRU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9XRUJWSUVX
X0JFRk9SRV9MT0FELCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQsIFwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwgXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh3eFdlYlZpZXdCZWZvcmVMb2FkRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPihOVUxMKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYlZpZXdCZWZvcmVMb2FkRXZlbnRGdW5j
dGlvbikgJiBmdW5jLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
d3hPYmplY3QqPigwKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIEVW
VF9XRUJWSUVXX05FV19XSU5ET1cod2luaWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICBERUNMQVJFX0VWRU5UX1RBQkxFX0VOVFJZKCB3eEVWVF9XRUJWSUVXX05F
V19XSU5ET1csIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5pZCwgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHd4V2ViVmlld05ld1dpbmRvd0V2ZW50RnVuY3Rpb24pICYgZnVuYywgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4oTlVMTCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJWaWV3TmV3V2luZG93RXZlbnRGdW5jdGlvbikg
JiBmdW5jLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmpl
Y3QqPigwKSksCiAKICNkZWZpbmUgRVZUX1dFQlZJRVdfUklHSFRfQ0xJQ0sod2luaWQsIGZ1bmMp
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBERUNMQVJFX0VWRU5UX1RBQkxF
X0VOVFJZKCB3eEVWVF9XRUJWSUVXX1JJR0hUX0NMSUNLLCBcCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luaWQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElEX0FOWSwg
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rpb24pICAg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eFdlYlZpZXdSaWdodENsaWNrRXZlbnRG
dW5jdGlvbikgJiBmdW5jLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8d3hPYmplY3QqPihOVUxMKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYlZp
ZXdSaWdodENsaWNrRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAjZGVmaW5lIEVWVF9XRUJWSUVXX0NPTlNPTEVfTUVTU0FHRSh3aW5pZCwgZnVu
YykgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIERFQ0xBUkVfRVZFTlRfVEFC
TEVfRU5UUlkoIHd4RVZUX1dFQlZJRVdfQ09OU09MRV9NRVNTQUdFLCBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2luaWQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eElE
X0FOWSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVuY3Rp
b24pICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eFdlYlZpZXdDb25zb2xlTWVz
c2FnZUV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4oTlVMTCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJWaWV3Q29uc29sZU1lc3NhZ2VFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKIAogI2Rl
ZmluZSBFVlRfV0VCVklFV19KU19BTEVSVCh3aW5pZCwgZnVuYykgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIERFQ0xBUkVfRVZFTlRfVEFCTEVfRU5UUlkoIHd4RVZUX1dFQlZJ
RVdfSlNfQUxFUlQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5pZCwgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHd4V2ViVmlld0FsZXJ0RXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPihOVUxMKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYlZpZXdBbGVydEV2ZW50RnVuY3Rpb24pICYgZnVu
YywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4o
MCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogI2RlZmluZSBFVlRfV0VCVklFV19K
U19DT05GSVJNKHdpbmlkLCBmdW5jKSAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAg
ICAgREVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSggd3hFVlRfV0VCVklFV19KU19DT05GSVJNLCBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luaWQsIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3eElEX0FOWSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9i
amVjdEV2ZW50RnVuY3Rpb24pICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eFdl
YlZpZXdDb25maXJtRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPihOVUxMKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYlZpZXdDb25maXJtRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPigwKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAjZGVmaW5lIEVWVF9XRUJWSUVXX0pTX1BST01QVCh3
aW5pZCwgZnVuYykgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIERFQ0xBUkVf
RVZFTlRfVEFCTEVfRU5UUlkoIHd4RVZUX1dFQlZJRVdfSlNfUFJPTVBULCBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2luaWQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
eElEX0FOWSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eE9iamVjdEV2ZW50RnVu
Y3Rpb24pICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3eFdlYlZpZXdQcm9tcHRF
dmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx3eE9iamVjdCo+KE5VTEwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViVmlld1Byb21wdEV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4oMCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogI2RlZmluZSBFVlRfV0VCVklFV19SRUNFSVZFRF9USVRMRSh3aW5pZCwgZnVu
YykgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIERFQ0xBUkVfRVZFTlRfVEFC
TEVfRU5UUlkoIHd4RVZUX1dFQlZJRVdfUkVDRUlWRURfVElUTEUsIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5pZCwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURf
QU5ZLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlv
bikgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHd4V2ViVmlld1JlY2VpdmVkVGl0
bGVFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx3eE9iamVjdCo+KE5VTEwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgRVZUX1dFQlZJRVdfV0lORE9XX09CSkVDVF9D
TEVBUkVEKHdpbmlkLCBmdW5jKSAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAg
REVDTEFSRV9FVkVOVF9UQUJMRV9FTlRSWSggd3hFVlRfV0VCVklFV19XSU5ET1dfT0JKRUNUX0NM
RUFSRUQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5pZCwgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHd4V2ViVmlld1dpbmRvd09iamVjdENsZWFyZWRGdW5jdGlvbikgJiBmdW5jLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8d3hPYmplY3QqPihOVUxMKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRnVu
Y3Rpb24pICYgZnVuYywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHd4T2JqZWN0Kj4oMCkpLAogCiAjZGVmaW5lIEVWVF9XRUJWSUVXX0NPTlRFTlRTX0NIQU5HRUQo
d2luaWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBERUNMQVJF
X0VWRU5UX1RBQkxFX0VOVFJZKHd4RVZUX1dFQlZJRVdfQ09OVEVOVFNfQ0hBTkdFRCwgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmlkLCBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd3hJRF9BTlksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3hPYmplY3RF
dmVudEZ1bmN0aW9uKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3hXZWJWaWV3
Q29udGVudHNDaGFuZ2VkRXZlbnRGdW5jdGlvbikgJiBmdW5jLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKFdlYlZpZXdDb250ZW50c0NoYW5nZWRFdmVudEZ1bmN0aW9uKSAmIGZ1bmMs
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx3eE9iamVjdCo+KDAp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICNkZWZpbmUgRVZUX1dFQlZJRVdfU0VM
RUNUSU9OX0NIQU5HRUQod2luaWQsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03
MzEsNyArNzM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5pZCwgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHd4SURfQU5ZLCBcCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHd4T2JqZWN0RXZlbnRGdW5jdGlvbikgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHd4V2ViVmlld1NlbGVjdGlvbkNoYW5nZWRFdmVudEZ1bmN0aW9uKSAmIGZ1bmMs
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViVmlld1NlbGVjdGlvbkNoYW5nZWRF
dmVudEZ1bmN0aW9uKSAmIGZ1bmMsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx3eE9iamVjdCo+KDApKSwKIAogI2RlZmluZSBFVlRfV0VCVklFV19QUklOVF9GUkFN
RSh3aW5pZCwgZnVuYykgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTczOSw3ICs3NDIsOSBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmlkLCBcCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd3hJRF9BTlksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3hP
YmplY3RFdmVudEZ1bmN0aW9uKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3hX
ZWJWaWV3UHJpbnRGcmFtZUV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJWaWV3UHJpbnRGcmFtZUV2ZW50RnVuY3Rpb24pICYgZnVuYywgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHd4T2JqZWN0Kj4oMCkpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2VuZGlmIC8vIGlmbmRlZiBXWFdFQlZJRVdf
SAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBpZm5kZWYgV2ViVmlld19oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkJyb3dzZXJTaGVsbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd3gvV2ViQnJvd3NlclNoZWxsLmgJKHJldmlzaW9uIDExMjU0NCkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvV2ViQnJvd3NlclNoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDgg
KzI1LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICAKLSNpZm5kZWYgV1hXRUJCUk9XU0VSU0hF
TExfSAotI2RlZmluZSBXWFdFQkJST1dTRVJTSEVMTF9ICisjaWZuZGVmIFdlYkJyb3dzZXJTaGVs
bF9oCisjZGVmaW5lIFdlYkJyb3dzZXJTaGVsbF9oCiAKICNpbmNsdWRlICJ3eC93eHByZWMuaCIK
ICNpZm5kZWYgV1hfUFJFQ09NUApAQCAtMzcsNTIgKzM3LDU0IEBACiAjaW5jbHVkZSAiV2ViVmll
dy5oIgogI2luY2x1ZGUgPHd4L3NyY2hjdHJsLmg+CiAKLWNsYXNzIFdYRExMSU1QRVhQX1dFQktJ
VCB3eFdlYkJyb3dzZXJTaGVsbCA6IHB1YmxpYyB3eEZyYW1lCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV1hETExJTVBFWFBfV0VCS0lUIFdlYkJyb3dzZXJTaGVsbCA6IHB1YmxpYyB3eEZy
YW1lCiB7CiBwdWJsaWM6CiAgICAgLy8gY3RvcihzKQogI2lmIFNXSUcKLSAgICAlcHl0aG9uQXBw
ZW5kIHd4V2ViQnJvd3NlclNoZWxsICJzZWxmLl9zZXRPT1JJbmZvKHNlbGYpIgorICAgICVweXRo
b25BcHBlbmQgV2ViQnJvd3NlclNoZWxsICJzZWxmLl9zZXRPT1JJbmZvKHNlbGYpIgogI2VuZGlm
Ci0gICAgd3hXZWJCcm93c2VyU2hlbGwoY29uc3Qgd3hTdHJpbmcmIHRpdGxlLCBjb25zdCB3eFN0
cmluZyYgdXJsID0gImFib3V0OmJsYW5rIik7CisgICAgV2ViQnJvd3NlclNoZWxsKGNvbnN0IHd4
U3RyaW5nJiB0aXRsZSwgY29uc3Qgd3hTdHJpbmcmIHVybCA9ICJhYm91dDpibGFuayIpOwogCiAj
aWZuZGVmIFNXSUcKLSAgICB+d3hXZWJCcm93c2VyU2hlbGwoKTsKKyAgICB+V2ViQnJvd3NlclNo
ZWxsKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgU2hvd0RlYnVnTWVudShib29sIHNob3cgPSB0cnVl
KTsKLSAgICB3eFdlYlZpZXcqIHdlYnZpZXc7CisgICAgV2ViVmlldyogd2VidmlldzsKIAogcHJv
dGVjdGVkOgogCiAgICAgLy8gZXZlbnQgaGFuZGxlcnMgKHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQg
X25vdF8gYmUgdmlydHVhbCkKLSAgICB2b2lkIE9uQ3V0KHd4Q29tbWFuZEV2ZW50JiBldmVudCk7
Ci0gICAgdm9pZCBPbkNvcHkod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uUGFz
dGUod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uUXVpdCh3eENvbW1hbmRFdmVu
dCYgZXZlbnQpOwotICAgIHZvaWQgT25BYm91dCh3eENvbW1hbmRFdmVudCYgZXZlbnQpOwotICAg
IHZvaWQgT25Mb2FkRmlsZSh3eENvbW1hbmRFdmVudCYgZXZlbnQpOwotICAgIHZvaWQgT25BZGRy
ZXNzQmFyRW50ZXIod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uU2VhcmNoQ3Ry
bEVudGVyKHd4Q29tbWFuZEV2ZW50JiBldmVudCk7Ci0gICAgdm9pZCBPbkxvYWRFdmVudCh3eFdl
YlZpZXdMb2FkRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uQmVmb3JlTG9hZCh3eFdlYlZpZXdC
ZWZvcmVMb2FkRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uQmFjayh3eENvbW1hbmRFdmVudCYg
ZXZlbnQpOwotICAgIHZvaWQgT25Gb3J3YXJkKHd4Q29tbWFuZEV2ZW50JiBldmVudCk7Ci0gICAg
dm9pZCBPblN0b3Aod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uUmVsb2FkKHd4
Q29tbWFuZEV2ZW50JiBldmVudCk7Ci0gICAgdm9pZCBPbkJyb3dzZSh3eENvbW1hbmRFdmVudCYg
ZXZlbnQpOwotICAgIHZvaWQgT25FZGl0KHd4Q29tbWFuZEV2ZW50JiBldmVudCk7CisgICAgdm9p
ZCBPbkN1dCh3eENvbW1hbmRFdmVudCYpOworICAgIHZvaWQgT25Db3B5KHd4Q29tbWFuZEV2ZW50
Jik7CisgICAgdm9pZCBPblBhc3RlKHd4Q29tbWFuZEV2ZW50Jik7CisgICAgdm9pZCBPblF1aXQo
d3hDb21tYW5kRXZlbnQmKTsKKyAgICB2b2lkIE9uQWJvdXQod3hDb21tYW5kRXZlbnQmKTsKKyAg
ICB2b2lkIE9uTG9hZEZpbGUod3hDb21tYW5kRXZlbnQmKTsKKyAgICB2b2lkIE9uQWRkcmVzc0Jh
ckVudGVyKHd4Q29tbWFuZEV2ZW50Jik7CisgICAgdm9pZCBPblNlYXJjaEN0cmxFbnRlcih3eENv
bW1hbmRFdmVudCYpOworICAgIHZvaWQgT25Mb2FkRXZlbnQoV2ViVmlld0xvYWRFdmVudCYgZXZl
bnQpOworICAgIHZvaWQgT25CZWZvcmVMb2FkKFdlYlZpZXdCZWZvcmVMb2FkRXZlbnQmIGV2ZW50
KTsKKyAgICB2b2lkIE9uQmFjayh3eENvbW1hbmRFdmVudCYpOworICAgIHZvaWQgT25Gb3J3YXJk
KHd4Q29tbWFuZEV2ZW50Jik7CisgICAgdm9pZCBPblN0b3Aod3hDb21tYW5kRXZlbnQmKTsKKyAg
ICB2b2lkIE9uUmVsb2FkKHd4Q29tbWFuZEV2ZW50Jik7CisgICAgdm9pZCBPbkJyb3dzZSh3eENv
bW1hbmRFdmVudCYpOworICAgIHZvaWQgT25FZGl0KHd4Q29tbWFuZEV2ZW50Jik7CiAgICAgdm9p
ZCBPblByaW50KHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KTsKICAgICAKLSAgICB2b2lkIE9uTWFr
ZVRleHRMYXJnZXIod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsKLSAgICB2b2lkIE9uTWFrZVRleHRT
bWFsbGVyKHd4Q29tbWFuZEV2ZW50JiBldmVudCk7Ci0gICAgdm9pZCBPbkdldFNvdXJjZSh3eENv
bW1hbmRFdmVudCYgZXZlbnQpOworICAgIHZvaWQgT25NYWtlVGV4dExhcmdlcih3eENvbW1hbmRF
dmVudCYpOworICAgIHZvaWQgT25NYWtlVGV4dFNtYWxsZXIod3hDb21tYW5kRXZlbnQmKTsKKyAg
ICB2b2lkIE9uR2V0U291cmNlKHd4Q29tbWFuZEV2ZW50Jik7CiAgICAgCiAgICAgLy8gZGVidWcg
bWVudSBpdGVtcwotICAgIHZvaWQgT25TZXRTb3VyY2Uod3hDb21tYW5kRXZlbnQmIGV2ZW50KTsK
LSAgICB2b2lkIE9uUnVuU2NyaXB0KHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KTsKLSAgICB2b2lk
IE9uRWRpdENvbW1hbmQod3hDb21tYW5kRXZlbnQmIG15RXZlbnQpOwotICAgIHZvaWQgT25HZXRF
ZGl0Q29tbWFuZFN0YXRlKHd4Q29tbWFuZEV2ZW50JiBteUV2ZW50KTsKKyAgICB2b2lkIE9uU2V0
U291cmNlKHd4Q29tbWFuZEV2ZW50Jik7CisgICAgdm9pZCBPblJ1blNjcmlwdCh3eENvbW1hbmRF
dmVudCYpOworICAgIHZvaWQgT25FZGl0Q29tbWFuZCh3eENvbW1hbmRFdmVudCYpOworICAgIHZv
aWQgT25HZXRFZGl0Q29tbWFuZFN0YXRlKHd4Q29tbWFuZEV2ZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgd3hUZXh0Q3RybCogYWRkcmVzc0JhcjsKQEAgLTk2LDEwICs5OCwxMiBAQAogI2VuZGlmCiB9
OwogCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgd3hQYWdlU291cmNlVmlld0ZyYW1lIDogcHVi
bGljIHd4RnJhbWUKK2NsYXNzIFdYRExMSU1QRVhQX1dFQktJVCBQYWdlU291cmNlVmlld0ZyYW1l
IDogcHVibGljIHd4RnJhbWUKIHsKIHB1YmxpYzoKLSAgICB3eFBhZ2VTb3VyY2VWaWV3RnJhbWUo
Y29uc3Qgd3hTdHJpbmcmIHNvdXJjZSk7CisgICAgUGFnZVNvdXJjZVZpZXdGcmFtZShjb25zdCB3
eFN0cmluZyYgc291cmNlKTsKIH07CiAKLSNlbmRpZiAvLyBpZm5kZWYgV1hXRUJCUk9XU0VSU0hF
TExfSAorfQorCisjZW5kaWYgLy8gaWZuZGVmIFdlYkJyb3dzZXJTaGVsbF9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3d4L1dlYkRPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93eC9XZWJET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMTI1NDQpCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L1dlYkRPTVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE0ICs0
MCwxNiBAQAogICAgICNpbmNsdWRlICJ3eC93eC5oIgogI2VuZGlmCiAKLUlNUExFTUVOVF9EWU5B
TUlDX0NMQVNTKHd4V2ViS2l0U2VsZWN0aW9uLCB3eE9iamVjdCkKK25hbWVzcGFjZSBXZWJLaXQg
ewogCi13eFdlYktpdFNlbGVjdGlvbjo6d3hXZWJLaXRTZWxlY3Rpb24oY29uc3Qgd3hXZWJLaXRT
ZWxlY3Rpb24mIG90aGVyKQorSU1QTEVNRU5UX0RZTkFNSUNfQ0xBU1MoV2ViS2l0U2VsZWN0aW9u
LCB3eE9iamVjdCkKKworV2ViS2l0U2VsZWN0aW9uOjpXZWJLaXRTZWxlY3Rpb24oY29uc3QgV2Vi
S2l0U2VsZWN0aW9uJiBvdGhlcikKIHsKICAgICBtX3NlbGVjdGlvbiA9IG90aGVyLm1fc2VsZWN0
aW9uOwogfQogCi1XZWJET01FbGVtZW50KiB3eFdlYktpdFNlbGVjdGlvbjo6R2V0Um9vdEVkaXRh
YmxlRWxlbWVudCgpIGNvbnN0CitXZWJET01FbGVtZW50KiBXZWJLaXRTZWxlY3Rpb246OkdldFJv
b3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdAogewogICAgIGlmIChtX3NlbGVjdGlvbikKICAgICAg
ICAgcmV0dXJuIG5ldyBXZWJET01FbGVtZW50KG1fc2VsZWN0aW9uLT5yb290RWRpdGFibGVFbGVt
ZW50KCkpOwpAQCAtNTUsMTEgKzU3LDExIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVdlYkRPTVJh
bmdlKiB3eFdlYktpdFNlbGVjdGlvbjo6R2V0QXNSYW5nZSgpCitXZWJET01SYW5nZSogV2ViS2l0
U2VsZWN0aW9uOjpHZXRBc1JhbmdlKCkKIHsKICAgICBpZiAobV9zZWxlY3Rpb24pIHsKICAgICAg
ICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlID0gbV9zZWxlY3Rpb24tPnRvTm9y
bWFsaXplZFJhbmdlKCk7Ci0gICAgICAgIC8vIGtlZXAgaXQgYWxpdmUgdW50aWwgaXQgcmVhY2hl
cyB3eFdlYktpdERPTVJhbmdlLCB3aGljaCB0YWtlcyBvd25lcnNoaXAKKyAgICAgICAgLy8ga2Vl
cCBpdCBhbGl2ZSB1bnRpbCBpdCByZWFjaGVzIFdlYktpdERPTVJhbmdlLCB3aGljaCB0YWtlcyBv
d25lcnNoaXAKICAgICAgICAgCiAgICAgICAgIGlmIChyYW5nZSkgewogICAgICAgICAgICAgcmFu
Z2UtPnJlZigpOwpAQCAtNjksMyArNzEsNSBAQAogICAgICAgICAKICAgICByZXR1cm4gMDsKIH0K
KworfQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJFZGl0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3d4L1dlYkVkaXQuY3BwCShyZXZpc2lvbiAxMTI1NDQpCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L1dlYkVkaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAK
IH0KIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIGNsYXNzIFdlYkNvcmVFZGl0Q29tbWFuZFByaXZh
dGUgewogcHVibGljOgogICAgIFdlYkNvcmVFZGl0Q29tbWFuZFByaXZhdGUoKQpAQCAtNTEsNyAr
NTMsNyBAQAogICAgIFJlZlB0cjxXZWJDb3JlOjpXZWJDb3JlRWRpdENvbW1hbmQ+IG1fcHRyOwog
fTsKIAotd3hXZWJFZGl0Q29tbWFuZDo6d3hXZWJFZGl0Q29tbWFuZCh3eFdlYkZyYW1lKiB3ZWJm
cmFtZSkKK1dlYkVkaXRDb21tYW5kOjpXZWJFZGl0Q29tbWFuZChXZWJGcmFtZSogd2ViZnJhbWUp
CiB7CiAgICAgaWYgKHdlYmZyYW1lKSB7CiAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9
IHdlYmZyYW1lLT5HZXRGcmFtZSgpOwpAQCAtNjAsMjEgKzYyLDIzIEBACiAgICAgfQogfQogCi13
eFdlYkVkaXRDb21tYW5kOjp+d3hXZWJFZGl0Q29tbWFuZCgpCitXZWJFZGl0Q29tbWFuZDo6fldl
YkVkaXRDb21tYW5kKCkKIHsKICAgICAvLyB0aGUgaW1wbC4gaXMgcmVmLWNvdW50ZWQsIHNvIGRv
bid0IGRlbGV0ZSBpdCBhcyBpdCBtYXkgYmUgaW4gYW4gdW5kby9yZWRvIHN0YWNrCiAgICAgZGVs
ZXRlIG1faW1wbDsKICAgICBtX2ltcGwgPSAwOwogfQogCi12b2lkIHd4V2ViRWRpdENvbW1hbmQ6
OlNldE5vZGVBdHRyaWJ1dGUoV2ViRE9NRWxlbWVudCogZWxlbWVudCwgY29uc3Qgd3hTdHJpbmcm
IG5hbWUsIGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgV2ViRWRpdENvbW1hbmQ6OlNldE5v
ZGVBdHRyaWJ1dGUoV2ViRE9NRWxlbWVudCogZWxlbWVudCwgY29uc3Qgd3hTdHJpbmcmIG5hbWUs
IGNvbnN0IHd4U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+Y29t
bWFuZCgpKQogICAgICAgICBtX2ltcGwtPmNvbW1hbmQoKS0+c2V0RWxlbWVudEF0dHJpYnV0ZShl
bGVtZW50LT5pbXBsKCksIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUoV1RGOjpudWxsQXRvbSwgV1RG
OjpTdHJpbmcobmFtZSksIFdURjo6bnVsbEF0b20pLCBXVEY6OlN0cmluZyh2YWx1ZSkpOwogfQog
Ci12b2lkIHd4V2ViRWRpdENvbW1hbmQ6OkFwcGx5KCkKK3ZvaWQgV2ViRWRpdENvbW1hbmQ6OkFw
cGx5KCkKIHsKICAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+Y29tbWFuZCgpKQogICAgICAgICBt
X2ltcGwtPmNvbW1hbmQoKS0+YXBwbHkoKTsKIH0KKworfQpJbmRleDogU291cmNlL1dlYktpdC93
eC9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5j
cHAJKHJldmlzaW9uIDExMjU0NCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBACiAjZGVmaW5lIE1heGltdW1UZXh0U2l6ZU11
bHRpcGxpZXIgICAgICAgMy4wZgogI2RlZmluZSBUZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyAgICAg
ICAgIDEuMmYKIAorbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
IC8vIHdlIG5lZWQgd3hHcmFwaGljc0NvbnRleHQgYW5kIHd4UHJpbnRlckRDIHRvIHdvcmsgdG9n
ZXRoZXIsIApAQCAtMjA3LDcgKzIwOSw3IEBACiB9OwogI2VuZGlmCiAKLXd4V2ViRnJhbWUqIGtp
dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCitXZWJGcmFtZSoga2l0KFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIyMSw3ICsy
MjMsNyBAQAogICAgIHJldHVybiAwOwogfQogCi13eFdlYkZyYW1lOjp3eFdlYkZyYW1lKHd4V2Vi
VmlldyogY29udGFpbmVyLCB3eFdlYkZyYW1lKiBwYXJlbnQsIFdlYlZpZXdGcmFtZURhdGEqIGRh
dGEpIDoKK1dlYkZyYW1lOjpXZWJGcmFtZShXZWJWaWV3KiBjb250YWluZXIsIFdlYkZyYW1lKiBw
YXJlbnQsIFdlYlZpZXdGcmFtZURhdGEqIGRhdGEpIDoKICAgICBtX3RleHRNYWduaWZpZXIoMS4w
KSwKICAgICBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpLAogICAgIG1fYmVpbmdEZXN0cm95ZWQoZmFs
c2UpCkBAIC0yNTgsMjAgKzI2MCwyMCBAQAogICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CiB9
CiAKLXd4V2ViRnJhbWU6On53eFdlYkZyYW1lKCkKK1dlYkZyYW1lOjp+V2ViRnJhbWUoKQogewog
ICAgIGlmIChtX2ltcGwpCiAgICAgICAgIGRlbGV0ZSBtX2ltcGw7CiB9CiAKLXd4U3RyaW5nIHd4
V2ViRnJhbWU6OkdldE5hbWUoKQord3hTdHJpbmcgV2ViRnJhbWU6OkdldE5hbWUoKQogewogICAg
IGlmIChtX2ltcGwgJiYgbV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT50cmVlKCkpCiAg
ICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT50cmVlKCktPm5hbWUoKS5zdHJpbmcoKTsKICAg
ICByZXR1cm4gd3hFbXB0eVN0cmluZzsKIH0KIAotV2ViQ29yZTo6RnJhbWUqIHd4V2ViRnJhbWU6
OkdldEZyYW1lKCkKK1dlYkNvcmU6OkZyYW1lKiBXZWJGcmFtZTo6R2V0RnJhbWUoKQogewogICAg
IGlmIChtX2ltcGwpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lOwpAQCAtMjc5LDE5ICsy
ODEsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB3eFdlYkZyYW1lOjpTdG9wKCkKK3Zv
aWQgV2ViRnJhbWU6OlN0b3AoKQogewogICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+
ZnJhbWUtPmxvYWRlcigpKQogICAgICAgICBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+c3RvcCgp
OwogfQogCi12b2lkIHd4V2ViRnJhbWU6OlJlbG9hZCgpCit2b2lkIFdlYkZyYW1lOjpSZWxvYWQo
KQogewogICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPmxvYWRlcigpKQog
ICAgICAgICBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkKCk7CiB9CiAKLXd4U3RyaW5n
IHd4V2ViRnJhbWU6OkdldFBhZ2VTb3VyY2UoKQord3hTdHJpbmcgV2ViRnJhbWU6OkdldFBhZ2VT
b3VyY2UoKQogewogICAgIGlmIChtX2ltcGwtPmZyYW1lKSB7CiAgICAgICAgIGlmIChtX2ltcGwt
PmZyYW1lLT52aWV3KCkgJiYgbV9pbXBsLT5mcmFtZS0+dmlldygpLT5sYXlvdXRQZW5kaW5nKCkp
CkBAIC0zMDcsNyArMzA5LDcgQEAKICAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKIH0KIAotdm9p
ZCB3eFdlYkZyYW1lOjpTZXRQYWdlU291cmNlKGNvbnN0IHd4U3RyaW5nJiBzb3VyY2UsIGNvbnN0
IHd4U3RyaW5nJiBiYXNlVXJsLCBjb25zdCB3eFN0cmluZyYgbWltZXR5cGUpCit2b2lkIFdlYkZy
YW1lOjpTZXRQYWdlU291cmNlKGNvbnN0IHd4U3RyaW5nJiBzb3VyY2UsIGNvbnN0IHd4U3RyaW5n
JiBiYXNlVXJsLCBjb25zdCB3eFN0cmluZyYgbWltZXR5cGUpCiB7CiAgICAgaWYgKG1faW1wbC0+
ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCkpIHsKICAgICAgICAgV2ViQ29yZTo6S1VS
TCB1cmwoV2ViQ29yZTo6S1VSTCgpLCBiYXNlVXJsKTsKQEAgLTMyMyw3ICszMjUsNyBAQAogICAg
IH0KIH0KIAotd3hTdHJpbmcgd3hXZWJGcmFtZTo6R2V0SW5uZXJUZXh0KCkKK3d4U3RyaW5nIFdl
YkZyYW1lOjpHZXRJbm5lclRleHQoKQogewogICAgIGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkg
JiYgbV9pbXBsLT5mcmFtZS0+dmlldygpLT5sYXlvdXRQZW5kaW5nKCkpCiAgICAgICAgIG1faW1w
bC0+ZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CkBAIC0zMzIsNyArMzM0LDcgQEAKICAgICByZXR1
cm4gZG9jdW1lbnRFbGVtZW50LT5pbm5lclRleHQoKTsKIH0KIAotd3hTdHJpbmcgd3hXZWJGcmFt
ZTo6R2V0QXNNYXJrdXAoKQord3hTdHJpbmcgV2ViRnJhbWU6OkdldEFzTWFya3VwKCkKIHsKICAg
ICBpZiAoIW1faW1wbC0+ZnJhbWUgfHwgIW1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwpAQCAtMzQwLDcgKzM0Miw3IEBACiAgICAgcmV0dXJu
IGNyZWF0ZU1hcmt1cChtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpKTsKIH0KIAotd3hTdHJpbmcg
d3hXZWJGcmFtZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpCit3eFN0cmluZyBXZWJGcmFt
ZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUt
PnZpZXcoKSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCktPmxheW91dFBlbmRpbmcoKSkKICAgICAg
ICAgbV9pbXBsLT5mcmFtZS0+dmlldygpLT5sYXlvdXQoKTsKQEAgLTM0OCw3ICszNTAsNyBAQAog
ICAgIHJldHVybiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKG1faW1wbC0+ZnJhbWUpOwogfQogCi13
eFN0cmluZyB3eFdlYkZyYW1lOjpHZXRTZWxlY3Rpb25Bc0hUTUwoKQord3hTdHJpbmcgV2ViRnJh
bWU6OkdldFNlbGVjdGlvbkFzSFRNTCgpCiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUpCiAgICAg
ICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2Uo
KS0+dG9IVE1MKCk7CkBAIC0zNTYsNyArMzU4LDcgQEAKICAgICByZXR1cm4gd3hFbXB0eVN0cmlu
ZzsKIH0KIAotd3hTdHJpbmcgd3hXZWJGcmFtZTo6R2V0U2VsZWN0aW9uQXNUZXh0KCkKK3d4U3Ry
aW5nIFdlYkZyYW1lOjpHZXRTZWxlY3Rpb25Bc1RleHQoKQogewogICAgIGlmIChtX2ltcGwtPmZy
YW1lKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFs
aXplZFJhbmdlKCktPnRleHQoKTsKQEAgLTM2NCwxNSArMzY2LDE1IEBACiAgICAgcmV0dXJuIHd4
RW1wdHlTdHJpbmc7CiB9CiAKLXd4V2ViS2l0U2VsZWN0aW9uIHd4V2ViRnJhbWU6OkdldFNlbGVj
dGlvbigpCitXZWJLaXRTZWxlY3Rpb24gV2ViRnJhbWU6OkdldFNlbGVjdGlvbigpCiB7CiAgICAg
aWYgKG1faW1wbC0+ZnJhbWUpCi0gICAgICAgIHJldHVybiB3eFdlYktpdFNlbGVjdGlvbihtX2lt
cGwtPmZyYW1lLT5zZWxlY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBXZWJLaXRTZWxlY3Rpb24o
bV9pbXBsLT5mcmFtZS0+c2VsZWN0aW9uKCkpOwogICAgICAgICAKICAgICByZXR1cm4gMDsKIH0K
IAotd3hTdHJpbmcgd3hXZWJGcmFtZTo6UnVuU2NyaXB0KGNvbnN0IHd4U3RyaW5nJiBqYXZhc2Ny
aXB0KQord3hTdHJpbmcgV2ViRnJhbWU6OlJ1blNjcmlwdChjb25zdCB3eFN0cmluZyYgamF2YXNj
cmlwdCkKIHsKICAgICB3eFN0cmluZyByZXR1cm5WYWx1ZSA9IHd4RW1wdHlTdHJpbmc7CiAgICAg
aWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCkpIHsKQEAgLTM5NCwx
MyArMzk2LDEzIEBACiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1ib29sIHd4V2ViRnJh
bWU6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCB3eFN0cmluZyYgY29tbWFuZCwgY29uc3Qgd3hT
dHJpbmcmIHBhcmFtZXRlcikKK2Jvb2wgV2ViRnJhbWU6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb25z
dCB3eFN0cmluZyYgY29tbWFuZCwgY29uc3Qgd3hTdHJpbmcmIHBhcmFtZXRlcikKIHsKICAgICBp
ZiAobV9pbXBsLT5mcmFtZSAmJiBJc0VkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwt
PmZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kKS5leGVjdXRlKHBhcmFtZXRlcik7CiB9
CiAKLUVkaXRTdGF0ZSB3eFdlYkZyYW1lOjpHZXRFZGl0Q29tbWFuZFN0YXRlKGNvbnN0IHd4U3Ry
aW5nJiBjb21tYW5kKSBjb25zdAorRWRpdFN0YXRlIFdlYkZyYW1lOjpHZXRFZGl0Q29tbWFuZFN0
YXRlKGNvbnN0IHd4U3RyaW5nJiBjb21tYW5kKSBjb25zdAogewogICAgIGlmIChtX2ltcGwtPmZy
YW1lICYmIElzRWRpdGFibGUoKSkgeyAKICAgICAgICAgV2ViQ29yZTo6VHJpU3RhdGUgc3RhdGUg
PSBtX2ltcGwtPmZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kKS5zdGF0ZSgpOwpAQCAt
NDE1LDcgKzQxNyw3IEBACiAgICAgcmV0dXJuIEVkaXRTdGF0ZUZhbHNlOwogfQogCi13eFN0cmlu
ZyB3eFdlYkZyYW1lOjpHZXRFZGl0Q29tbWFuZFZhbHVlKGNvbnN0IHd4U3RyaW5nJiBjb21tYW5k
KSBjb25zdAord3hTdHJpbmcgV2ViRnJhbWU6OkdldEVkaXRDb21tYW5kVmFsdWUoY29uc3Qgd3hT
dHJpbmcmIGNvbW1hbmQpIGNvbnN0CiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgSXNFZGl0
YWJsZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Y29tbWFuZCkudmFsdWUoKTsKQEAgLTQyNCw3ICs0MjYsNyBAQAogfQogCiAKLWJvb2wgd3hXZWJG
cmFtZTo6RmluZFN0cmluZyhjb25zdCB3eFN0cmluZyYgc3RyaW5nLCBib29sIGZvcndhcmQsIGJv
b2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCB3cmFwU2VsZWN0aW9uLCBib29sIHN0YXJ0SW5TZWxlY3Rp
b24pCitib29sIFdlYkZyYW1lOjpGaW5kU3RyaW5nKGNvbnN0IHd4U3RyaW5nJiBzdHJpbmcsIGJv
b2wgZm9yd2FyZCwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIHdyYXBTZWxlY3Rpb24sIGJvb2wg
c3RhcnRJblNlbGVjdGlvbikKIHsKICAgICBpZiAobV9pbXBsLT5mcmFtZSkKICAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmluZywgZm9yd2FyZCwg
Y2FzZVNlbnNpdGl2ZSwgd3JhcFNlbGVjdGlvbiwgc3RhcnRJblNlbGVjdGlvbik7CkBAIC00MzIs
NyArNDM0LDcgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgd3hXZWJGcmFtZTo6TG9h
ZFVSTChjb25zdCB3eFN0cmluZyYgdXJsKQordm9pZCBXZWJGcmFtZTo6TG9hZFVSTChjb25zdCB3
eFN0cmluZyYgdXJsKQogewogICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUt
PmxvYWRlcigpKSB7CiAgICAgICAgIFdlYkNvcmU6OktVUkwga3VybCA9IFdlYkNvcmU6OktVUkwo
V2ViQ29yZTo6S1VSTCgpLCB1cmwsIFdlYkNvcmU6OlVURjhFbmNvZGluZygpKTsKQEAgLTQ1NCw3
ICs0NTYsNyBAQAogICAgIH0KIH0KIAotd3hTdHJpbmcgd3hXZWJGcmFtZTo6R2V0VVJMKCkgY29u
c3QKK3d4U3RyaW5nIFdlYkZyYW1lOjpHZXRVUkwoKSBjb25zdAogewogICAgIGlmIChtX2ltcGwt
PmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBtX2lt
cGwtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKQEAgLTQ2Myw3ICs0NjUsNyBA
QAogfQogCiAKLWJvb2wgd3hXZWJGcmFtZTo6R29CYWNrKCkKK2Jvb2wgV2ViRnJhbWU6OkdvQmFj
aygpCiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+cGFnZSgpKQog
ICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+cGFnZSgpLT5nb0JhY2soKTsKQEAgLTQ3MSw3
ICs0NzMsNyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCB3eFdlYkZyYW1lOjpHb0Zv
cndhcmQoKQorYm9vbCBXZWJGcmFtZTo6R29Gb3J3YXJkKCkKIHsKICAgICBpZiAobV9pbXBsLT5m
cmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmZy
YW1lLT5wYWdlKCktPmdvRm9yd2FyZCgpOwpAQCAtNDc5LDcgKzQ4MSw3IEBACiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIHd4V2ViRnJhbWU6OkNhbkdvQmFjaygpCitib29sIFdlYkZyYW1l
OjpDYW5Hb0JhY2soKQogewogICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKS0+Y2FuR29CYWNr
T3JGb3J3YXJkKC0xKTsKQEAgLTQ4Nyw3ICs0ODksNyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCB3eFdlYkZyYW1lOjpDYW5Hb0ZvcndhcmQoKQorYm9vbCBXZWJGcmFtZTo6Q2FuR29G
b3J3YXJkKCkKIHsKICAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPmNhbkdvQmFja09yRm9y
d2FyZCgxKTsKQEAgLTQ5NSwxOSArNDk3LDE5IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIHd4V2ViRnJhbWU6OlVuZG8oKQordm9pZCBXZWJGcmFtZTo6VW5kbygpCiB7CiAgICAgaWYg
KG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCkgJiYgQ2FuVW5kbygpKQog
ICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPnVuZG8oKTsKIH0KIAotdm9p
ZCB3eFdlYkZyYW1lOjpSZWRvKCkKK3ZvaWQgV2ViRnJhbWU6OlJlZG8oKQogewogICAgIGlmICht
X2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPmVkaXRvcigpICYmIENhblJlZG8oKSkKICAg
ICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPmVkaXRvcigpLT5yZWRvKCk7CiB9CiAKLWJvb2wg
d3hXZWJGcmFtZTo6Q2FuVW5kbygpCitib29sIFdlYkZyYW1lOjpDYW5VbmRvKCkKIHsKICAgICBp
ZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5lZGl0b3IoKSkKICAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRvKCk7CkBAIC01MTUsNyArNTE3LDcg
QEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgd3hXZWJGcmFtZTo6Q2FuUmVkbygpCiti
b29sIFdlYkZyYW1lOjpDYW5SZWRvKCkKIHsKICAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2lt
cGwtPmZyYW1lLT5lZGl0b3IoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZnJhbWUtPmVkaXRv
cigpLT5jYW5SZWRvKCk7CkBAIC01MjMsNyArNTI1LDcgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgd3hXZWJGcmFtZTo6Q2FuSW5jcmVhc2VUZXh0U2l6ZSgpIGNvbnN0Citib29sIFdl
YkZyYW1lOjpDYW5JbmNyZWFzZVRleHRTaXplKCkgY29uc3QKIHsKICAgICBpZiAobV9pbXBsLT5m
cmFtZSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgaWYgKG1fdGV4dE1hZ25p
ZmllcipUZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA8PSBNYXhpbXVtVGV4dFNpemVNdWx0aXBsaWVy
KQpAQCAtNTMyLDcgKzUzNCw3IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHd4V2Vi
RnJhbWU6OkluY3JlYXNlVGV4dFNpemUoKQordm9pZCBXZWJGcmFtZTo6SW5jcmVhc2VUZXh0U2l6
ZSgpCiB7CiAgICAgaWYgKENhbkluY3JlYXNlVGV4dFNpemUoKSkgewogICAgICAgICBtX3RleHRN
YWduaWZpZXIgPSBtX3RleHRNYWduaWZpZXIqVGV4dFNpemVNdWx0aXBsaWVyUmF0aW87CkBAIC01
NDAsNyArNTQyLDcgQEAKICAgICB9CiB9CiAKLWJvb2wgd3hXZWJGcmFtZTo6Q2FuRGVjcmVhc2VU
ZXh0U2l6ZSgpIGNvbnN0Citib29sIFdlYkZyYW1lOjpDYW5EZWNyZWFzZVRleHRTaXplKCkgY29u
c3QKIHsKICAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsK
ICAgICAgICAgaWYgKG1fdGV4dE1hZ25pZmllci9UZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA+PSBN
aW5pbXVtVGV4dFNpemVNdWx0aXBsaWVyKQpAQCAtNTQ5LDcgKzU1MSw3IEBACiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUoKQordm9pZCBX
ZWJGcmFtZTo6RGVjcmVhc2VUZXh0U2l6ZSgpCiB7ICAgICAgICAKICAgICBpZiAoQ2FuRGVjcmVh
c2VUZXh0U2l6ZSgpKSB7CiAgICAgICAgIG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmll
ci9UZXh0U2l6ZU11bHRpcGxpZXJSYXRpbzsKQEAgLTU1NywyNyArNTU5LDI3IEBACiAgICAgfQog
fQogCi12b2lkIHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUoKQordm9pZCBXZWJGcmFtZTo6UmVz
ZXRUZXh0U2l6ZSgpCiB7CiAgICAgbV90ZXh0TWFnbmlmaWVyID0gMS4wOwogICAgIGlmIChtX2lt
cGwtPmZyYW1lKQogICAgICAgICBtX2ltcGwtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3RvcihtX3Rl
eHRNYWduaWZpZXIpOwogfQogCi12b2lkIHd4V2ViRnJhbWU6Ok1ha2VFZGl0YWJsZShib29sIGVu
YWJsZSkKK3ZvaWQgV2ViRnJhbWU6Ok1ha2VFZGl0YWJsZShib29sIGVuYWJsZSkKIHsKICAgICBp
ZiAoZW5hYmxlICE9IElzRWRpdGFibGUoKSAmJiBtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgbV9pbXBsLT5mcmFtZS0+cGFnZSgpLT5zZXRFZGl0YWJsZShl
bmFibGUpOwogfQogCi1ib29sIHd4V2ViRnJhbWU6OklzRWRpdGFibGUoKSBjb25zdAorYm9vbCBX
ZWJGcmFtZTo6SXNFZGl0YWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYg
bV9pbXBsLT5mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+cGFn
ZSgpLT5pc0VkaXRhYmxlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHd4V2ViRnJh
bWU6OkNhbkNvcHkoKQorYm9vbCBXZWJGcmFtZTo6Q2FuQ29weSgpCiB7CiAgICAgaWYgKG1faW1w
bC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm4gKG1faW1w
bC0+ZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCkgfHwgbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCkt
PmNhbkRIVE1MQ29weSgpKTsKQEAgLTU4NSwxMyArNTg3LDEzIEBACiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIHd4V2ViRnJhbWU6OkNvcHkoKQordm9pZCBXZWJGcmFtZTo6Q29weSgpCiB7
CiAgICAgaWYgKENhbkNvcHkoKSkKICAgICAgICAgbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNv
cHkoKTsKIH0KIAotYm9vbCB3eFdlYkZyYW1lOjpDYW5DdXQoKQorYm9vbCBXZWJGcmFtZTo6Q2Fu
Q3V0KCkKIHsKICAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCkp
CiAgICAgICAgIHJldHVybiAobV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNhbkN1dCgpIHx8IG1f
aW1wbC0+ZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpKTsKQEAgLTU5OSwxMyArNjAxLDEz
IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHd4V2ViRnJhbWU6OkN1dCgpCit2b2lk
IFdlYkZyYW1lOjpDdXQoKQogewogICAgIGlmIChDYW5DdXQoKSkKICAgICAgICAgbV9pbXBsLT5m
cmFtZS0+ZWRpdG9yKCktPmN1dCgpOwogfQogCi1ib29sIHd4V2ViRnJhbWU6OkNhblBhc3RlKCkK
K2Jvb2wgV2ViRnJhbWU6OkNhblBhc3RlKCkKIHsKICAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBt
X2ltcGwtPmZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybiAobV9pbXBsLT5mcmFtZS0+ZWRp
dG9yKCktPmNhblBhc3RlKCkgfHwgbV9pbXBsLT5mcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFz
dGUoKSk7CkBAIC02MTMsMTQgKzYxNSwxNCBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCB3eFdlYkZyYW1lOjpQYXN0ZSgpCit2b2lkIFdlYkZyYW1lOjpQYXN0ZSgpCiB7CiAgICAgaWYg
KENhblBhc3RlKCkpCiAgICAgICAgIG1faW1wbC0+ZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOwog
CiB9CiAKLXZvaWQgd3hXZWJGcmFtZTo6UHJpbnQoYm9vbCBzaG93RGlhbG9nKQordm9pZCBXZWJG
cmFtZTo6UHJpbnQoYm9vbCBzaG93RGlhbG9nKQogewogI2lmIHd4Q0hFQ0tfVkVSU0lPTigyLCA5
LCAxKQogICAgIGlmICghbV9pbXBsLT5mcmFtZSkKQEAgLTY4MSw5ICs2ODMsOSBAQAogI2VuZGlm
CiB9CiAKLXd4V2ViVmlld0RPTUVsZW1lbnRJbmZvIHd4V2ViRnJhbWU6OkhpdFRlc3QoY29uc3Qg
d3hQb2ludCYgcG9zKSBjb25zdAorV2ViVmlld0RPTUVsZW1lbnRJbmZvIFdlYkZyYW1lOjpIaXRU
ZXN0KGNvbnN0IHd4UG9pbnQmIHBvcykgY29uc3QKIHsKLSAgICB3eFdlYlZpZXdET01FbGVtZW50
SW5mbyBkb21JbmZvOworICAgIFdlYlZpZXdET01FbGVtZW50SW5mbyBkb21JbmZvOwogCiAgICAg
aWYgKG1faW1wbC0+ZnJhbWUtPnZpZXcoKSkgewogICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1faW1wbC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtX2ltcGwtPmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgZmFs
c2UpOwpAQCAtNjk4LDcgKzcwMCw3IEBACiAgICAgcmV0dXJuIGRvbUluZm87CiB9CiAKLWJvb2wg
d3hXZWJGcmFtZTo6U2hvdWxkQ2xvc2UoKSBjb25zdAorYm9vbCBXZWJGcmFtZTo6U2hvdWxkQ2xv
c2UoKSBjb25zdAogewogICAgIGlmIChtX2ltcGwtPmZyYW1lKQogICAgICAgICByZXR1cm4gbV9p
bXBsLT5mcmFtZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCk7CkBAIC03MDYsMTYgKzcwOCwxOCBA
QAogICAgIHJldHVybiB0cnVlOwogfQogCi13eFdlYktpdENvbXBhdGliaWxpdHlNb2RlIHd4V2Vi
RnJhbWU6OkdldENvbXBhdGliaWxpdHlNb2RlKCkgY29uc3QKK1dlYktpdENvbXBhdGliaWxpdHlN
b2RlIFdlYkZyYW1lOjpHZXRDb21wYXRpYmlsaXR5TW9kZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
aW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
ICh3eFdlYktpdENvbXBhdGliaWxpdHlNb2RlKW1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCktPmNv
bXBhdGliaWxpdHlNb2RlKCk7CisgICAgICAgIHJldHVybiAoV2ViS2l0Q29tcGF0aWJpbGl0eU1v
ZGUpbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGF0aWJpbGl0eU1vZGUoKTsKIAogICAg
IHJldHVybiBRdWlya3NNb2RlOwogfQogCi12b2lkIHd4V2ViRnJhbWU6OkdyYW50VW5pdmVyc2Fs
QWNjZXNzKCkKK3ZvaWQgV2ViRnJhbWU6OkdyYW50VW5pdmVyc2FsQWNjZXNzKCkKIHsKICAgICBp
ZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBt
X2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ncmFudFVuaXZlcnNh
bEFjY2VzcygpOwogfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkVkaXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYkVkaXQuaAkocmV2aXNpb24gMTEyNTQ0KQor
KysgU291cmNlL1dlYktpdC93eC9XZWJFZGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIzICsz
NSwyNiBAQAogCiAjaW5jbHVkZSAiV2ViS2l0RGVmaW5lcy5oIgogCitjbGFzcyBXZWJET01FbGVt
ZW50OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1h
bmQ7CiAgICAgY2xhc3MgV2ViQ29yZUVkaXRDb21tYW5kOwogfQogCi1jbGFzcyBXZWJET01FbGVt
ZW50OworbmFtZXNwYWNlIFdlYktpdCB7CisKIGNsYXNzIFdlYkNvcmVFZGl0Q29tbWFuZFByaXZh
dGU7Ci1jbGFzcyB3eFdlYkZyYW1lOworY2xhc3MgV2ViRnJhbWU7CiAKLWNsYXNzIFdYRExMSU1Q
RVhQX1dFQktJVCB3eFdlYkVkaXRDb21tYW5kCitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2Vi
RWRpdENvbW1hbmQKIHsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OldlYkNvcmVFZGl0Q29tbWFuZDsKIAog
cHVibGljOgotICAgIHd4V2ViRWRpdENvbW1hbmQod3hXZWJGcmFtZSopOwotICAgIH53eFdlYkVk
aXRDb21tYW5kKCk7CisgICAgV2ViRWRpdENvbW1hbmQoV2ViRnJhbWUqKTsKKyAgICB+V2ViRWRp
dENvbW1hbmQoKTsKICAgICAKICAgICB2b2lkIFNldE5vZGVBdHRyaWJ1dGUoV2ViRE9NRWxlbWVu
dCosIGNvbnN0IHd4U3RyaW5nJiwgY29uc3Qgd3hTdHJpbmcmKTsKICAgICB2b2lkIEFwcGx5KCk7
CkBAIC02MCw0ICs2Myw2IEBACiAgICAgV2ViQ29yZUVkaXRDb21tYW5kUHJpdmF0ZSogbV9pbXBs
OwogfTsKIAorfQorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViRE9NU2VsZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJET01TZWxlY3Rpb24uaAko
cmV2aXNpb24gMTEyNTQ0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJET01TZWxlY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDIxIEBACiAKIH0KIAotY2xhc3MgV1hETExJTVBF
WFBfV0VCS0lUIHd4V2ViS2l0U2VsZWN0aW9uIDogcHVibGljIHd4T2JqZWN0IHsKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViS2l0U2VsZWN0aW9uIDog
cHVibGljIHd4T2JqZWN0IHsKICNpZm5kZWYgU1dJRwotREVDTEFSRV9EWU5BTUlDX0NMQVNTKHd4
V2ViS2l0RE9NU2VsZWN0aW9uKQorREVDTEFSRV9EWU5BTUlDX0NMQVNTKFdlYktpdERPTVNlbGVj
dGlvbikKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgd3hXZWJLaXRTZWxlY3Rpb24oKSB7fQotICAg
IHd4V2ViS2l0U2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24pCisg
ICAgV2ViS2l0U2VsZWN0aW9uKCkgeyB9CisgICAgV2ViS2l0U2VsZWN0aW9uKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24pCiAgICAgICAgIDogbV9zZWxlY3Rpb24oc2VsZWN0aW9u
KSAKICAgICAgICAgeyB9CiAgICAgICAgIAotICAgIHd4V2ViS2l0U2VsZWN0aW9uKGNvbnN0IHd4
V2ViS2l0U2VsZWN0aW9uJik7Ci0gICAgfnd4V2ViS2l0U2VsZWN0aW9uKCkgeyBtX3NlbGVjdGlv
biA9IDA7IH0KKyAgICBXZWJLaXRTZWxlY3Rpb24oY29uc3QgV2ViS2l0U2VsZWN0aW9uJik7Cisg
ICAgfldlYktpdFNlbGVjdGlvbigpIHsgbV9zZWxlY3Rpb24gPSAwOyB9CiAKICAgICBXZWJET01F
bGVtZW50KiBHZXRSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV2ViRE9NUmFuZ2Uq
IEdldEFzUmFuZ2UoKTsKQEAgLTY2LDQgKzY4LDYgQEAKIAogfTsKIAorfQorCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L1dlYkZyYW1lLmgJKHJldmlzaW9uIDExMjU0NCkKKysrIFNvdXJjZS9XZWJLaXQvd3gv
V2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogIAotI2lmbmRlZiBXWFdFQkZSQU1FX0gKLSNkZWZpbmUgV1hXRUJGUkFNRV9ICisj
aWZuZGVmIFdlYkZyYW1lX2gKKyNkZWZpbmUgV2ViRnJhbWVfaAogCiAjaW5jbHVkZSAid3gvd3hw
cmVjLmgiCiAjaWZuZGVmIFdYX1BSRUNPTVAKQEAgLTQ0LDcgKzQ0LDYgQEAKIAogY2xhc3MgV2Vi
RnJhbWVQcml2YXRlOwogY2xhc3MgV2ViVmlld0ZyYW1lRGF0YTsKLWNsYXNzIHd4V2ViVmlldzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENocm9tZUNsaWVudFd4OwpAQCAtNTMs
MTMgKzUyLDE3IEBACiAgICAgY2xhc3MgRnJhbWU7ICAgIAogfQogCi1jbGFzcyBXWERMTElNUEVY
UF9XRUJLSVQgd3hXZWJWaWV3RE9NRWxlbWVudEluZm8KK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJWaWV3OworCitjbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgV2ViVmlld0RPTUVsZW1l
bnRJbmZvCiB7CiBwdWJsaWM6Ci0gICAgd3hXZWJWaWV3RE9NRWxlbWVudEluZm8oKTsKLSAgICB3
eFdlYlZpZXdET01FbGVtZW50SW5mbyhjb25zdCB3eFdlYlZpZXdET01FbGVtZW50SW5mbyYgb3Ro
ZXIpOworICAgIFdlYlZpZXdET01FbGVtZW50SW5mbygpOworICAgIFdlYlZpZXdET01FbGVtZW50
SW5mbyhjb25zdCBXZWJWaWV3RE9NRWxlbWVudEluZm8mIG90aGVyKTsKIAotICAgIH53eFdlYlZp
ZXdET01FbGVtZW50SW5mbygpOworICAgIH5XZWJWaWV3RE9NRWxlbWVudEluZm8oKTsKIAogICAg
IHd4U3RyaW5nIEdldFRhZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KICAgICB2
b2lkIFNldFRhZ05hbWUoY29uc3Qgd3hTdHJpbmcmIG5hbWUpIHsgbV90YWdOYW1lID0gbmFtZTsg
fQpAQCAtOTMsMjIgKzk2LDIyIEBACiB9OwogCiAvLyBiYXNlZCBvbiBlbnVtcyBpbiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCi1lbnVtIHd4V2ViS2l0Q29tcGF0aWJpbGl0eU1vZGUgeyBRdWlya3NN
b2RlLCBMaW1pdGVkUXVpcmtzTW9kZSwgTm9RdWlya3NNb2RlIH07CitlbnVtIFdlYktpdENvbXBh
dGliaWxpdHlNb2RlIHsgUXVpcmtzTW9kZSwgTGltaXRlZFF1aXJrc01vZGUsIE5vUXVpcmtzTW9k
ZSB9OwogCi1jbGFzcyBXWERMTElNUEVYUF9XRUJLSVQgd3hXZWJGcmFtZQorY2xhc3MgV1hETExJ
TVBFWFBfV0VCS0lUIFdlYkZyYW1lCiB7CiBwdWJsaWM6Ci0gICAgLy8gQ2hyb21lQ2xpZW50V3gg
bmVlZHMgdG8gZ2V0IHRoZSBQYWdlKiBzdG9yZWQgYnkgdGhlIHd4V2ViVmlldworICAgIC8vIENo
cm9tZUNsaWVudFd4IG5lZWRzIHRvIGdldCB0aGUgUGFnZSogc3RvcmVkIGJ5IHRoZSBXZWJWaWV3
CiAgICAgLy8gZm9yIHRoZSBjcmVhdGVXaW5kb3cgZnVuY3Rpb24uIAogICAgIGZyaWVuZCBjbGFz
cyBXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RWRpdG9yQ2xpZW50
V3g7Ci0gICAgZnJpZW5kIGNsYXNzIHd4V2ViVmlldzsKKyAgICBmcmllbmQgY2xhc3MgV2ViVmll
dzsKIAogcHVibGljOgotICAgIHd4V2ViRnJhbWUod3hXZWJWaWV3KiBjb250YWluZXIsIHd4V2Vi
RnJhbWUqIHBhcmVudCA9IE5VTEwsIFdlYlZpZXdGcmFtZURhdGEqIGRhdGEgPSBOVUxMKTsKKyAg
ICBXZWJGcmFtZShXZWJWaWV3KiBjb250YWluZXIsIFdlYkZyYW1lKiBwYXJlbnQgPSAwLCBXZWJW
aWV3RnJhbWVEYXRhKiBkYXRhID0gMCk7CiAgICAgCi0gICAgfnd4V2ViRnJhbWUoKTsKKyAgICB+
V2ViRnJhbWUoKTsKICAgICAKICAgICB2b2lkIExvYWRVUkwoY29uc3Qgd3hTdHJpbmcmIHVybCk7
CiAgICAgd3hTdHJpbmcgR2V0VVJMKCkgY29uc3Q7CkBAIC0xNDQsNyArMTQ3LDcgQEAKICAgICB3
eFN0cmluZyBHZXRBc01hcmt1cCgpOwogICAgIHd4U3RyaW5nIEdldEV4dGVybmFsUmVwcmVzZW50
YXRpb24oKTsKICAgICAKLSAgICB3eFdlYktpdFNlbGVjdGlvbiBHZXRTZWxlY3Rpb24oKTsKKyAg
ICBXZWJLaXRTZWxlY3Rpb24gR2V0U2VsZWN0aW9uKCk7CiAgICAgd3hTdHJpbmcgR2V0U2VsZWN0
aW9uQXNIVE1MKCk7CiAgICAgd3hTdHJpbmcgR2V0U2VsZWN0aW9uQXNUZXh0KCk7CiAgICAgCkBA
IC0xNjcsMTEgKzE3MCwxMSBAQAogICAgIAogICAgIFdlYkNvcmU6OkZyYW1lKiBHZXRGcmFtZSgp
OwogCi0gICAgd3hXZWJWaWV3RE9NRWxlbWVudEluZm8gSGl0VGVzdChjb25zdCB3eFBvaW50JiBw
b3N0KSBjb25zdDsKKyAgICBXZWJWaWV3RE9NRWxlbWVudEluZm8gSGl0VGVzdChjb25zdCB3eFBv
aW50JiBwb3N0KSBjb25zdDsKICAgICAKICAgICBib29sIFNob3VsZENsb3NlKCkgY29uc3Q7CiAg
ICAgCi0gICAgd3hXZWJLaXRDb21wYXRpYmlsaXR5TW9kZSBHZXRDb21wYXRpYmlsaXR5TW9kZSgp
IGNvbnN0OworICAgIFdlYktpdENvbXBhdGliaWxpdHlNb2RlIEdldENvbXBhdGliaWxpdHlNb2Rl
KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBHcmFudFVuaXZlcnNhbEFjY2VzcygpOwogICAgIApA
QCAtMTg0LDcgKzE4Nyw5IEBACiB9OwogCiAjaWZuZGVmIFNXSUcKLXd4V2ViRnJhbWUqIGtpdChX
ZWJDb3JlOjpGcmFtZSopOworV2ViRnJhbWUqIGtpdChXZWJDb3JlOjpGcmFtZSopOwogI2VuZGlm
CiAKLSNlbmRpZiAvLyBpZm5kZWYgV1hXRUJGUkFNRV9ICit9CisKKyNlbmRpZiAvLyBpZm5kZWYg
V2ViRnJhbWVfaApJbmRleDogVG9vbHMvd3gvYnJvd3Nlci9icm93c2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy93eC9icm93c2VyL2Jyb3dzZXIuY3BwCShyZXZpc2lvbiAxMTI1NDQpCisrKyBU
b29scy93eC9icm93c2VyL2Jyb3dzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4
IEBACiAgICAgI2luY2x1ZGUgInd4L3d4LmgiCiAjZW5kaWYKIAordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKwogY2xhc3MgTXlBcHAgOiBwdWJsaWMgd3hBcHAKIHsKIHB1YmxpYzoKQEAgLTUxLDEz
ICs1MywxMyBAQAogICAgICAgICAKICAgICAvLyBjcmVhdGUgdGhlIG1haW4gYXBwbGljYXRpb24g
d2luZG93CiAgICAgLy8gc2VlIFdlYktpdC93eC9XZWJGcmFtZS5jcHAgZm9yIGhvdyB0byB3cml0
ZSBhIHNoZWxsIGFyb3VuZCB3eFdlYlZpZXcuCi0gICAgd3hXZWJCcm93c2VyU2hlbGwgKmZyYW1l
ID0gbmV3IHd4V2ViQnJvd3NlclNoZWxsKF9UKCJ3eFdlYktpdCBUZXN0IEFwcCIpLCAiaHR0cDov
L3d3dy53ZWJraXQub3JnIik7CisgICAgV2ViQnJvd3NlclNoZWxsKiBmcmFtZSA9IG5ldyBXZWJC
cm93c2VyU2hlbGwoX1QoInd4V2ViS2l0IFRlc3QgQXBwIiksICJodHRwOi8vd3d3LndlYmtpdC5v
cmciKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBmcmFtZS0+U2hvd0RlYnVnTWVudSh0cnVlKTsK
ICNlbmRpZgogCi0gICAgd3hXZWJTZXR0aW5ncyBzZXR0aW5ncyA9IGZyYW1lLT53ZWJ2aWV3LT5H
ZXRXZWJTZXR0aW5ncygpOworICAgIFdlYlNldHRpbmdzIHNldHRpbmdzID0gZnJhbWUtPndlYnZp
ZXctPkdldFdlYlNldHRpbmdzKCk7CiAjaWYgX19XWE1TV19fIHx8IF9fV1hNQUNfXwogICAgIHNl
dHRpbmdzLlNldFBsdWdpbnNFbmFibGVkKHRydWUpOwogI2VuZGlmCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcAkocmV2aXNpb24gMTEyNTQ0KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvRHVtcFJlbmRlclRyZWVXeC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDExICs1NSwxMiBAQAogdGltZV90IHN0YXJ0VGltZTsgLy8gdG8gZGV0ZWN0
IHRpbWVvdXRzIC8gZmFpbGVkIHRlc3RzCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiBGSUxFKiBsb2dPdXRwdXQ7CiAKIFJlZlB0cjxMYXlvdXRUZXN0
Q29udHJvbGxlcj4gZ0xheW91dFRlc3RDb250cm9sbGVyOwotc3RhdGljIHd4V2ViVmlldyogd2Vi
VmlldzsKK3N0YXRpYyBXZWJWaWV3KiB3ZWJWaWV3Owogc3RhdGljIHd4VGltZXIqIGlkbGVUaW1l
cjsKIAogY29uc3QgdW5zaWduZWQgdGltZU91dCA9IDEwOwpAQCAtNjksMjkgKzcwLDI5IEBACiBj
bGFzcyBMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyIDogcHVibGljIHd4RXZ0SGFuZGxlciB7CiAK
IHB1YmxpYzoKLSAgICBMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyKHd4V2ViVmlldyogd2ViVmll
dykKKyAgICBMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAg
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgewogICAgIH0KICAgICAKICAgICB2b2lkIGJp
bmRFdmVudHMoKSAKICAgICB7Ci0gICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJW
SUVXX0xPQUQsIHd4V2ViVmlld0xvYWRFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFu
ZGxlcjo6T25Mb2FkRXZlbnQpLCBOVUxMLCB0aGlzKTsKLSAgICAgICAgbV93ZWJWaWV3LT5Db25u
ZWN0KHd4RVZUX1dFQlZJRVdfSlNfQUxFUlQsIHd4V2ViVmlld0FsZXJ0RXZlbnRIYW5kbGVyKExh
eW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uQWxlcnRFdmVudCksIE5VTEwsIHRoaXMpOwotICAg
ICAgICBtX3dlYlZpZXctPkNvbm5lY3Qod3hFVlRfV0VCVklFV19KU19DT05GSVJNLCB3eFdlYlZp
ZXdDb25maXJtRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uQ29uZmly
bUV2ZW50KSwgTlVMTCwgdGhpcyk7Ci0gICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9X
RUJWSUVXX0pTX1BST01QVCwgd3hXZWJWaWV3UHJvbXB0RXZlbnRIYW5kbGVyKExheW91dFdlYlZp
ZXdFdmVudEhhbmRsZXI6Ok9uUHJvbXB0RXZlbnQpLCBOVUxMLCB0aGlzKTsKLSAgICAgICAgbV93
ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJRVdfQ09OU09MRV9NRVNTQUdFLCB3eFdlYlZpZXdD
b25zb2xlTWVzc2FnZUV2ZW50SGFuZGxlcihMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPbkNv
bnNvbGVNZXNzYWdlRXZlbnQpLCBOVUxMLCB0aGlzKTsKLSAgICAgICAgbV93ZWJWaWV3LT5Db25u
ZWN0KHd4RVZUX1dFQlZJRVdfUkVDRUlWRURfVElUTEUsIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVF
dmVudEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6T25SZWNlaXZlZFRpdGxlRXZl
bnQpLCBOVUxMLCB0aGlzKTsKLSAgICAgICAgbV93ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJ
RVdfV0lORE9XX09CSkVDVF9DTEVBUkVELCB3eFdlYlZpZXdXaW5kb3dPYmplY3RDbGVhcmVkRXZl
bnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uV2luZG93T2JqZWN0Q2xlYXJl
ZEV2ZW50KSwgTlVMTCwgdGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9X
RUJWSUVXX0xPQUQsIFdlYlZpZXdMb2FkRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhh
bmRsZXI6Ok9uTG9hZEV2ZW50KSwgMCwgdGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+Q29ubmVj
dCh3eEVWVF9XRUJWSUVXX0pTX0FMRVJULCBXZWJWaWV3QWxlcnRFdmVudEhhbmRsZXIoTGF5b3V0
V2ViVmlld0V2ZW50SGFuZGxlcjo6T25BbGVydEV2ZW50KSwgMCwgdGhpcyk7CisgICAgICAgIG1f
d2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0pTX0NPTkZJUk0sIFdlYlZpZXdDb25maXJt
RXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uQ29uZmlybUV2ZW50KSwg
MCwgdGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0pTX1BS
T01QVCwgV2ViVmlld1Byb21wdEV2ZW50SGFuZGxlcihMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVy
OjpPblByb21wdEV2ZW50KSwgMCwgdGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3
eEVWVF9XRUJWSUVXX0NPTlNPTEVfTUVTU0FHRSwgV2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnRI
YW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uQ29uc29sZU1lc3NhZ2VFdmVudCks
IDAsIHRoaXMpOworICAgICAgICBtX3dlYlZpZXctPkNvbm5lY3Qod3hFVlRfV0VCVklFV19SRUNF
SVZFRF9USVRMRSwgV2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmll
d0V2ZW50SGFuZGxlcjo6T25SZWNlaXZlZFRpdGxlRXZlbnQpLCAwLCB0aGlzKTsKKyAgICAgICAg
bV93ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJRVdfV0lORE9XX09CSkVDVF9DTEVBUkVELCBX
ZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50SGFuZGxlcihMYXlvdXRXZWJWaWV3RXZlbnRI
YW5kbGVyOjpPbldpbmRvd09iamVjdENsZWFyZWRFdmVudCksIDAsIHRoaXMpOwogICAgIH0KICAg
ICAKLSAgICB2b2lkIE9uTG9hZEV2ZW50KHd4V2ViVmlld0xvYWRFdmVudCYgZXZlbnQpIAorICAg
IHZvaWQgT25Mb2FkRXZlbnQoV2ViVmlld0xvYWRFdmVudCYgZXZlbnQpIAogICAgIHsKIAotICAg
ICAgICBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSB3eFdFQlZJRVdfTE9BRF9GQUlMRUQgfHwgZXZl
bnQuR2V0U3RhdGUoKSA9PSB3eFdFQlZJRVdfTE9BRF9TVE9QUEVEKQorICAgICAgICBpZiAoZXZl
bnQuR2V0U3RhdGUoKSA9PSBXRUJWSUVXX0xPQURfRkFJTEVEIHx8IGV2ZW50LkdldFN0YXRlKCkg
PT0gV0VCVklFV19MT0FEX1NUT1BQRUQpCiAgICAgICAgICAgICBkb25lID0gdHJ1ZTsgCiAgICAg
ICAgIAotICAgICAgICBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSB3eFdFQlZJRVdfTE9BRF9PTkxP
QURfSEFORExFRCkgeworICAgICAgICBpZiAoZXZlbnQuR2V0U3RhdGUoKSA9PSBXRUJWSUVXX0xP
QURfT05MT0FEX0hBTkRMRUQpIHsKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2FpdFRvRHVtcCgp
IHx8IG5vdGlmaWVkKSB7CkBAIC0xMDAsMjQgKzEwMSwyNCBAQAogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIHZvaWQgT25BbGVydEV2ZW50KHd4V2ViVmlld0FsZXJ0RXZlbnQmIGV2ZW50KQor
ICAgIHZvaWQgT25BbGVydEV2ZW50KFdlYlZpZXdBbGVydEV2ZW50JiBldmVudCkKICAgICB7CiAg
ICAgICAgIGZwcmludGYoc3Rkb3V0LCAiQUxFUlQ6ICVTXG4iLCBldmVudC5HZXRNZXNzYWdlKCku
Y19zdHIoKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgT25Db25maXJtRXZlbnQod3hXZWJWaWV3
Q29uZmlybUV2ZW50JiBldmVudCkKKyAgICB2b2lkIE9uQ29uZmlybUV2ZW50KFdlYlZpZXdDb25m
aXJtRXZlbnQmIGV2ZW50KQogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRvdXQsICJDT05GSVJN
OiAlU1xuIiwgZXZlbnQuR2V0TWVzc2FnZSgpLmNfc3RyKCkpOwogICAgICAgICBldmVudC5TZXRS
ZXR1cm5Db2RlKDEpOwogICAgIH0KICAgICAKLSAgICB2b2lkIE9uUHJvbXB0RXZlbnQod3hXZWJW
aWV3UHJvbXB0RXZlbnQmIGV2ZW50KQorICAgIHZvaWQgT25Qcm9tcHRFdmVudChXZWJWaWV3UHJv
bXB0RXZlbnQmIGV2ZW50KQogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRvdXQsICJQUk9NUFQ6
ICVTLCBkZWZhdWx0IHRleHQ6ICVTXG4iLCBldmVudC5HZXRNZXNzYWdlKCkuY19zdHIoKSwgZXZl
bnQuR2V0UmVzcG9uc2UoKS5jX3N0cigpKTsKICAgICAgICAgZXZlbnQuU2V0UmV0dXJuQ29kZSgx
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBPbkNvbnNvbGVNZXNzYWdlRXZlbnQod3hXZWJWaWV3
Q29uc29sZU1lc3NhZ2VFdmVudCYgZXZlbnQpCisgICAgdm9pZCBPbkNvbnNvbGVNZXNzYWdlRXZl
bnQoV2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQmIGV2ZW50KQogICAgIHsKICAgICAgICAgZnBy
aW50ZihzdGRvdXQsICJDT05TT0xFIE1FU1NBR0U6ICIpOwogICAgICAgICBpZiAoZXZlbnQuR2V0
TGluZU51bWJlcigpKQpAQCAtMTI1LDcgKzEyNiw3IEBACiAgICAgICAgIGZwcmludGYoc3Rkb3V0
LCAiJVNcbiIsIGV2ZW50LkdldE1lc3NhZ2UoKS5jX3N0cigpKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBPblJlY2VpdmVkVGl0bGVFdmVudCh3eFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQmIGV2
ZW50KQorICAgIHZvaWQgT25SZWNlaXZlZFRpdGxlRXZlbnQoV2ViVmlld1JlY2VpdmVkVGl0bGVF
dmVudCYgZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wVGl0bGVDaGFuZ2VzKCkgJiYgIWRvbmUpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRp
dGxlID0gZXZlbnQuR2V0VGl0bGUoKS5tYl9zdHIod3hDb252VVRGOCk7CkBAIC0xMzMsMTQgKzEz
NCwxNCBAQAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgT25XaW5kb3dPYmplY3RD
bGVhcmVkRXZlbnQod3hXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50JiBldmVudCkKKyAg
ICB2b2lkIE9uV2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50KFdlYlZpZXdXaW5kb3dPYmplY3RDbGVh
cmVkRXZlbnQmIGV2ZW50KQogICAgIHsKICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OwogICAgICAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3QoZXZlbnQu
R2V0SlNDb250ZXh0KCksIGV2ZW50LkdldFdpbmRvd09iamVjdCgpLCAmZXhjZXB0aW9uKTsKICAg
ICB9CiAgICAgCiBwcml2YXRlOgotICAgIHd4V2ViVmlldyogbV93ZWJWaWV3OworICAgIFdlYlZp
ZXcqIG1fd2ViVmlldzsKIAogfTsKIApAQCAtMTUxLDkgKzE1Miw5IEBACiAgICAgICAgIGR1bXAo
KTsKIH0KIAotTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyID0gTlVMTDsK
K0xheW91dFdlYlZpZXdFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlciA9IDA7CiAKLXN0YXRpYyB3
eFN0cmluZyBkdW1wRnJhbWVzQXNUZXh0KHd4V2ViRnJhbWUqIGZyYW1lKQorc3RhdGljIHd4U3Ry
aW5nIGR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUqIGZyYW1lKQogewogICAgIC8vIFRPRE86IGlt
cGxlbWVudCB0aGlzLiBsZWF2aW5nIHRoaXMgaGVyZSBzbyB3ZSBkb24ndCBmb3JnZXQgdGhpcyBj
YXNlLgogICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpKSB7CkBAIC0xODcsNyArMTg4LDcgQEAKICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2Ug
PSAiV2ViRnJhbWU6OkdldElubmVyVGV4dCI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgZXJyb3JNZXNzYWdlID0gIldlYkZyYW1lOjpHZXRFeHRlcm5hbFJlcHJlc2VudGF0aW9u
IjsKLSAgICAgICAgICAgIHByaW50ZigiRVJST1I6IE5VTEwgcmVzdWx0IGZyb20gJXMiLCBlcnJv
ck1lc3NhZ2UpOworICAgICAgICAgICAgcHJpbnRmKCJFUlJPUjogMCByZXN1bHQgZnJvbSAlcyIs
IGVycm9yTWVzc2FnZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwcmludGYoIiVz
XG4iLCByZXN1bHQpOwogICAgICAgICB9CkBAIC0yOTYsNyArMjk3LDcgQEAKICAgICB3eEluaXRB
bGxJbWFnZUhhbmRsZXJzKCk7CiAgICAgICAgIAogICAgIC8vIGNyZWF0ZSB0aGUgbWFpbiBhcHBs
aWNhdGlvbiB3aW5kb3cKLSAgICB3eFdlYkJyb3dzZXJTaGVsbCogd2ViRnJhbWUgPSBuZXcgd3hX
ZWJCcm93c2VyU2hlbGwoX1QoInd4V2ViS2l0IER1bXBSZW5kZXJUcmVlIEFwcCIpLCAiYWJvdXQ6
YmxhbmsiKTsKKyAgICBXZWJCcm93c2VyU2hlbGwqIHdlYkZyYW1lID0gbmV3IFdlYkJyb3dzZXJT
aGVsbChfVCgid3hXZWJLaXQgRHVtcFJlbmRlclRyZWUgQXBwIiksICJhYm91dDpibGFuayIpOwog
ICAgIFNldFRvcFdpbmRvdyh3ZWJGcmFtZSk7CiAgICAgd2ViVmlldyA9IHdlYkZyYW1lLT53ZWJ2
aWV3OwogICAgIHdlYlZpZXctPlNldFNpemUod3hTaXplKG1heFZpZXdXaWR0aCwgbWF4Vmlld0hl
aWdodCkpOwpAQCAtMzMzLDcgKzMzNCw3IEBACiAgICAgd2ViRnJhbWUtPkNsb3NlKCk7CiAgICAg
ZGVsZXRlIGV2ZW50SGFuZGxlcjsKIAotICAgIHd4TG9nOjpTZXRBY3RpdmVUYXJnZXQoTlVMTCk7
CisgICAgd3hMb2c6OlNldEFjdGl2ZVRhcmdldCgwKTsKICAgICBkZWxldGUgbG9nZ2VyOwogICAg
IGZjbG9zZShsb2dPdXRwdXQpOwogICAgIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyNjQ0KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDMtMjkgIE1hbGNvbG0g
TWFjTGVvZCAgPG1hbGNvbG0ubWFjbGVvZEB0c2h3YW5lZGplLmNvbT4KKworICAgICAgICBbd3hd
IE1vdmUgd3hXZWJLaXQgQVBJIGludG8gV2ViS2l0IG5hbWVzcGFjZS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0R1
bXBSZW5kZXJUcmVlV3guY3BwOgorICAgICAgICAoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6
TGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcik6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRI
YW5kbGVyOjpiaW5kRXZlbnRzKToKKyAgICAgICAgKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6
Ok9uTG9hZEV2ZW50KToKKyAgICAgICAgKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uQWxl
cnRFdmVudCk6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPbkNvbmZpcm1F
dmVudCk6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPblByb21wdEV2ZW50
KToKKyAgICAgICAgKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uQ29uc29sZU1lc3NhZ2VF
dmVudCk6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPblJlY2VpdmVkVGl0
bGVFdmVudCk6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPbldpbmRvd09i
amVjdENsZWFyZWRFdmVudCk6CisgICAgICAgIChMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgorICAgICAgICAoZHVtcCk6CisgICAgICAgIChN
eUFwcDo6T25Jbml0KToKKyAgICAgICAgKiB3eC9icm93c2VyL2Jyb3dzZXIuY3BwOgorICAgICAg
ICAoTXlBcHA6Ok9uSW5pdCk6CisKIDIwMTItMDMtMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIOKAnEludGVs4oCdIGZyb20gdGhlIExpb24gYnVp
bGRlcnPigJkgbmFtZXMuCg==
</data>
<flag name="review"
          id="139190"
          type_id="1"
          status="+"
          setter="kevino"
    />
    <flag name="commit-queue"
          id="139191"
          type_id="3"
          status="-"
          setter="kevino"
    />
          </attachment>
      

    </bug>

</bugzilla>