<?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>50332</bug_id>
          
          <creation_ts>2010-12-01 09:58:15 -0800</creation_ts>
          <short_desc>Add PageGrouping to WebKit2 API</short_desc>
          <delta_ts>2010-12-01 14:00:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>315708</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-01 09:58:15 -0800</bug_when>
    <thetext>Add PageGrouping to WebKit2 API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315709</commentid>
    <comment_count>1</comment_count>
      <attachid>75283</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-01 09:59:00 -0800</bug_when>
    <thetext>Created attachment 75283
Patch for bots [DO NOT REVIEW]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315743</commentid>
    <comment_count>2</comment_count>
      <attachid>75292</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-01 10:59:36 -0800</bug_when>
    <thetext>Created attachment 75292
Lets try windows [DO NOT REVIEW]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315846</commentid>
    <comment_count>3</comment_count>
      <attachid>75311</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-01 13:11:53 -0800</bug_when>
    <thetext>Created attachment 75311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315872</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-01 14:00:47 -0800</bug_when>
    <thetext>Landed in r73066.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75283</attachid>
            <date>2010-12-01 09:59:00 -0800</date>
            <delta_ts>2010-12-01 10:59:36 -0800</delta_ts>
            <desc>Patch for bots [DO NOT REVIEW]</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>117011</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQy
LnBybwkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDksNiArMjQ5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYk5hdmln
YXRpb25EYXRhU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dlYk51bWJlci5oIFwKICAgICBTaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwKKyAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0
YS5oIFwKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVtLmggXAogICAgIFNoYXJlZC9XZWJQcmVmZXJl
bmNlc1N0b3JlLmggXAogICAgIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
XApAQCAtMjcwLDYgKzI3MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VHcm91cC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmggXApAQCAtMzE2LDYgKzMxOCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25E
YXRhLmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCisgICAg
VUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFj
ZS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJQ
b2xpY3lDbGllbnQuaCBcCkBAIC0zMzMsNiArMzM2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRl
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgg
XAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAu
aCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmggXApAQCAtMzc3LDYgKzM4MSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggXAor
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9IRUFERVJTCiAKQEAg
LTQyNCw2ICs0MjksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgXAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKKyAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5j
cHAgXAogICAgIFNoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIFwKICAgICBTaGFyZWQv
V2ViUG9wdXBJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwK
QEAgLTQ0OSw2ICs0NTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tJ
bnNwZWN0b3IuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNw
cCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nl
c3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNwcCBcCkBAIC00ODksNiArNDk2LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vz
cy9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAgXApAQCAtNTEzLDYgKzUy
MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIFwK
QEAgLTU2Niw2ICs1NzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3Rv
clF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUXQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL3F0L1dlYlBhZ2VRdC5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDczMDI0
KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlSW5zcGVjdG9yLAogICAgICAgICBUeXBlTmF2
aWdhdGlvbkRhdGEsCiAgICAgICAgIFR5cGVQYWdlLAorICAgICAgICBUeXBlUGFnZUdyb3VwLAog
ICAgICAgICBUeXBlUGFnZU5hbWVzcGFjZSwKICAgICAgICAgVHlwZVByZWZlcmVuY2VzLAogCkBA
IC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQs
CiAgICAgICAgIFR5cGVCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBUeXBlQnVuZGxlUGFnZSwK
KyAgICAgICAgVHlwZUJ1bmRsZVBhZ2VHcm91cCwKICAgICAgICAgVHlwZUJ1bmRsZVBhZ2VPdmVy
bGF5LAogICAgICAgICBUeXBlQnVuZGxlUmFuZ2VIYW5kbGUsCiAgICAgICAgIFR5cGVCdW5kbGVT
Y3JpcHRXb3JsZCwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAKLSNpbmNsdWRlICJBcmd1bWVu
dEVuY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShDCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHZpZXdTaXplKTsKICAgICBlbmNvZGVyLT5l
bmNvZGUoc3RvcmUpOwogICAgIGVuY29kZXItPmVuY29kZShkcmF3aW5nQXJlYUluZm8pOwotICAg
IGVuY29kZXItPmVuY29kZSh2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHBhZ2VHcm91cERhdGEpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGVuY29kZXIt
PmVuY29kZShyZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihuYXRpdmVXaW5kb3cpKTsKQEAgLTQ5
LDcgKzQ5LDcgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5k
cmF3aW5nQXJlYUluZm8pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocGFyYW1ldGVycy52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpCisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgUExBVEZPUk0oV0lOKQpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyc19oCiAKICNpbmNsdWRlICJE
cmF3aW5nQXJlYUluZm8uaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgog
CkBAIC00NCw3ICs0NSw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplOwogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmU7CiAgICAgRHJhd2luZ0FyZWFCYXNlOjpEcmF3aW5nQXJlYUluZm8gZHJhd2luZ0FyZWFJbmZv
OwotICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CisgICAgV2ViUGFnZUdyb3VwRGF0
YSBwYWdlR3JvdXBEYXRhOworCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIEhXTkQgbmF0aXZlV2lu
ZG93OwogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlBhZ2VHcm91cERh
dGEuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXJndW1lbnRz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2VHcm91cERhdGE6OmVuY29k
ZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihpZGVudGlmZXIsIHBhZ2VHcm91cElELCB2aXNp
YmxlVG9JbmplY3RlZEJ1bmRsZSkpOworfQorCitib29sIFdlYlBhZ2VHcm91cERhdGE6OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlBhZ2VHcm91cERhdGEmIGRh
dGEpCit7CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoZGF0YS5pZGVu
dGlmZXIsIGRhdGEucGFnZUdyb3VwSUQsIGRhdGEudmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQYWdl
R3JvdXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0
YS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJQYWdl
R3JvdXBEYXRhX2gKKyNkZWZpbmUgV2ViUGFnZUdyb3VwRGF0YV9oCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFyZ3Vt
ZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YSB7CisgICAgdm9pZCBlbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYlBhZ2VHcm91cERhdGEmKTsKKworICAgIFN0cmlu
ZyBpZGVudGlmZXI7CisgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CisgICAgYm9vbCB2aXNpYmxl
VG9JbmplY3RlZEJ1bmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRp
ZiAvLyBXZWJQYWdlR3JvdXBEYXRhX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lv
biA3MzAyNCkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWVQb2xp
Y3kKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBXS0luc3BlY3RvclJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkRhdGEqIFdLTmF2aWdh
dGlvbkRhdGFSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFnZVJl
ZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZUdyb3VwKiBXS1BhZ2VHcm91cFJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZU5hbWVzcGFjZSogV0tQYWdlTmFt
ZXNwYWNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQ
cmVmZXJlbmNlc1JlZjsKIApAQCAtNzcsMTQgKzc4LDE1IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLUHJlZmVyZW5jZXMKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxl
KiBXS0J1bmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSogV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NT
dHlsZURlY2xhcmF0aW9uKiBXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1bmRsZUhp
dFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGVI
YW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLQnVuZGxlUGFnZSogV0tCdW5kbGVQYWdlUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGVQYWdlR3JvdXAqIFdLQnVuZGxlUGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVQYWdlT3ZlcmxheSogV0tCdW5kbGVQYWdlT3ZlcmxheVJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlUmFuZ2VIYW5kbGUqIFdLQnVu
ZGxlUmFuZ2VIYW5kbGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZVNj
cmlwdFdvcmxkKiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tCdW5kbGVET01DU1NTdHlsZURlY2xhcmF0aW9uKiBXS0J1bmRsZUNTU1N0eWxlRGVj
bGFyYXRpb25SZWY7CiAKICN1bmRlZiBXS19FWFBPUlQKICNpZiBkZWZpbmVkKFdLX05PX0VYUE9S
VCkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA3MzAyNCkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VOYW1l
c3BhY2UuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTQxLDggKzQyLDYgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9MaW5rSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC04MCw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8
V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXQKICAgICAKIFdlYkNvbnRleHQ6OldlYkNvbnRl
eHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRs
ZVBhdGgpCiAgICAgOiBtX3Byb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpCisgICAgLCBtX2RlZmF1
bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKICAgICAsIG1faW5qZWN0ZWRCdW5k
bGVQYXRoKGluamVjdGVkQnVuZGxlUGF0aCkKICAgICAsIG1fdmlzaXRlZExpbmtQcm92aWRlcih0
aGlzKQogICAgICwgbV9jYWNoZU1vZGVsKENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcikKQEAgLTIw
NywxMCArMjA3LDE0IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2MK
ICAgICBtX3Byb2Nlc3MgPSAwOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSkKK1dlYlBhZ2VQcm94eSog
V2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNl
LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKICAgICBlbnN1cmVXZWJQcm9jZXNzKCk7Ci0g
ICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlTmFtZXNwYWNlKTsKKworICAg
IGlmICghcGFnZUdyb3VwKQorICAgICAgICBwYWdlR3JvdXAgPSBtX2RlZmF1bHRQYWdlR3JvdXAu
Z2V0KCk7CisKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VOYW1lc3Bh
Y2UsIHBhZ2VHcm91cCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cmVsYXVuY2hQcm9jZXNzSWZO
ZWNlc3NhcnkoKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gNzMwMjQpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAgc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBh
Z2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsK
QEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc0RpZEZpbmlzaExhdW5j
aGluZyhXZWJQcm9jZXNzUHJveHkqKTsKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQcm9j
ZXNzUHJveHkqKTsKIAotICAgIFdlYlBhZ2VQcm94eSogY3JlYXRlV2ViUGFnZShXZWJQYWdlTmFt
ZXNwYWNlKik7CisgICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQYWdlKFdlYlBhZ2VOYW1lc3Bh
Y2UqLCBXZWJQYWdlR3JvdXAqID0gMCk7CiAKICAgICB2b2lkIHJlbGF1bmNoUHJvY2Vzc0lmTmVj
ZXNzYXJ5KCk7CiAKQEAgLTE2MCw2ICsxNjEsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2Vi
UGFnZU5hbWVzcGFjZSo+IG1fcGFnZU5hbWVzcGFjZXM7CiAgICAgUmVmUHRyPFdlYlByZWZlcmVu
Y2VzPiBtX3ByZWZlcmVuY2VzOwogCisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gbV9kZWZhdWx0
UGFnZUdyb3VwOworCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gbV9pbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGE7CiAgICAgU3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAg
IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBtX2luamVjdGVkQnVuZGxlQ2xpZW50OwpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJz
LmgJKHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJN
ZXNzYWdlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRl
ICJVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAi
V2ViUGFnZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTMzLDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBBZGRz
CiAvLyAtIFBhZ2UgLT4gQnVuZGxlUGFnZQogLy8gLSBGcmFtZSAtPiBCdW5kbGVGcmFtZQorLy8g
LSBQYWdlR3JvdXAgLT4gQnVuZGxlUGFnZUdyb3VwCiAKIGNsYXNzIFdlYkNvbnRleHRVc2VyTWVz
c2FnZUVuY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VFbmNvZGVyPFdlYkNvbnRleHRVc2VyTWVz
c2FnZUVuY29kZXI+IHsKIHB1YmxpYzoKQEAgLTYwLDYgKzYzLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGVuY29kZXItPmVuY29kZShmcmFtZS0+ZnJhbWVJRCgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUGFnZUdyb3VwOiB7
CisgICAgICAgICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IHN0YXRpY19jYXN0PFdlYlBh
Z2VHcm91cCo+KG1fcm9vdCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocGFnZUdyb3Vw
LT5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC03MCw2ICs3OCw3IEBAIHB1YmxpYzoKIC8vIEFkZHMKIC8vICAgLSBQYWdlIC0+IEJ1bmRs
ZVBhZ2UKIC8vICAgLSBGcmFtZSAtPiBCdW5kbGVGcmFtZQorLy8gICAtIFBhZ2VHcm91cCAtPiBC
dW5kbGVQYWdlR3JvdXAKIAogY2xhc3MgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciA6IHB1
YmxpYyBVc2VyTWVzc2FnZURlY29kZXI8V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rlcj4gewog
cHVibGljOgpAQCAtMTExLDYgKzEyMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb2Rlci5t
X3Jvb3QgPSBjb2Rlci5tX2NvbnRleHQtPnByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlw
ZUJ1bmRsZVBhZ2VHcm91cDogeworICAgICAgICAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7Cisg
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYWdlR3JvdXBJRCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViUGFnZUdy
b3VwOjpnZXQocGFnZUdyb3VwSUQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAkocmV2aXNpb24gNzMwMjQp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAKICNkZWZpbmUgRElTQUJMRV9OT1RfSU1Q
TEVNRU5URURfV0FSTklOR1MgMQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC0zOSw2
ICs0MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK1dlYlBhZ2VHcm91cCogV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cCgp
Cit7CisgICAgc3RhdGljIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpj
cmVhdGUoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwX18iLCBmYWxzZSkubGVha1JlZigpOworICAg
IHJldHVybiBwYWdlR3JvdXA7Cit9CisKIFdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQ
cm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1faXNW
aXNpYmxlKGZhbHNlKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCShy
ZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV0tWaWV3OwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5Owog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKQEAgLTEwMiw2ICsxMDMsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRfdCYgaW5zcGVjdG9y
UGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBkaWRMb2FkSW5z
cGVjdG9yUGFnZSgpOwogCisgICAgc3RhdGljIFdlYlBhZ2VHcm91cCogaW5zcGVjdG9yUGFnZUdy
b3VwKCk7CisKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKIAogICAgIGJvb2wgbV9pc1Zpc2li
bGU7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUdy
b3VwSUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdlR3JvdXBJRCA9IDE7Cisg
ICAgcmV0dXJuIHVuaXF1ZVBhZ2VHcm91cElEKys7Cit9CisKK3R5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgV2ViUGFnZUdyb3VwKj4gV2ViUGFnZUdyb3VwTWFwOworCitzdGF0aWMgV2ViUGFnZUdy
b3VwTWFwJiB3ZWJQYWdlR3JvdXBNYXAoKQoreworICAgIHN0YXRpYyBXZWJQYWdlR3JvdXBNYXAg
bWFwOworICAgIHJldHVybiBtYXA7Cit9CisKKworUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxl
VG9JbmplY3RlZEJ1bmRsZSkKK3sKKyAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAg
PSBhZG9wdFJlZihuZXcgV2ViUGFnZUdyb3VwKGlkZW50aWZpZXIsIHZpc2libGVUb0luamVjdGVk
QnVuZGxlKSk7CisKKyAgICB3ZWJQYWdlR3JvdXBNYXAoKS5zZXQocGFnZUdyb3VwLT5wYWdlR3Jv
dXBJRCgpLCBwYWdlR3JvdXAuZ2V0KCkpOworCisgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNl
KCk7Cit9CisKK1dlYlBhZ2VHcm91cCogV2ViUGFnZUdyb3VwOjpnZXQodWludDY0X3QgcGFnZUdy
b3VwSUQpCit7CisgICAgcmV0dXJuIHdlYlBhZ2VHcm91cE1hcCgpLmdldChwYWdlR3JvdXBJRCk7
Cit9CisKK1dlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkKK3sKKyAgICBtX2RhdGEucGFnZUdyb3Vw
SUQgPSBnZW5lcmF0ZVBhZ2VHcm91cElEKCk7CisgICAgaWYgKCFpZGVudGlmaWVyLmlzTnVsbCgp
KQorICAgICAgICBtX2RhdGEuaWRlbnRpZmVyID0gaWRlbnRpZmllcjsKKyAgICBlbHNlCisgICAg
ICAgIG1fZGF0YS5pZGVudGlmZXIgPSBtX2RhdGEuaWRlbnRpZmVyID0gbWFrZVN0cmluZygiX191
bmlxdWVQYWdlR3JvdXBJRC0iLCBTdHJpbmc6Om51bWJlcihtX2RhdGEucGFnZUdyb3VwSUQpKTsK
KyAgICBtX2RhdGEudmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB2aXNpYmxlVG9JbmplY3RlZEJ1
bmRsZTsKK30KKworV2ViUGFnZUdyb3VwOjp+V2ViUGFnZUdyb3VwKCkKK3sKKyAgICB3ZWJQYWdl
R3JvdXBNYXAoKS5yZW1vdmUocGFnZUdyb3VwSUQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZUdyb3VwX2gKKyNkZWZpbmUgV2ViUGFnZUdy
b3VwX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cERh
dGEuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUGFnZUdyb3VwIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVQYWdlR3JvdXA7CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIg
PSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRydWUpOworICAgIHN0
YXRpYyBXZWJQYWdlR3JvdXAqIGdldCh1aW50NjRfdCBwYWdlR3JvdXBJRCk7CisKKyAgICB2aXJ0
dWFsIH5XZWJQYWdlR3JvdXAoKTsKKworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pZGVudGlmZXI7IH0KKyAgICB1aW50NjRfdCBwYWdlR3JvdXBJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wYWdlR3JvdXBJRDsgfQorCisgICAgY29uc3QgV2Vi
UGFnZUdyb3VwRGF0YSYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTs7IH0KKworcHJpdmF0ZToKKyAg
ICBXZWJQYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
QVBJVHlwZTsgfQorCisgICAgV2ViUGFnZUdyb3VwRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhZ2VHcm91cF9oCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOSAr
NTgsOSBAQCBXZWJQYWdlTmFtZXNwYWNlOjp+V2ViUGFnZU5hbWVzcGFjZSgpCiAjZW5kaWYKIH0K
IAotV2ViUGFnZVByb3h5KiBXZWJQYWdlTmFtZXNwYWNlOjpjcmVhdGVXZWJQYWdlKCkKK1dlYlBh
Z2VQcm94eSogV2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlV2ViUGFnZShXZWJQYWdlR3JvdXAqIGdy
b3VwKQogewotICAgIHJldHVybiBtX2NvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcyk7CisgICAg
cmV0dXJuIG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCBncm91cCk7CiB9CiAKIHZvaWQg
V2ViUGFnZU5hbWVzcGFjZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAg
c3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViQ29udGV4dDsKK2NsYXNzIFdlYlBhZ2VHcm91cDsKIAogY2xhc3MgV2ViUGFnZU5hbWVzcGFj
ZSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5XZWJQYWdlTmFtZXNwYWNlKCk7CiAKLSAgICBXZWJQYWdlUHJveHkq
IGNyZWF0ZVdlYlBhZ2UoKTsgICAgCisgICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQYWdlKFdl
YlBhZ2VHcm91cCopOwogCiAgICAgV2ViQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dC0+cHJvY2VzcygpOyB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAogI2luY2x1ZGUgIldl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU5hbWVzcGFj
ZS5oIgogI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgpAQCAtODEsMTQgKzgzLDE1IEBAIHZvaWQg
aW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDYKICAgICBtYXAuY2xlYXIoKTsKIH0K
IAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFdlYlBhZ2VO
YW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIHVpbnQ2NF90IHBhZ2VJRCkKK1Bhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFt
ZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgdWludDY0X3QgcGFnZUlEKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VOYW1lc3BhY2UsIHBhZ2VJRCkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VOYW1lc3BhY2UsIHBh
Z2VHcm91cCwgcGFnZUlEKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFdlYlBh
Z2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VH
cm91cCogcGFnZUdyb3VwLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgOiBtX3BhZ2VDbGllbnQoMCkK
ICAgICAsIG1fcGFnZU5hbWVzcGFjZShwYWdlTmFtZXNwYWNlKQorICAgICwgbV9wYWdlR3JvdXAo
cGFnZUdyb3VwKQogICAgICwgbV9tYWluRnJhbWUoMCkKICAgICAsIG1fZXN0aW1hdGVkUHJvZ3Jl
c3MoMC4wKQogICAgICwgbV9pc0luV2luZG93KGZhbHNlKQpAQCAtOTYsNyArOTksNiBAQCBXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwCiAgICAgLCBtX3RleHRab29tRmFj
dG9yKDEpCiAgICAgLCBtX3BhZ2Vab29tRmFjdG9yKDEpCiAgICAgLCBtX3ZpZXdTY2FsZUZhY3Rv
cigxKQotICAgICwgbV92aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSh0cnVlKQogICAgICwgbV9pc1Zh
bGlkKHRydWUpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogICAgICwgbV9pbkRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlKGZhbHNlKQpAQCAtMTQ5NSw3ICsxNDk3LDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRlcnMudmlld1NpemUgPSBzaXpl
OwogICAgIHBhcmFtZXRlcnMuc3RvcmUgPSBwYWdlTmFtZXNwYWNlKCktPmNvbnRleHQoKS0+cHJl
ZmVyZW5jZXMoKS0+c3RvcmUoKTsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSW5mbyA9IG1f
ZHJhd2luZ0FyZWEtPmluZm8oKTsKLSAgICBwYXJhbWV0ZXJzLnZpc2libGVUb0luamVjdGVkQnVu
ZGxlID0gbV92aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKKyAgICBwYXJhbWV0ZXJzLnBhZ2VHcm91
cERhdGEgPSBtX3BhZ2VHcm91cC0+ZGF0YSgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHBh
cmFtZXRlcnMubmF0aXZlV2luZG93ID0gbV9wYWdlQ2xpZW50LT5uYXRpdmVXaW5kb3coKTsKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMyArODQsMTMg
QEAgY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBXZWJL
ZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYlBhZ2VHcm91cDsK
IGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKIGNsYXNz
IFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJXaGVlbEV2
ZW50Owogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKLXN0cnVjdCBXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2Vi
UG9wdXBJdGVtOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVi
bGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9
IFR5cGVQYWdlOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUo
V2ViUGFnZU5hbWVzcGFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoV2ViUGFnZU5hbWVzcGFjZSosIFdlYlBhZ2VHcm91cCos
IHVpbnQ2NF90IHBhZ2VJRCk7CiAKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIApAQCAt
MTE1LDkgKzExNSw2IEBAIHB1YmxpYzoKICAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJl
YSgpIHsgcmV0dXJuIG1fZHJhd2luZ0FyZWEuZ2V0KCk7IH0KICAgICB2b2lkIHNldERyYXdpbmdB
cmVhKFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4pOwogCi0gICAgYm9vbCB2aXNpYmxlVG9J
bmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7
IH0KLSAgICB2b2lkIHNldFZpc2libGVUb0luamVjdGVkQnVuZGxlKGJvb2wgdmlzaWJsZSkgeyBt
X3Zpc2libGVUb0luamVjdGVkQnVuZGxlID0gdmlzaWJsZTsgfQotCiAgICAgV2ViQmFja0Zvcndh
cmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5nZXQo
KTsgfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTI0Miw2ICsyMzksOCBAQCBwdWJsaWM6
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29uc3Q7CiAgICAgV2ViUGFnZU5hbWVz
cGFjZSogcGFnZU5hbWVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU5hbWVzcGFjZS5nZXQo
KTsgfQogCisgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VHcm91cC5nZXQoKTsgfQorCiAgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICAvLyBSRU1PVkU6
IEZvciBkZW1vIHB1cnBvc2VzIG9ubHkuCkBAIC0yNjQsNyArMjYzLDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFdlYlBhZ2VOYW1lc3BhY2UqLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFn
ZUdyb3VwKiwgdWludDY0X3QgcGFnZUlEKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCkBAIC0zODgsNiArMzg3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIE93blB0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwogICAgIFJlZlB0cjxX
ZWJQYWdlTmFtZXNwYWNlPiBtX3BhZ2VOYW1lc3BhY2U7CisgICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gbV9wYWdlR3JvdXA7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwog
ICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZvY3VzZWRGcmFtZTsKICAgICBTdHJpbmcgbV9w
YWdlVGl0bGU7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM2LDEyICsxMzYsMTIgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UodQogICAgIHJldHVybiBtX3BhZ2VNYXAuZ2V0KHBhZ2VJRCkuZ2V0KCk7
CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFdlYlBh
Z2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UpCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdl
R3JvdXAqIHBhZ2VHcm91cCkKIHsKICAgICBBU1NFUlQocGFnZU5hbWVzcGFjZS0+cHJvY2Vzcygp
ID09IHRoaXMpOwogCiAgICAgdW5zaWduZWQgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAg
ICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFn
ZU5hbWVzcGFjZSwgcGFnZUlEKTsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0g
V2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZU5hbWVzcGFjZSwgcGFnZUdyb3VwLCBwYWdlSUQpOwog
ICAgIG1fcGFnZU1hcC5zZXQocGFnZUlELCB3ZWJQYWdlKTsKICAgICByZXR1cm4gd2ViUGFnZS5n
ZXQoKTsKIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiA3
MzAyNCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dDsKK2NsYXNzIFdlYlBhZ2VHcm91cDsK
IGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsK
IApAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0xhdW5jaGVyLT5w
cm9jZXNzSWRlbnRpZmllcigpOyB9CiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWludDY0
X3QgcGFnZUlEKSBjb25zdDsKLSAgICBXZWJQYWdlUHJveHkqIGNyZWF0ZVdlYlBhZ2UoV2ViUGFn
ZU5hbWVzcGFjZSopOworICAgIFdlYlBhZ2VQcm94eSogY3JlYXRlV2ViUGFnZShXZWJQYWdlTmFt
ZXNwYWNlKiwgV2ViUGFnZUdyb3VwKik7CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBhZ2UoV2Vi
UGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlEKTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJl
dmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5Owog
Y2xhc3MgV2ViTmF2aWdhdGlvbkRhdGE7CitjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQ
YWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7
CkBAIC02MCw2ICs2MSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lUmVmLCBXZWJGcmFt
ZVAKIFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkp
CiAjZW5kaWYKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25EYXRhUmVmLCBXZWJOYXZp
Z2F0aW9uRGF0YSkKK1dLX0FERF9BUElfTUFQUElORyhXS1BhZ2VHcm91cFJlZiwgV2ViUGFnZUdy
b3VwKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZU5hbWVzcGFjZVJlZiwgV2ViUGFnZU5hbWVz
cGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VSZWYsIFdlYlBhZ2VQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMSBA
QCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjCiAgICAgcmV0dXJuIHRv
QVBJKHRvSW1wbChwYWdlUmVmKS0+cGFnZU5hbWVzcGFjZSgpKTsKIH0KIAorV0tQYWdlR3JvdXBS
ZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHJldHVybiB0
b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKK30KKwogdm9pZCBXS1BhZ2VMb2Fk
VVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT5sb2FkVVJMKHRvSW1wbChVUkxSZWYpLT5zdHJpbmcoKSk7CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSw3IEBAIHR5cGVkZWYg
c3RydWN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50IFcKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS1Bh
Z2VHZXRUeXBlSUQoKTsKIAogV0tfRVhQT1JUIFdLUGFnZU5hbWVzcGFjZVJlZiBXS1BhZ2VHZXRQ
YWdlTmFtZXNwYWNlKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCBXS1BhZ2VHcm91cFJlZiBX
S1BhZ2VHZXRQYWdlR3JvdXAoV0tQYWdlUmVmIHBhZ2UpOwogCiBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpOwogV0tfRVhQT1JUIHZvaWQg
V0tQYWdlTG9hZFVSTFJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxS
ZXF1ZXN0KTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tQYWdl
R3JvdXAuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91
cC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1BhZ2VHcm91cEdl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlBhZ2VHcm91cDo6QVBJVHlwZSk7Cit9
CisKK1dLUGFnZUdyb3VwUmVmIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJp
bmdSZWYgaWRlbnRpZmllcikKK3sKKyAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAg
PSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHBhZ2VHcm91cC5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKworV0tTdHJpbmdS
ZWYgV0tQYWdlR3JvdXBDb3B5SWRlbnRpZmllcihXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCit7
CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChwYWdlR3JvdXApLT5pZGVudGlmaWVyKCkp
OworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYWdlR3JvdXBfaAorI2Rl
ZmluZSBXS1BhZ2VHcm91cF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJ
RCBXS1BhZ2VHcm91cEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tQYWdlR3JvdXBSZWYgV0tQ
YWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGVudGlmaWVyKTsKKwor
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdyb3VwQ29weUlkZW50aWZpZXIoV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLUGFnZUdyb3VwX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dl
YktpdDIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgJ
KHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0JhY2tG
b3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tEYXRhLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0RpY3Rpb25hcnkuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRm9ybVN1
Ym1pc3Npb25MaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tGcmFtZS5oPgpAQCAtNDMs
NiArNDQsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tOYXZpZ2F0aW9uRGF0YS5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5h
bWVzcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tTdHJpbmcuaD4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1Zp
ZXcuY3BwCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw5IEBAIFdLVHlwZUlEIFdLVmll
d0dldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQSU9iamVjdDo6VHlwZVZpZXcpOwogfQog
Ci1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tQYWdlTmFtZXNwYWNlUmVmIHBh
Z2VOYW1lc3BhY2VSZWYsIEhXTkQgcGFyZW50V2luZG93KQorV0tWaWV3UmVmIFdLVmlld0NyZWF0
ZShSRUNUIHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlUmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYsIEhXTkQgcGFyZW50V2luZG93KQogewotICAgIFJlZlB0cjxX
ZWJWaWV3PiB2aWV3ID0gV2ViVmlldzo6Y3JlYXRlKHJlY3QsIHRvSW1wbChwYWdlTmFtZXNwYWNl
UmVmKSwgcGFyZW50V2luZG93LCBWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7CisgICAgUmVmUHRy
PFdlYlZpZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUocmVjdCwgdG9JbXBsKHBhZ2VOYW1lc3Bh
Y2VSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgcGFyZW50V2luZG93LCBWaXNpYmxlVG9Jbmpl
Y3RlZEJ1bmRsZSk7CiAgICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgpLnJlbGVhc2VSZWYo
KSk7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgJKHJldmlzaW9u
IDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBl
SUQgV0tWaWV3R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRl
KFJFQ1QgcmVjdCwgV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2UsIEhXTkQgcGFyZW50
V2luZG93KTsKK1dLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tQ
YWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2UsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwg
SFdORCBwYXJlbnRXaW5kb3cpOwogCiBXS19FWFBPUlQgSFdORCBXS1ZpZXdHZXRXaW5kb3coV0tW
aWV3UmVmIHZpZXcpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3LmgJKHJldmlz
aW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBAaW50ZXJmYWNlIFdLVmlldyA6IE5TVmlldyA8TlNU
ZXh0SW5wdXQ+CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFt
ZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZjsKKy0gKGlkKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3Bh
Y2VSZWYpcGFnZU5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VH
cm91cFJlZjsKIAogLSAoV0tQYWdlUmVmKXBhZ2VSZWY7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgQGludGVy
ZmFjZSBXS1ZpZXdEYXRhIDogTlNPYmplY3QgewogCiBAaW1wbGVtZW50YXRpb24gV0tWaWV3CiAK
LS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1Bh
Z2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZiBoaWRkZW5Gcm9tSW5qZWN0ZWRCdW5kbGU6
KEJPT0wpaGlkZGVuRnJvbUluamVjdGVkQnVuZGxlCistIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3Bh
Y2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWYKIHsKICAgICBz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmICghc2VsZikKQEAgLTEz
MywxMCArMTMzLDkgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYQog
ICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKIAogICAgIF9kYXRhLT5fcGFn
ZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUoc2VsZik7Ci0gICAgX2RhdGEtPl9wYWdl
ID0gdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKCk7CisgICAgX2RhdGEt
Pl9wYWdlID0gdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKHRvSW1wbChw
YWdlR3JvdXBSZWYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldFBhZ2VDbGllbnQoX2RhdGEtPl9w
YWdlQ2xpZW50LmdldCgpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldERyYXdpbmdBcmVhKENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUoc2VsZikpOwotICAgIF9kYXRhLT5fcGFn
ZS0+c2V0VmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoIWhpZGRlbkZyb21JbmplY3RlZEJ1bmRsZSk7
CiAgICAgX2RhdGEtPl9wYWdlLT5pbml0aWFsaXplV2ViUGFnZShJbnRTaXplKGZyYW1lLnNpemUp
KTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldElzSW5XaW5kb3coW3NlbGYgd2luZG93XSk7CiAKQEAg
LTE1Miw3ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5h
CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihX
S1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZgogewotICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aEZyYW1lOmZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6cGFnZU5hbWVzcGFjZVJlZiBoaWRk
ZW5Gcm9tSW5qZWN0ZWRCdW5kbGU6Tk9dOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1l
OmZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6cGFnZU5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6bmls
XTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiA3MzAyNCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOCArMzEsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIH0KIAogQGludGVyZmFjZSBX
S1ZpZXcgKEludGVybmFsKQotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VO
YW1lc3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlUmVmIGhpZGRlbkZy
b21JbmplY3RlZEJ1bmRsZTooQk9PTCloaWRkZW5Gcm9tSW5qZWN0ZWRCdW5kbGU7Ci0KIC0gKHZv
aWQpX3Byb2Nlc3NEaWRDcmFzaDsKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzczsKIC0gKHZv
aWQpX3Rha2VGb2N1czooQk9PTClkaXJlY3Rpb247CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuY3BwCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBRV0tQYWdlUHJp
dmF0ZTo6UVdLUGFnZVByaXZhdGUoUVdLUGFnZSogCiB7CiAgICAgaW5pdGlhbGl6ZVBsYXRmb3Jt
U3RyYXRlZ2llc0lmTmVlZGVkKCk7CiAgICAgbWVtc2V0KGFjdGlvbnMsIDAsIHNpemVvZihhY3Rp
b25zKSk7Ci0gICAgcGFnZSA9IHRvSW1wbChuYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKCk7
IC8vIFBhZ2UgZ2V0cyBhIHJlZiB0byBuYW1lc3BhY2UuCisgICAgcGFnZSA9IHRvSW1wbChuYW1l
c3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKDApOyAvLyBQYWdlIGdldHMgYSByZWYgdG8gbmFtZXNw
YWNlLgogICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhpcyk7CiAgICAgaGlzdG9yeSA9IFFXS0hp
c3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKTsKIH0K
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0J
KHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFdlYlBhZ2VQcm94eSog
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3IKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NF
UlQoIW1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcuYWRvcHROUyhbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IHBhZ2VOYW1lc3BhY2VSZWY6dG9B
UEkobV9wYWdlLT5wYWdlTmFtZXNwYWNlKCkpXSk7CisgICAgbV9pbnNwZWN0b3JWaWV3LmFkb3B0
TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBwYWdlTmFtZXNwYWNl
UmVmOnRvQVBJKG1fcGFnZS0+cGFnZU5hbWVzcGFjZSgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5z
cGVjdG9yUGFnZUdyb3VwKCkpXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CiAKICAg
ICByZXR1cm4gdG9JbXBsKFttX2luc3BlY3RvclZpZXcuZ2V0KCkgcGFnZVJlZl0pOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBA
QCBib29sIFdlYlZpZXc6OnJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzCiAgICAgcmV0dXJuICEh
OjpSZWdpc3RlckNsYXNzRXgoJndjZXgpOwogfQogCi1XZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVj
dCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgSFdORCBwYXJlbnRXaW5kb3csIElu
amVjdGVkQnVuZGxlVmlzaWJpbGl0eSBpbmplY3RlZEJ1bmRsZVZpc2liaWxpdHkpCitXZWJWaWV3
OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2Vi
UGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93KQogICAgIDogbV9yZWN0KHJl
Y3QpCiAgICAgLCBtX3RvcExldmVsUGFyZW50V2luZG93KDApCiAgICAgLCBtX3Rvb2xUaXBXaW5k
b3coMCkKQEAgLTE5NCwxMCArMTk0LDkgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIFdl
YlBhZ2VOYW1lcwogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKLSAgICBt
X3BhZ2UgPSBwYWdlTmFtZXNwYWNlLT5jcmVhdGVXZWJQYWdlKCk7CisgICAgbV9wYWdlID0gcGFn
ZU5hbWVzcGFjZS0+Y3JlYXRlV2ViUGFnZShwYWdlR3JvdXApOwogICAgIG1fcGFnZS0+c2V0UGFn
ZUNsaWVudCh0aGlzKTsKICAgICBtX3BhZ2UtPnNldERyYXdpbmdBcmVhKENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5OjpjcmVhdGUodGhpcykpOwotICAgIG1fcGFnZS0+c2V0VmlzaWJsZVRv
SW5qZWN0ZWRCdW5kbGUoaW5qZWN0ZWRCdW5kbGVWaXNpYmlsaXR5ID09IFZpc2libGVUb0luamVj
dGVkQnVuZGxlKTsKIAogICAgIG1fd2luZG93ID0gOjpDcmVhdGVXaW5kb3dFeCgwLCBrV2ViS2l0
MldlYlZpZXdXaW5kb3dDbGFzc05hbWUsIDAsIFdTX0NISUxEIHwgV1NfQ0xJUFNJQkxJTkdTIHwg
V1NfQ0xJUENISUxEUkVOLAogICAgICAgICByZWN0LnRvcCwgcmVjdC5sZWZ0LCByZWN0LnJpZ2h0
IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJlY3QudG9wLCBwYXJlbnRXaW5kb3cgPyBwYXJl
bnRXaW5kb3cgOiBIV05EX01FU1NBR0UsIDAsIGluc3RhbmNlSGFuZGxlKCksIHRoaXMpOwpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE2ICszOSwxMSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBXZWJQYWdl
TmFtZXNwYWNlOwogCi1lbnVtIEluamVjdGVkQnVuZGxlVmlzaWJpbGl0eSB7Ci0gICAgSGlkZGVu
RnJvbUluamVjdGVkQnVuZGxlLAotICAgIFZpc2libGVUb0luamVjdGVkQnVuZGxlCi19OwotCiBj
bGFzcyBXZWJWaWV3IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFBhZ2VDbGllbnQsIFdlYkNv
cmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViVmlldz4gY3JlYXRlKFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVz
cGFjZSwgSFdORCBwYXJlbnRXaW5kb3csIEluamVjdGVkQnVuZGxlVmlzaWJpbGl0eSB2aXNpYmls
aXR5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZShSRUNUIHJlY3QsIFdl
YlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBI
V05EIHBhcmVudFdpbmRvdykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
VmlldyhyZWN0LCBwYWdlTmFtZXNwYWNlLCBwYXJlbnRXaW5kb3csIHZpc2liaWxpdHkpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3KHJlY3QsIHBhZ2VOYW1lc3BhY2UsIHBh
Z2VHcm91cCwgcGFyZW50V2luZG93KSk7CiAgICAgfQogICAgIH5XZWJWaWV3KCk7CiAKQEAgLTYz
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYlZpZXcoUkVDVCwgV2ViUGFn
ZU5hbWVzcGFjZSosIEhXTkQgcGFyZW50V2luZG93LCBJbmplY3RlZEJ1bmRsZVZpc2liaWxpdHkp
OworICAgIFdlYlZpZXcoUkVDVCwgV2ViUGFnZU5hbWVzcGFjZSosIFdlYlBhZ2VHcm91cCosIEhX
TkQgcGFyZW50V2luZG93KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gVHlwZVZpZXc7IH0KIApJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5NSw2ICszOTUsMTYgQEAKIAkJQkM3
MkI5RkIxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcyQjlGOTExRTY0NzZC
MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCAqLzsgfTsKIAkJQkM3MkJBMUQx
MUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEg
LyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLzsgfTsKIAkJQkM3MkJBMUUxMUU2NDkwNzAwMUVC
NEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3
YXJkTGlzdC5oICovOyB9OworCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdy
b3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdC
NjIwNDEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmggKi87IH07CisJCUJDN0I2MjA3
MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyMDUxMjlBMEE2NzAwRDE3NEE0IC8qIFdl
YlBhZ2VHcm91cC5jcHAgKi87IH07CisJCUJDN0I2MjE1MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQ
YWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggKi87
IH07CisJCUJDN0I2MjE2MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdCNjIxNDEy
QTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuY3BwICovOyB9OworCQlCQzdCNjI1
MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyNTAxMkE0M0M5NjAwRDE3NEE0IC8q
IFdlYlBhZ2VHcm91cERhdGEuaCAqLzsgfTsKKwkJQkM3QjYyNTMxMkE0M0M5NjAwRDE3NEE0IC8q
IFdlYlBhZ2VHcm91cERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM3QjYyNTExMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEu
Y3BwICovOyB9OworCQlCQzdCNjMzNzEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0I2MzM1MTJB
NDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkM3QjYzMzgxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFn
ZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0I2MzM2MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5jcHAgKi87IH07CisJCUJD
N0I2MzNEMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYzM0IxMkE0NUQxMjAwRDE3
NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OworCQlCQzdCNjMzRTEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQ
YWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM3QjYzM0MxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCAqLzsg
fTsKIAkJQkM4NDUyQTcxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1MkE1MTE2MkM4MDkw
MENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgKi87IH07CiAJCUJDODQ1MkE4MTE2MkM4MDkwMENB
QjlCNSAvKiBEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmggKi87
IH07CiAJCUJDODY5OUI1MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUIyMTE2QUFEQUEwMDJBOTI1
QiAvKiBXS1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CkBAIC05ODksNiArOTk5LDE2IEBACiAJCUJDNzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAv
KiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQmFja0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDN0I2
MjA0MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUGFnZUdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUdyb3VwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VH
cm91cFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91
cFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDN0I2MjE0MTJBNDIxOUEw
MEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDN0I2MjUwMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91cERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYyNTExMkE0M0M5NjAwRDE3NEE0IC8qIFdl
YlBhZ2VHcm91cERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUGFnZUdyb3VwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDN0I2
MzM1MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1BhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzdCNjMzNjEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzdCNjMzQjEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQYWdl
R3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlR3Jv
dXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYzM0MxMkE0NUQxMjAwRDE3
NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLQnVuZGxlUGFnZUdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM4NDUyQTUxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdB
cmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODY5OUIyMTE2QUFEQUEwMDJBOTI1QiAvKiBX
S1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDY3LDYgKzE0ODcsOCBAQAogCQkJCUJDNTc0NEVF
MTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCAqLywKIAkJCQlDMDZDNjA5MzEyNEMx
NDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJQzA2
QzYwOTQxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywK
KwkJCQlCQzdCNjI1MTEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5jcHAgKi8s
CisJCQkJQkM3QjYyNTAxMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCAqLywK
IAkJCQlDMDMzN0REQzEyN0E1MjFDMDA4RkY0RjQgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNw
cCAqLywKIAkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJQkMzMDY4MjIxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKQEAgLTE2NjYsNiArMTY4OCw4IEBACiAJCQkJ
QkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLAogCQkJCUJDMDMyRDhC
MTBGNDM3QTAwMDU4QzE1QSAvKiBXZWJQYWdlLmggKi8sCiAJCQkJQzBDRTcyNTgxMjQ3RTREQTAw
QkMwRUM0IC8qIFdlYlBhZ2UubWVzc2FnZXMuaW4gKi8sCisJCQkJQkM3QjYyMTQxMkE0MjE5QTAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmNwcCAqLywKKwkJCQlCQzdCNjIxMzEyQTQyMTlB
MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2Vi
UGFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzMzLDYgKzE3NTcsOCBAQAog
CQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5oICovLAog
CQkJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwICovLAogCQkJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCAqLywKKwkJCQlCQzdCNjIwNTEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdy
b3VwLmNwcCAqLywKKwkJCQlCQzdCNjIwNDEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3Vw
LmggKi8sCiAJCQkJQkNFRTk4QzQxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2Uu
Y3BwICovLAogCQkJCUJDRUU5OEM1MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNl
LmggKi8sCiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAg
Ki8sCkBAIC0xNzkzLDYgKzE4MTksOCBAQAogCQkJCUJDRjY5RkE3MTE3NkQxQ0IwMDQ3MUE1MiAv
KiBXS05hdmlnYXRpb25EYXRhLmggKi8sCiAJCQkJQkNENTk3RDQxMTJCNTZEQzAwRUM4QzIzIC8q
IFdLUGFnZS5jcHAgKi8sCiAJCQkJQkNENTk3RDUxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5o
ICovLAorCQkJCUJDN0I2MzM2MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5jcHAgKi8s
CisJCQkJQkM3QjYzMzUxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmggKi8sCiAJCQkJ
QkNFRTk4Q0ExMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5jcHAgKi8sCiAJCQkJ
QkNFRTk4Q0IxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5oICovLAogCQkJCUJD
MTc3NDY0MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggKi8sCkBAIC0xOTUzLDYg
KzE5ODEsOCBAQAogCQkJCUJDNTc0NTBCMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5vZGVI
YW5kbGVQcml2YXRlLmggKi8sCiAJCQkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVu
ZGxlUGFnZS5jcHAgKi8sCiAJCQkJQkMyMDUyN0YxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxl
UGFnZS5oICovLAorCQkJCUJDN0I2MzNDMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VH
cm91cC5jcHAgKi8sCisJCQkJQkM3QjYzM0IxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFn
ZUdyb3VwLmggKi8sCiAJCQkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwICovLAogCQkJCTFBMjJGMEZGMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRs
ZVBhZ2VPdmVybGF5LmggKi8sCiAJCQkJQkMxQjQxOTcxMUQ0MUQ1NzAwMTFFOEREIC8qIFdLQnVu
ZGxlUGFnZVByaXZhdGUuaCAqLywKQEAgLTI0NzcsNiArMjUwNywxMSBAQAogCQkJCTFDQThCOTQ2
MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEyOTZGMEEyMDAyMzk1MkYgLyog
U2FuZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3QjYyMDYxMjlBMEE2NzAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3QjYyMTUxMkE0
MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
QzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkM3QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCQzdCNjMzRDEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQYWdlR3Jv
dXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjYyM0I4MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0Zp
bmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI4NjUsNiArMjkwMCwxMSBAQAogCQkJCUVEQ0E3MUI3
MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRBQUExMjk2RjE1NDAwMjM5NTJGIC8qIFNh
bmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzdCNjIwNzEyOUEwQTY3
MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDN0I2MjE2
MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQzdCNjI1MzEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCQzdCNjMzODEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM3QjYzM0UxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVu
ZGxlUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTQ3OTIzMTJBNTlGRDkwMDgy
MzZDMyAvKiBQbHVnaW5Qcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiwyMiBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnJlbW92ZVdlYkZyYW1lKHVpbnQ2NF90CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZERlc3Ryb3lGcmFtZShmcmFtZUlEKSwgMCk7CiB9
CiAKK1dlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAodWludDY0X3Qg
cGFnZUdyb3VwSUQpCit7CisgICAgcmV0dXJuIG1fcGFnZUdyb3VwTWFwLmdldChwYWdlR3JvdXBJ
RCkuZ2V0KCk7Cit9CisKK1dlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3Jv
dXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkKK3sKKyAgICBzdGQ6OnBh
aXI8SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+OjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91cERhdGEucGFnZUdy
b3VwSUQsIDApOworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFTU0VSVCghcmVz
dWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBh
Z2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworfQorCiB2b2lkIFdlYlByb2Nlc3M6OmNsZWFy
UmVzb3VyY2VDYWNoZXMoKQogewogICAgIHBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNhY2hlcygpOwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2lu
Y2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01MCw2ICs1MSw3IEBAIGNsYXNzIEluamVj
dGVkQnVuZGxlOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsKIHN0cnVjdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CiAKQEAgLTgxLDYgKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkV2ViRnJhbWUodWludDY0
X3QsIFdlYkZyYW1lKik7CiAgICAgdm9pZCByZW1vdmVXZWJGcmFtZSh1aW50NjRfdCk7CiAKKyAg
ICBXZWJQYWdlR3JvdXBQcm94eSogd2ViUGFnZUdyb3VwKHVpbnQ2NF90IHBhZ2VHcm91cElEKTsK
KyAgICBXZWJQYWdlR3JvdXBQcm94eSogd2ViUGFnZUdyb3VwKGNvbnN0IFdlYlBhZ2VHcm91cERh
dGEmKTsKICAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUdyb3VwKiBzaGFyZWRQYWdlR3JvdXAoKTsK
IAogICAgIC8vIFdpbGwgc2h1dCBkb3duIHRoZSB3ZWIgcHJvY2VzcyBpZiB0aGVyZSBhcmUgbm8g
bGl2ZSBwYWdlcyBvciBkb3dubG9hZHMuCkBAIC0xMjQsNiArMTI4LDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID4gbV9wYWdlR3JvdXBNYXA7CiAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCiAgICAgYm9vbCBt
X2luRGlkQ2xvc2U7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsMTQgKzk2LDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFZpc2l0
ZWRMaW4KICAgICBQYWdlR3JvdXA6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOwogfQogCi12b2lk
IEluamVjdGVkQnVuZGxlOjpvdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihi
b29sIGVuYWJsZWQpCit2b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZVhTU0F1ZGl0b3JFbmFi
bGVkRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJs
ZWQpCiB7CiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZWZlcmVuY2UgZm9yIGFsbCBmdXR1cmUgcGFn
ZXMuCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6b3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZv
clRlc3RSdW5uZXIoZW5hYmxlZCk7CiAKICAgICAvLyBDaGFuZ2UgdGhlIHNldHRpbmcgZm9yIGV4
aXN0aW5nIG9uZXMuCi0gICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gV2ViUHJvY2Vz
czo6c2hhcmVkUGFnZUdyb3VwKCktPnBhZ2VzKCk7Ci0KKyAgICBjb25zdCBIYXNoU2V0PFBhZ2Uq
PiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSkt
PnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9IHBhZ2Vz
LmJlZ2luKCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsraXRlcikKICAgICAgICAgKCppdGVyKS0+
c2V0dGluZ3MoKS0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZW5hYmxlZCk7CiB9CkBAIC0xMjgsMzkg
KzEyNywzOSBAQCBzdGF0aWMgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IHRvU3RyCiAgICAg
cmV0dXJuIHBhdHRlcm5zVmVjdG9yOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2Vy
U2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3Qs
IEltbXV0YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5q
ZWN0ZWRGcmFtZXMpCit2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU2NyaXB0KFdlYlBhZ2VH
cm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdv
cmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFy
cmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFn
ZUdyb3VwKCktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwg
c291cmNlLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVs
aXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRG
cmFtZXMpOworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigp
KS0+YWRkVXNlclNjcmlwdFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBzb3VyY2Us
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0
b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBi
bGFja2xpc3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMpCit2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVldChXZWJQYWdlR3JvdXBQ
cm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSog
d2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZFBhZ2VHcm91cCgpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVX
b3JsZCgpLCBzb3VyY2UsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7
CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5hZGRV
c2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBzb3VyY2UsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0
cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2Ny
aXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3Zl
VXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkUGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoc2NyaXB0
V29ybGQtPmNvcmVXb3JsZCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CisgICAgUGFn
ZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5yZW1vdmVVc2VyU2Ny
aXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2VyU3R5bGVTaGVl
dChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1
cmwpCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2VyU3R5bGVTaGVldChXZWJQYWdlR3Jv
dXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3Js
ZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdyb3Vw
KCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQo
KSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3Vw
KHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQo
c2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CiB9
CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHRzKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNl
clNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogc2NyaXB0V29ybGQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdyb3Vw
KCktPnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSk7
CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5yZW1v
dmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCkpOwogfQogCi12
b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2Vy
U3R5bGVTaGVldHMoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdy
b3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdv
cmxkKCkpOworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigp
KS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQo
KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFVzZXJDb250ZW50KFdlYlBhZ2VHcm91cFByb3h5
KiBwYWdlR3JvdXApCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdyb3VwKCktPnJlbW92
ZUFsbFVzZXJDb250ZW50KCk7CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5p
ZGVudGlmaWVyKCkpLT5yZW1vdmVBbGxVc2VyQ29udGVudCgpOwogfQogCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkKQEAgLTIwNCw2ICsyMDMs
MTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6d2lsbERlc3Ryb3lQYWdlKFdlYgogICAgIG1fY2xp
ZW50LndpbGxEZXN0cm95UGFnZSh0aGlzLCBwYWdlKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRs
ZTo6ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwKQor
eworICAgIG1fY2xpZW50LmRpZEluaXRpYWxpemVQYWdlR3JvdXAodGhpcywgcGFnZUdyb3VwKTsK
K30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwpJbmRleDog
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgJKHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgdHlwZWRl
ZiB2b2lkKiBQbGF0Zm9ybUJ1bmRsZTsKIGNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQYWdlR3Jv
dXBQcm94eTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGUgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1
YmxpYzoKQEAgLTgzLDE2ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rcyhib29sKTsKICAgICB2b2lkIHJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOwog
ICAgIHZvaWQgYWN0aXZhdGVNYWNGb250QXNjZW50SGFjaygpOwotICAgIHZvaWQgb3ZlcnJpZGVY
U1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIG92
ZXJyaWRlWFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKFdlYlBhZ2VHcm91cFByb3h5KiBw
YWdlR3JvdXAsIGJvb2wgZW5hYmxlZCk7CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKLSAgICB2
b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwg
SW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwotICAgIHZvaWQgYWRkVXNl
clN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRh
YmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7
Ci0gICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBj
b25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwotICAgIHZvaWQgcmVtb3Zl
VXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKLSAgICB2b2lkIHJl
bW92ZUFsbFVzZXJDb250ZW50KCk7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91
cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxl
QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOworICAgIHZvaWQgYWRkVXNlclN0eWxlU2hl
ZXQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVs
aXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkq
LCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZv
aWQgcmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgcmVtb3ZlVXNlclNj
cmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7Cisg
ICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudChXZWJQ
YWdlR3JvdXBQcm94eSopOwogCiAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uIEFQSQogICAgIHZv
aWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpOwpAQCAtMTAyLDYgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICAvLyBDYWxsYmFjayBob29rcwogICAgIHZvaWQgZGlkQ3JlYXRlUGFnZShX
ZWJQYWdlKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV2ViUGFnZSopOworICAgIHZvaWQg
ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXZWJQYWdlR3JvdXBQcm94eSopOwogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgQVBJT2JqZWN0Kik7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCShy
ZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDE0IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OndpbGxEZXN0cm95UGEKICAgICBtX2NsaWVudC53aWxs
RGVzdHJveVBhZ2UodG9BUEkoYnVuZGxlKSwgdG9BUEkocGFnZSksIG1fY2xpZW50LmNsaWVudElu
Zm8pOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRJbml0aWFsaXplUGFnZUdy
b3VwKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRJbml0aWFsaXplUGFnZUdyb3VwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRJbml0aWFsaXplUGFnZUdyb3VwKHRvQVBJKGJ1bmRs
ZSksIHRvQVBJKHBhZ2VHcm91cCksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB2b2lkIElu
amVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZShJbmplY3RlZEJ1bmRsZSogYnVu
ZGxlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2R5KQog
ewogICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UpCkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDEz
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGU7CiBjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiAKIGNsYXNz
IEluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZUNsaWVudD4g
ewogcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlUGFnZShJbmplY3RlZEJ1bmRsZSosIFdlYlBh
Z2UqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95UGFnZShJbmplY3RlZEJ1bmRsZSosIFdlYlBhZ2Uq
KTsKKyAgICB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3JvdXAoSW5qZWN0ZWRCdW5kbGUqLCBXZWJQ
YWdlR3JvdXBQcm94eSopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2R5KTsK
IH07CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaAkocmV2aXNp
b24gNzMwMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW5jbHVkZSAiVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCisjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMzMsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8v
IEFkZHMKIC8vIC0gQnVuZGxlUGFnZSAtPiBQYWdlCiAvLyAtIEJ1bmRsZUZyYW1lIC0+IEZyYW1l
CisvLyAtIEJ1bmRsZVBhZ2VHcm91cCAtPiBQYWdlR3JvdXAKIAogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVVc2VyTWVzc2FnZUVuY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VFbmNvZGVyPEluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyPiB7CiBwdWJsaWM6CkBAIC02MCw2ICs2MywxMSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoZnJhbWUtPmZyYW1lSUQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlw
ZUJ1bmRsZVBhZ2VHcm91cDogeworICAgICAgICAgICAgV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VH
cm91cCA9IHN0YXRpY19jYXN0PFdlYlBhZ2VHcm91cFByb3h5Kj4obV9yb290KTsKKyAgICAgICAg
ICAgIGVuY29kZXItPmVuY29kZShwYWdlR3JvdXAtPnBhZ2VHcm91cElEKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MCw2ICs3OCw3IEBAIHB1
YmxpYzoKIC8vIEFkZHMKIC8vICAgLSBQYWdlIC0+IEJ1bmRsZVBhZ2UKIC8vICAgLSBGcmFtZSAt
PiBCdW5kbGVGcmFtZQorLy8gICAtIFBhZ2VHcm91cCAtPiBCdW5kbGVQYWdlR3JvdXAKIAogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VE
ZWNvZGVyPEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyPiB7CiBwdWJsaWM6CkBAIC0x
MDksNiArMTE4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQYWdlR3JvdXA6IHsKKyAgICAg
ICAgICAgIFdlYlBhZ2VHcm91cERhdGEgcGFnZUdyb3VwRGF0YTsKKyAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHBhZ2VHcm91cERhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndl
YlBhZ2VHcm91cChwYWdlR3JvdXBEYXRhKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw0NCAr
ODcsNDQgQEAgc2l6ZV90IFdLQnVuZGxlR2V0SmF2YVNjcmlwdE9iamVjdHNDb3VudAogICAgIHJl
dHVybiB0b0ltcGwoYnVuZGxlUmVmKS0+amF2YVNjcmlwdE9iamVjdHNDb3VudCgpOwogfQogCi12
b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxl
U2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgV0tV
UkxSZWYgdXJsUmVmLCBXS0FycmF5UmVmIHdoaXRlbGlzdFJlZiwgV0tBcnJheVJlZiBibGFja2xp
c3RSZWYsIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZVJlZiwgV0tVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzUmVmKQordm9pZCBXS0J1bmRsZUFk
ZFVzZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYsIFdLU3Ry
aW5nUmVmIHNvdXJjZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0FycmF5UmVmIHdoaXRlbGlzdFJl
ZiwgV0tBcnJheVJlZiBibGFja2xpc3RSZWYsIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZVJlZiwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVz
UmVmKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5hZGRVc2VyU2NyaXB0KHRvSW1wbChzY3Jp
cHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIHRvV1RGU3RyaW5nKHVybFJlZiks
IHRvSW1wbCh3aGl0ZWxpc3RSZWYpLCB0b0ltcGwoYmxhY2tsaXN0UmVmKSwgdG9Vc2VyU2NyaXB0
SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lUmVmKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJh
bWVzKGluamVjdGVkRnJhbWVzUmVmKSk7CisgICAgdG9JbXBsKGJ1bmRsZVJlZiktPmFkZFVzZXJT
Y3JpcHQodG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RG
U3RyaW5nKHNvdXJjZVJlZiksIHRvV1RGU3RyaW5nKHVybFJlZiksIHRvSW1wbCh3aGl0ZWxpc3RS
ZWYpLCB0b0ltcGwoYmxhY2tsaXN0UmVmKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmpl
Y3Rpb25UaW1lUmVmKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVz
UmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYsIFdLU3RyaW5n
UmVmIHNvdXJjZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0FycmF5UmVmIHdoaXRlbGlzdFJlZiwg
V0tBcnJheVJlZiBibGFja2xpc3RSZWYsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lc1JlZikKK3ZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJl
ZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tCdW5kbGVT
Y3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmLCBXS1VS
TFJlZiB1cmxSZWYsIFdLQXJyYXlSZWYgd2hpdGVsaXN0UmVmLCBXS0FycmF5UmVmIGJsYWNrbGlz
dFJlZiwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzUmVmKQogewot
ICAgIHRvSW1wbChidW5kbGVSZWYpLT5hZGRVc2VyU3R5bGVTaGVldCh0b0ltcGwoc2NyaXB0V29y
bGRSZWYpLCB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpLCB0b0lt
cGwod2hpdGVsaXN0UmVmKSwgdG9JbXBsKGJsYWNrbGlzdFJlZiksIHRvVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lc1JlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5h
ZGRVc2VyU3R5bGVTaGVldCh0b0ltcGwocGFnZUdyb3VwUmVmKSwgdG9JbXBsKHNjcmlwdFdvcmxk
UmVmKSwgdG9XVEZTdHJpbmcoc291cmNlUmVmKSwgdG9XVEZTdHJpbmcodXJsUmVmKSwgdG9JbXBs
KHdoaXRlbGlzdFJlZiksIHRvSW1wbChibGFja2xpc3RSZWYpLCB0b1VzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXNSZWYpKTsKIH0KIAotdm9pZCBXS0J1bmRsZVJlbW92ZVVz
ZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNj
cmlwdFdvcmxkUmVmLCBXS1VSTFJlZiB1cmxSZWYpCit2b2lkIFdLQnVuZGxlUmVtb3ZlVXNlclNj
cmlwdChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tVUkxSZWYgdXJs
UmVmKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU2NyaXB0KHRvSW1wbChz
Y3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHVybFJlZikpOworICAgIHRvSW1wbChidW5kbGVS
ZWYpLT5yZW1vdmVVc2VyU2NyaXB0KHRvSW1wbChwYWdlR3JvdXBSZWYpLCB0b0ltcGwoc2NyaXB0
V29ybGRSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpKTsKIH0KIAotdm9pZCBXS0J1bmRsZVJlbW92
ZVVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tVUkxSZWYgdXJsUmVmKQordm9pZCBXS0J1bmRsZVJlbW92
ZVVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBX
S1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZVVzZXJTdHls
ZVNoZWV0KHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHVybFJlZikpOworICAg
IHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU3R5bGVTaGVldCh0b0ltcGwocGFnZUdyb3Vw
UmVmKSwgdG9JbXBsKHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZTdHJpbmcodXJsUmVmKSk7CiB9CiAK
LXZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU2NyaXB0cyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdL
QnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYpCit2b2lkIFdLQnVuZGxlUmVtb3Zl
VXNlclNjcmlwdHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYpCiB7Ci0g
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZVVzZXJTY3JpcHRzKHRvSW1wbChzY3JpcHRXb3Js
ZFJlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU2NyaXB0cyh0b0ltcGwo
cGFnZUdyb3VwUmVmKSwgdG9JbXBsKHNjcmlwdFdvcmxkUmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5k
bGVSZW1vdmVVc2VyU3R5bGVTaGVldHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmKQordm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTdHls
ZVNoZWV0cyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZikKIHsKLSAgICB0
b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKHRvSW1wbChzY3JpcHRXb3Js
ZFJlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU3R5bGVTaGVldHModG9J
bXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChzY3JpcHRXb3JsZFJlZikpOwogfQogCi12b2lkIFdL
QnVuZGxlUmVtb3ZlQWxsVXNlckNvbnRlbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmKQordm9pZCBX
S0J1bmRsZVJlbW92ZUFsbFVzZXJDb250ZW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5y
ZW1vdmVBbGxVc2VyQ29udGVudCgpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVBbGxV
c2VyQ29udGVudCh0b0ltcGwocGFnZUdyb3VwUmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVPdmVy
cmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihXS0J1bmRsZVJlZiBidW5kbGVSZWYs
IGJvb2wgZW5hYmxlZCkKK3ZvaWQgV0tCdW5kbGVPdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9y
VGVzdFJ1bm5lcihXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5vdmVy
cmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihlbmFibGVkKTsKKyAgICB0b0ltcGwo
YnVuZGxlUmVmKS0+b3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIodG9JbXBs
KHBhZ2VHcm91cFJlZiksIGVuYWJsZWQpOwogfQogCiB2b2lkIFdLQnVuZGxlUmVwb3J0RXhjZXB0
aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGV4Y2VwdGlvbikKSW5kZXg6IFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5o
CShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTcgQEAgZXh0ZXJu
ICJDIiB7CiAjZW5kaWYKIAogLy8gQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZENy
ZWF0ZVBhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVdpbGxE
ZXN0cm95UGFnZUNhbGxiYWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlRGlk
UmVjZWl2ZU1lc3NhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBu
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRDcmVhdGVQYWdlQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVXaWxsRGVzdHJveVBhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZEluaXRpYWxpemVQYWdlR3JvdXBDYWxsYmFjaykoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRSZWNlaXZlTWVzc2Fn
ZUNhbGxiYWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRs
ZUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwogICAgIGNvbnN0IHZvaWQgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50
SW5mbzsKICAgICBXS0J1bmRsZURpZENyZWF0ZVBhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZVBhZ2U7CiAgICAgV0tCdW5kbGVXaWxsRGVz
dHJveVBhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxs
RGVzdHJveVBhZ2U7CisgICAgV0tCdW5kbGVEaWRJbml0aWFsaXplUGFnZUdyb3VwQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRJbml0aWFsaXplUGFnZUdyb3VwOwogICAg
IFdLQnVuZGxlRGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2U7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5k
bGVDbGllbnQgV0tCdW5kbGVDbGllbnQ7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCShyZXZpc2lv
biA3MzAyNCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDE1IEBAIGNsYXNzIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFzcyBQYWdlT3ZlcmxheTsKIGNsYXNzIFdlYkZy
YW1lOwogY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogCi1XS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWYsIEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKQorV0tfQUREX0FQSV9N
QVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25S
ZWYsIFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tC
dW5kbGVGcmFtZVJlZiwgV2ViRnJhbWUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0UmVmLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tCdW5kbGVOb2RlSGFuZGxlUmVmLCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpCitX
S19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVQYWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91cFByb3h5
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYsIFBhZ2VPdmVybGF5
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlUGFnZVJlZiwgV2ViUGFnZSkKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDczMDI0KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDYgKzc3LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tC
dW5kbGVQYWcKICAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KHdrQ2xpZW50KTsKIH0KIAorV0tCdW5kbGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQYWdl
R2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKK30KKwogV0tCdW5kbGVGcmFtZVJlZiBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+bWFpbkZyYW1lKCkpOwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsNyBA
QCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50CiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFn
ZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VVSUNsaWVudCog
Y2xpZW50KTsKIAorV0tfRVhQT1JUIFdLQnVuZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdl
dFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tCdW5kbGVGcmFt
ZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCiBX
S19FWFBPUlQgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWYgV0tCdW5kbGVQYWdlR2V0QmFja0Zv
cndhcmRMaXN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUdy
b3VwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tCdW5kbGVQYWdlR3JvdXAuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IldlYlBhZ2VHcm91cFByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlw
ZUlEIFdLQnVuZGxlUGFnZUdyb3VwR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2Vi
UGFnZUdyb3VwUHJveHk6OkFQSVR5cGUpOworfQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZVBhZ2VH
cm91cENvcHlJZGVudGlmaWVyKFdLQnVuZGxlUGFnZUdyb3VwUmVmIGJ1bmRsZVBhZ2VHcm91cCkK
K3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGJ1bmRsZVBhZ2VHcm91cCktPmlkZW50
aWZpZXIoKSk7Cit9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91
cC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
S0J1bmRsZVBhZ2VHcm91cF9oCisjZGVmaW5lIFdLQnVuZGxlUGFnZUdyb3VwX2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdyb3VwR2V0VHlwZUlE
KCk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZVBhZ2VHcm91cENvcHlJZGVudGlm
aWVyKFdLQnVuZGxlUGFnZUdyb3VwUmVmIGJ1bmRsZVBhZ2VHcm91cCk7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZVBhZ2VHcm91cF9oICovCklu
ZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUHJpdmF0ZS5oCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTYgKzU1LDE2IEBAIGVudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHsK
IH07CiB0eXBlZGVmIGVudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIFdLVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lczsKIAotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVBZGRVc2VyU2NyaXB0
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwg
V0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdLQXJyYXlSZWYgd2hpdGVsaXN0LCBX
S0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25U
aW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpOwotV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLU3RyaW5nUmVmIHNvdXJjZSwgV0tV
UkxSZWYgdXJsLCBXS0FycmF5UmVmIHdoaXRlbGlzdCwgV0tBcnJheVJlZiBibGFja2xpc3QsIFdL
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyk7Ci1XS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1VSTFJlZiB1cmwpOwotV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxl
U2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLVVJMUmVmIHVybCk7Ci1XS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHRzKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVT
Y3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCk7Ci1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92
ZVVzZXJTdHlsZVNoZWV0cyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlU2NyaXB0V29ybGRS
ZWYgc2NyaXB0V29ybGQpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxVc2VyQ29u
dGVudChXS0J1bmRsZVJlZiBidW5kbGUpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVBZGRVc2Vy
U2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
LCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1N0cmluZ1JlZiBzb3VyY2Us
IFdLVVJMUmVmIHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJyYXlSZWYgYmxhY2tsaXN0
LCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdLVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUFk
ZFVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1N0cmluZ1Jl
ZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJyYXlSZWYg
YmxhY2tsaXN0LCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
IHNjcmlwdFdvcmxkLCBXS1VSTFJlZiB1cmwpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1v
dmVVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgV0tVUkxSZWYg
dXJsKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlVXNlclNjcmlwdHMoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0
V29ybGRSZWYgc2NyaXB0V29ybGQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVVc2Vy
U3R5bGVTaGVldHMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdl
R3JvdXAsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQpOworV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVSZW1vdmVBbGxVc2VyQ29udGVudChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVu
ZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CiAKIC8vIFdpbGwgbWFrZSBXZWJQcm9jZXNzIGln
bm9yZSB0aGlzIHByZWZlcmVuY2UgdW50aWwgYSBwcmVmZXJlbmNlcyBjaGFuZ2Ugbm90aWZpY2F0
aW9uLCBvbmx5IGZvciBXZWJLaXRUZXN0UnVubmVyIHVzZS4KLVdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoV0tCdW5kbGVSZWYgYnVu
ZGxlLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVPdmVycmlkZVhTU0F1
ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
NzMwMjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEzIEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KQEAgLTEw
MSw3ICsxMDIsNyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50CiB7
CiAgICAgUmVmUHRyPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZihuZXcgV2ViUGFnZShwYWdlSUQs
IHBhcmFtZXRlcnMpKTsKIAotICAgIGlmIChwYXJhbWV0ZXJzLnZpc2libGVUb0luamVjdGVkQnVu
ZGxlICYmIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCkpCisgICAgaWYgKHBh
Z2UtPnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKSkKICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLmdldCgpKTsKIAogICAgIHJl
dHVybiBwYWdlLnJlbGVhc2UoKTsKQEAgLTExMSw3ICsxMTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgOiBtX3ZpZXdTaXplKHBhcmFtZXRlcnMudmll
d1NpemUpCiAgICAgLCBtX2lzSW5SZWRvKGZhbHNlKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkK
LSAgICAsIG1faXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZShwYXJhbWV0ZXJzLnZpc2libGVUb0lu
amVjdGVkQnVuZGxlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fd2luZG93SXNWaXNpYmxl
KGZhbHNlKQogI2VsaWYgUExBVEZPUk0oV0lOKQpAQCAtMTQzLDEzICsxNDMsMTMgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogCiAgICAgdXBkYXRlUHJlZmVyZW5j
ZXMocGFyYW1ldGVycy5zdG9yZSk7CiAKLSAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZSgiV2ViS2l0
Mkdyb3VwIik7CisgICAgbV9wYWdlR3JvdXAgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdl
R3JvdXAocGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhKTsKKyAgICBtX3BhZ2UtPnNldEdyb3VwTmFt
ZShtX3BhZ2VHcm91cC0+aWRlbnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OwogICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgIG1f
ZHJhd2luZ0FyZWEgPSBEcmF3aW5nQXJlYTo6Y3JlYXRlKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJ
bmZvLnR5cGUsIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJbmZvLmlkLCB0aGlzKTsKLQogICAgIG1f
bWFpbkZyYW1lID0gV2ViRnJhbWU6OmNyZWF0ZU1haW5GcmFtZSh0aGlzKTsKIAogI2lmbmRlZiBO
REVCVUcKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKIAogICAgIG1f
aXNDbG9zZWQgPSB0cnVlOwogCi0gICAgaWYgKG1faXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSAm
JiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgIGlmIChwYWdlR3Jv
dXAoKS0+aXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmluamVjdGVkQnVuZGxlKCkpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVk
QnVuZGxlKCktPndpbGxEZXN0cm95UGFnZSh0aGlzKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA3MzAyNCkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsNyBAQCBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNs
YXNzIFdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViUGFn
ZUdyb3VwUHJveHk7CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBjbGFzcyBXZWJXaGVlbEV2ZW50Owog
CkBAIC0xMDksNiArMTEwLDggQEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKTsKICAgICBEcmF3aW5nQXJlYSogZHJhd2luZ0FyZWEo
KSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdBcmVhLmdldCgpOyB9CiAKKyAgICBXZWJQYWdlR3Jv
dXBQcm94eSogcGFnZUdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0K
KwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKTsK
ICNlbmRpZgpAQCAtMzEwLDYgKzMxMyw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZyYW1l
PiBtX21haW5GcmFtZTsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+
IG1fYmFja0ZvcndhcmRMaXN0OwogCisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiBtX3Bh
Z2VHcm91cDsKKwogICAgIFN0cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgbV92aWV3U2l6ZTsKQEAgLTMxNyw3ICszMjIsNiBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX2lzSW5SZWRvOwogICAgIGJvb2wgbV9pc0Nsb3NlZDsKLSAgICBib29sIG1faXNWaXNp
YmxlVG9JbmplY3RlZEJ1bmRsZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBXaGV0aGVy
IHRoZSBjb250YWluaW5nIHdpbmRvdyBpcyB2aXNpYmxlIG9yIG5vdC4KSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2Vi
UGFnZUdyb3VwUHJveHkuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJQ
YWdlR3JvdXBQcm94eT4gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShjb25zdCBXZWJQYWdlR3Jv
dXBEYXRhJiBkYXRhKQoreworICAgIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gcGFnZUdyb3Vw
ID0gYWRvcHRSZWYobmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEpKTsKKyAgICAKKyAgICBpZiAo
cGFnZUdyb3VwLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuaW5qZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5q
ZWN0ZWRCdW5kbGUoKS0+ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwor
CisgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNlKCk7Cit9CisKK1dlYlBhZ2VHcm91cFByb3h5
Ojp+V2ViUGFnZUdyb3VwUHJveHkoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaAko
cmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFBy
b3h5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlBhZ2VHcm91cFByb3h5X2gKKyNkZWZpbmUgV2ViUGFnZUdyb3VwUHJveHlfaAorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlR3JvdXBQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQnVuZGxlUGFnZUdyb3VwOworCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+IGNyZWF0ZShjb25zdCBXZWJQYWdlR3JvdXBEYXRh
Jik7CisgICAgdmlydHVhbCB+V2ViUGFnZUdyb3VwUHJveHkoKTsKKworICAgIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pZGVudGlmZXI7IH0KKyAgICB1
aW50NjRfdCBwYWdlR3JvdXBJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wYWdlR3JvdXBJRDsg
fQorICAgIGJvb2wgaXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsgfQorCitwcml2YXRlOgorICAgIFdlYlBhZ2VH
cm91cFByb3h5KGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIGRhdGEpCisgICAgICAgIDogbV9kYXRh
KGRhdGEpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gQVBJVHlwZTsgfQorCisgICAgV2ViUGFnZUdyb3VwRGF0YSBtX2RhdGE7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhZ2VHcm91cFByb3h5X2gKSW5k
ZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2lu
L1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsNiArNTc2LDE0IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJQYWdlR3Jv
dXBEYXRhLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFNoYXJlZFxXZWJQYWdlR3JvdXBEYXRhLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMjg2LDYgKzEyOTQsMTQgQEAK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViUGFnZS5tZXNzYWdl
cy5pbiINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViUGFnZUdyb3VwUHJveHkuY3BwIg0KKwkJCQkJ
Pg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlBy
b2Nlc3NcV2ViUGFnZVxXZWJQYWdlR3JvdXBQcm94eS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQogCQkJCTxGaWx0ZXINCiAJCQkJCU5hbWU9IndpbiINCiAJCQkJCT4NCkBAIC0xNTIxLDYgKzE1
MzcsMTQgQEAKIAkJCQkJCQk+DQogCQkJCQkJPC9GaWxlPg0KIAkJCQkJCTxGaWxlDQorCQkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRs
ZVBhZ2VHcm91cC5jcHAiDQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUN
CisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxj
XFdLQnVuZGxlUGFnZUdyb3VwLmgiDQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJ
PEZpbGUNCiAJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxl
XEFQSVxjXFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIg0KIAkJCQkJCQk+DQogCQkJCQkJPC9GaWxl
Pg0KQEAgLTE5MDgsNiArMTkzMiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViUGFnZUdyb3VwLmNwcCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vz
c1xXZWJQYWdlR3JvdXAuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJQYWdlTmFtZXNwYWNlLmNwcCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCkBAIC0yMDgyLDYgKzIxMTQsMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmls
ZT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENc
V0tQYWdlR3JvdXAuY3BwIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQor
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlR3JvdXAuaCINCisJ
CQkJCQk+DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cVUlQcm9jZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5jcHAiDQogCQkJCQkJPg0KIAkJCQkJ
PC9GaWxlPg0KSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHJldmlzaW9uIDczMDI0
KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBAIGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxD
XFdLTmF0aXZlRXZlbnQuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAg
ICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS05hdmlnYXRpb25EYXRhLmgiICIk
KFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxV
SVByb2Nlc3NcQVBJXENcV0tQYWdlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJL
aXQyIgorICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlR3JvdXAuaCIg
IiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4u
XFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VOYW1lc3BhY2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1By
ZWZlcmVuY2VzLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhj
b3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCIgIiQo
V0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkBAIC02MCw2ICs2MSw3IEBAIGFsbDoK
ICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1
bmRsZU5vZGVIYW5kbGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAg
ICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5k
bGVOb2RlSGFuZGxlUHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0
MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xX
S0J1bmRsZVBhZ2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAg
eGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQ
YWdlR3JvdXAuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNv
cHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdl
T3ZlcmxheS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29w
eSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVBhZ2VQ
cml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5
IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlUHJpdmF0
ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKSW5kZXg6IFdlYktpdFRv
b2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5t
CShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5k
bGUvV2ViQnVuZGxlTWFpbi5tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIHZvaWQg
V0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmQKICAgICAgICAgMCwKICAgICAgICAg
ZGlkQ3JlYXRlUGFnZSwKICAgICAgICAgd2lsbERlc3Ryb3lQYWdlLAorICAgICAgICAwLCAvLyBk
aWRJbml0aWFsaXplUGFnZUdyb3VwCiAgICAgICAgIGRpZFJlY2lldmVNZXNzYWdlCiAgICAgfTsK
ICAgICBXS0J1bmRsZVNldENsaWVudChidW5kbGUsICZjbGllbnQpOwpJbmRleDogV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVk
QnVuZGxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE1ICs1NCwyMCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6CiAgICAgICAgIHRoaXMsCiAg
ICAgICAgIGRpZENyZWF0ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKKyAgICAgICAg
ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCwKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UKICAgICB9
OwogICAgIFdLQnVuZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIHRlc3QgZnJvbSB0aGUgImluaXRpYWxpemF0aW9uVXNlckRhdGEiLgotICAg
IGFzc2VydChXS0dldFR5cGVJRChpbml0aWFsaXphdGlvblVzZXJEYXRhKSA9PSBXS1N0cmluZ0dl
dFR5cGVJRCgpKTsKLSAgICBXS1N0cmluZ1JlZiB0ZXN0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPihpbml0aWFsaXphdGlvblVzZXJEYXRhKTsKIAotICAgIGluaXRpYWxpemVUZXN0TmFt
ZWQoYnVuZGxlLCBVdGlsOjp0b1NURCh0ZXN0TmFtZSkpOworICAgIGFzc2VydChXS0dldFR5cGVJ
RChpbml0aWFsaXphdGlvblVzZXJEYXRhKSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7Cisg
ICAgV0tEaWN0aW9uYXJ5UmVmIGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSA9IHN0YXRpY19jYXN0
PFdLRGljdGlvbmFyeVJlZj4oaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CisKKyAgICBXS1N0cmlu
Z1JlZiB0ZXN0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlRlc3ROYW1lIikpKTsKKyAgICBXS1R5cGVSZWYgdXNlckRhdGEgPSBXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSwgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlVzZXJEYXRhIikpOworICAgIAorICAgIGluaXRpYWxpemVUZXN0
TmFtZWQoYnVuZGxlLCBVdGlsOjp0b1NURCh0ZXN0TmFtZSksIHVzZXJEYXRhKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVu
ZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTc5
LDYgKzg0LDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjp3aWxsRGVzdHIKICAg
ICBzZWxmLT5tX2N1cnJlbnRUZXN0LT53aWxsRGVzdHJveVBhZ2UoYnVuZGxlLCBwYWdlKTsKIH0K
IAordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZEluaXRpYWxpemVQYWdlR3JvdXAo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKiBzZWxm
ID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpOworICAgIGFzc2VydChzZWxmLT5tX2N1cnJlbnRUZXN0KTsKKyAgICBz
ZWxmLT5tX2N1cnJlbnRUZXN0LT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKGJ1bmRsZSwgcGFnZUdy
b3VwKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNz
YWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC05NCw3ICsxMDYsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROCiAgICAgICAgIHByaW50Zigi
JXNcbiIsICgqaXQpLmZpcnN0LmNfc3RyKCkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlQ29u
dHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3ROYW1lZChXS0J1bmRsZVJlZiBidW5kbGUsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVUZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25zdCBzdGQ6OnN0cmluZyYg
aWRlbnRpZmllciwgV0tUeXBlUmVmIHVzZXJEYXRhKQogewogICAgIENyZWF0ZUluamVjdGVkQnVu
ZGxlVGVzdEZ1bmN0aW9uIGNyZWF0ZVRlc3RGdW5jdGlvbiA9IG1fY3JlYXRlSW5qZWN0ZWRCdW5k
bGVUZXN0RnVuY3Rpb25zW2lkZW50aWZpZXJdOwogICAgIGlmICghY3JlYXRlVGVzdEZ1bmN0aW9u
KSB7CkBAIC0xMDMsNyArMTE1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6Omlu
aXRpYWxpegogICAgIH0KIAogICAgIG1fY3VycmVudFRlc3QgPSBjcmVhdGVUZXN0RnVuY3Rpb24o
aWRlbnRpZmllcik7Ci0gICAgbV9jdXJyZW50VGVzdC0+aW5pdGlhbGl6ZShidW5kbGUpOworICAg
IG1fY3VycmVudFRlc3QtPmluaXRpYWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpyZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVz
dEZ1bmN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyLCBDcmVhdGVJbmplY3RlZEJ1
bmRsZVRlc3RGdW5jdGlvbiBmdW5jdGlvbikKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzMwMjQp
CisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRp
YWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZik7CiAKICAgICB2b2lkIGR1bXBUZXN0TmFtZXMo
KTsKLSAgICB2b2lkIGluaXRpYWxpemVUZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25z
dCBzdGQ6OnN0cmluZyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRlc3ROYW1lZChXS0J1bmRsZVJl
ZiBidW5kbGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKIAogICAg
IHR5cGVkZWYgSW5qZWN0ZWRCdW5kbGVUZXN0KiAoKkNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1
bmN0aW9uKShjb25zdCBzdGQ6OnN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJDcmVhdGVJbmpl
Y3RlZEJ1bmRsZVRlc3RGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyYsIENyZWF0ZUluamVjdGVk
QnVuZGxlVGVzdEZ1bmN0aW9uKTsKQEAgLTUwLDkgKzUwLDEwIEBAIHByaXZhdGU6CiAgICAgSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyKCk7CiAgICAgfkluamVjdGVkQnVuZGxlQ29udHJvbGxlcigp
OwogCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMg
dm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRs
ZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VH
cm91cFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAgc3RkOjptYXA8
c3RkOjpzdHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPiBtX2NyZWF0ZUlu
amVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uczsKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKSW5k
ZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaAko
cmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVu
ZGxlVGVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTEgQEAgY2xhc3MgSW5qZWN0
ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZVRlc3Qo
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VS
ZWYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdL
QnVuZGxlUGFnZVJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3Jv
dXAoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpIHsgfQogCiAgICAgc3RkOjpzdHJpbmcgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDczMDI0KQorKysgV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDEzICszMywyMSBAQAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNw
YWNlIFV0aWwgewogCi1XS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxl
VGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUpCitXS0NvbnRleHRSZWYgY3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaW5qZWN0
ZWRCdW5kbGVQYXRoKEFkb3B0V0ssIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpKTsKICAgICBX
S0NvbnRleHRSZWYgY29udGV4dCA9IFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBh
dGgoaW5qZWN0ZWRCdW5kbGVQYXRoLmdldCgpKTsKIAorICAgIFdLUmV0YWluUHRyPFdLTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IGluaXRpYWxpemF0aW9uRGljdGlvbmFyeShBZG9wdFdLLCBXS011dGFi
bGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB0ZXN0TmFtZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVz
dE5hbWUiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRlc3ROYW1lU3RyaW5nKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRlc3ROYW1lLmNfc3RyKCkpKTsK
LSAgICBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUo
Y29udGV4dCwgdGVzdE5hbWVTdHJpbmcuZ2V0KCkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0o
aW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5LmdldCgpLCB0ZXN0TmFtZUtleS5nZXQoKSwgdGVzdE5h
bWVTdHJpbmcuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZXJEYXRh
S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VyRGF0YSIpKTsK
KyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGluaXRpYWxpemF0aW9uRGljdGlvbmFyeS5nZXQoKSwg
dXNlckRhdGFLZXkuZ2V0KCksIHVzZXJEYXRhKTsKKworICAgIFdLQ29udGV4dFNldEluaXRpYWxp
emF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShjb250ZXh0LCBpbml0aWFsaXphdGlvbkRp
Y3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CkluZGV4OiBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCShyZXZpc2lvbiA3MzAy
NCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgVXRpbCB7CiAvLyBSdW5zIGEg
cGxhdGZvcm0gcnVubG9vcCB1bnRpbCB0aGUgJ2RvbmUnIGlzIHRydWUuIAogdm9pZCBydW4oYm9v
bCogZG9uZSk7CiAKLVdLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJik7CitXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dEZvcklu
amVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYsIFdLVHlwZVJlZiB1c2VyRGF0YSA9
IDApOwogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKTsKIFdLVVJMUmVm
IGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBl
eHRlbnNpb24pOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZp
ZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2Vi
Vmlldy5oCShyZXZpc2lvbiA3MzAyNCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgV2lu
ZG93TWVzc2FnZU9ic2VydmVyOwogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgewogcHVibGljOgot
ICAgIFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYpOworICAgIFBsYXRmb3JtV2Vi
VmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflBsYXRm
b3JtV2ViVmlldygpOwogCiAgICAgV0tQYWdlUmVmIHBhZ2UoKTsKSW5kZXg6IFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0
Q3Jhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCShyZXZpc2lvbiA3
MzAyNCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVu
dFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0
NSwxMSBAQCBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmCiAKIFRFU1Qo
V2ViS2l0MiwgRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdCkKIHsKLSAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENy
YXNoVGVzdCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwKEFk
b3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkRvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3RQYWdlR3Jv
dXAiKSkpOyAKKworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdL
LCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJEb2N1bWVudFN0YXJ0
VXNlclNjcmlwdEFsZXJ0Q3Jhc2hUZXN0IiwgcGFnZUdyb3VwLmdldCgpKSk7CiAgICAgV0tSZXRh
aW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5h
bWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFn
ZU5hbWVzcGFjZS5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50
IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3Rh
cnRVc2VyU2NyaXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFs
ZXJ0Q3Jhc2hfQnVuZGxlLmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNo
X0J1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwxMiBAQAogICovCiAKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKLSNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlU2NyaXB0
V29ybGQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XZWJLaXQyLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIApAQCAtMzgsMTEgKzQwLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlKQorICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRh
KQogICAgIHsKKyAgICAgICAgYXNzZXJ0KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS0J1bmRs
ZVBhZ2VHcm91cEdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwID0gc3RhdGljX2Nhc3Q8V0tCdW5kbGVQYWdlR3JvdXBSZWY+KHVzZXJEYXRhKTsKKwog
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhbGVydCgnYW4gYWxlcnQnKTsiKSk7Ci0gICAgICAgIFdL
QnVuZGxlQWRkVXNlclNjcmlwdChidW5kbGUsIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3Js
ZCgpLCBzb3VyY2UuZ2V0KCksIDAsIDAsIDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dL
SW5qZWN0SW5BbGxGcmFtZXMpOworICAgICAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVuZGxl
LCBwYWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpLCBzb3VyY2UuZ2V0
KCksIDAsIDAsIDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5BbGxGcmFt
ZXMpOwogICAgIH0KKworcHJpdmF0ZToKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VH
cm91cDsKIH07CiAKIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERvY3VtZW50
U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3Q+IHJlZ2lzdHJhcigiRG9jdW1lbnRTdGFydFVz
ZXJTY3JpcHRBbGVydENyYXNoVGVzdCIpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gNzMwMjQpCisr
KyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJl
ZiBuYW1lc3BhY2VSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VO
YW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQogewogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7Ci0gICAg
bV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBwYWdlTmFtZXNwYWNl
UmVmOm5hbWVzcGFjZVJlZl07CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6cmVjdCBwYWdlTmFtZXNwYWNlUmVmOnBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVm
OnBhZ2VHcm91cFJlZl07CiAKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChy
ZWN0LCAtMTAwMDAsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVd
LnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKICAgICBtX3dpbmRvdyA9
IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6WUVTXTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NiwxNCArNTYsMTQgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlZ2lzdGVyV2luZG93
Q2xhcwogICAgIDo6UmVnaXN0ZXJDbGFzc0V4Vygmd25kQ2xhc3MpOwogfQogCi1QbGF0Zm9ybVdl
YlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmKQor
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVz
cGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogICAgIDogbV9wYXJlbnRXaW5k
b3dNZXNzYWdlT2JzZXJ2ZXIoMCkKIHsKICAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CiAKICAg
ICBSRUNUIHZpZXdSZWN0ID0gezAsIDAsIDgwMCwgNjAwfTsKICAgICBtX3dpbmRvdyA9IENyZWF0
ZVdpbmRvd0V4VygwLCBob3N0V2luZG93Q2xhc3NOYW1lLCBMIlRlc3RXZWJLaXRBUEkiLCBXU19P
VkVSTEFQUEVEV0lORE9XLCB2aWV3UmVjdC5sZWZ0LCB2aWV3UmVjdC50b3AsIHZpZXdSZWN0LnJp
Z2h0LCB2aWV3UmVjdC5ib3R0b20sIDAsIDAsIDAsIHRoaXMpOwotICAgIG1fdmlldyA9IFdLVmll
d0NyZWF0ZSh2aWV3UmVjdCwgbmFtZXNwYWNlUmVmLCBtX3dpbmRvdyk7CisgICAgbV92aWV3ID0g
V0tWaWV3Q3JlYXRlKHZpZXdSZWN0LCBuYW1lc3BhY2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5k
b3cpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQpJbmRleDogV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDczMDI0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTdHJpbmdG
dW5jdGlvbnMuaCIKICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogI2luY2x1ZGUgPGNzdGRp
bz4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNiArNjEsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6d2lsbERlc3Ryb3lQYWdlKFdLQgog
ICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT53aWxsRGVzdHJveVBhZ2UocGFnZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmRpZEluaXRpYWxpemVQYWdlR3JvdXAoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VH
cm91cFJlZiBwYWdlR3JvdXAsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGlj
X2Nhc3Q8SW5qZWN0ZWRCdW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZEluaXRpYWxpemVQYWdlR3JvdXAocGFnZUdyb3VwKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQog
ewogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwpA
QCAtNzUsNiArODAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxl
CiAgICAgICAgIHRoaXMsCiAgICAgICAgIGRpZENyZWF0ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0
cm95UGFnZSwKKyAgICAgICAgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCwKICAgICAgICAgZGlkUmVj
ZWl2ZU1lc3NhZ2UKICAgICB9OwogICAgIFdLQnVuZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xp
ZW50KTsKQEAgLTk5LDYgKzEwNSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJv
eVBhZ2UoV0tCCiAgICAgfQogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRJbml0aWFsaXpl
UGFnZUdyb3VwKFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBtX3BhZ2VH
cm91cCA9IHBhZ2VHcm91cDsKK30KKwogSW5qZWN0ZWRCdW5kbGVQYWdlKiBJbmplY3RlZEJ1bmRs
ZTo6cGFnZSgpIGNvbnN0CiB7CiAgICAgLy8gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGhhdmUgdGhl
IFVJIHByb2Nlc3Mgc2VuZCBvdmVyIGEgcmVmZXJlbmNlIHRvIHRoZSBtYWluCkBAIC0xMzcsNyAr
MTQ4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKCkKICAgICBXS0J1bmRs
ZVNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKG1fYnVuZGxlLCBmYWxzZSk7CiAgICAgV0tCdW5k
bGVSZW1vdmVBbGxWaXNpdGVkTGlua3MobV9idW5kbGUpOwogCi0gICAgV0tCdW5kbGVSZW1vdmVB
bGxVc2VyQ29udGVudChtX2J1bmRsZSk7CisgICAgV0tCdW5kbGVSZW1vdmVBbGxVc2VyQ29udGVu
dChtX2J1bmRsZSwgbV9wYWdlR3JvdXApOwogCiAgICAgcGFnZSgpLT5yZXNldCgpOwogfQpJbmRl
eDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZShX
S0J1bmRsZVJlZik7CiAKICAgICBXS0J1bmRsZVJlZiBidW5kbGUoKSBjb25zdCB7IHJldHVybiBt
X2J1bmRsZTsgfQorICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUdyb3VwOyB9CiAKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0
VGVzdENvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheW91dFRlc3RDb250cm9sbGVyLmdldCgpOyB9
CiAgICAgR0NDb250cm9sbGVyKiBnY0NvbnRyb2xsZXIoKSB7IHJldHVybiBtX2djQ29udHJvbGxl
ci5nZXQoKTsgfQpAQCAtNzAsMTUgKzcxLDE4IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9p
ZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAg
c3RhdGljIHZvaWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXS0J1bmRsZVJlZiwgV0tCdW5kbGVQ
YWdlR3JvdXBSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogICAgIHZvaWQg
ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lQYWdl
KFdLQnVuZGxlUGFnZVJlZik7CisgICAgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVu
ZGxlUGFnZUdyb3VwUmVmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCiAgICAgdm9pZCBiZWdpblRl
c3RpbmcoKTsKIAogICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOworICAgIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIG1fcGFnZUdyb3VwOwogICAgIFZlY3RvcjxPd25QdHI8SW5qZWN0ZWRCdW5kbGVQYWdl
PiA+IG1fcGFnZXM7CiAKICAgICBSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IG1fbGF5b3V0
VGVzdENvbnRyb2xsZXI7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNzMwMjQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc0LDcgKzE3NCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlV0sgPSB0b1dLKHNvdXJjZSk7CiAg
ICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4gc2NyaXB0V29ybGQoQWRvcHRX
SywgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpOwogCi0gICAgV0tCdW5kbGVBZGRV
c2VyU2NyaXB0KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgc2NyaXB0V29ybGQu
Z2V0KCksIHNvdXJjZVdLLmdldCgpLCAwLCAwLCAwLAorICAgIFdLQnVuZGxlQWRkVXNlclNjcmlw
dChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlR3JvdXAoKSwgc2NyaXB0V29ybGQuZ2V0KCksIHNvdXJjZVdLLmdldCgpLCAwLCAw
LCAwLAogICAgICAgICAocnVuQXRTdGFydCA/IGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCA6IGtX
S0luamVjdEF0RG9jdW1lbnRFbmQpLAogICAgICAgICAoYWxsRnJhbWVzID8ga1dLSW5qZWN0SW5B
bGxGcmFtZXMgOiBrV0tJbmplY3RJblRvcEZyYW1lT25seSkpOwogfQpAQCAtMTg0LDcgKzE4NCw3
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVMKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc291cmNlV0sgPSB0b1dLKHNvdXJjZSk7CiAgICAgV0tSZXRhaW5Q
dHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4gc2NyaXB0V29ybGQoQWRvcHRXSywgV0tCdW5kbGVT
Y3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpOwogCi0gICAgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVl
dChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIHNjcmlwdFdvcmxkLmdldCgpLCBz
b3VyY2VXSy5nZXQoKSwgMCwgMCwgMCwKKyAgICBXS0J1bmRsZUFkZFVzZXJTdHlsZVNoZWV0KElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBhZ2VHcm91cCgpLCBzY3JpcHRXb3JsZC5nZXQoKSwgc291cmNlV0suZ2V0KCksIDAsIDAsIDAs
CiAgICAgICAgIChhbGxGcmFtZXMgPyBrV0tJbmplY3RJbkFsbEZyYW1lcyA6IGtXS0luamVjdElu
VG9wRnJhbWVPbmx5KSk7CiB9CiAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRDYW5PcGVuV2luCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBXS0J1bmRsZU92ZXJyaWRl
WFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5i
dW5kbGUoKSwgdHJ1ZSk7CisgICAgV0tCdW5kbGVPdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9y
VGVzdFJ1bm5lcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5wYWdlR3JvdXAoKSwgdHJ1ZSk7CiB9CiAKIHVuc2lnbmVkIExheW91dFRl
c3RDb250cm9sbGVyOjp3aW5kb3dDb3VudCgpCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9u
IDczMDI0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJW
aWV3V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBQbGF0Zm9ybVdlYlZp
ZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOCiAKICAgICBSRUNUIHZpZXdSZWN0ID0gezAsIDAs
IDgwMCwgNjAwfTsKICAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4VygwLCBob3N0V2luZG93
Q2xhc3NOYW1lLCBMIldlYktpdFRlc3RSdW5uZXIiLCBXU19PVkVSTEFQUEVEV0lORE9XLCAwIC8q
WE9GRlNFVCovLCAwIC8qWU9GRlNFVCovLCB2aWV3UmVjdC5yaWdodCwgdmlld1JlY3QuYm90dG9t
LCAwLCAwLCBHZXRNb2R1bGVIYW5kbGUoMCksIDApOwotICAgIG1fdmlldyA9IFdLVmlld0NyZWF0
ZSh2aWV3UmVjdCwgbmFtZXNwYWNlUmVmLCBtX3dpbmRvdyk7CisgICAgbV92aWV3ID0gV0tWaWV3
Q3JlYXRlKHZpZXdSZWN0LCBuYW1lc3BhY2VSZWYsIDAgLypwYWdlR3JvdXBSZWYqLywgbV93aW5k
b3cpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75292</attachid>
            <date>2010-12-01 10:59:36 -0800</date>
            <delta_ts>2010-12-01 13:11:53 -0800</delta_ts>
            <desc>Lets try windows [DO NOT REVIEW]</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>117002</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQy
LnBybwkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDksNiArMjQ5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYk5hdmln
YXRpb25EYXRhU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dlYk51bWJlci5oIFwKICAgICBTaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwKKyAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0
YS5oIFwKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVtLmggXAogICAgIFNoYXJlZC9XZWJQcmVmZXJl
bmNlc1N0b3JlLmggXAogICAgIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
XApAQCAtMjcwLDYgKzI3MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S0luc3BlY3Rvci5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VHcm91cC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmggXApAQCAtMzE2LDYgKzMxOCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25E
YXRhLmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCisgICAg
VUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFj
ZS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJQ
b2xpY3lDbGllbnQuaCBcCkBAIC0zMzMsNiArMzM2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRl
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgg
XAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAu
aCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmggXApAQCAtMzc3LDYgKzM4MSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggXAor
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBcCiAgICAgJCRXRUJLSVQyX0dFTkVSQVRFRF9IRUFERVJTCiAKQEAg
LTQyNCw2ICs0MjksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgXAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKKyAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5j
cHAgXAogICAgIFNoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIFwKICAgICBTaGFyZWQv
V2ViUG9wdXBJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwK
QEAgLTQ0OSw2ICs0NTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tJ
bnNwZWN0b3IuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNw
cCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nl
c3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNwcCBcCkBAIC00ODksNiArNDk2LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vz
cy9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAgXApAQCAtNTEzLDYgKzUy
MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIFwK
QEAgLTU2Niw2ICs1NzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3Rv
clF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUXQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL3F0L1dlYlBhZ2VRdC5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDczMDQz
KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlSW5zcGVjdG9yLAogICAgICAgICBUeXBlTmF2
aWdhdGlvbkRhdGEsCiAgICAgICAgIFR5cGVQYWdlLAorICAgICAgICBUeXBlUGFnZUdyb3VwLAog
ICAgICAgICBUeXBlUGFnZU5hbWVzcGFjZSwKICAgICAgICAgVHlwZVByZWZlcmVuY2VzLAogCkBA
IC03NSw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQs
CiAgICAgICAgIFR5cGVCdW5kbGVOb2RlSGFuZGxlLAogICAgICAgICBUeXBlQnVuZGxlUGFnZSwK
KyAgICAgICAgVHlwZUJ1bmRsZVBhZ2VHcm91cCwKICAgICAgICAgVHlwZUJ1bmRsZVBhZ2VPdmVy
bGF5LAogICAgICAgICBUeXBlQnVuZGxlUmFuZ2VIYW5kbGUsCiAgICAgICAgIFR5cGVCdW5kbGVT
Y3JpcHRXb3JsZCwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAKLSNpbmNsdWRlICJBcmd1bWVu
dEVuY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShDCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHZpZXdTaXplKTsKICAgICBlbmNvZGVyLT5l
bmNvZGUoc3RvcmUpOwogICAgIGVuY29kZXItPmVuY29kZShkcmF3aW5nQXJlYUluZm8pOwotICAg
IGVuY29kZXItPmVuY29kZSh2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHBhZ2VHcm91cERhdGEpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGVuY29kZXIt
PmVuY29kZShyZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihuYXRpdmVXaW5kb3cpKTsKQEAgLTQ5
LDcgKzQ5LDcgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5k
cmF3aW5nQXJlYUluZm8pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocGFyYW1ldGVycy52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpCisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgUExBVEZPUk0oV0lOKQpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyc19oCiAKICNpbmNsdWRlICJE
cmF3aW5nQXJlYUluZm8uaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgog
CkBAIC00NCw3ICs0NSw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplOwogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmU7CiAgICAgRHJhd2luZ0FyZWFJbmZvIGRyYXdpbmdBcmVhSW5mbzsKLSAgICBib29sIHZpc2li
bGVUb0luamVjdGVkQnVuZGxlOworICAgIFdlYlBhZ2VHcm91cERhdGEgcGFnZUdyb3VwRGF0YTsK
KwogI2lmIFBMQVRGT1JNKFdJTikKICAgICBIV05EIG5hdGl2ZVdpbmRvdzsKICNlbmRpZgpJbmRl
eDogV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCisKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJQYWdlR3JvdXBEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIHJldHVybiBlbmNvZGVyLT5lbmNvZGUo
Q29yZUlQQzo6SW4oaWRlbnRpZmVyLCBwYWdlR3JvdXBJRCwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5k
bGUpKTsKK30KKworYm9vbCBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQYWdlR3JvdXBEYXRhJiBkYXRhKQoreworICAgIHJldHVy
biBkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGRhdGEuaWRlbnRpZmVyLCBkYXRhLnBhZ2VH
cm91cElELCBkYXRhLnZpc2libGVUb0luamVjdGVkQnVuZGxlKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZUdyb3VwRGF0YV9oCisjZGVm
aW5lIFdlYlBhZ2VHcm91cERhdGFfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CisgICAg
Y2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0
IFdlYlBhZ2VHcm91cERhdGEgeworICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqLCBXZWJQYWdlR3JvdXBEYXRhJik7CisKKyAgICBTdHJpbmcgaWRlbnRpZmVyOworICAg
IHVpbnQ2NF90IHBhZ2VHcm91cElEOworICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworCisjZW5kaWYgLy8gV2ViUGFnZUdyb3Vw
RGF0YV9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBA
QCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0ZyYW1lUG9saWN5CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0luc3BlY3RvciogV0tJbnNwZWN0b3JSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1BhZ2VHcm91cCogV0tQYWdlR3JvdXBSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1BhZ2VOYW1lc3BhY2UqIFdLUGFnZU5hbWVzcGFjZVJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMqIFdLUHJlZmVyZW5jZXNSZWY7CiAK
QEAgLTc3LDE0ICs3OCwxNSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVu
Y2VzCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZSogV0tCdW5kbGVSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdCogV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZjsKK3R5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiog
V0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGVGcmFtZSogV0tCdW5kbGVGcmFtZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLQnVuZGxlSGl0VGVzdFJlc3VsdCogV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5v
ZGVIYW5kbGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZVBhZ2UqIFdL
QnVuZGxlUGFnZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlUGFnZUdy
b3VwKiBXS0J1bmRsZVBhZ2VHcm91cFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlUGFnZU92ZXJsYXkqIFdLQnVuZGxlUGFnZU92ZXJsYXlSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZVJhbmdlSGFuZGxlKiBXS0J1bmRsZVJhbmdlSGFuZGxlUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVTY3JpcHRXb3JsZCogV0tCdW5k
bGVTY3JpcHRXb3JsZFJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiogV0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmOwogCiAj
dW5kZWYgV0tfRVhQT1JUCiAjaWYgZGVmaW5lZChXS19OT19FWFBPUlQpCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IldlYkNvbnRleHRNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0VXNlck1lc3Nh
Z2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCkBAIC00MSw4ICs0Miw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2gu
aD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093bkFy
cmF5UHRyLmg+CiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgpAQCAtODAsNiArNzksNyBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFdlYkNv
bnRleHQ6OmNyZWF0CiAgICAgCiBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBw
cm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgIDogbV9w
cm9jZXNzTW9kZWwocHJvY2Vzc01vZGVsKQorICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBh
Z2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxlUGF0aChpbmplY3RlZEJ1
bmRsZVBhdGgpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIodGhpcykKICAgICAsIG1fY2Fj
aGVNb2RlbChDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpCkBAIC0yMDcsMTAgKzIwNywxNCBAQCB2
b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jCiAgICAgbV9wcm9jZXNzID0g
MDsKIH0KIAotV2ViUGFnZVByb3h5KiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFdlYlBhZ2VO
YW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UpCitXZWJQYWdlUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0
ZVdlYlBhZ2UoV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2ViUGFnZUdyb3VwKiBw
YWdlR3JvdXApCiB7CiAgICAgZW5zdXJlV2ViUHJvY2VzcygpOwotICAgIHJldHVybiBtX3Byb2Nl
c3MtPmNyZWF0ZVdlYlBhZ2UocGFnZU5hbWVzcGFjZSk7CisKKyAgICBpZiAoIXBhZ2VHcm91cCkK
KyAgICAgICAgcGFnZUdyb3VwID0gbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpOworCisgICAgcmV0
dXJuIG1fcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlTmFtZXNwYWNlLCBwYWdlR3JvdXApOwog
fQogCiB2b2lkIFdlYkNvbnRleHQ6OnJlbGF1bmNoUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHN0cnVjdCBX
S0NvbnRleHRTdGF0aXN0aWNzOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2Fk
UHJveHk7CitjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CkBAIC03Miw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1By
b3h5Kik7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKLSAg
ICBXZWJQYWdlUHJveHkqIGNyZWF0ZVdlYlBhZ2UoV2ViUGFnZU5hbWVzcGFjZSopOworICAgIFdl
YlBhZ2VQcm94eSogY3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFnZUdyb3Vw
KiA9IDApOwogCiAgICAgdm9pZCByZWxhdW5jaFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCkBAIC0x
NjAsNiArMTYxLDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFdlYlBhZ2VOYW1lc3BhY2UqPiBt
X3BhZ2VOYW1lc3BhY2VzOwogICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNl
czsKIAorICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IG1fZGVmYXVsdFBhZ2VHcm91cDsKKwogICAg
IFJlZlB0cjxBUElPYmplY3Q+IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
OwogICAgIFN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0aDsKICAgICBXZWJDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQgbV9pbmplY3RlZEJ1bmRsZUNsaWVudDsKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oCShyZXZpc2lvbiA3MzA0
MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiVXNlck1lc3NhZ2VDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5o
IgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cERhdGEu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0z
Myw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gQWRkcwogLy8gLSBQYWdlIC0+IEJ1
bmRsZVBhZ2UKIC8vIC0gRnJhbWUgLT4gQnVuZGxlRnJhbWUKKy8vIC0gUGFnZUdyb3VwIC0+IEJ1
bmRsZVBhZ2VHcm91cAogCiBjbGFzcyBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyIDogcHVi
bGljIFVzZXJNZXNzYWdlRW5jb2RlcjxXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyPiB7CiBw
dWJsaWM6CkBAIC02MCw2ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoZnJhbWUtPmZyYW1lSUQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
ICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVBhZ2VHcm91cDogeworICAgICAgICAgICAgV2Vi
UGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBzdGF0aWNfY2FzdDxXZWJQYWdlR3JvdXAqPihtX3Jvb3Qp
OworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhZ2VHcm91cC0+ZGF0YSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzAsNiArNzgsNyBA
QCBwdWJsaWM6CiAvLyBBZGRzCiAvLyAgIC0gUGFnZSAtPiBCdW5kbGVQYWdlCiAvLyAgIC0gRnJh
bWUgLT4gQnVuZGxlRnJhbWUKKy8vICAgLSBQYWdlR3JvdXAgLT4gQnVuZGxlUGFnZUdyb3VwCiAK
IGNsYXNzIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VE
ZWNvZGVyPFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXI+IHsKIHB1YmxpYzoKQEAgLTExMSw2
ICsxMjAsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgY29kZXIubV9yb290ID0gY29kZXIubV9j
b250ZXh0LT5wcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdlR3JvdXA6
IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IHBhZ2VHcm91cElEOworICAgICAgICAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFnZUdyb3VwSUQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlBhZ2VHcm91cDo6Z2V0KHBhZ2VHcm91
cElEKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldl
YlBhZ2VHcm91cC5oIgogCiAjZGVmaW5lIERJU0FCTEVfTk9UX0lNUExFTUVOVEVEX1dBUk5JTkdT
IDEKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMzksNiArNDAsMTIgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitXZWJQYWdlR3JvdXAq
IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3JvdXAoKQoreworICAgIHN0YXRpYyBX
ZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCJfX1dlYkluc3Bl
Y3RvclBhZ2VHcm91cF9fIiwgZmFsc2UpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gcGFnZUdyb3Vw
OworfQorCiBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5
KiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2lzVmlzaWJsZShmYWxzZSkKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAkocmV2aXNpb24gNzMwNDMpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIFdLVmlldzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIHN0cnVjdCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOwogCkBAIC0xMDIsNiArMTAzLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNyZWF0ZUluc3BlY3RvclBhZ2UodWludDY0X3QmIGluc3BlY3RvclBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkTG9hZEluc3BlY3RvclBhZ2UoKTsKIAor
ICAgIHN0YXRpYyBXZWJQYWdlR3JvdXAqIGluc3BlY3RvclBhZ2VHcm91cCgpOworCiAgICAgV2Vi
UGFnZVByb3h5KiBtX3BhZ2U7CiAKICAgICBib29sIG1faXNWaXNpYmxlOwpJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUdyb3VwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VHcm91cElEKCkKK3sKKyAgICBz
dGF0aWMgdWludDY0X3QgdW5pcXVlUGFnZUdyb3VwSUQgPSAxOworICAgIHJldHVybiB1bmlxdWVQ
YWdlR3JvdXBJRCsrOworfQorCit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VHcm91
cCo+IFdlYlBhZ2VHcm91cE1hcDsKKworc3RhdGljIFdlYlBhZ2VHcm91cE1hcCYgd2ViUGFnZUdy
b3VwTWFwKCkKK3sKKyAgICBzdGF0aWMgV2ViUGFnZUdyb3VwTWFwIG1hcDsKKyAgICByZXR1cm4g
bWFwOworfQorCisKK1Bhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBXZWJQYWdlR3JvdXA6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUp
Cit7CisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gYWRvcHRSZWYobmV3IFdl
YlBhZ2VHcm91cChpZGVudGlmaWVyLCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpOworCisgICAg
d2ViUGFnZUdyb3VwTWFwKCkuc2V0KHBhZ2VHcm91cC0+cGFnZUdyb3VwSUQoKSwgcGFnZUdyb3Vw
LmdldCgpKTsKKworICAgIHJldHVybiBwYWdlR3JvdXAucmVsZWFzZSgpOworfQorCitXZWJQYWdl
R3JvdXAqIFdlYlBhZ2VHcm91cDo6Z2V0KHVpbnQ2NF90IHBhZ2VHcm91cElEKQoreworICAgIHJl
dHVybiB3ZWJQYWdlR3JvdXBNYXAoKS5nZXQocGFnZUdyb3VwSUQpOworfQorCitXZWJQYWdlR3Jv
dXA6OldlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRv
SW5qZWN0ZWRCdW5kbGUpCit7CisgICAgbV9kYXRhLnBhZ2VHcm91cElEID0gZ2VuZXJhdGVQYWdl
R3JvdXBJRCgpOworICAgIGlmICghaWRlbnRpZmllci5pc051bGwoKSkKKyAgICAgICAgbV9kYXRh
LmlkZW50aWZlciA9IGlkZW50aWZpZXI7CisgICAgZWxzZQorICAgICAgICBtX2RhdGEuaWRlbnRp
ZmVyID0gbV9kYXRhLmlkZW50aWZlciA9IG1ha2VTdHJpbmcoIl9fdW5pcXVlUGFnZUdyb3VwSUQt
IiwgU3RyaW5nOjpudW1iZXIobV9kYXRhLnBhZ2VHcm91cElEKSk7CisgICAgbV9kYXRhLnZpc2li
bGVUb0luamVjdGVkQnVuZGxlID0gdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7Cit9CisKK1dlYlBh
Z2VHcm91cDo6fldlYlBhZ2VHcm91cCgpCit7CisgICAgd2ViUGFnZUdyb3VwTWFwKCkucmVtb3Zl
KHBhZ2VHcm91cElEKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZUdyb3VwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlBhZ2VHcm91cF9oCisjZGVmaW5lIFdlYlBhZ2VHcm91cF9oCisKKyNpbmNsdWRl
ICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VH
cm91cCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBl
IEFQSVR5cGUgPSBUeXBlUGFnZUdyb3VwOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFn
ZUdyb3VwPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyID0gU3RyaW5nKCksIGJvb2wg
dmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVlKTsKKyAgICBzdGF0aWMgV2ViUGFnZUdyb3Vw
KiBnZXQodWludDY0X3QgcGFnZUdyb3VwSUQpOworCisgICAgdmlydHVhbCB+V2ViUGFnZUdyb3Vw
KCk7CisKKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuaWRlbnRpZmVyOyB9CisgICAgdWludDY0X3QgcGFnZUdyb3VwSUQoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEucGFnZUdyb3VwSUQ7IH0KKworICAgIGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIGRh
dGEoKSB7IHJldHVybiBtX2RhdGE7OyB9CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZUdyb3VwKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7CisK
KyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAg
IFdlYlBhZ2VHcm91cERhdGEgbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJQYWdlR3JvdXBfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZU5hbWVzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5h
bWVzcGFjZS5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZU5hbWVzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDkgQEAgV2ViUGFnZU5h
bWVzcGFjZTo6fldlYlBhZ2VOYW1lc3BhY2UoKQogI2VuZGlmCiB9CiAKLVdlYlBhZ2VQcm94eSog
V2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlV2ViUGFnZSgpCitXZWJQYWdlUHJveHkqIFdlYlBhZ2VO
YW1lc3BhY2U6OmNyZWF0ZVdlYlBhZ2UoV2ViUGFnZUdyb3VwKiBncm91cCkKIHsKLSAgICByZXR1
cm4gbV9jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMpOworICAgIHJldHVybiBtX2NvbnRleHQt
PmNyZWF0ZVdlYlBhZ2UodGhpcywgZ3JvdXApOwogfQogCiB2b2lkIFdlYlBhZ2VOYW1lc3BhY2U6
OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VO
YW1lc3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNw
YWNlLmgJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVz
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBXS0NvbnRleHRT
dGF0aXN0aWNzOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbnRleHQ7CitjbGFz
cyBXZWJQYWdlR3JvdXA7CiAKIGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2UgOiBwdWJsaWMgQVBJT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
V2ViUGFnZU5hbWVzcGFjZSgpOwogCi0gICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQYWdlKCk7
ICAgIAorICAgIFdlYlBhZ2VQcm94eSogY3JlYXRlV2ViUGFnZShXZWJQYWdlR3JvdXAqKTsKIAog
ICAgIFdlYkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQtPnByb2Nlc3MoKTsgfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZp
c2lvbiA3MzA0MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJXZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwLmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJX
ZWJQb3B1cEl0ZW0uaCIKQEAgLTgxLDE0ICs4MywxNSBAQCB2b2lkIGludmFsaWRhdGVDYWxsYmFj
a01hcChIYXNoTWFwPHVpbnQ2CiAgICAgbWFwLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFt
ZXNwYWNlLCB1aW50NjRfdCBwYWdlSUQpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFn
ZVByb3h5OjpjcmVhdGUoV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2ViUGFnZUdy
b3VwKiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlBhZ2VQcm94eShwYWdlTmFtZXNwYWNlLCBwYWdlSUQpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlBhZ2VQcm94eShwYWdlTmFtZXNwYWNlLCBwYWdlR3JvdXAsIHBhZ2VJRCkp
OwogfQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwYWNlKiBwYWdl
TmFtZXNwYWNlLCB1aW50NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShX
ZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwg
dWludDY0X3QgcGFnZUlEKQogICAgIDogbV9wYWdlQ2xpZW50KDApCiAgICAgLCBtX3BhZ2VOYW1l
c3BhY2UocGFnZU5hbWVzcGFjZSkKKyAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKICAgICAs
IG1fbWFpbkZyYW1lKDApCiAgICAgLCBtX2VzdGltYXRlZFByb2dyZXNzKDAuMCkKICAgICAsIG1f
aXNJbldpbmRvdyhmYWxzZSkKQEAgLTk2LDcgKzk5LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoV2ViUGFnZU5hbWVzcAogICAgICwgbV90ZXh0Wm9vbUZhY3RvcigxKQogICAgICwgbV9w
YWdlWm9vbUZhY3RvcigxKQogICAgICwgbV92aWV3U2NhbGVGYWN0b3IoMSkKLSAgICAsIG1fdmlz
aWJsZVRvSW5qZWN0ZWRCdW5kbGUodHJ1ZSkKICAgICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwg
bV9pc0Nsb3NlZChmYWxzZSkKICAgICAsIG1faW5EZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShmYWxz
ZSkKQEAgLTE0OTUsNyArMTQ5Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLnZpZXdTaXplID0gc2l6ZTsKICAgICBwYXJhbWV0ZXJz
LnN0b3JlID0gcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCktPnByZWZlcmVuY2VzKCktPnN0b3Jl
KCk7CiAgICAgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUluZm8gPSBtX2RyYXdpbmdBcmVhLT5pbmZv
KCk7Ci0gICAgcGFyYW1ldGVycy52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IG1fdmlzaWJsZVRv
SW5qZWN0ZWRCdW5kbGU7CisgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9wYWdlR3Jv
dXAtPmRhdGEoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBwYXJhbWV0ZXJzLm5hdGl2ZVdp
bmRvdyA9IG1fcGFnZUNsaWVudC0+bmF0aXZlV2luZG93KCk7CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDEzIEBAIGNsYXNzIFdlYkRhdGE7
CiBjbGFzcyBXZWJFZGl0Q29tbWFuZFByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNs
YXNzIFdlYk1vdXNlRXZlbnQ7CitjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlTmFt
ZXNwYWNlOwogY2xhc3MgV2ViUG9wdXBNZW51UHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0cnVjdCBQbGF0
Zm9ybVBvcHVwTWVudURhdGE7Ci1zdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBvcHVwSXRlbTsKIApAQCAt
MTAzLDcgKzEwMyw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUElPYmplY3Qgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlUGFnZTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFdlYlBhZ2VOYW1lc3BhY2Uq
LCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4g
Y3JlYXRlKFdlYlBhZ2VOYW1lc3BhY2UqLCBXZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQp
OwogCiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKQEAgLTExNSw5ICsxMTUsNiBAQCBw
dWJsaWM6CiAgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEoKSB7IHJldHVybiBtX2Ry
YXdpbmdBcmVhLmdldCgpOyB9CiAgICAgdm9pZCBzZXREcmF3aW5nQXJlYShQYXNzT3duUHRyPERy
YXdpbmdBcmVhUHJveHk+KTsKIAotICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoKSBj
b25zdCB7IHJldHVybiBtX3Zpc2libGVUb0luamVjdGVkQnVuZGxlOyB9Ci0gICAgdm9pZCBzZXRW
aXNpYmxlVG9JbmplY3RlZEJ1bmRsZShib29sIHZpc2libGUpIHsgbV92aXNpYmxlVG9JbmplY3Rl
ZEJ1bmRsZSA9IHZpc2libGU7IH0KLQogICAgIFdlYkJhY2tGb3J3YXJkTGlzdCogYmFja0Zvcndh
cmRMaXN0KCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3QuZ2V0KCk7IH0KIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCkBAIC0yNDIsNiArMjM5LDggQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcygpIGNvbnN0OwogICAgIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VOYW1lc3BhY2UuZ2V0KCk7IH0KIAorICAgIFdlYlBh
Z2VHcm91cCogcGFnZUdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0K
KwogICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgLy8gUkVNT1ZFOiBGb3IgZGVtbyBwdXJwb3Nl
cyBvbmx5LgpAQCAtMjY0LDcgKzI2Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIFdlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAg
ICBXZWJQYWdlUHJveHkoV2ViUGFnZU5hbWVzcGFjZSosIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90
IHBhZ2VJRCk7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5
cGU7IH0KIApAQCAtMzg4LDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8RHJhd2lu
Z0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4g
bV9wYWdlTmFtZXNwYWNlOworICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOwog
ICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX21haW5GcmFtZTsKICAgICBSZWZQdHI8V2ViRnJh
bWVQcm94eT4gbV9mb2N1c2VkRnJhbWU7CiAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NiwxMiArMTM2LDEyIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUK
ICAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpLmdldCgpOwogfQogCi1XZWJQYWdlUHJv
eHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdl
TmFtZXNwYWNlKQorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2Uo
V2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAp
CiB7CiAgICAgQVNTRVJUKHBhZ2VOYW1lc3BhY2UtPnByb2Nlc3MoKSA9PSB0aGlzKTsKIAogICAg
IHVuc2lnbmVkIHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7Ci0gICAgUmVmUHRyPFdlYlBhZ2VQ
cm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VOYW1lc3BhY2UsIHBhZ2VJ
RCk7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlKHBhZ2VOYW1lc3BhY2UsIHBhZ2VHcm91cCwgcGFnZUlEKTsKICAgICBtX3BhZ2VNYXAuc2V0
KHBhZ2VJRCwgd2ViUGFnZSk7CiAgICAgcmV0dXJuIHdlYlBhZ2UuZ2V0KCk7CiB9CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsK
IGNsYXNzIFdlYkNvbnRleHQ7CitjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlTmFt
ZXNwYWNlOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKQEAgLTc3LDcgKzc4LDcg
QEAgcHVibGljOgogICAgIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIo
KTsgfQogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7
Ci0gICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQYWdlKFdlYlBhZ2VOYW1lc3BhY2UqKTsKKyAg
ICBXZWJQYWdlUHJveHkqIGNyZWF0ZVdlYlBhZ2UoV2ViUGFnZU5hbWVzcGFjZSosIFdlYlBhZ2VH
cm91cCopOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2
NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiA3MzA0MykKKysr
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw3IEBAIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdl
YkZyYW1lUHJveHk7CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYk5hdmlnYXRp
b25EYXRhOworY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwpAQCAtNjAsNiArNjEsNyBA
QCBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQCiBXS19BRERfQVBJX01B
UFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQogI2VuZGlmCiBXS19BRERf
QVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV2ViTmF2aWdhdGlvbkRhdGEpCitXS19B
RERfQVBJX01BUFBJTkcoV0tQYWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91cCkKIFdLX0FERF9BUElf
TUFQUElORyhXS1BhZ2VOYW1lc3BhY2VSZWYsIFdlYlBhZ2VOYW1lc3BhY2UpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQ
cmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTEgQEAgV0tQYWdlTmFtZXNwYWNl
UmVmIFdLUGFnZUdldFBhZ2VOYW1lc3BhYwogICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJl
ZiktPnBhZ2VOYW1lc3BhY2UoKSk7CiB9CiAKK1dLUGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VH
cm91cChXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VS
ZWYpLT5wYWdlR3JvdXAoKSk7Cit9CisKIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VSZWYgcGFn
ZVJlZiwgV0tVUkxSZWYgVVJMUmVmKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFVSTCh0
b0ltcGwoVVJMUmVmKS0+c3RyaW5nKCkpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJ
KHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxOSw2ICsyMTksNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VDb250
ZXh0TWVudUNsaWVudCBXCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiAK
IFdLX0VYUE9SVCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShXS1Bh
Z2VSZWYgcGFnZSk7CitXS19FWFBPUlQgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3Vw
KFdLUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxSZXF1
ZXN0KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCk7CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLUGFnZUdyb3VwLmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tQYWdlR3JvdXBHZXRUeXBlSUQoKQoreworICAg
IHJldHVybiB0b0FQSShXZWJQYWdlR3JvdXA6OkFQSVR5cGUpOworfQorCitXS1BhZ2VHcm91cFJl
ZiBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIp
Cit7CisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpj
cmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikpOworICAgIHJldHVybiB0b0FQSShwYWdlR3Jv
dXAucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUGFnZUdyb3VwQ29w
eUlkZW50aWZpZXIoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQoreworICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwocGFnZUdyb3VwKS0+aWRlbnRpZmllcigpKTsKK30KSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdLUGFnZUdyb3VwX2gKKyNkZWZpbmUgV0tQYWdlR3JvdXBf
aAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR3JvdXBHZXRU
eXBlSUQoKTsKKworV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdLUGFnZUdyb3VwQ3JlYXRlV2l0
aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmllcik7CisKK1dLX0VYUE9SVCBXS1N0cmlu
Z1JlZiBXS1BhZ2VHcm91cENvcHlJZGVudGlmaWVyKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1BhZ2VHcm91
cF9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oCShyZXZpc2lvbiA3MzA0MykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRGF0
YS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tEaWN0aW9uYXJ5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Vycm9yLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRnJhbWUuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKICNpbmNs
dWRlIDxXZWJLaXQyL1dLTmF2aWdhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLTnVt
YmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VOYW1lc3BhY2UuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5n
Lmg+CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAkocmV2aXNpb24g
NzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQCBXS1R5cGVJRCBXS1ZpZXdHZXRUeXBlSUQoKQogICAg
IHJldHVybiB0b0FQSShBUElPYmplY3Q6OlR5cGVWaWV3KTsKIH0KIAotV0tWaWV3UmVmIFdLVmll
d0NyZWF0ZShSRUNUIHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlUmVmLCBI
V05EIHBhcmVudFdpbmRvdykKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0LCBXS1Bh
Z2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmLCBIV05EIHBhcmVudFdpbmRvdykKIHsKLSAgICBSZWZQdHI8V2ViVmlldz4gdmlldyA9IFdl
YlZpZXc6OmNyZWF0ZShyZWN0LCB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZiksIHBhcmVudFdpbmRv
dywgVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUpOworICAgIFJlZlB0cjxXZWJWaWV3PiB2aWV3ID0g
V2ViVmlldzo6Y3JlYXRlKHJlY3QsIHRvSW1wbChwYWdlTmFtZXNwYWNlUmVmKSwgdG9JbXBsKHBh
Z2VHcm91cFJlZiksIHBhcmVudFdpbmRvdywgVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUpOwogICAg
IHJldHVybiB0b0FQSSh2aWV3LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLVmlld0dldFR5cGVJ
RCgpOwogCi1XS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNUIHJlY3QsIFdLUGFn
ZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlLCBIV05EIHBhcmVudFdpbmRvdyk7CitXS19FWFBP
UlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNUIHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBw
YWdlTmFtZXNwYWNlLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93
KTsKIAogV0tfRVhQT1JUIEhXTkQgV0tWaWV3R2V0V2luZG93KFdLVmlld1JlZiB2aWV3KTsKIApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5oCShyZXZpc2lvbiA3MzA0MykKKysrIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAgQGludGVyZmFjZSBXS1ZpZXcgOiBOU1ZpZXcgPE5TVGV4dElucHV0PgogfQogCiAt
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdl
TmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2VSZWY7CistIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3Bh
Y2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWY7CiAKIC0gKFdL
UGFnZVJlZilwYWdlUmVmOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQko
cmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEBpbnRlcmZhY2UgV0tWaWV3RGF0YSA6
IE5TT2JqZWN0IHsKIAogQGltcGxlbWVudGF0aW9uIFdLVmlldwogCi0tIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVmKXBh
Z2VOYW1lc3BhY2VSZWYgaGlkZGVuRnJvbUluamVjdGVkQnVuZGxlOihCT09MKWhpZGRlbkZyb21J
bmplY3RlZEJ1bmRsZQorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1l
c3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlUmVmIHBhZ2VHcm91cFJl
ZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0
V2l0aEZyYW1lOmZyYW1lXTsKICAgICBpZiAoIXNlbGYpCkBAIC0xMzMsMTAgKzEzMyw5IEBAIC0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmEKICAgICBfZGF0YSA9IFtbV0tW
aWV3RGF0YSBhbGxvY10gaW5pdF07CiAKICAgICBfZGF0YS0+X3BhZ2VDbGllbnQgPSBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlKHNlbGYpOwotICAgIF9kYXRhLT5fcGFnZSA9IHRvSW1wbChwYWdlTmFt
ZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFnZSgpOworICAgIF9kYXRhLT5fcGFnZSA9IHRvSW1wbChw
YWdlTmFtZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFnZSh0b0ltcGwocGFnZUdyb3VwUmVmKSk7CiAg
ICAgX2RhdGEtPl9wYWdlLT5zZXRQYWdlQ2xpZW50KF9kYXRhLT5fcGFnZUNsaWVudC5nZXQoKSk7
CiAgICAgX2RhdGEtPl9wYWdlLT5zZXREcmF3aW5nQXJlYShDaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWFQcm94eTo6Y3JlYXRlKHNlbGYpKTsKLSAgICBfZGF0YS0+X3BhZ2UtPnNldFZpc2libGVUb0lu
amVjdGVkQnVuZGxlKCFoaWRkZW5Gcm9tSW5qZWN0ZWRCdW5kbGUpOwogICAgIF9kYXRhLT5fcGFn
ZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50U2l6ZShmcmFtZS5zaXplKSk7CiAgICAgX2RhdGEtPl9w
YWdlLT5zZXRJc0luV2luZG93KFtzZWxmIHdpbmRvd10pOwogCkBAIC0xNTIsNyArMTUxLDcgQEAg
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYQogCiAtIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVm
KXBhZ2VOYW1lc3BhY2VSZWYKIHsKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFt
ZSBwYWdlTmFtZXNwYWNlUmVmOnBhZ2VOYW1lc3BhY2VSZWYgaGlkZGVuRnJvbUluamVjdGVkQnVu
ZGxlOk5PXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNw
YWNlUmVmOnBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOm5pbF07CiB9CiAKIC0gKGlkKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiB9CiAKIEBpbnRlcmZhY2UgV0tWaWV3IChJbnRlcm5hbCkK
LS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1Bh
Z2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZiBoaWRkZW5Gcm9tSW5qZWN0ZWRCdW5kbGU6
KEJPT0wpaGlkZGVuRnJvbUluamVjdGVkQnVuZGxlOwotCiAtICh2b2lkKV9wcm9jZXNzRGlkQ3Jh
c2g7CiAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3M7CiAtICh2b2lkKV90YWtlRm9jdXM6KEJP
T0wpZGlyZWN0aW9uOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2
aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQcml2
YXRlKFFXS1BhZ2UqIAogewogICAgIGluaXRpYWxpemVQbGF0Zm9ybVN0cmF0ZWdpZXNJZk5lZWRl
ZCgpOwogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9ucykpOwotICAgIHBhZ2Ug
PSB0b0ltcGwobmFtZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFnZSgpOyAvLyBQYWdlIGdldHMgYSBy
ZWYgdG8gbmFtZXNwYWNlLgorICAgIHBhZ2UgPSB0b0ltcGwobmFtZXNwYWNlUmVmKS0+Y3JlYXRl
V2ViUGFnZSgwKTsgLy8gUGFnZSBnZXRzIGEgcmVmIHRvIG5hbWVzcGFjZS4KICAgICBwYWdlLT5z
ZXRQYWdlQ2xpZW50KHRoaXMpOwogICAgIGhpc3RvcnkgPSBRV0tIaXN0b3J5UHJpdmF0ZTo6Y3Jl
YXRlSGlzdG9yeShwYWdlLT5iYWNrRm9yd2FyZExpc3QoKSk7CiB9CkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCShyZXZpc2lvbiA3MzA0MykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9yCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZp
ZXcpOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3LmFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNaZXJvUmVjdCBwYWdlTmFtZXNwYWNlUmVmOnRvQVBJKG1fcGFnZS0+cGFnZU5h
bWVzcGFjZSgpKV0pOworICAgIG1faW5zcGVjdG9yVmlldy5hZG9wdE5TKFtbV0tWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgcGFnZU5hbWVzcGFjZVJlZjp0b0FQSShtX3BhZ2Ut
PnBhZ2VOYW1lc3BhY2UoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgp
KV0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAgICAgcmV0dXJuIHRvSW1wbChb
bV9pbnNwZWN0b3JWaWV3LmdldCgpIHBhZ2VSZWZdKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBXZWJWaWV3Ojpy
ZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcwogICAgIHJldHVybiAhITo6UmVnaXN0ZXJDbGFzc0V4
KCZ3Y2V4KTsKIH0KIAotV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIFdlYlBhZ2VOYW1lc3Bh
Y2UqIHBhZ2VOYW1lc3BhY2UsIEhXTkQgcGFyZW50V2luZG93LCBJbmplY3RlZEJ1bmRsZVZpc2li
aWxpdHkgaW5qZWN0ZWRCdW5kbGVWaXNpYmlsaXR5KQorV2ViVmlldzo6V2ViVmlldyhSRUNUIHJl
Y3QsIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCogcGFnZUdy
b3VwLCBIV05EIHBhcmVudFdpbmRvdykKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV90b3BM
ZXZlbFBhcmVudFdpbmRvdygwKQogICAgICwgbV90b29sVGlwV2luZG93KDApCkBAIC0xOTQsMTAg
KzE5NCw5IEBAIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXMKIHsKICAg
ICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwogCi0gICAgbV9wYWdlID0gcGFnZU5hbWVz
cGFjZS0+Y3JlYXRlV2ViUGFnZSgpOworICAgIG1fcGFnZSA9IHBhZ2VOYW1lc3BhY2UtPmNyZWF0
ZVdlYlBhZ2UocGFnZUdyb3VwKTsKICAgICBtX3BhZ2UtPnNldFBhZ2VDbGllbnQodGhpcyk7CiAg
ICAgbV9wYWdlLT5zZXREcmF3aW5nQXJlYShDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6
Y3JlYXRlKHRoaXMpKTsKLSAgICBtX3BhZ2UtPnNldFZpc2libGVUb0luamVjdGVkQnVuZGxlKGlu
amVjdGVkQnVuZGxlVmlzaWJpbGl0eSA9PSBWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7CiAKICAg
ICBtX3dpbmRvdyA9IDo6Q3JlYXRlV2luZG93RXgoMCwga1dlYktpdDJXZWJWaWV3V2luZG93Q2xh
c3NOYW1lLCAwLCBXU19DSElMRCB8IFdTX0NMSVBTSUJMSU5HUyB8IFdTX0NMSVBDSElMRFJFTiwK
ICAgICAgICAgcmVjdC50b3AsIHJlY3QubGVmdCwgcmVjdC5yaWdodCAtIHJlY3QubGVmdCwgcmVj
dC5ib3R0b20gLSByZWN0LnRvcCwgcGFyZW50V2luZG93ID8gcGFyZW50V2luZG93IDogSFdORF9N
RVNTQUdFLCAwLCBpbnN0YW5jZUhhbmRsZSgpLCB0aGlzKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNiArMzksMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwogY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIAotZW51
bSBJbmplY3RlZEJ1bmRsZVZpc2liaWxpdHkgewotICAgIEhpZGRlbkZyb21JbmplY3RlZEJ1bmRs
ZSwKLSAgICBWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZQotfTsKLQogY2xhc3MgV2ViVmlldyA6IHB1
YmxpYyBBUElPYmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50LCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdl
TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0
ZShSRUNUIHJlY3QsIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIEhXTkQgcGFyZW50
V2luZG93LCBJbmplY3RlZEJ1bmRsZVZpc2liaWxpdHkgdmlzaWJpbGl0eSkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJWaWV3PiBjcmVhdGUoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXNwYWNlKiBw
YWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXcocmVjdCwgcGFnZU5h
bWVzcGFjZSwgcGFyZW50V2luZG93LCB2aXNpYmlsaXR5KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViVmlldyhyZWN0LCBwYWdlTmFtZXNwYWNlLCBwYWdlR3JvdXAsIHBhcmVudFdp
bmRvdykpOwogICAgIH0KICAgICB+V2ViVmlldygpOwogCkBAIC02Myw3ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7
IH0KIAogcHJpdmF0ZToKLSAgICBXZWJWaWV3KFJFQ1QsIFdlYlBhZ2VOYW1lc3BhY2UqLCBIV05E
IHBhcmVudFdpbmRvdywgSW5qZWN0ZWRCdW5kbGVWaXNpYmlsaXR5KTsKKyAgICBXZWJWaWV3KFJF
Q1QsIFdlYlBhZ2VOYW1lc3BhY2UqLCBXZWJQYWdlR3JvdXAqLCBIV05EIHBhcmVudFdpbmRvdyk7
CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGVWaWV3OyB9CiAK
SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA3MzA0MykKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTUsNiArMzk1LDE2IEBACiAJCUJDNzJCOUZCMTFFNjQ3NkIwMDFF
QjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmggKi87IH07CiAJCUJDNzJCQTFEMTFFNjQ5MDcwMDFFQjRFQSAv
KiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdC5jcHAgKi87IH07CiAJCUJDNzJCQTFFMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9y
d2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLzsgfTsK
KwkJQkM3QjYyMDYxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyMDQxMjlBMEE2NzAwRDE3
NEE0IC8qIFdlYlBhZ2VHcm91cC5oICovOyB9OworCQlCQzdCNjIwNzEyOUEwQTY3MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwICov
OyB9OworCQlCQzdCNjIxNTEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0I2MjEzMTJB
NDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovOyB9OworCQlCQzdCNjIxNjEy
QTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyMTQxMkE0MjE5QTAwRDE3NEE0IC8q
IFdlYlBhZ2VHcm91cFByb3h5LmNwcCAqLzsgfTsKKwkJQkM3QjYyNTIxMkE0M0M5NjAwRDE3NEE0
IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDN0I2MjUwMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRh
LmggKi87IH07CisJCUJDN0I2MjUzMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0I2
MjUxMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRhLmNwcCAqLzsgfTsKKwkJQkM3
QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdCNjMzNTEyQTQ1QUJBMDBEMTc0QTQgLyog
V0tQYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CisJCUJDN0I2MzM4MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdCNjMzNjEyQTQ1QUJB
MDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuY3BwICovOyB9OworCQlCQzdCNjMzRDEyQTQ1RDEyMDBE
MTc0QTQgLyogV0tCdW5kbGVQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0I2MzNCMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBh
Z2VHcm91cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJQkM3QjYzM0UxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0I2MzNDMTJBNDVE
MTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5jcHAgKi87IH07CiAJCUJDODQ1MkE3MTE2
MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg0NTJBNTExNjJDODA5MDBDQUI5QjUgLyogRHJhd2lu
Z0FyZWEuY3BwICovOyB9OwogCQlCQzg0NTJBODExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0Fy
ZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1
MkE2MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oICovOyB9OwogCQlCQzg2OTlCNTEx
NkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzg2OTlCMjExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtOTg5LDYgKzk5
OSwxNiBAQAogCQlCQzcyQjlGOTExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3MkJBMUIxMUU2NDkw
NzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzdCNjIwNDEyOUEwQTY3MDBEMTc0
QTQgLyogV2ViUGFnZUdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzdCNjIwNTEyOUEw
QTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlBhZ2VHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDN0I2MjEzMTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQzdCNjIxNDEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFn
ZUdyb3VwUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UGFnZUdyb3VwUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzdCNjI1
MDEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQYWdlR3JvdXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDN0I2MjUxMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VHcm91cERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzdCNjMzNTEyQTQ1QUJBMDBEMTc0
QTQgLyogV0tQYWdlR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQ
YWdlR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYzMzYxMkE0NUFC
QTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLUGFnZUdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM3QjYzM0IxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZUdyb3VwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDN0I2MzNDMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBh
Z2VHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRs
ZVBhZ2VHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODQ1MkE1MTE2
MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDODQ1MkE2MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzg2OTlCMjExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ2Nyw2ICsxNDg3LDggQEAKIAkJCQlCQzU3NDRFRTEyNjM4RkIzMDA2RjBGMTIg
LyogV2ViUG9wdXBJdGVtLmggKi8sCiAJCQkJQzA2QzYwOTMxMjRDMTQ0MzAwMDE2ODJGIC8qIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAogCQkJCUMwNkM2MDk0MTI0QzE0NDMwMDAx
NjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCisJCQkJQkM3QjYyNTExMkE0
M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuY3BwICovLAorCQkJCUJDN0I2MjUwMTJB
NDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRhLmggKi8sCiAJCQkJQzAzMzdEREMxMjdB
NTIxQzAwOEZGNEY0IC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgKi8sCiAJCQkJQkMzMDY4
MjMxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICov
LAogCQkJCUJDMzA2ODIyMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggKi8sCkBAIC0xNjY2LDYgKzE2ODgsOCBAQAogCQkJCUJDOTYzRDZBMTEzREQxOTIw
MDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKIAkJCQlCQzAzMkQ4QjEwRjQzN0EwMDA1OEMxNUEg
LyogV2ViUGFnZS5oICovLAogCQkJCUMwQ0U3MjU4MTI0N0U0REEwMEJDMEVDNCAvKiBXZWJQYWdl
Lm1lc3NhZ2VzLmluICovLAorCQkJCUJDN0I2MjE0MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXBQcm94eS5jcHAgKi8sCisJCQkJQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBh
Z2VHcm91cFByb3h5LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYlBhZ2U7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMTczMyw2ICsxNzU3LDggQEAKIAkJCQlCQ0Y2OUZBMDExNzZE
MDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCAqLywKIAkJCQk1MTUzNTY5QTEyOTFC
MUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLywKIAkJCQk1MTUz
NTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCisJ
CQkJQkM3QjYyMDUxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCisJCQkJ
QkM3QjYyMDQxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oICovLAogCQkJCUJDRUU5
OEM0MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNlLmNwcCAqLywKIAkJCQlCQ0VF
OThDNTExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5oICovLAogCQkJCUJDMTEx
QjBCMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQYWdlUHJveHkuY3BwICovLApAQCAtMTc5Myw2ICsx
ODE5LDggQEAKIAkJCQlCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0
YS5oICovLAogCQkJCUJDRDU5N0Q0MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuY3BwICovLAog
CQkJCUJDRDU5N0Q1MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuaCAqLywKKwkJCQlCQzdCNjMz
NjEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuY3BwICovLAorCQkJCUJDN0I2MzM1MTJB
NDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oICovLAogCQkJCUJDRUU5OENBMTEzMzE3NEMw
MDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuY3BwICovLAogCQkJCUJDRUU5OENCMTEzMzE3NEMw
MDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuaCAqLywKIAkJCQlCQzE3NzQ2NDExOEI5RkY0MDA3
RDlFOUEgLyogV0tQYWdlUHJpdmF0ZS5oICovLApAQCAtMTk1Myw2ICsxOTgxLDggQEAKIAkJCQlC
QzU3NDUwQjEyNjNCMTU1MDA2RjBGMTIgLyogV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oICov
LAogCQkJCUJDMjA1MjgwMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwICovLAog
CQkJCUJDMjA1MjdGMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuaCAqLywKKwkJCQlC
QzdCNjMzQzEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQYWdlR3JvdXAuY3BwICovLAorCQkJ
CUJDN0I2MzNCMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5oICovLAogCQkJ
CTFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAqLywK
IAkJCQkxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oICov
LAogCQkJCUJDMUI0MTk3MTFENDFENTcwMDExRThERCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmgg
Ki8sCkBAIC0yNDc3LDYgKzI1MDcsMTEgQEAKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1MzU2
OUQxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUJDN0I2MjA2MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDN0I2MjE1MTJBNDIxOUEwMEQxNzRBNCAvKiBX
ZWJQYWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3QjYyNTIxMkE0M0M5NjAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDN0I2MzM3
MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3
QjYzM0QxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CkBAIC0yODY1LDYgKzI5MDAsMTEgQEAKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYg
LyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTUzNTY5QzEy
OTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQUI0QUFBMTI5NkYxNTQwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkM3QjYyMDcxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBh
Z2VHcm91cC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzdCNjIxNjEyQTQyMTlBMDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM3QjYyNTMxMkE0
M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkM3QjYzMzgxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDN0I2MzNFMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUE0NzkyMzEyQTU5RkQ5MDA4MjM2QzMgLyogUGx1Z2luUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyNiw2ICs1MjYsMjIgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJG
cmFtZSh1aW50NjRfdAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpEaWREZXN0cm95RnJhbWUoZnJhbWVJRCksIDApOwogfQogCitXZWJQYWdlR3JvdXBQ
cm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKHVpbnQ2NF90IHBhZ2VHcm91cElEKQorewor
ICAgIHJldHVybiBtX3BhZ2VHcm91cE1hcC5nZXQocGFnZUdyb3VwSUQpLmdldCgpOworfQorCitX
ZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKGNvbnN0IFdlYlBhZ2VH
cm91cERhdGEmIHBhZ2VHcm91cERhdGEpCit7CisgICAgc3RkOjpwYWlyPEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fcGFnZUdyb3VwTWFwLmFkZChwYWdlR3JvdXBEYXRhLnBhZ2VHcm91cElELCAwKTsKKyAgICBp
ZiAocmVzdWx0LnNlY29uZCkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJQYWdlR3JvdXBQcm94eTo6Y3Jl
YXRlKHBhZ2VHcm91cERhdGEpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNl
Y29uZC5nZXQoKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclJlc291cmNlQ2FjaGVzKCkK
IHsKICAgICBwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNoZXMoKTsKSW5kZXg6IFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWEuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlu
a1RhYmxlLmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtNTAsNiArNTEsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZTsKIGNsYXNz
IFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOworc3RydWN0IFdlYlBhZ2VHcm91cERhdGE7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCkBAIC04MSw2ICs4Myw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFdlYkZyYW1lKHVpbnQ2NF90LCBXZWJGcmFtZSopOwog
ICAgIHZvaWQgcmVtb3ZlV2ViRnJhbWUodWludDY0X3QpOwogCisgICAgV2ViUGFnZUdyb3VwUHJv
eHkqIHdlYlBhZ2VHcm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCk7CisgICAgV2ViUGFnZUdyb3Vw
UHJveHkqIHdlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJik7CiAgICAgc3RhdGlj
IFdlYkNvcmU6OlBhZ2VHcm91cCogc2hhcmVkUGFnZUdyb3VwKCk7CiAKICAgICAvLyBXaWxsIHNo
dXQgZG93biB0aGUgd2ViIHByb2Nlc3MgaWYgdGhlcmUgYXJlIG5vIGxpdmUgcGFnZXMgb3IgZG93
bmxvYWRzLgpAQCAtMTI0LDYgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVmUHRyPENv
cmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViUGFnZT4gPiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYlBhZ2VHcm91cFByb3h5PiA+IG1fcGFnZUdyb3VwTWFwOwogICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZT4gbV9pbmplY3RlZEJ1bmRsZTsKIAogICAgIGJvb2wgbV9pbkRpZENsb3NlOwpJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDE0ICs5Niwx
MyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVBbGxWaXNpdGVkTGluCiAgICAgUGFnZUdy
b3VwOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6
b3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoYm9vbCBlbmFibGVkKQordm9p
ZCBJbmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIo
V2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQogewogICAgIC8vIE92
ZXJyaWRlIHRoZSBwcmVmZXJlbmNlIGZvciBhbGwgZnV0dXJlIHBhZ2VzLgogICAgIFdlYlByZWZl
cmVuY2VzU3RvcmU6Om92ZXJyaWRlWFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKGVuYWJs
ZWQpOwogCiAgICAgLy8gQ2hhbmdlIHRoZSBzZXR0aW5nIGZvciBleGlzdGluZyBvbmVzLgotICAg
IGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VHcm91
cCgpLT5wYWdlcygpOwotCisgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdy
b3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpOwogICAgIGZv
ciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9
IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgICgqaXRlciktPnNldHRpbmdzKCktPnNldFhT
U0F1ZGl0b3JFbmFibGVkKGVuYWJsZWQpOwogfQpAQCAtMTI4LDM5ICsxMjcsMzkgQEAgc3RhdGlj
IFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0b1N0cgogICAgIHJldHVybiBwYXR0ZXJuc1Zl
Y3RvcjsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSog
YmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQordm9p
ZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdy
b3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJ
bW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSBpbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVj
dGVkRnJhbWVzKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VHcm91cCgpLT5hZGRVc2Vy
U2NyaXB0VG9Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCksIHNvdXJjZSwgS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVj
dG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKTsKKyAgICBQYWdl
R3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRU
b1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogfQogCi12b2lkIEluamVj
dGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBz
Y3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11
dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRh
YmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBp
bmplY3RlZEZyYW1lcykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWRQYWdlR3JvdXAoKS0+YWRk
VXNlclN0eWxlU2hlZXRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMpOworICAgIFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0ZWRGcmFtZXMpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVV
c2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBT
dHJpbmcmIHVybCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHQoV2ViUGFn
ZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0
V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VH
cm91cCgpLT5yZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQo
KSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3Vw
KHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChzY3Jp
cHRXb3JsZC0+Y29yZVdvcmxkKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKIH0KIAot
dm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91
cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYg
dXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VHcm91cCgpLT5yZW1vdmVVc2VyU3R5
bGVTaGVldEZyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCksIEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpKTsKKyAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50
aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3Jl
V29ybGQoKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOwogfQogCi12b2lkIEluamVjdGVk
QnVuZGxlOjpyZW1vdmVVc2VyU2NyaXB0cyhJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3Jp
cHRXb3JsZCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHRzKFdlYlBhZ2VH
cm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdv
cmxkKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VHcm91cCgpLT5yZW1vdmVVc2VyU2Ny
aXB0c0Zyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCkpOworICAgIFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclNjcmlwdHNGcm9t
V29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlw
dFdvcmxkKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzKFdlYlBh
Z2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlw
dFdvcmxkKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VHcm91cCgpLT5yZW1vdmVVc2Vy
U3R5bGVTaGVldHNGcm9tV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpKTsKKyAgICBQYWdl
R3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHls
ZVNoZWV0c0Zyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCkpOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCit2b2lkIEluamVjdGVkQnVuZGxl
OjpyZW1vdmVBbGxVc2VyQ29udGVudChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwKQogewot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZFBhZ2VHcm91cCgpLT5yZW1vdmVBbGxVc2VyQ29udGVudCgp
OworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVt
b3ZlQWxsVXNlckNvbnRlbnQoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6Z2FyYmFnZUNv
bGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCkBAIC0yMDQsNiArMjAzLDExIEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZShXZWIKICAgICBtX2NsaWVudC53aWxsRGVzdHJveVBh
Z2UodGhpcywgcGFnZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZEluaXRpYWxpemVQ
YWdlR3JvdXAoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCkKK3sKKyAgICBtX2NsaWVudC5k
aWRJbml0aWFsaXplUGFnZUdyb3VwKHRoaXMsIHBhZ2VHcm91cCk7Cit9CisKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQ
SU9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2Uo
dGhpcywgbWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiA3MzA0
MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1C
dW5kbGU7CiBjbGFzcyBJbW11dGFibGVBcnJheTsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ7CiBjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiAKIGNsYXNz
IEluamVjdGVkQnVuZGxlIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CkBAIC04MywxNiAr
ODQsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoYm9v
bCk7CiAgICAgdm9pZCByZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKICAgICB2b2lkIGFjdGl2YXRl
TWFjRm9udEFzY2VudEhhY2soKTsKLSAgICB2b2lkIG92ZXJyaWRlWFNTQXVkaXRvckVuYWJsZWRG
b3JUZXN0UnVubmVyKGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBvdmVycmlkZVhTU0F1ZGl0b3JF
bmFibGVkRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVu
YWJsZWQpOwogCiAgICAgLy8gVXNlckNvbnRlbnQgQVBJCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBi
bGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzKTsKLSAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBibGFja2xp
c3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwotICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1cmwp
OwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCosIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRzKEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQqKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0cyhJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVu
dCgpOworICAgIHZvaWQgYWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSosIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1
cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBibGFja2xpc3Qs
IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzKTsKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFBy
b3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJy
YXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CisgICAg
dm9pZCByZW1vdmVVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTdHls
ZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNv
bnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRzKFdlYlBhZ2VHcm91
cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOworICAgIHZvaWQgcmVtb3ZlVXNl
clN0eWxlU2hlZXRzKFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCopOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoV2ViUGFnZUdyb3VwUHJveHkqKTsK
IAogICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbiBBUEkKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0
SmF2YVNjcmlwdE9iamVjdHMoKTsKQEAgLTEwMiw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgLy8g
Q2FsbGJhY2sgaG9va3MKICAgICB2b2lkIGRpZENyZWF0ZVBhZ2UoV2ViUGFnZSopOwogICAgIHZv
aWQgd2lsbERlc3Ryb3lQYWdlKFdlYlBhZ2UqKTsKKyAgICB2b2lkIGRpZEluaXRpYWxpemVQYWdl
R3JvdXAoV2ViUGFnZUdyb3VwUHJveHkqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNv
bnN0IFN0cmluZyYsIEFQSU9iamVjdCopOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gNzMwNDMpCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxl
Q2xpZW50Ojp3aWxsRGVzdHJveVBhCiAgICAgbV9jbGllbnQud2lsbERlc3Ryb3lQYWdlKHRvQVBJ
KGJ1bmRsZSksIHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChJbmplY3RlZEJ1bmRs
ZSogYnVuZGxlLCBXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwKQoreworICAgIGlmICghbV9j
bGllbnQuZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
bGllbnQuZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCh0b0FQSShidW5kbGUpLCB0b0FQSShwYWdlR3Jv
dXApLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVNZXNzYWdlKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDcz
MDQzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgV2Vi
UGFnZTsKK2NsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNs
aWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2
b2lkIGRpZENyZWF0ZVBhZ2UoSW5qZWN0ZWRCdW5kbGUqLCBXZWJQYWdlKik7CiAgICAgdm9pZCB3
aWxsRGVzdHJveVBhZ2UoSW5qZWN0ZWRCdW5kbGUqLCBXZWJQYWdlKik7CisgICAgdm9pZCBkaWRJ
bml0aWFsaXplUGFnZUdyb3VwKEluamVjdGVkQnVuZGxlKiwgV2ViUGFnZUdyb3VwUHJveHkqKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKEluamVjdGVkQnVuZGxlKiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSk7CiB9OwogCkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNv
ZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgJKHJldmlzaW9uIDczMDQzKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VD
b2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgIlVzZXJN
ZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91
cFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTMzLDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBBZGRzCiAvLyAtIEJ1bmRs
ZVBhZ2UgLT4gUGFnZQogLy8gLSBCdW5kbGVGcmFtZSAtPiBGcmFtZQorLy8gLSBCdW5kbGVQYWdl
R3JvdXAgLT4gUGFnZUdyb3VwCiAKIGNsYXNzIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyIDogcHVibGljIFVzZXJNZXNzYWdlRW5jb2RlcjxJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcj4gewogcHVibGljOgpAQCAtNjAsNiArNjMsMTEgQEAgcHVibGljOgogICAgICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKGZyYW1lLT5mcmFtZUlEKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVCdW5kbGVQYWdlR3JvdXA6
IHsKKyAgICAgICAgICAgIFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAgPSBzdGF0aWNfY2Fz
dDxXZWJQYWdlR3JvdXBQcm94eSo+KG1fcm9vdCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGUocGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzAsNiArNzgsNyBAQCBwdWJsaWM6CiAvLyBBZGRzCiAv
LyAgIC0gUGFnZSAtPiBCdW5kbGVQYWdlCiAvLyAgIC0gRnJhbWUgLT4gQnVuZGxlRnJhbWUKKy8v
ICAgLSBQYWdlR3JvdXAgLT4gQnVuZGxlUGFnZUdyb3VwCiAKIGNsYXNzIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VEZWNvZGVyIDogcHVibGljIFVzZXJNZXNzYWdlRGVjb2RlcjxJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRGVjb2Rlcj4gewogcHVibGljOgpAQCAtMTA5LDYgKzExOCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53
ZWJGcmFtZShmcmFtZUlEKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2UgQVBJT2JqZWN0OjpUeXBlUGFnZUdyb3VwOiB7CisgICAgICAgICAgICBXZWJQYWdlR3Jv
dXBEYXRhIHBhZ2VHcm91cERhdGE7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShw
YWdlR3JvdXBEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBjb2Rlci5tX3Jvb3QgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlR3JvdXAocGFnZUdy
b3VwRGF0YSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHJl
dmlzaW9uIDczMDQzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNDQgKzg3LDQ0IEBAIHNpemVfdCBX
S0J1bmRsZUdldEphdmFTY3JpcHRPYmplY3RzQ291bnQKICAgICByZXR1cm4gdG9JbXBsKGJ1bmRs
ZVJlZiktPmphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKIH0KIAotdm9pZCBXS0J1bmRsZUFkZFVz
ZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNj
cmlwdFdvcmxkUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tB
cnJheVJlZiB3aGl0ZWxpc3RSZWYsIFdLQXJyYXlSZWYgYmxhY2tsaXN0UmVmLCBXS1VzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWVSZWYsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lc1JlZikKK3ZvaWQgV0tCdW5kbGVBZGRVc2VyU2NyaXB0KFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VSZWYs
IFdLVVJMUmVmIHVybFJlZiwgV0tBcnJheVJlZiB3aGl0ZWxpc3RSZWYsIFdLQXJyYXlSZWYgYmxh
Y2tsaXN0UmVmLCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWVSZWYsIFdL
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lc1JlZikKIHsKLSAgICB0b0lt
cGwoYnVuZGxlUmVmKS0+YWRkVXNlclNjcmlwdCh0b0ltcGwoc2NyaXB0V29ybGRSZWYpLCB0b1dU
RlN0cmluZyhzb3VyY2VSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpLCB0b0ltcGwod2hpdGVsaXN0
UmVmKSwgdG9JbXBsKGJsYWNrbGlzdFJlZiksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5q
ZWN0aW9uVGltZVJlZiksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1l
c1JlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5hZGRVc2VyU2NyaXB0KHRvSW1wbChwYWdl
R3JvdXBSZWYpLCB0b0ltcGwoc2NyaXB0V29ybGRSZWYpLCB0b1dURlN0cmluZyhzb3VyY2VSZWYp
LCB0b1dURlN0cmluZyh1cmxSZWYpLCB0b0ltcGwod2hpdGVsaXN0UmVmKSwgdG9JbXBsKGJsYWNr
bGlzdFJlZiksIHRvVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZVJlZiksIHRv
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lc1JlZikpOwogfQogCi12b2lk
IFdLQnVuZGxlQWRkVXNlclN0eWxlU2hlZXQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIFdL
VVJMUmVmIHVybFJlZiwgV0tBcnJheVJlZiB3aGl0ZWxpc3RSZWYsIFdLQXJyYXlSZWYgYmxhY2ts
aXN0UmVmLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXNSZWYpCit2
b2lkIFdLQnVuZGxlQWRkVXNlclN0eWxlU2hlZXQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1
bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2Ny
aXB0V29ybGRSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0Fy
cmF5UmVmIHdoaXRlbGlzdFJlZiwgV0tBcnJheVJlZiBibGFja2xpc3RSZWYsIFdLVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lc1JlZikKIHsKLSAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+YWRkVXNlclN0eWxlU2hlZXQodG9JbXBsKHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZTdHJp
bmcoc291cmNlUmVmKSwgdG9XVEZTdHJpbmcodXJsUmVmKSwgdG9JbXBsKHdoaXRlbGlzdFJlZiks
IHRvSW1wbChibGFja2xpc3RSZWYpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0
ZWRGcmFtZXNSZWYpKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+YWRkVXNlclN0eWxlU2hlZXQo
dG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5n
KHNvdXJjZVJlZiksIHRvV1RGU3RyaW5nKHVybFJlZiksIHRvSW1wbCh3aGl0ZWxpc3RSZWYpLCB0
b0ltcGwoYmxhY2tsaXN0UmVmKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVk
RnJhbWVzUmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU2NyaXB0KFdLQnVuZGxl
UmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tV
UkxSZWYgdXJsUmVmKQordm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHQoV0tCdW5kbGVSZWYg
YnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLQnVuZGxlU2Ny
aXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICB0b0lt
cGwoYnVuZGxlUmVmKS0+cmVtb3ZlVXNlclNjcmlwdCh0b0ltcGwoc2NyaXB0V29ybGRSZWYpLCB0
b1dURlN0cmluZyh1cmxSZWYpKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlVXNlclNj
cmlwdCh0b0ltcGwocGFnZUdyb3VwUmVmKSwgdG9JbXBsKHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZT
dHJpbmcodXJsUmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldChX
S0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRS
ZWYsIFdLVVJMUmVmIHVybFJlZikKK3ZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldChX
S0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwg
V0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tVUkxSZWYgdXJsUmVmKQog
ewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU3R5bGVTaGVldCh0b0ltcGwoc2Ny
aXB0V29ybGRSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVm
KS0+cmVtb3ZlVXNlclN0eWxlU2hlZXQodG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChzY3Jp
cHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHVybFJlZikpOwogfQogCi12b2lkIFdLQnVuZGxlUmVt
b3ZlVXNlclNjcmlwdHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxk
UmVmIHNjcmlwdFdvcmxkUmVmKQordm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHRzKFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmKQogewotICAgIHRvSW1wbChidW5kbGVS
ZWYpLT5yZW1vdmVVc2VyU2NyaXB0cyh0b0ltcGwoc2NyaXB0V29ybGRSZWYpKTsKKyAgICB0b0lt
cGwoYnVuZGxlUmVmKS0+cmVtb3ZlVXNlclNjcmlwdHModG9JbXBsKHBhZ2VHcm91cFJlZiksIHRv
SW1wbChzY3JpcHRXb3JsZFJlZikpOwogfQogCi12b2lkIFdLQnVuZGxlUmVtb3ZlVXNlclN0eWxl
U2hlZXRzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3Jp
cHRXb3JsZFJlZikKK3ZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldHMoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLQnVuZGxl
U2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYpCiB7Ci0gICAgdG9JbXBsKGJ1bmRsZVJlZikt
PnJlbW92ZVVzZXJTdHlsZVNoZWV0cyh0b0ltcGwoc2NyaXB0V29ybGRSZWYpKTsKKyAgICB0b0lt
cGwoYnVuZGxlUmVmKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKHRvSW1wbChwYWdlR3JvdXBSZWYp
LCB0b0ltcGwoc2NyaXB0V29ybGRSZWYpKTsKIH0KIAotdm9pZCBXS0J1bmRsZVJlbW92ZUFsbFVz
ZXJDb250ZW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZikKK3ZvaWQgV0tCdW5kbGVSZW1vdmVBbGxV
c2VyQ29udGVudChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZikKIHsKLSAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlQWxsVXNlckNvbnRl
bnQoKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlQWxsVXNlckNvbnRlbnQodG9JbXBs
KHBhZ2VHcm91cFJlZikpOwogfQogCi12b2lkIFdLQnVuZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5h
YmxlZEZvclRlc3RSdW5uZXIoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBib29sIGVuYWJsZWQpCit2
b2lkIFdLQnVuZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIGJvb2wg
ZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwoYnVuZGxlUmVmKS0+b3ZlcnJpZGVYU1NBdWRpdG9yRW5h
YmxlZEZvclRlc3RSdW5uZXIoZW5hYmxlZCk7CisgICAgdG9JbXBsKGJ1bmRsZVJlZiktPm92ZXJy
aWRlWFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKHRvSW1wbChwYWdlR3JvdXBSZWYpLCBl
bmFibGVkKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlcG9ydEV4Y2VwdGlvbihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBleGNlcHRpb24pCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAkocmV2aXNpb24gNzMwNDMp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTUgKzM0LDE3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAK
IC8vIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRDcmVhdGVQYWdlQ2FsbGJhY2sp
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVXaWxsRGVzdHJveVBhZ2VDYWxsYmFj
aykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZFJlY2VpdmVNZXNzYWdlQ2Fs
bGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlRGlkQ3JlYXRlUGFnZUNhbGxiYWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlV2lsbERlc3Ryb3lQYWdlQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tC
dW5kbGVEaWRJbml0aWFsaXplUGFnZUdyb3VwQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
K3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlRGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjaykoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tCdW5kbGVDbGllbnQgewogICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbjsKICAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CiAgICAgV0tCdW5k
bGVEaWRDcmVhdGVQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRDcmVhdGVQYWdlOwogICAgIFdLQnVuZGxlV2lsbERlc3Ryb3lQYWdlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbERlc3Ryb3lQYWdlOworICAg
IFdLQnVuZGxlRGlkSW5pdGlhbGl6ZVBhZ2VHcm91cENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cDsKICAgICBXS0J1bmRsZURpZFJlY2Vp
dmVNZXNzYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVNZXNzYWdlOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlQ2xpZW50IFdLQnVuZGxl
Q2xpZW50OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDEzICs1MSwxNSBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOwogY2xhc3MgUGFnZU92ZXJsYXk7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBh
Z2U7CitjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0UmVmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdCkKIFdL
X0FERF9BUElfTUFQUElORyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIEluamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSkKK1dLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdFJlZiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmLCBXZWJDb3JlOjpDU1NT
dHlsZURlY2xhcmF0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRnJhbWVSZWYsIFdl
YkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiwgSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTm9k
ZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQorV0tfQUREX0FQSV9NQVBQSU5H
KFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBXZWJQYWdlR3JvdXBQcm94eSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZVBhZ2VPdmVybGF5UmVmLCBQYWdlT3ZlcmxheSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZVBhZ2VSZWYsIFdlYlBhZ2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5k
bGVSYW5nZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZSkKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3
NywxMSBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnCiAgICAgdG9J
bXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVudCh3a0NsaWVudCk7
CiB9CiAKK1dLQnVuZGxlUGFnZUdyb3VwUmVmIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYp
LT5wYWdlR3JvdXAoKSk7Cit9CisKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b0FQSSh0b0lt
cGwocGFnZVJlZiktPm1haW5GcmFtZSgpKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDcz
MDQzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDcgQEAgV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0
TG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlVUlDbGllbnQqIGNsaWVudCk7CiAKK1dLX0VY
UE9SVCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBXS0J1bmRsZVBhZ2VHZXRQYWdlR3JvdXAoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0UmVmIFdLQnVuZGxlUGFnZUdldEJhY2tGb3J3YXJkTGlzdChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSk7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlR3JvdXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgIldLQnVuZGxlUGFnZUdyb3VwLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
KyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94
eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZVBhZ2VH
cm91cEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlBhZ2VHcm91cFByb3h5OjpB
UElUeXBlKTsKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlR3JvdXBDb3B5SWRlbnRpZmll
cihXS0J1bmRsZVBhZ2VHcm91cFJlZiBidW5kbGVQYWdlR3JvdXApCit7CisgICAgcmV0dXJuIHRv
Q29waWVkQVBJKHRvSW1wbChidW5kbGVQYWdlR3JvdXApLT5pZGVudGlmaWVyKCkpOworfQpJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUdy
b3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZUdyb3VwLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5kbGVQYWdlR3JvdXBf
aAorI2RlZmluZSBXS0J1bmRsZVBhZ2VHcm91cF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VY
UE9SVCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHcm91cEdldFR5cGVJRCgpOworCitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlR3JvdXBDb3B5SWRlbnRpZmllcihXS0J1bmRsZVBhZ2VH
cm91cFJlZiBidW5kbGVQYWdlR3JvdXApOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorCisjZW5kaWYgLyogV0tCdW5kbGVQYWdlR3JvdXBfaCAqLwpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZh
dGUuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE2ICs1NSwx
NiBAQCBlbnVtIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB7CiB9OwogdHlwZWRlZiBlbnVt
IFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM7
CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5k
bGUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLU3RyaW5nUmVmIHNvdXJj
ZSwgV0tVUkxSZWYgdXJsLCBXS0FycmF5UmVmIHdoaXRlbGlzdCwgV0tBcnJheVJlZiBibGFja2xp
c3QsIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgV0tVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
QWRkVXNlclN0eWxlU2hlZXQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVNjcmlwdFdvcmxk
UmVmIHNjcmlwdFdvcmxkLCBXS1N0cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJh
eVJlZiB3aGl0ZWxpc3QsIFdLQXJyYXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVV
c2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3Jp
cHRXb3JsZCwgV0tVUkxSZWYgdXJsKTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlVXNl
clN0eWxlU2hlZXQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNj
cmlwdFdvcmxkLCBXS1VSTFJlZiB1cmwpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVV
c2VyU2NyaXB0cyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2Ny
aXB0V29ybGQpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldHMo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkKTsK
LVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsVXNlckNvbnRlbnQoV0tCdW5kbGVSZWYg
YnVuZGxlKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJl
ZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRX
b3JsZFJlZiBzY3JpcHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdL
QXJyYXlSZWYgd2hpdGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5q
ZWN0ZWRGcmFtZXMpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5k
bGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJl
ZiB1cmwsIFdLQXJyYXlSZWYgd2hpdGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKTsKK1dLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlUmVtb3ZlVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCwgV0tV
UkxSZWYgdXJsKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlVXNlclN0eWxlU2hlZXQo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLQnVu
ZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLVVJMUmVmIHVybCk7CitXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHRzKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdv
cmxkKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlVXNlclN0eWxlU2hlZXRzKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3Zl
QWxsVXNlckNvbnRlbnQoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXApOwogCiAvLyBXaWxsIG1ha2UgV2ViUHJvY2VzcyBpZ25vcmUgdGhpcyBwcmVmZXJl
bmNlIHVudGlsIGEgcHJlZmVyZW5jZXMgY2hhbmdlIG5vdGlmaWNhdGlvbiwgb25seSBmb3IgV2Vi
S2l0VGVzdFJ1bm5lciB1c2UuCi1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZU92ZXJyaWRlWFNTQXVk
aXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKFdLQnVuZGxlUmVmIGJ1bmRsZSwgYm9vbCBlbmFibGVk
KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRl
c3RSdW5uZXIoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3Jv
dXAsIGJvb2wgZW5hYmxlZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEy
ICs1MCwxMyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rvci5oIgogI2luY2x1ZGUgIldlYkluc3Bl
Y3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNp
bmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CkBAIC0xMDEsNyArMTAyLDcgQEAgUGFz
c1JlZlB0cjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludAogewogICAgIFJlZlB0cjxXZWJQ
YWdlPiBwYWdlID0gYWRvcHRSZWYobmV3IFdlYlBhZ2UocGFnZUlELCBwYXJhbWV0ZXJzKSk7CiAK
LSAgICBpZiAocGFyYW1ldGVycy52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSAmJiBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgIGlmIChwYWdlLT5wYWdlR3JvdXAoKS0+
aXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVj
dGVkQnVuZGxlKCkpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxl
KCktPmRpZENyZWF0ZVBhZ2UocGFnZS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGFnZS5yZWxlYXNl
KCk7CkBAIC0xMTEsNyArMTEyLDYgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IAogICAgIDogbV92aWV3U2l6ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9p
c0luUmVkbyhmYWxzZSkKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCi0gICAgLCBtX2lzVmlzaWJs
ZVRvSW5qZWN0ZWRCdW5kbGUocGFyYW1ldGVycy52aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3dpbmRvd0lzVmlzaWJsZShmYWxzZSkKICNlbGlmIFBM
QVRGT1JNKFdJTikKQEAgLTE0MywxMyArMTQzLDEzIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBjb25zdCAKIAogICAgIHVwZGF0ZVByZWZlcmVuY2VzKHBhcmFtZXRlcnMuc3Rv
cmUpOwogCi0gICAgbV9wYWdlLT5zZXRHcm91cE5hbWUoIldlYktpdDJHcm91cCIpOworICAgIG1f
cGFnZUdyb3VwID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZUdyb3VwKHBhcmFtZXRlcnMu
cGFnZUdyb3VwRGF0YSk7CisgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUobV9wYWdlR3JvdXAtPmlk
ZW50aWZpZXIoKSk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKICAgICBTZXR0aW5nczo6
c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICBtX2RyYXdpbmdBcmVhID0gRHJh
d2luZ0FyZWE6OmNyZWF0ZShwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSW5mby50eXBlLCBwYXJhbWV0
ZXJzLmRyYXdpbmdBcmVhSW5mby5pZGVudGlmaWVyLCB0aGlzKTsKLQogICAgIG1fbWFpbkZyYW1l
ID0gV2ViRnJhbWU6OmNyZWF0ZU1haW5GcmFtZSh0aGlzKTsKIAogI2lmbmRlZiBOREVCVUcKQEAg
LTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKIAogICAgIG1faXNDbG9zZWQg
PSB0cnVlOwogCi0gICAgaWYgKG1faXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSAmJiBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgIGlmIChwYWdlR3JvdXAoKS0+aXNW
aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpICYmIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVk
QnVuZGxlKCkpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCkt
PndpbGxEZXN0cm95UGFnZSh0aGlzKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkluZGV4OiBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiAr
NzcsNyBAQCBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYktl
eWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViUGFnZUdyb3VwUHJv
eHk7CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwogCkBAIC0xMDks
NiArMTEwLDggQEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0KiBi
YWNrRm9yd2FyZExpc3QoKTsKICAgICBEcmF3aW5nQXJlYSogZHJhd2luZ0FyZWEoKSBjb25zdCB7
IHJldHVybiBtX2RyYXdpbmdBcmVhLmdldCgpOyB9CiAKKyAgICBXZWJQYWdlR3JvdXBQcm94eSog
cGFnZUdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlR3JvdXAuZ2V0KCk7IH0KKwogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKTsKICNlbmRpZgpA
QCAtMzEwLDYgKzMxMyw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5G
cmFtZTsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0Zv
cndhcmRMaXN0OwogCisgICAgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiBtX3BhZ2VHcm91cDsK
KwogICAgIFN0cmluZyBtX2N1c3RvbVVzZXJBZ2VudDsKIAogICAgIFdlYkNvcmU6OkludFNpemUg
bV92aWV3U2l6ZTsKQEAgLTMxNyw3ICszMjIsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lz
SW5SZWRvOwogICAgIGJvb2wgbV9pc0Nsb3NlZDsKLSAgICBib29sIG1faXNWaXNpYmxlVG9Jbmpl
Y3RlZEJ1bmRsZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBXaGV0aGVyIHRoZSBjb250
YWluaW5nIHdpbmRvdyBpcyB2aXNpYmxlIG9yIG5vdC4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUGFnZUdyb3Vw
UHJveHkuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXBQ
cm94eT4gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBk
YXRhKQoreworICAgIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gcGFnZUdyb3VwID0gYWRvcHRS
ZWYobmV3IFdlYlBhZ2VHcm91cFByb3h5KGRhdGEpKTsKKyAgICAKKyAgICBpZiAocGFnZUdyb3Vw
LT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5q
ZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5k
bGUoKS0+ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOworCisgICAgcmV0
dXJuIHBhZ2VHcm91cC5yZWxlYXNlKCk7Cit9CisKK1dlYlBhZ2VHcm91cFByb3h5Ojp+V2ViUGFn
ZUdyb3VwUHJveHkoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBhZ2VH
cm91cFByb3h5X2gKKyNkZWZpbmUgV2ViUGFnZUdyb3VwUHJveHlfaAorCisjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlR3JvdXBQ
cm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBl
IEFQSVR5cGUgPSBUeXBlQnVuZGxlUGFnZUdyb3VwOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViUGFnZUdyb3VwUHJveHk+IGNyZWF0ZShjb25zdCBXZWJQYWdlR3JvdXBEYXRhJik7CisgICAg
dmlydHVhbCB+V2ViUGFnZUdyb3VwUHJveHkoKTsKKworICAgIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pZGVudGlmZXI7IH0KKyAgICB1aW50NjRfdCBw
YWdlR3JvdXBJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wYWdlR3JvdXBJRDsgfQorICAgIGJv
b2wgaXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS52aXNp
YmxlVG9JbmplY3RlZEJ1bmRsZTsgfQorCitwcml2YXRlOgorICAgIFdlYlBhZ2VHcm91cFByb3h5
KGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIGRhdGEpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJ
VHlwZTsgfQorCisgICAgV2ViUGFnZUdyb3VwRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhZ2VHcm91cFByb3h5X2gKSW5kZXg6IFdlYktp
dDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC01NzYsNiArNTc2LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJQYWdlR3JvdXBEYXRhLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJQYWdlR3JvdXBEYXRhLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMjg2LDYgKzEyOTQsMTQgQEAKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViUGFnZS5tZXNzYWdlcy5pbiINCiAJ
CQkJCT4NCiAJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxX
ZWJQcm9jZXNzXFdlYlBhZ2VcV2ViUGFnZUdyb3VwUHJveHkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVxXZWJQYWdlR3JvdXBQcm94eS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQogCQkJCTxG
aWx0ZXINCiAJCQkJCU5hbWU9IndpbiINCiAJCQkJCT4NCkBAIC0xNTIxLDYgKzE1MzcsMTQgQEAK
IAkJCQkJCQk+DQogCQkJCQkJPC9GaWxlPg0KIAkJCQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVBhZ2VHcm91
cC5jcHAiDQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCisJCQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxl
UGFnZUdyb3VwLmgiDQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCiAJ
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdL
QnVuZGxlUGFnZU92ZXJsYXkuY3BwIg0KIAkJCQkJCQk+DQogCQkJCQkJPC9GaWxlPg0KQEAgLTE5
MDgsNiArMTkzMiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViUGFnZUdyb3VwLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJQYWdl
R3JvdXAuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFVJUHJvY2Vzc1xXZWJQYWdlTmFtZXNwYWNlLmNwcCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCkBAIC0yMDgyLDYgKzIxMTQsMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJ
CTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlR3Jv
dXAuY3BwIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlR3JvdXAuaCINCisJCQkJCQk+DQor
CQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9j
ZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0K
SW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHJldmlzaW9uIDczMDQzKQorKysgV2Vi
S2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBAIGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLTmF0aXZl
RXZlbnQuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS05hdmlnYXRpb25EYXRhLmgiICIkKFdFQktJVE9V
VFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3Nc
QVBJXENcV0tQYWdlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAg
IHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlR3JvdXAuaCIgIiQoV0VCS0lU
T1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vz
c1xBUElcQ1xXS1BhZ2VOYW1lc3BhY2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdl
YktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2Vz
LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9k
ICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCIgIiQoV0VCS0lUT1VU
UFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkBAIC02MCw2ICs2MSw3IEBAIGFsbDoKICAgICB4Y29w
eSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGVI
YW5kbGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVOb2RlSGFu
ZGxlUHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4
Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVBh
Z2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kg
L2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlR3JvdXAu
aCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2Qg
Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlT3ZlcmxheS5o
IiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAi
Li5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVBhZ2VQcml2YXRlLmgi
ICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIu
LlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlUHJpdmF0ZS5oIiAiJChX
RUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCShyZXZpc2lv
biA3MzA0MykKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVu
ZGxlTWFpbi5tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIHZvaWQgV0tCdW5kbGVJ
bml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmQKICAgICAgICAgMCwKICAgICAgICAgZGlkQ3JlYXRl
UGFnZSwKICAgICAgICAgd2lsbERlc3Ryb3lQYWdlLAorICAgICAgICAwLCAvLyBkaWRJbml0aWFs
aXplUGFnZUdyb3VwCiAgICAgICAgIGRpZFJlY2lldmVNZXNzYWdlCiAgICAgfTsKICAgICBXS0J1
bmRsZVNldENsaWVudChidW5kbGUsICZjbGllbnQpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdl
YktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gNzMwNDMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE1ICs1NCwyMCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6CiAgICAgICAgIHRoaXMsCiAgICAgICAgIGRp
ZENyZWF0ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwKKyAgICAgICAgZGlkSW5pdGlh
bGl6ZVBhZ2VHcm91cCwKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UKICAgICB9OwogICAgIFdL
QnVuZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKIAogICAgIC8vIEluaXRpYWxpemUg
dGhlIHRlc3QgZnJvbSB0aGUgImluaXRpYWxpemF0aW9uVXNlckRhdGEiLgotICAgIGFzc2VydChX
S0dldFR5cGVJRChpbml0aWFsaXphdGlvblVzZXJEYXRhKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgp
KTsKLSAgICBXS1N0cmluZ1JlZiB0ZXN0TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihp
bml0aWFsaXphdGlvblVzZXJEYXRhKTsKIAotICAgIGluaXRpYWxpemVUZXN0TmFtZWQoYnVuZGxl
LCBVdGlsOjp0b1NURCh0ZXN0TmFtZSkpOworICAgIGFzc2VydChXS0dldFR5cGVJRChpbml0aWFs
aXphdGlvblVzZXJEYXRhKSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisgICAgV0tEaWN0
aW9uYXJ5UmVmIGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlv
bmFyeVJlZj4oaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CisKKyAgICBXS1N0cmluZ1JlZiB0ZXN0
TmFtZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlRlc3ROYW1lIikpKTsKKyAgICBXS1R5cGVSZWYgdXNlckRhdGEgPSBXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlVzZXJEYXRhIikpOworICAgIAorICAgIGluaXRpYWxpemVUZXN0TmFtZWQoYnVu
ZGxlLCBVdGlsOjp0b1NURCh0ZXN0TmFtZSksIHVzZXJEYXRhKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTc5LDYgKzg0LDEz
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjp3aWxsRGVzdHIKICAgICBzZWxmLT5t
X2N1cnJlbnRUZXN0LT53aWxsRGVzdHJveVBhZ2UoYnVuZGxlLCBwYWdlKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZEluaXRpYWxpemVQYWdlR3JvdXAoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKiBzZWxmID0gc3RhdGlj
X2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOworICAgIGFzc2VydChzZWxmLT5tX2N1cnJlbnRUZXN0KTsKKyAgICBzZWxmLT5tX2N1
cnJlbnRUZXN0LT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKGJ1bmRsZSwgcGFnZUdyb3VwKTsKK30K
Kwogdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBJbmplY3RlZEJ1bmRsZUNvbnRy
b2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC05NCw3ICsxMDYsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROCiAgICAgICAgIHByaW50ZigiJXNcbiIsICgq
aXQpLmZpcnN0LmNfc3RyKCkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
aW5pdGlhbGl6ZVRlc3ROYW1lZChXS0J1bmRsZVJlZiBidW5kbGUsIGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZGVudGlmaWVyKQordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemVU
ZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmll
ciwgV0tUeXBlUmVmIHVzZXJEYXRhKQogewogICAgIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1
bmN0aW9uIGNyZWF0ZVRlc3RGdW5jdGlvbiA9IG1fY3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVu
Y3Rpb25zW2lkZW50aWZpZXJdOwogICAgIGlmICghY3JlYXRlVGVzdEZ1bmN0aW9uKSB7CkBAIC0x
MDMsNyArMTE1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpegog
ICAgIH0KIAogICAgIG1fY3VycmVudFRlc3QgPSBjcmVhdGVUZXN0RnVuY3Rpb24oaWRlbnRpZmll
cik7Ci0gICAgbV9jdXJyZW50VGVzdC0+aW5pdGlhbGl6ZShidW5kbGUpOworICAgIG1fY3VycmVu
dFRlc3QtPmluaXRpYWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyOjpyZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9u
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyLCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RG
dW5jdGlvbiBmdW5jdGlvbikKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJL
aXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoV0tC
dW5kbGVSZWYsIFdLVHlwZVJlZik7CiAKICAgICB2b2lkIGR1bXBUZXN0TmFtZXMoKTsKLSAgICB2
b2lkIGluaXRpYWxpemVUZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25zdCBzdGQ6OnN0
cmluZyYpOworICAgIHZvaWQgaW5pdGlhbGl6ZVRlc3ROYW1lZChXS0J1bmRsZVJlZiBidW5kbGUs
IGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKIAogICAgIHR5cGVkZWYg
SW5qZWN0ZWRCdW5kbGVUZXN0KiAoKkNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uKShj
b25zdCBzdGQ6OnN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJDcmVhdGVJbmplY3RlZEJ1bmRs
ZVRlc3RGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyYsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVz
dEZ1bmN0aW9uKTsKQEAgLTUwLDkgKzUwLDEwIEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyKCk7CiAgICAgfkluamVjdGVkQnVuZGxlQ29udHJvbGxlcigpOwogCi0gICAg
c3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxs
RGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tC
dW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAgc3RkOjptYXA8c3RkOjpzdHJp
bmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uPiBtX2NyZWF0ZUluamVjdGVkQnVu
ZGxlVGVzdEZ1bmN0aW9uczsKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKSW5kZXg6IFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaAkocmV2aXNpb24g
NzMwNDMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlVGVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTEgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVU
ZXN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZVRlc3QoKSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFn
ZVJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3JvdXAoV0tCdW5k
bGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpIHsgfQogCiAgICAgc3RkOjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDEzICszMywyMSBAQAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNwYWNlIFV0aWwg
ewogCi1XS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25z
dCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUpCitXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dEZvcklu
amVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUsIFdLVHlwZVJlZiB1
c2VyRGF0YSkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaW5qZWN0ZWRCdW5kbGVQ
YXRoKEFkb3B0V0ssIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpKTsKICAgICBXS0NvbnRleHRS
ZWYgY29udGV4dCA9IFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoaW5qZWN0
ZWRCdW5kbGVQYXRoLmdldCgpKTsKIAorICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25h
cnlSZWY+IGluaXRpYWxpemF0aW9uRGljdGlvbmFyeShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9u
YXJ5Q3JlYXRlKCkpOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXN0TmFt
ZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVzdE5hbWUiKSk7
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRlc3ROYW1lU3RyaW5nKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRlc3ROYW1lLmNfc3RyKCkpKTsKLSAgICBXS0Nv
bnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoY29udGV4dCwg
dGVzdE5hbWVTdHJpbmcuZ2V0KCkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oaW5pdGlhbGl6
YXRpb25EaWN0aW9uYXJ5LmdldCgpLCB0ZXN0TmFtZUtleS5nZXQoKSwgdGVzdE5hbWVTdHJpbmcu
Z2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZXJEYXRhS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VyRGF0YSIpKTsKKyAgICBXS0Rp
Y3Rpb25hcnlBZGRJdGVtKGluaXRpYWxpemF0aW9uRGljdGlvbmFyeS5nZXQoKSwgdXNlckRhdGFL
ZXkuZ2V0KCksIHVzZXJEYXRhKTsKKworICAgIFdLQ29udGV4dFNldEluaXRpYWxpemF0aW9uVXNl
ckRhdGFGb3JJbmplY3RlZEJ1bmRsZShjb250ZXh0LCBpbml0aWFsaXphdGlvbkRpY3Rpb25hcnku
Z2V0KCkpOwogCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CkluZGV4OiBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCShyZXZpc2lvbiA3MzA0MykKKysrIFdl
YktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgVXRpbCB7CiAvLyBSdW5zIGEgcGxhdGZvcm0g
cnVubG9vcCB1bnRpbCB0aGUgJ2RvbmUnIGlzIHRydWUuIAogdm9pZCBydW4oYm9vbCogZG9uZSk7
CiAKLVdLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJik7CitXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYsIFdLVHlwZVJlZiB1c2VyRGF0YSA9IDApOwogCiBX
S1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKTsKIFdLVVJMUmVmIGNyZWF0ZVVS
TEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNpb24p
OwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCShy
ZXZpc2lvbiA3MzA0MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgV2luZG93TWVzc2Fn
ZU9ic2VydmVyOwogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgewogcHVibGljOgotICAgIFBsYXRm
b3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYpOworICAgIFBsYXRmb3JtV2ViVmlldyhXS1Bh
Z2VOYW1lc3BhY2VSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflBsYXRmb3JtV2ViVmll
dygpOwogCiAgICAgV0tQYWdlUmVmIHBhZ2UoKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9E
b2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCShyZXZpc2lvbiA3MzA0MykKKysr
IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNl
clNjcmlwdEFsZXJ0Q3Jhc2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSwxMSBAQCBz
dGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmCiAKIFRFU1QoV2ViS2l0Miwg
RG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdCkKIHsKLSAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvcklu
amVjdGVkQnVuZGxlVGVzdCgiRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdCIp
KTsKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwKEFkb3B0V0ssIFdL
UGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkRvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3RQYWdlR3JvdXAiKSkpOyAK
KworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpj
cmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJEb2N1bWVudFN0YXJ0VXNlclNjcmlw
dEFsZXJ0Q3Jhc2hUZXN0IiwgcGFnZUdyb3VwLmdldCgpKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tQ
YWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNy
ZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5h
bWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFj
ZS5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50
OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2Ny
aXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hf
QnVuZGxlLmNwcAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoX0J1bmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwxMiBAQAogICovCiAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVRlc3QuaCIKLSNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlU2NyaXB0V29ybGQuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJL
aXQyLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IApAQCAtMzgsMTEgKzQwLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlKQorICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQogICAgIHsK
KyAgICAgICAgYXNzZXJ0KFdLR2V0VHlwZUlEKHVzZXJEYXRhKSA9PSBXS0J1bmRsZVBhZ2VHcm91
cEdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID0g
c3RhdGljX2Nhc3Q8V0tCdW5kbGVQYWdlR3JvdXBSZWY+KHVzZXJEYXRhKTsKKwogICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJhbGVydCgnYW4gYWxlcnQnKTsiKSk7Ci0gICAgICAgIFdLQnVuZGxlQWRk
VXNlclNjcmlwdChidW5kbGUsIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpLCBzb3Vy
Y2UuZ2V0KCksIDAsIDAsIDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5B
bGxGcmFtZXMpOworICAgICAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVuZGxlLCBwYWdlR3Jv
dXAsIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpLCBzb3VyY2UuZ2V0KCksIDAsIDAs
IDAsIGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCwga1dLSW5qZWN0SW5BbGxGcmFtZXMpOwogICAg
IH0KKworcHJpdmF0ZToKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91cDsKIH07
CiAKIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERvY3VtZW50U3RhcnRVc2Vy
U2NyaXB0QWxlcnRDcmFzaFRlc3Q+IHJlZ2lzdHJhcigiRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRB
bGVydENyYXNoVGVzdCIpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxh
dGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiBuYW1lc3Bh
Y2VSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VS
ZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAg
IE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7Ci0gICAgbV92aWV3ID0g
W1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBwYWdlTmFtZXNwYWNlUmVmOm5hbWVz
cGFjZVJlZl07CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVj
dCBwYWdlTmFtZXNwYWNlUmVmOnBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91
cFJlZl07CiAKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAw
MDAsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVp
Z2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKICAgICBtX3dpbmRvdyA9IFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3Jk
ZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVT
XTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niwx
NCArNTYsMTQgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlZ2lzdGVyV2luZG93Q2xhcwogICAg
IDo6UmVnaXN0ZXJDbGFzc0V4Vygmd25kQ2xhc3MpOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmKQorUGxhdGZvcm1X
ZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFjZVJlZiwg
V0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogICAgIDogbV9wYXJlbnRXaW5kb3dNZXNzYWdl
T2JzZXJ2ZXIoMCkKIHsKICAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CiAKICAgICBSRUNUIHZp
ZXdSZWN0ID0gezAsIDAsIDgwMCwgNjAwfTsKICAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4
VygwLCBob3N0V2luZG93Q2xhc3NOYW1lLCBMIlRlc3RXZWJLaXRBUEkiLCBXU19PVkVSTEFQUEVE
V0lORE9XLCB2aWV3UmVjdC5sZWZ0LCB2aWV3UmVjdC50b3AsIHZpZXdSZWN0LnJpZ2h0LCB2aWV3
UmVjdC5ib3R0b20sIDAsIDAsIDAsIHRoaXMpOwotICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2
aWV3UmVjdCwgbmFtZXNwYWNlUmVmLCBtX3dpbmRvdyk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3Jl
YXRlKHZpZXdSZWN0LCBuYW1lc3BhY2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5kb3cpOwogfQog
CiBQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQpJbmRleDogV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczMDQz
KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMu
aCIKICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHRQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEs
MTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6d2lsbERlc3Ryb3lQYWdlKFdLQgogICAgIHN0YXRp
Y19jYXN0PEluamVjdGVkQnVuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT53
aWxsRGVzdHJveVBhZ2UocGFnZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZEluaXRp
YWxpemVQYWdlR3JvdXAoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXAsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8SW5q
ZWN0ZWRCdW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZEluaXRpYWxp
emVQYWdlR3JvdXAocGFnZUdyb3VwKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIHN0
YXRpY19jYXN0PEluamVjdGVkQnVuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwpAQCAtNzUsNiAr
ODAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlCiAgICAgICAg
IHRoaXMsCiAgICAgICAgIGRpZENyZWF0ZVBhZ2UsCiAgICAgICAgIHdpbGxEZXN0cm95UGFnZSwK
KyAgICAgICAgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCwKICAgICAgICAgZGlkUmVjZWl2ZU1lc3Nh
Z2UKICAgICB9OwogICAgIFdLQnVuZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKQEAg
LTk5LDYgKzEwNSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJveVBhZ2UoV0tC
CiAgICAgfQogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRJbml0aWFsaXplUGFnZUdyb3Vw
KFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICBtX3BhZ2VHcm91cCA9IHBh
Z2VHcm91cDsKK30KKwogSW5qZWN0ZWRCdW5kbGVQYWdlKiBJbmplY3RlZEJ1bmRsZTo6cGFnZSgp
IGNvbnN0CiB7CiAgICAgLy8gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGhhdmUgdGhlIFVJIHByb2Nl
c3Mgc2VuZCBvdmVyIGEgcmVmZXJlbmNlIHRvIHRoZSBtYWluCkBAIC0xMzcsNyArMTQ4LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKCkKICAgICBXS0J1bmRsZVNldFNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzKG1fYnVuZGxlLCBmYWxzZSk7CiAgICAgV0tCdW5kbGVSZW1vdmVB
bGxWaXNpdGVkTGlua3MobV9idW5kbGUpOwogCi0gICAgV0tCdW5kbGVSZW1vdmVBbGxVc2VyQ29u
dGVudChtX2J1bmRsZSk7CisgICAgV0tCdW5kbGVSZW1vdmVBbGxVc2VyQ29udGVudChtX2J1bmRs
ZSwgbV9wYWdlR3JvdXApOwogCiAgICAgcGFnZSgpLT5yZXNldCgpOwogfQpJbmRleDogV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJl
Zik7CiAKICAgICBXS0J1bmRsZVJlZiBidW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZTsg
fQorICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUdyb3VwOyB9CiAKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRy
b2xsZXIoKSB7IHJldHVybiBtX2xheW91dFRlc3RDb250cm9sbGVyLmdldCgpOyB9CiAgICAgR0ND
b250cm9sbGVyKiBnY0NvbnRyb2xsZXIoKSB7IHJldHVybiBtX2djQ29udHJvbGxlci5nZXQoKTsg
fQpAQCAtNzAsMTUgKzcxLDE4IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVh
dGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlw
ZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKFdLQnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogICAgIHZvaWQgZGlkQ3JlYXRl
UGFnZShXS0J1bmRsZVBhZ2VSZWYpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxl
UGFnZVJlZik7CisgICAgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUGFnZUdy
b3VwUmVmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCiAgICAgdm9pZCBiZWdpblRlc3RpbmcoKTsK
IAogICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOworICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIG1f
cGFnZUdyb3VwOwogICAgIFZlY3RvcjxPd25QdHI8SW5qZWN0ZWRCdW5kbGVQYWdlPiA+IG1fcGFn
ZXM7CiAKICAgICBSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IG1fbGF5b3V0VGVzdENvbnRy
b2xsZXI7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNzMwNDMpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3
NCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gc291cmNlV0sgPSB0b1dLKHNvdXJjZSk7CiAgICAgV0tSZXRh
aW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4gc2NyaXB0V29ybGQoQWRvcHRXSywgV0tCdW5k
bGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpOwogCi0gICAgV0tCdW5kbGVBZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgc2NyaXB0V29ybGQuZ2V0KCksIHNv
dXJjZVdLLmdldCgpLCAwLCAwLCAwLAorICAgIFdLQnVuZGxlQWRkVXNlclNjcmlwdChJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
R3JvdXAoKSwgc2NyaXB0V29ybGQuZ2V0KCksIHNvdXJjZVdLLmdldCgpLCAwLCAwLCAwLAogICAg
ICAgICAocnVuQXRTdGFydCA/IGtXS0luamVjdEF0RG9jdW1lbnRTdGFydCA6IGtXS0luamVjdEF0
RG9jdW1lbnRFbmQpLAogICAgICAgICAoYWxsRnJhbWVzID8ga1dLSW5qZWN0SW5BbGxGcmFtZXMg
OiBrV0tJbmplY3RJblRvcEZyYW1lT25seSkpOwogfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVMKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc291cmNlV0sgPSB0b1dLKHNvdXJjZSk7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5k
bGVTY3JpcHRXb3JsZFJlZj4gc2NyaXB0V29ybGQoQWRvcHRXSywgV0tCdW5kbGVTY3JpcHRXb3Js
ZENyZWF0ZVdvcmxkKCkpOwogCi0gICAgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIHNjcmlwdFdvcmxkLmdldCgpLCBzb3VyY2VXSy5n
ZXQoKSwgMCwgMCwgMCwKKyAgICBXS0J1bmRsZUFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2VHcm91
cCgpLCBzY3JpcHRXb3JsZC5nZXQoKSwgc291cmNlV0suZ2V0KCksIDAsIDAsIDAsCiAgICAgICAg
IChhbGxGcmFtZXMgPyBrV0tJbmplY3RJbkFsbEZyYW1lcyA6IGtXS0luamVjdEluVG9wRnJhbWVP
bmx5KSk7CiB9CiAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRDYW5PcGVuV2luCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0
b3JFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBXS0J1bmRsZU92ZXJyaWRlWFNTQXVkaXRv
ckVuYWJsZWRGb3JUZXN0UnVubmVyKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwg
dHJ1ZSk7CisgICAgV0tCdW5kbGVPdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5l
cihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlR3JvdXAoKSwgdHJ1ZSk7CiB9CiAKIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9s
bGVyOjp3aW5kb3dDb3VudCgpCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9uIDczMDQzKQor
KysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRm
b3JtV2ViVmlldyhXS1BhZ2VOCiAKICAgICBSRUNUIHZpZXdSZWN0ID0gezAsIDAsIDgwMCwgNjAw
fTsKICAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4VygwLCBob3N0V2luZG93Q2xhc3NOYW1l
LCBMIldlYktpdFRlc3RSdW5uZXIiLCBXU19PVkVSTEFQUEVEV0lORE9XLCAwIC8qWE9GRlNFVCov
LCAwIC8qWU9GRlNFVCovLCB2aWV3UmVjdC5yaWdodCwgdmlld1JlY3QuYm90dG9tLCAwLCAwLCBH
ZXRNb2R1bGVIYW5kbGUoMCksIDApOwotICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVj
dCwgbmFtZXNwYWNlUmVmLCBtX3dpbmRvdyk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZp
ZXdSZWN0LCBuYW1lc3BhY2VSZWYsIDAgLypwYWdlR3JvdXBSZWYqLywgbV93aW5kb3cpOwogfQog
CiBQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75311</attachid>
            <date>2010-12-01 13:11:53 -0800</date>
            <delta_ts>2010-12-01 13:13:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchForBZ.diff</filename>
            <type>text/plain</type>
            <size>126285</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQ0IEBACisyMDEwLTEyLTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBh
Z2VHcm91cGluZyB0byBXZWJLaXQyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTAzMzIKKworICAgICAgICAtIEFkZHMgV0tQYWdlR3JvdXBSZWYg
YW5kIFdLQnVuZGxlUGFnZUdyb3VwUmVmIEFQSSBvYmplY3RzCisgICAgICAgICAgKGJhY2tlZCBi
eSBXZWJQYWdlR3JvdXAgYW5kIFdlYlBhZ2VHcm91cFByb3h5IHJlc3BlY3RpdmVseSkuCisgICAg
ICAgIC0gTW92ZXMgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgZnJvbSBwYWdlIHRvIFBhZ2VHcm91
cC4KKyAgICAgICAgLSBNYWtlIHVzZXJTY3JpcHQvdXNlclN0eWxlU2hlZXQgZnVuY3Rpb25zIHRh
a2UgYSBwYWdlIGdyb3VwIHBhcmFtZXRlci4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jh
c2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUdyb3VwRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VHZXRQYWdlR3JvdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdLUGFnZUdyb3VwR2V0VHlwZUlEKToKKyAgICAgICAgKFdLUGFnZUdyb3VwQ3JlYXRlV2l0
aElkZW50aWZpZXIpOgorICAgICAgICAoV0tQYWdlR3JvdXBDb3B5SWRlbnRpZmllcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0Mvd2luL1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tW
aWV3IGluaXRXaXRoRnJhbWU6cGFnZU5hbWVzcGFjZVJlZjpwYWdlR3JvdXBSZWY6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnBhZ2VOYW1lc3BhY2VSZWY6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQ
cml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3Vw
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUGFnZUdyb3VwSUQpOgorICAg
ICAgICAoV2ViS2l0Ojp3ZWJQYWdlR3JvdXBNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
R3JvdXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Z2V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwOjpXZWJQYWdlR3JvdXApOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlR3JvdXA6On5XZWJQYWdlR3JvdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6aWRl
bnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91cDo6cGFnZUdyb3VwSUQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXA6OmRhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlR3JvdXA6OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlV2ViUGFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGFnZUdyb3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVBZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdLQnVuZGxlQWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV0tC
dW5kbGVSZW1vdmVVc2VyU2NyaXB0KToKKyAgICAgICAgKFdLQnVuZGxlUmVtb3ZlVXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAoV0tCdW5kbGVSZW1vdmVVc2VyU2NyaXB0cyk6CisgICAgICAgIChX
S0J1bmRsZVJlbW92ZVVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChXS0J1bmRsZVJlbW92ZUFs
bFVzZXJDb250ZW50KToKKyAgICAgICAgKFdLQnVuZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxl
ZEZvclRlc3RSdW5uZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQVBJQ2FzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91
cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZUdyb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZVBhZ2VHcm91cEdldFR5cGVJ
RCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VHcm91cENvcHlJZGVudGlmaWVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUdyb3VwLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpvdmVycmlkZVhTU0F1
ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFk
ZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92
ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNl
clN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNl
clNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0
eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFVz
ZXJDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmRpZEluaXRpYWxp
emVQYWdlR3JvdXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ6
OmRpZEluaXRpYWxpemVQYWdlR3JvdXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYWdlR3JvdXApOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlR3JvdXBQcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6On5XZWJQYWdlR3JvdXBQcm94eSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlR3JvdXBQcm94eTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VHcm91cFByb3h5OjpwYWdlR3JvdXBJRCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VHcm91cFByb3h5Ojppc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OldlYlBhZ2VHcm91cFByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogd2luL1dlYktp
dDIudmNwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2U6CisKIDIwMTAt
MTItMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA3MzA1OSkKKysrIFdl
YktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksNyBAQCBIRUFE
RVJTICs9IFwKICAgICBTaGFyZWQvV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIFwKICAgICBTaGFy
ZWQvV2ViTnVtYmVyLmggXAogICAgIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgg
XAorICAgIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmggXAogICAgIFNoYXJlZC9XZWJQb3B1cEl0
ZW0uaCBcCiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBcCkBAIC0yNzAsNiArMjcxLDcgQEAgSEVBREVS
UyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmggXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
aCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmggXAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VOYW1lc3BhY2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZh
dGUuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaCBcCkBAIC0zMTYsNiAr
MzE4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oIFwK
ICAgICBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBh
Z2VDb250ZXh0TWVudUNsaWVudC5oIFwKKyAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggXAog
ICAgIFVJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oIFwKQEAgLTMzMyw2ICsz
MzYsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlTm9kZUhhbmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmggXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBcCkBAIC0z
NzcsNiArMzgxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VHcm91cFByb3h5LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIFwKICAgICAkJFdF
QktJVDJfR0VORVJBVEVEX0hFQURFUlMKIApAQCAtNDI0LDYgKzQyOSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYk1vdXNl
RXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAor
ICAgIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBsYXRmb3Jt
VG91Y2hQb2ludC5jcHAgXAogICAgIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwIFwKICAgICBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgXApAQCAtNDQ5LDYgKzQ1NSw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQ
cmVmZXJlbmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3Bw
IFwKQEAgLTQ4OSw2ICs0OTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBcCiAg
ICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXAorICAgIFVJUHJvY2Vz
cy9XZWJQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUG9s
aWN5Q2xpZW50LmNwcCBcCkBAIC01MTMsNiArNTIxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5j
cHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91
cC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVTY3JpcHRXb3JsZC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtNTY2LDYgKzU3NSw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9yUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgXAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQ
cm94eS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9DaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFRdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9UaWxlZERyYXdpbmdBcmVh
UXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcCBcCkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5
cGVJbnNwZWN0b3IsCiAgICAgICAgIFR5cGVOYXZpZ2F0aW9uRGF0YSwKICAgICAgICAgVHlwZVBh
Z2UsCisgICAgICAgIFR5cGVQYWdlR3JvdXAsCiAgICAgICAgIFR5cGVQYWdlTmFtZXNwYWNlLAog
ICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCiAKQEAgLTc1LDYgKzc2LDcgQEAgcHVibGljOgogICAg
ICAgICBUeXBlQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZU5vZGVIYW5k
bGUsCiAgICAgICAgIFR5cGVCdW5kbGVQYWdlLAorICAgICAgICBUeXBlQnVuZGxlUGFnZUdyb3Vw
LAogICAgICAgICBUeXBlQnVuZGxlUGFnZU92ZXJsYXksCiAgICAgICAgIFR5cGVCdW5kbGVSYW5n
ZUhhbmRsZSwKICAgICAgICAgVHlwZUJ1bmRsZVNjcmlwdFdvcmxkLApJbmRleDogV2ViS2l0Mi9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDczMDU5KQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zNCw3ICszNCw3IEBAIHZv
aWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEMKICAgICBlbmNvZGVyLT5lbmNv
ZGUodmlld1NpemUpOwogICAgIGVuY29kZXItPmVuY29kZShzdG9yZSk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKGRyYXdpbmdBcmVhSW5mbyk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHZpc2libGVUb0lu
amVjdGVkQnVuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUocGFnZUdyb3VwRGF0YSk7CiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KG5hdGl2ZVdpbmRvdykpOwpAQCAtNDksNyArNDksNyBAQCBib29sIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSW5mbykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnZpc2libGVU
b0luamVjdGVkQnVuZGxlKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnBh
Z2VHcm91cERhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShXSU4p
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZp
c2lvbiA3MzA1OSkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzX2gKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgorI2luY2x1ZGUg
IldlYlBhZ2VHcm91cERhdGEuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAKQEAgLTQ0LDcgKzQ1LDggQEAgc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemU7
CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZTsKICAgICBEcmF3aW5nQXJlYUluZm8gZHJh
d2luZ0FyZWFJbmZvOwotICAgIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGU7CisgICAgV2Vi
UGFnZUdyb3VwRGF0YSBwYWdlR3JvdXBEYXRhOworCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIEhX
TkQgbmF0aXZlV2luZG93OwogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3Jv
dXBEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRh
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldl
YlBhZ2VHcm91cERhdGEuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiQXJndW1lbnRzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2VHcm91
cERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihpZGVudGlmZXIsIHBhZ2VH
cm91cElELCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkpOworfQorCitib29sIFdlYlBhZ2VHcm91
cERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYlBhZ2VH
cm91cERhdGEmIGRhdGEpCit7CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpP
dXQoZGF0YS5pZGVudGlmZXIsIGRhdGEucGFnZUdyb3VwSUQsIGRhdGEudmlzaWJsZVRvSW5qZWN0
ZWRCdW5kbGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUdyb3VwRGF0YS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUdy
b3VwRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQYWdlR3JvdXBEYXRhX2gKKyNkZWZpbmUgV2ViUGFnZUdyb3VwRGF0YV9oCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAg
IGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YSB7CisgICAgdm9p
ZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYlBhZ2VHcm91cERhdGEmKTsK
KworICAgIFN0cmluZyBpZGVudGlmZXI7CisgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7CisgICAg
Ym9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisKKyNlbmRpZiAvLyBXZWJQYWdlR3JvdXBEYXRhX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLRnJhbWVQb2xpY3kKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBX
S0luc3BlY3RvclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkRh
dGEqIFdLTmF2aWdhdGlvbkRhdGFSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Bh
Z2UqIFdLUGFnZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZUdyb3VwKiBX
S1BhZ2VHcm91cFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZU5hbWVzcGFj
ZSogV0tQYWdlTmFtZXNwYWNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVm
ZXJlbmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKIApAQCAtNzcsMTQgKzc4LDE1IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQnVuZGxlKiBXS0J1bmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdFJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSogV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
dW5kbGVET01DU1NTdHlsZURlY2xhcmF0aW9uKiBXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25S
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRsZUZy
YW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVzdWx0
KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0J1bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLQnVuZGxlUGFnZSogV0tCdW5kbGVQYWdlUmVmOwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVQYWdlR3JvdXAqIFdLQnVuZGxlUGFnZUdyb3VwUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVQYWdlT3ZlcmxheSogV0tCdW5kbGVQ
YWdlT3ZlcmxheVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlUmFuZ2VI
YW5kbGUqIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0J1bmRsZVNjcmlwdFdvcmxkKiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmOwotdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NTdHlsZURlY2xhcmF0aW9uKiBXS0J1bmRs
ZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7CiAKICN1bmRlZiBXS19FWFBPUlQKICNpZiBkZWZpbmVk
KFdLX05PX0VYUE9SVCkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA3
MzA1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTQxLDggKzQyLDYgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KIAogI2lmbmRlZiBOREVCVUcK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC04MCw2ICs3OSw3IEBA
IFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXQKICAgICAKIFdlYkNvbnRl
eHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBp
bmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgOiBtX3Byb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpCisg
ICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKICAgICAsIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoKGluamVjdGVkQnVuZGxlUGF0aCkKICAgICAsIG1fdmlzaXRlZExp
bmtQcm92aWRlcih0aGlzKQogICAgICwgbV9jYWNoZU1vZGVsKENhY2hlTW9kZWxEb2N1bWVudFZp
ZXdlcikKQEAgLTIwNywxMCArMjA3LDE0IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc0RpZENs
b3NlKFdlYlByb2MKICAgICBtX3Byb2Nlc3MgPSAwOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYkNv
bnRleHQ6OmNyZWF0ZVdlYlBhZ2UoV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSkKK1dl
YlBhZ2VQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiBw
YWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKICAgICBlbnN1cmVXZWJQ
cm9jZXNzKCk7Ci0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlTmFtZXNw
YWNlKTsKKworICAgIGlmICghcGFnZUdyb3VwKQorICAgICAgICBwYWdlR3JvdXAgPSBtX2RlZmF1
bHRQYWdlR3JvdXAuZ2V0KCk7CisKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jcmVhdGVXZWJQYWdl
KHBhZ2VOYW1lc3BhY2UsIHBhZ2VHcm91cCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cmVsYXVu
Y2hQcm9jZXNzSWZOZWNlc3NhcnkoKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNp
b24gNzMwNTkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFdlYlBhZ2VHcm91cDsK
IGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQ
cmVmZXJlbmNlczsKQEAgLTcyLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc0Rp
ZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkqKTsKICAgICB2b2lkIHByb2Nlc3NEaWRD
bG9zZShXZWJQcm9jZXNzUHJveHkqKTsKIAotICAgIFdlYlBhZ2VQcm94eSogY3JlYXRlV2ViUGFn
ZShXZWJQYWdlTmFtZXNwYWNlKik7CisgICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQYWdlKFdl
YlBhZ2VOYW1lc3BhY2UqLCBXZWJQYWdlR3JvdXAqID0gMCk7CiAKICAgICB2b2lkIHJlbGF1bmNo
UHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKQEAgLTE2MCw2ICsxNjEsOCBAQCBwcml2YXRlOgogICAg
IEhhc2hTZXQ8V2ViUGFnZU5hbWVzcGFjZSo+IG1fcGFnZU5hbWVzcGFjZXM7CiAgICAgUmVmUHRy
PFdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwogCisgICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gbV9kZWZhdWx0UGFnZUdyb3VwOworCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gbV9pbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CiAgICAgU3RyaW5nIG1faW5qZWN0ZWRCdW5k
bGVQYXRoOwogICAgIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBtX2luamVjdGVkQnVu
ZGxlQ2xpZW50OwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNzYWdl
Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJN
ZXNzYWdlQ29kZXJzLmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDgg
QEAKICNpbmNsdWRlICJVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQu
aCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgi
CisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTMzLDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAvLyBBZGRzCiAvLyAtIFBhZ2UgLT4gQnVuZGxlUGFnZQogLy8gLSBGcmFtZSAtPiBCdW5k
bGVGcmFtZQorLy8gLSBQYWdlR3JvdXAgLT4gQnVuZGxlUGFnZUdyb3VwCiAKIGNsYXNzIFdlYkNv
bnRleHRVc2VyTWVzc2FnZUVuY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VFbmNvZGVyPFdlYkNv
bnRleHRVc2VyTWVzc2FnZUVuY29kZXI+IHsKIHB1YmxpYzoKQEAgLTYwLDYgKzYzLDExIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShmcmFtZS0+ZnJhbWVJRCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBl
UGFnZUdyb3VwOiB7CisgICAgICAgICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VHcm91cCo+KG1fcm9vdCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGUocGFnZUdyb3VwLT5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC03MCw2ICs3OCw3IEBAIHB1YmxpYzoKIC8vIEFkZHMKIC8vICAgLSBQ
YWdlIC0+IEJ1bmRsZVBhZ2UKIC8vICAgLSBGcmFtZSAtPiBCdW5kbGVGcmFtZQorLy8gICAtIFBh
Z2VHcm91cCAtPiBCdW5kbGVQYWdlR3JvdXAKIAogY2xhc3MgV2ViQ29udGV4dFVzZXJNZXNzYWdl
RGVjb2RlciA6IHB1YmxpYyBVc2VyTWVzc2FnZURlY29kZXI8V2ViQ29udGV4dFVzZXJNZXNzYWdl
RGVjb2Rlcj4gewogcHVibGljOgpAQCAtMTExLDYgKzEyMCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBjb2Rlci5tX3Jvb3QgPSBjb2Rlci5tX2NvbnRleHQtPnByb2Nlc3MoKS0+d2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEFQ
SU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VHcm91cDogeworICAgICAgICAgICAgdWludDY0X3QgcGFn
ZUdyb3VwSUQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYWdlR3JvdXBJRCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29kZXIubV9yb290
ID0gV2ViUGFnZUdyb3VwOjpnZXQocGFnZUdyb3VwSUQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAkocmV2
aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAKICNkZWZpbmUgRElT
QUJMRV9OT1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCkBAIC0zOSw2ICs0MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK1dlYlBhZ2VHcm91cCogV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clBhZ2VHcm91cCgpCit7CisgICAgc3RhdGljIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gV2Vi
UGFnZUdyb3VwOjpjcmVhdGUoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwX18iLCBmYWxzZSkubGVh
a1JlZigpOworICAgIHJldHVybiBwYWdlR3JvdXA7Cit9CisKIFdlYkluc3BlY3RvclByb3h5OjpX
ZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkK
ICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV0tWaWV3
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2Vi
UGFnZVByb3h5Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiAKQEAgLTEwMiw2
ICsxMDMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW5zcGVjdG9yUGFnZSh1aW50NjRf
dCYgaW5zcGVjdG9yUGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9p
ZCBkaWRMb2FkSW5zcGVjdG9yUGFnZSgpOwogCisgICAgc3RhdGljIFdlYlBhZ2VHcm91cCogaW5z
cGVjdG9yUGFnZUdyb3VwKCk7CisKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKIAogICAgIGJv
b2wgbV9pc1Zpc2libGU7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlUGFnZUdyb3VwSUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdlR3Jv
dXBJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZVBhZ2VHcm91cElEKys7Cit9CisKK3R5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZUdyb3VwKj4gV2ViUGFnZUdyb3VwTWFwOworCitzdGF0
aWMgV2ViUGFnZUdyb3VwTWFwJiB3ZWJQYWdlR3JvdXBNYXAoKQoreworICAgIHN0YXRpYyBXZWJQ
YWdlR3JvdXBNYXAgbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKKworUGFzc1JlZlB0cjxXZWJQ
YWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Ym9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkKK3sKKyAgICBSZWZQdHI8V2ViUGFnZUdyb3Vw
PiBwYWdlR3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViUGFnZUdyb3VwKGlkZW50aWZpZXIsIHZpc2li
bGVUb0luamVjdGVkQnVuZGxlKSk7CisKKyAgICB3ZWJQYWdlR3JvdXBNYXAoKS5zZXQocGFnZUdy
b3VwLT5wYWdlR3JvdXBJRCgpLCBwYWdlR3JvdXAuZ2V0KCkpOworCisgICAgcmV0dXJuIHBhZ2VH
cm91cC5yZWxlYXNlKCk7Cit9CisKK1dlYlBhZ2VHcm91cCogV2ViUGFnZUdyb3VwOjpnZXQodWlu
dDY0X3QgcGFnZUdyb3VwSUQpCit7CisgICAgcmV0dXJuIHdlYlBhZ2VHcm91cE1hcCgpLmdldChw
YWdlR3JvdXBJRCk7Cit9CisKK1dlYlBhZ2VHcm91cDo6V2ViUGFnZUdyb3VwKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSkKK3sKKyAgICBtX2Rh
dGEucGFnZUdyb3VwSUQgPSBnZW5lcmF0ZVBhZ2VHcm91cElEKCk7CisgICAgaWYgKCFpZGVudGlm
aWVyLmlzTnVsbCgpKQorICAgICAgICBtX2RhdGEuaWRlbnRpZmVyID0gaWRlbnRpZmllcjsKKyAg
ICBlbHNlCisgICAgICAgIG1fZGF0YS5pZGVudGlmZXIgPSBtX2RhdGEuaWRlbnRpZmVyID0gbWFr
ZVN0cmluZygiX191bmlxdWVQYWdlR3JvdXBJRC0iLCBTdHJpbmc6Om51bWJlcihtX2RhdGEucGFn
ZUdyb3VwSUQpKTsKKyAgICBtX2RhdGEudmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB2aXNpYmxl
VG9JbmplY3RlZEJ1bmRsZTsKK30KKworV2ViUGFnZUdyb3VwOjp+V2ViUGFnZUdyb3VwKCkKK3sK
KyAgICB3ZWJQYWdlR3JvdXBNYXAoKS5yZW1vdmUocGFnZUdyb3VwSUQoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZUdyb3VwX2gKKyNkZWZp
bmUgV2ViUGFnZUdyb3VwX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldl
YlBhZ2VHcm91cERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZUdyb3VwIDogcHVibGljIEFQSU9iamVjdCB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVQYWdlR3JvdXA7CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRy
dWUpOworICAgIHN0YXRpYyBXZWJQYWdlR3JvdXAqIGdldCh1aW50NjRfdCBwYWdlR3JvdXBJRCk7
CisKKyAgICB2aXJ0dWFsIH5XZWJQYWdlR3JvdXAoKTsKKworICAgIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pZGVudGlmZXI7IH0KKyAgICB1aW50NjRf
dCBwYWdlR3JvdXBJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wYWdlR3JvdXBJRDsgfQorCisg
ICAgY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTs7IH0KKwor
cHJpdmF0ZToKKyAgICBXZWJQYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29s
IHZpc2libGVUb0luamVjdGVkQnVuZGxlKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgV2ViUGFnZUdyb3VwRGF0YSBtX2RhdGE7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBhZ2VHcm91cF9oCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcAkocmV2aXNpb24gNzMwNTkp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsOSArNTgsOSBAQCBXZWJQYWdlTmFtZXNwYWNlOjp+V2ViUGFnZU5hbWVzcGFjZSgp
CiAjZW5kaWYKIH0KIAotV2ViUGFnZVByb3h5KiBXZWJQYWdlTmFtZXNwYWNlOjpjcmVhdGVXZWJQ
YWdlKCkKK1dlYlBhZ2VQcm94eSogV2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlV2ViUGFnZShXZWJQ
YWdlR3JvdXAqIGdyb3VwKQogewotICAgIHJldHVybiBtX2NvbnRleHQtPmNyZWF0ZVdlYlBhZ2Uo
dGhpcyk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzLCBncm91cCk7
CiB9CiAKIHZvaWQgV2ViUGFnZU5hbWVzcGFjZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gNzMwNTkpCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAgc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKK2NsYXNzIFdlYlBhZ2VHcm91cDsKIAogY2xhc3MgV2Vi
UGFnZU5hbWVzcGFjZSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgpAQCAtNDgsNyArNDks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJQYWdlTmFtZXNwYWNlKCk7CiAKLSAgICBX
ZWJQYWdlUHJveHkqIGNyZWF0ZVdlYlBhZ2UoKTsgICAgCisgICAgV2ViUGFnZVByb3h5KiBjcmVh
dGVXZWJQYWdlKFdlYlBhZ2VHcm91cCopOwogCiAgICAgV2ViQ29udGV4dCogY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cHJvY2VzcygpOyB9CkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAog
I2luY2x1ZGUgIldlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXZWJQYWdl
R3JvdXBEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgpAQCAtODEsMTQgKzgz
LDE1IEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDYKICAgICBtYXAu
Y2xlYXIoKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlKFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIHVpbnQ2NF90IHBhZ2VJRCkKK1Bh
c3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShXZWJQYWdlTmFtZXNw
YWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgdWludDY0X3QgcGFn
ZUlEKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VOYW1lc3Bh
Y2UsIHBhZ2VJRCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZVByb3h5KHBhZ2VO
YW1lc3BhY2UsIHBhZ2VHcm91cCwgcGFnZUlEKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIHVpbnQ2NF90IHBhZ2VJRCkK
K1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3Bh
Y2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCB1aW50NjRfdCBwYWdlSUQpCiAgICAgOiBtX3Bh
Z2VDbGllbnQoMCkKICAgICAsIG1fcGFnZU5hbWVzcGFjZShwYWdlTmFtZXNwYWNlKQorICAgICwg
bV9wYWdlR3JvdXAocGFnZUdyb3VwKQogICAgICwgbV9tYWluRnJhbWUoMCkKICAgICAsIG1fZXN0
aW1hdGVkUHJvZ3Jlc3MoMC4wKQogICAgICwgbV9pc0luV2luZG93KGZhbHNlKQpAQCAtOTYsNyAr
OTksNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNwCiAgICAgLCBt
X3RleHRab29tRmFjdG9yKDEpCiAgICAgLCBtX3BhZ2Vab29tRmFjdG9yKDEpCiAgICAgLCBtX3Zp
ZXdTY2FsZUZhY3RvcigxKQotICAgICwgbV92aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSh0cnVlKQog
ICAgICwgbV9pc1ZhbGlkKHRydWUpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogICAgICwgbV9p
bkRlY2lkZVBvbGljeUZvck1JTUVUeXBlKGZhbHNlKQpAQCAtMTQ5NSw3ICsxNDk3LDcgQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRlcnMudmll
d1NpemUgPSBzaXplOwogICAgIHBhcmFtZXRlcnMuc3RvcmUgPSBwYWdlTmFtZXNwYWNlKCktPmNv
bnRleHQoKS0+cHJlZmVyZW5jZXMoKS0+c3RvcmUoKTsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdB
cmVhSW5mbyA9IG1fZHJhd2luZ0FyZWEtPmluZm8oKTsKLSAgICBwYXJhbWV0ZXJzLnZpc2libGVU
b0luamVjdGVkQnVuZGxlID0gbV92aXNpYmxlVG9JbmplY3RlZEJ1bmRsZTsKKyAgICBwYXJhbWV0
ZXJzLnBhZ2VHcm91cERhdGEgPSBtX3BhZ2VHcm91cC0+ZGF0YSgpOwogCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHBhcmFtZXRlcnMubmF0aXZlV2luZG93ID0gbV9wYWdlQ2xpZW50LT5uYXRpdmVX
aW5kb3coKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3MzA1OSkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCwxMyArODQsMTMgQEAgY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7
CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdl
YlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQb3B1cE1lbnVQ
cm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFz
cyBXZWJXaGVlbEV2ZW50Owogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKLXN0cnVjdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7
CiBzdHJ1Y3QgV2ViUG9wdXBJdGVtOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgV2ViUGFn
ZVByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5
cGUgQVBJVHlwZSA9IFR5cGVQYWdlOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBjcmVhdGUoV2ViUGFnZU5hbWVzcGFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoV2ViUGFnZU5hbWVzcGFjZSosIFdl
YlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJv
eHkoKTsKIApAQCAtMTE1LDkgKzExNSw2IEBAIHB1YmxpYzoKICAgICBEcmF3aW5nQXJlYVByb3h5
KiBkcmF3aW5nQXJlYSgpIHsgcmV0dXJuIG1fZHJhd2luZ0FyZWEuZ2V0KCk7IH0KICAgICB2b2lk
IHNldERyYXdpbmdBcmVhKFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4pOwogCi0gICAgYm9v
bCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVRvSW5q
ZWN0ZWRCdW5kbGU7IH0KLSAgICB2b2lkIHNldFZpc2libGVUb0luamVjdGVkQnVuZGxlKGJvb2wg
dmlzaWJsZSkgeyBtX3Zpc2libGVUb0luamVjdGVkQnVuZGxlID0gdmlzaWJsZTsgfQotCiAgICAg
V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3
YXJkTGlzdC5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTI0Miw2ICsyMzks
OCBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29uc3Q7CiAgICAg
V2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU5h
bWVzcGFjZS5nZXQoKTsgfQogCisgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VHcm91cC5nZXQoKTsgfQorCiAgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAg
ICAvLyBSRU1PVkU6IEZvciBkZW1vIHB1cnBvc2VzIG9ubHkuCkBAIC0yNjQsNyArMjYzLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFdlYlBhZ2VOYW1l
c3BhY2UqLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94eShXZWJQYWdlTmFtZXNw
YWNlKiwgV2ViUGFnZUdyb3VwKiwgdWludDY0X3QgcGFnZUlEKTsKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCkBAIC0zODgsNiArMzg3LDcgQEAg
cHJpdmF0ZToKIAogICAgIE93blB0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwog
ICAgIFJlZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBtX3BhZ2VOYW1lc3BhY2U7CisgICAgUmVmUHRy
PFdlYlBhZ2VHcm91cD4gbV9wYWdlR3JvdXA7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1f
bWFpbkZyYW1lOwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZvY3VzZWRGcmFtZTsKICAg
ICBTdHJpbmcgbV9wYWdlVGl0bGU7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDEyICsxMzYsMTIgQEAgV2ViUGFnZVByb3h5
KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodQogICAgIHJldHVybiBtX3BhZ2VNYXAuZ2V0KHBh
Z2VJRCkuZ2V0KCk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVX
ZWJQYWdlKFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UpCitXZWJQYWdlUHJveHkqIFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNw
YWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKICAgICBBU1NFUlQocGFnZU5hbWVzcGFj
ZS0+cHJvY2VzcygpID09IHRoaXMpOwogCiAgICAgdW5zaWduZWQgcGFnZUlEID0gZ2VuZXJhdGVQ
YWdlSUQoKTsKLSAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5
OjpjcmVhdGUocGFnZU5hbWVzcGFjZSwgcGFnZUlEKTsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZU5hbWVzcGFjZSwgcGFnZUdyb3Vw
LCBwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5zZXQocGFnZUlELCB3ZWJQYWdlKTsKICAgICByZXR1
cm4gd2ViUGFnZS5nZXQoKTsKIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dDsKK2NsYXNzIFdl
YlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZTsKIApAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vz
c0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpOyB9CiAKICAgICBXZWJQYWdlUHJveHkqIHdl
YlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdDsKLSAgICBXZWJQYWdlUHJveHkqIGNyZWF0ZVdl
YlBhZ2UoV2ViUGFnZU5hbWVzcGFjZSopOworICAgIFdlYlBhZ2VQcm94eSogY3JlYXRlV2ViUGFn
ZShXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFnZUdyb3VwKik7CiAgICAgdm9pZCBhZGRFeGlzdGlu
Z1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5OwogY2xhc3MgV2ViTmF2aWdhdGlvbkRhdGE7CitjbGFzcyBXZWJQYWdlR3JvdXA7
CiBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJlZmVyZW5jZXM7CkBAIC02MCw2ICs2MSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1l
UmVmLCBXZWJGcmFtZVAKIFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5z
cGVjdG9yUHJveHkpCiAjZW5kaWYKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25EYXRh
UmVmLCBXZWJOYXZpZ2F0aW9uRGF0YSkKK1dLX0FERF9BUElfTUFQUElORyhXS1BhZ2VHcm91cFJl
ZiwgV2ViUGFnZUdyb3VwKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZU5hbWVzcGFjZVJlZiwg
V2ViUGFnZU5hbWVzcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VSZWYsIFdlYlBhZ2VQ
cm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNl
cykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gNzMwNTkpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0NywxMSBAQCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjCiAg
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+cGFnZU5hbWVzcGFjZSgpKTsKIH0KIAor
V0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBwYWdlUmVmKQorewor
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKK30KKwogdm9p
ZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7CiAg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkVVJMKHRvSW1wbChVUkxSZWYpLT5zdHJpbmcoKSk7Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSw3
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50IFcKIFdLX0VYUE9SVCBX
S1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKTsKIAogV0tfRVhQT1JUIFdLUGFnZU5hbWVzcGFjZVJl
ZiBXS1BhZ2VHZXRQYWdlTmFtZXNwYWNlKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCBXS1Bh
Z2VHcm91cFJlZiBXS1BhZ2VHZXRQYWdlR3JvdXAoV0tQYWdlUmVmIHBhZ2UpOwogCiBXS19FWFBP
UlQgdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpOwogV0tf
RVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTFJlcXVlc3QoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVx
dWVzdFJlZiB1cmxSZXF1ZXN0KTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiV0tQYWdlR3JvdXAuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IldlYlBhZ2VHcm91cC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBX
S1BhZ2VHcm91cEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlBhZ2VHcm91cDo6
QVBJVHlwZSk7Cit9CisKK1dLUGFnZUdyb3VwUmVmIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50
aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmllcikKK3sKKyAgICBSZWZQdHI8V2ViUGFnZUdyb3Vw
PiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZSh0b1dURlN0cmluZyhpZGVudGlmaWVy
KSk7CisgICAgcmV0dXJuIHRvQVBJKHBhZ2VHcm91cC5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
KworV0tTdHJpbmdSZWYgV0tQYWdlR3JvdXBDb3B5SWRlbnRpZmllcihXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXApCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChwYWdlR3JvdXApLT5p
ZGVudGlmaWVyKCkpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3Jv
dXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYWdl
R3JvdXBfaAorI2RlZmluZSBXS1BhZ2VHcm91cF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VY
UE9SVCBXS1R5cGVJRCBXS1BhZ2VHcm91cEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tQYWdl
R3JvdXBSZWYgV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGVu
dGlmaWVyKTsKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdyb3VwQ29weUlkZW50aWZp
ZXIoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8qIFdLUGFnZUdyb3VwX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dlYktpdDIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XZWJLaXQyLmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Mi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tEYXRhLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Rp
Y3Rpb25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tGcmFt
ZS5oPgpAQCAtNDMsNiArNDQsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tOYXZpZ2F0aW9uRGF0
YS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
UGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLUGFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3dpbi9XS1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL3dpbi9XS1ZpZXcuY3BwCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3dpbi9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw5IEBAIFdL
VHlwZUlEIFdLVmlld0dldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQSU9iamVjdDo6VHlw
ZVZpZXcpOwogfQogCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tQYWdlTmFt
ZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIEhXTkQgcGFyZW50V2luZG93KQorV0tWaWV3UmVm
IFdLVmlld0NyZWF0ZShSRUNUIHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNl
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIEhXTkQgcGFyZW50V2luZG93KQogewot
ICAgIFJlZlB0cjxXZWJWaWV3PiB2aWV3ID0gV2ViVmlldzo6Y3JlYXRlKHJlY3QsIHRvSW1wbChw
YWdlTmFtZXNwYWNlUmVmKSwgcGFyZW50V2luZG93LCBWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7
CisgICAgUmVmUHRyPFdlYlZpZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUocmVjdCwgdG9JbXBs
KHBhZ2VOYW1lc3BhY2VSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgcGFyZW50V2luZG93LCBW
aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSk7CiAgICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgp
LnJlbGVhc2VSZWYoKSk7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3
LmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGV4dGVybiAiQyIgewogCiBXS19F
WFBPUlQgV0tUeXBlSUQgV0tWaWV3R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS1ZpZXdSZWYg
V0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2Us
IEhXTkQgcGFyZW50V2luZG93KTsKK1dLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJF
Q1QgcmVjdCwgV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2UsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpOwogCiBXS19FWFBPUlQgSFdORCBXS1ZpZXdH
ZXRXaW5kb3coV0tWaWV3UmVmIHZpZXcpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3LmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBAaW50ZXJmYWNlIFdLVmlldyA6
IE5TVmlldyA8TlNUZXh0SW5wdXQ+CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJl
ZjsKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihX
S1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdy
b3VwUmVmKXBhZ2VHcm91cFJlZjsKIAogLSAoV0tQYWdlUmVmKXBhZ2VSZWY7CiAKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0
LDcgQEAgQGludGVyZmFjZSBXS1ZpZXdEYXRhIDogTlNPYmplY3QgewogCiBAaW1wbGVtZW50YXRp
b24gV0tWaWV3CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNw
YWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZiBoaWRkZW5Gcm9tSW5q
ZWN0ZWRCdW5kbGU6KEJPT0wpaGlkZGVuRnJvbUluamVjdGVkQnVuZGxlCistIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVm
KXBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBS
ZWYKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmICgh
c2VsZikKQEAgLTEzMywxMCArMTMzLDkgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIHBhZ2VOYQogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKIAogICAg
IF9kYXRhLT5fcGFnZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUoc2VsZik7Ci0gICAg
X2RhdGEtPl9wYWdlID0gdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKCk7
CisgICAgX2RhdGEtPl9wYWdlID0gdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQ
YWdlKHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldFBhZ2VDbGll
bnQoX2RhdGEtPl9wYWdlQ2xpZW50LmdldCgpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldERyYXdp
bmdBcmVhKENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUoc2VsZikpOwotICAg
IF9kYXRhLT5fcGFnZS0+c2V0VmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoIWhpZGRlbkZyb21Jbmpl
Y3RlZEJ1bmRsZSk7CiAgICAgX2RhdGEtPl9wYWdlLT5pbml0aWFsaXplV2ViUGFnZShJbnRTaXpl
KGZyYW1lLnNpemUpKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldElzSW5XaW5kb3coW3NlbGYgd2lu
ZG93XSk7CiAKQEAgLTE1Miw3ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUgcGFnZU5hCiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFt
ZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZgogewotICAgIHJl
dHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6cGFnZU5hbWVz
cGFjZVJlZiBoaWRkZW5Gcm9tSW5qZWN0ZWRCdW5kbGU6Tk9dOworICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aEZyYW1lOmZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6cGFnZU5hbWVzcGFjZVJlZiBwYWdl
R3JvdXBSZWY6bmlsXTsKIH0KIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCShyZXZpc2lv
biA3MzA1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIH0KIAog
QGludGVyZmFjZSBXS1ZpZXcgKEludGVybmFsKQotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0
KWZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNl
UmVmIGhpZGRlbkZyb21JbmplY3RlZEJ1bmRsZTooQk9PTCloaWRkZW5Gcm9tSW5qZWN0ZWRCdW5k
bGU7Ci0KIC0gKHZvaWQpX3Byb2Nlc3NEaWRDcmFzaDsKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJv
Y2VzczsKIC0gKHZvaWQpX3Rha2VGb2N1czooQk9PTClkaXJlY3Rpb247CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBA
QCBRV0tQYWdlUHJpdmF0ZTo6UVdLUGFnZVByaXZhdGUoUVdLUGFnZSogCiB7CiAgICAgaW5pdGlh
bGl6ZVBsYXRmb3JtU3RyYXRlZ2llc0lmTmVlZGVkKCk7CiAgICAgbWVtc2V0KGFjdGlvbnMsIDAs
IHNpemVvZihhY3Rpb25zKSk7Ci0gICAgcGFnZSA9IHRvSW1wbChuYW1lc3BhY2VSZWYpLT5jcmVh
dGVXZWJQYWdlKCk7IC8vIFBhZ2UgZ2V0cyBhIHJlZiB0byBuYW1lc3BhY2UuCisgICAgcGFnZSA9
IHRvSW1wbChuYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKDApOyAvLyBQYWdlIGdldHMgYSBy
ZWYgdG8gbmFtZXNwYWNlLgogICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhpcyk7CiAgICAgaGlz
dG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHBhZ2UtPmJhY2tGb3J3YXJk
TGlzdCgpKTsKIH0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0JKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFdl
YlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3IKICAgICBBU1NFUlQobV9wYWdl
KTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcu
YWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IHBhZ2VOYW1l
c3BhY2VSZWY6dG9BUEkobV9wYWdlLT5wYWdlTmFtZXNwYWNlKCkpXSk7CisgICAgbV9pbnNwZWN0
b3JWaWV3LmFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBw
YWdlTmFtZXNwYWNlUmVmOnRvQVBJKG1fcGFnZS0+cGFnZU5hbWVzcGFjZSgpKSBwYWdlR3JvdXBS
ZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9y
Vmlldyk7CiAKICAgICByZXR1cm4gdG9JbXBsKFttX2luc3BlY3RvclZpZXcuZ2V0KCkgcGFnZVJl
Zl0pOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzMwNTkpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
Miw3ICsxODIsNyBAQCBib29sIFdlYlZpZXc6OnJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzCiAg
ICAgcmV0dXJuICEhOjpSZWdpc3RlckNsYXNzRXgoJndjZXgpOwogfQogCi1XZWJWaWV3OjpXZWJW
aWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgSFdORCBwYXJl
bnRXaW5kb3csIEluamVjdGVkQnVuZGxlVmlzaWJpbGl0eSBpbmplY3RlZEJ1bmRsZVZpc2liaWxp
dHkpCitXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5h
bWVzcGFjZSwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93KQogICAg
IDogbV9yZWN0KHJlY3QpCiAgICAgLCBtX3RvcExldmVsUGFyZW50V2luZG93KDApCiAgICAgLCBt
X3Rvb2xUaXBXaW5kb3coMCkKQEAgLTE5NCwxMCArMTk0LDkgQEAgV2ViVmlldzo6V2ViVmlldyhS
RUNUIHJlY3QsIFdlYlBhZ2VOYW1lcwogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNz
KCk7CiAKLSAgICBtX3BhZ2UgPSBwYWdlTmFtZXNwYWNlLT5jcmVhdGVXZWJQYWdlKCk7CisgICAg
bV9wYWdlID0gcGFnZU5hbWVzcGFjZS0+Y3JlYXRlV2ViUGFnZShwYWdlR3JvdXApOwogICAgIG1f
cGFnZS0+c2V0UGFnZUNsaWVudCh0aGlzKTsKICAgICBtX3BhZ2UtPnNldERyYXdpbmdBcmVhKENo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUodGhpcykpOwotICAgIG1fcGFnZS0+
c2V0VmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUoaW5qZWN0ZWRCdW5kbGVWaXNpYmlsaXR5ID09IFZp
c2libGVUb0luamVjdGVkQnVuZGxlKTsKIAogICAgIG1fd2luZG93ID0gOjpDcmVhdGVXaW5kb3dF
eCgwLCBrV2ViS2l0MldlYlZpZXdXaW5kb3dDbGFzc05hbWUsIDAsIFdTX0NISUxEIHwgV1NfQ0xJ
UFNJQkxJTkdTIHwgV1NfQ0xJUENISUxEUkVOLAogICAgICAgICByZWN0LnRvcCwgcmVjdC5sZWZ0
LCByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJlY3QudG9wLCBwYXJlbnRX
aW5kb3cgPyBwYXJlbnRXaW5kb3cgOiBIV05EX01FU1NBR0UsIDAsIGluc3RhbmNlSGFuZGxlKCks
IHRoaXMpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA3MzA1OSkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE2
ICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBj
bGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogCi1lbnVtIEluamVjdGVkQnVuZGxlVmlzaWJpbGl0eSB7
Ci0gICAgSGlkZGVuRnJvbUluamVjdGVkQnVuZGxlLAotICAgIFZpc2libGVUb0luamVjdGVkQnVu
ZGxlCi19OwotCiBjbGFzcyBXZWJWaWV3IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFBhZ2VD
bGllbnQsIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViVmlldz4gY3JlYXRlKFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFj
ZSogcGFnZU5hbWVzcGFjZSwgSFdORCBwYXJlbnRXaW5kb3csIEluamVjdGVkQnVuZGxlVmlzaWJp
bGl0eSB2aXNpYmlsaXR5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZShS
RUNUIHJlY3QsIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCog
cGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViVmlldyhyZWN0LCBwYWdlTmFtZXNwYWNlLCBwYXJlbnRXaW5kb3csIHZpc2li
aWxpdHkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3KHJlY3QsIHBhZ2VO
YW1lc3BhY2UsIHBhZ2VHcm91cCwgcGFyZW50V2luZG93KSk7CiAgICAgfQogICAgIH5XZWJWaWV3
KCk7CiAKQEAgLTYzLDcgKzU4LDcgQEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYlZpZXco
UkVDVCwgV2ViUGFnZU5hbWVzcGFjZSosIEhXTkQgcGFyZW50V2luZG93LCBJbmplY3RlZEJ1bmRs
ZVZpc2liaWxpdHkpOworICAgIFdlYlZpZXcoUkVDVCwgV2ViUGFnZU5hbWVzcGFjZSosIFdlYlBh
Z2VHcm91cCosIEhXTkQgcGFyZW50V2luZG93KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gVHlwZVZpZXc7IH0KIApJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5NSw2ICszOTUs
MTYgQEAKIAkJQkM3MkI5RkIxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcy
QjlGOTExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCAqLzsgfTsK
IAkJQkM3MkJBMUQxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcyQkExQjExRTY0
OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLzsgfTsKIAkJQkM3MkJBMUUx
MUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8q
IFdlYkJhY2tGb3J3YXJkTGlzdC5oICovOyB9OworCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzdCNjIwNDEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmggKi87IH07
CisJCUJDN0I2MjA3MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyMDUxMjlBMEE2NzAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi87IH07CisJCUJDN0I2MjE1MTJBNDIxOUEwMEQx
NzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91
cFByb3h5LmggKi87IH07CisJCUJDN0I2MjE2MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3Jv
dXBQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzdCNjIxNDEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuY3BwICovOyB9
OworCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyNTAxMkE0M0M5
NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCAqLzsgfTsKKwkJQkM3QjYyNTMxMkE0M0M5
NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYyNTExMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBh
Z2VHcm91cERhdGEuY3BwICovOyB9OworCQlCQzdCNjMzNzEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQ
YWdlR3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0I2MzM1MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkM3QjYzMzgxMkE0NUFCQTAwRDE3
NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDN0I2MzM2MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5jcHAg
Ki87IH07CisJCUJDN0I2MzNEMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYzM0Ix
MkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzdCNjMzRTEyQTQ1RDEyMDBEMTc0QTQg
LyogV0tCdW5kbGVQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM3QjYzM0MxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdy
b3VwLmNwcCAqLzsgfTsKIAkJQkM4NDUyQTcxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1
MkE1MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgKi87IH07CiAJCUJDODQ1MkE4
MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdp
bmdBcmVhLmggKi87IH07CiAJCUJDODY5OUI1MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUIyMTE2
QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CkBAIC05ODksNiArOTk5LDE2IEBACiAJCUJDNzJCOUY5MTFFNjQ3NkIw
MDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkJhY2tGb3J3
YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzJCQTFDMTFFNjQ5
MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDN0I2MjA0MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUdyb3VwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUdyb3VwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0
IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBhZ2VHcm91cFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDN0I2
MjE0MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDN0I2MjUwMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91
cERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYyNTExMkE0M0M5NjAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViUGFnZUdyb3VwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDN0I2MzM1MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzdCNjMzNjEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlR3JvdXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzdCNjMzQjEyQTQ1RDEyMDBEMTc0QTQgLyog
V0tCdW5kbGVQYWdlR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tC
dW5kbGVQYWdlR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3QjYzM0Mx
MkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlUGFnZUdyb3VwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTUxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1
IC8qIERyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdp
bmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODY5OUIyMTE2QUFEQUEw
MDJBOTI1QiAvKiBXS1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tW
aWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDY3LDYgKzE0ODcsOCBAQAog
CQkJCUJDNTc0NEVFMTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCAqLywKIAkJCQlD
MDZDNjA5MzEyNEMxNDQzMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Ki8sCiAJCQkJQzA2QzYwOTQxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCAqLywKKwkJCQlCQzdCNjI1MTEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgKi8sCisJCQkJQkM3QjYyNTAxMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91
cERhdGEuaCAqLywKIAkJCQlDMDMzN0REQzEyN0E1MjFDMDA4RkY0RjQgLyogV2ViUGxhdGZvcm1U
b3VjaFBvaW50LmNwcCAqLywKIAkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJQkMzMDY4MjIxMjVBNkI5NDAwRTcx
Mjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKQEAgLTE2NjYsNiArMTY4
OCw4IEBACiAJCQkJQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovLAog
CQkJCUJDMDMyRDhCMTBGNDM3QTAwMDU4QzE1QSAvKiBXZWJQYWdlLmggKi8sCiAJCQkJQzBDRTcy
NTgxMjQ3RTREQTAwQkMwRUM0IC8qIFdlYlBhZ2UubWVzc2FnZXMuaW4gKi8sCisJCQkJQkM3QjYy
MTQxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmNwcCAqLywKKwkJCQlCQzdC
NjIxMzEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gV2ViUGFnZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzMzLDYg
KzE3NTcsOCBAQAogCQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9u
RGF0YS5oICovLAogCQkJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQuY3BwICovLAogCQkJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLywKKwkJCQlCQzdCNjIwNTEyOUEwQTY3MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwLmNwcCAqLywKKwkJCQlCQzdCNjIwNDEyOUEwQTY3MDBEMTc0QTQgLyog
V2ViUGFnZUdyb3VwLmggKi8sCiAJCQkJQkNFRTk4QzQxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBh
Z2VOYW1lc3BhY2UuY3BwICovLAogCQkJCUJDRUU5OEM1MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQ
YWdlTmFtZXNwYWNlLmggKi8sCiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBh
Z2VQcm94eS5jcHAgKi8sCkBAIC0xNzkzLDYgKzE4MTksOCBAQAogCQkJCUJDRjY5RkE3MTE3NkQx
Q0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmggKi8sCiAJCQkJQkNENTk3RDQxMTJCNTZE
QzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgKi8sCiAJCQkJQkNENTk3RDUxMTJCNTZEQzAwRUM4QzIz
IC8qIFdLUGFnZS5oICovLAorCQkJCUJDN0I2MzM2MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VH
cm91cC5jcHAgKi8sCisJCQkJQkM3QjYzMzUxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3Vw
LmggKi8sCiAJCQkJQkNFRTk4Q0ExMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5j
cHAgKi8sCiAJCQkJQkNFRTk4Q0IxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5o
ICovLAogCQkJCUJDMTc3NDY0MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggKi8s
CkBAIC0xOTUzLDYgKzE5ODEsOCBAQAogCQkJCUJDNTc0NTBCMTI2M0IxNTUwMDZGMEYxMiAvKiBX
S0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggKi8sCiAJCQkJQkMyMDUyODAxMUM5NDI4NDAwOEYz
Mzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgKi8sCiAJCQkJQkMyMDUyN0YxMUM5NDI4NDAwOEYzMzc1
IC8qIFdLQnVuZGxlUGFnZS5oICovLAorCQkJCUJDN0I2MzNDMTJBNDVEMTIwMEQxNzRBNCAvKiBX
S0J1bmRsZVBhZ2VHcm91cC5jcHAgKi8sCisJCQkJQkM3QjYzM0IxMkE0NUQxMjAwRDE3NEE0IC8q
IFdLQnVuZGxlUGFnZUdyb3VwLmggKi8sCiAJCQkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8q
IFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTFBMjJGMEZGMTI4OUZDRDkwMDg1RTc0
RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi8sCiAJCQkJQkMxQjQxOTcxMUQ0MUQ1NzAwMTFF
OEREIC8qIFdLQnVuZGxlUGFnZVByaXZhdGUuaCAqLywKQEAgLTI0NzcsNiArMjUwNywxMSBAQAog
CQkJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEyOTZGMEEy
MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3QjYy
MDYxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkM3QjYyMTUxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkM3QjYzMzcxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdy
b3VwLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzdCNjMzRDEyQTQ1RDEyMDBEMTc0QTQgLyogV0tC
dW5kbGVQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjYyM0I4MTJBNTdCNjIwMEUz
RkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI4NjUsNiArMjkwMCwxMSBAQAog
CQkJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRBQUExMjk2RjE1NDAw
MjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQzdC
NjIwNzEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUJDN0I2MjE2MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCQzdCNjI1MzEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzdCNjMzODEyQTQ1QUJBMDBEMTc0QTQgLyog
V0tQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM3QjYzM0UxMkE0NUQxMjAwRDE3
NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTQ3OTIz
MTJBNTlGRDkwMDgyMzZDMyAvKiBQbHVnaW5Qcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiwyMiBA
QCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYkZyYW1lKHVpbnQ2NF90CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZERlc3Ryb3lGcmFtZShmcmFt
ZUlEKSwgMCk7CiB9CiAKK1dlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3Jv
dXAodWludDY0X3QgcGFnZUdyb3VwSUQpCit7CisgICAgcmV0dXJuIG1fcGFnZUdyb3VwTWFwLmdl
dChwYWdlR3JvdXBJRCkuZ2V0KCk7Cit9CisKK1dlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNz
Ojp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkKK3sK
KyAgICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5
PiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91
cERhdGEucGFnZUdyb3VwSUQsIDApOworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAg
IEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworfQorCiB2b2lkIFdlYlBy
b2Nlc3M6OmNsZWFyUmVzb3VyY2VDYWNoZXMoKQogewogICAgIHBsYXRmb3JtQ2xlYXJSZXNvdXJj
ZUNhY2hlcygpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiA3MzA1OSkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKKyNpbmNsdWRlICJXZWJQYWdl
R3JvdXBQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01MCw2ICs1MSw3IEBA
IGNsYXNzIEluamVjdGVkQnVuZGxlOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0
YTsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CiAKQEAgLTgxLDYgKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkV2Vi
RnJhbWUodWludDY0X3QsIFdlYkZyYW1lKik7CiAgICAgdm9pZCByZW1vdmVXZWJGcmFtZSh1aW50
NjRfdCk7CiAKKyAgICBXZWJQYWdlR3JvdXBQcm94eSogd2ViUGFnZUdyb3VwKHVpbnQ2NF90IHBh
Z2VHcm91cElEKTsKKyAgICBXZWJQYWdlR3JvdXBQcm94eSogd2ViUGFnZUdyb3VwKGNvbnN0IFdl
YlBhZ2VHcm91cERhdGEmKTsKICAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUdyb3VwKiBzaGFyZWRQ
YWdlR3JvdXAoKTsKIAogICAgIC8vIFdpbGwgc2h1dCBkb3duIHRoZSB3ZWIgcHJvY2VzcyBpZiB0
aGVyZSBhcmUgbm8gbGl2ZSBwYWdlcyBvciBkb3dubG9hZHMuCkBAIC0xMjQsNiArMTI4LDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID4gbV9wYWdl
R3JvdXBNYXA7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwog
CiAgICAgYm9vbCBtX2luRGlkQ2xvc2U7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDczMDU5KQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTYsMTQgKzk2LDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJl
bW92ZUFsbFZpc2l0ZWRMaW4KICAgICBQYWdlR3JvdXA6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygp
OwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9y
VGVzdFJ1bm5lcihib29sIGVuYWJsZWQpCit2b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZVhT
U0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3Vw
LCBib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZWZlcmVuY2UgZm9yIGFs
bCBmdXR1cmUgcGFnZXMuCiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6b3ZlcnJpZGVYU1NBdWRp
dG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoZW5hYmxlZCk7CiAKICAgICAvLyBDaGFuZ2UgdGhlIHNl
dHRpbmcgZm9yIGV4aXN0aW5nIG9uZXMuCi0gICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2Vz
ID0gV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdyb3VwKCktPnBhZ2VzKCk7Ci0KKyAgICBjb25zdCBI
YXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlk
ZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3Ig
aXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsraXRlcikKICAgICAg
ICAgKCppdGVyKS0+c2V0dGluZ3MoKS0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZW5hYmxlZCk7CiB9
CkBAIC0xMjgsMzkgKzEyNywzOSBAQCBzdGF0aWMgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+
IHRvU3RyCiAgICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwogfQogCi12b2lkIEluamVjdGVkQnVu
ZGxlOjphZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxk
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5
KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCit2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU2Ny
aXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmws
IEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0YWJsZUFycmF5KiBibGFja2xpc3QsIFdl
YkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkUGFnZUdyb3VwKCktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5j
b3JlV29ybGQoKSwgc291cmNlLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGlt
ZSwgaW5qZWN0ZWRGcmFtZXMpOworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+
aWRlbnRpZmllcigpKS0+YWRkVXNlclNjcmlwdFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3Js
ZCgpLCBzb3VyY2UsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmpl
Y3RlZEZyYW1lcyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTdHlsZVNoZWV0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0
YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMpCit2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVldChX
ZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBz
Y3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11
dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZFBhZ2VHcm91cCgpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0
V29ybGQtPmNvcmVXb3JsZCgpLCBzb3VyY2UsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3RlZEZyYW1lcyk7CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlm
aWVyKCkpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgp
LCBzb3VyY2UsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBJbmplY3RlZEJ1
bmRsZTo6cmVtb3ZlVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTY3JpcHRGcm9t
V29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KSk7CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5y
ZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVV
c2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29u
c3QgU3RyaW5nJiB1cmwpCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2VyU3R5bGVTaGVl
dChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
KiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkUGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxk
LT5jb3JlV29ybGQoKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIFBhZ2VHcm91
cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclN0eWxlU2hl
ZXRGcm9tV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHRzKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkKQordm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlVXNlclNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hh
cmVkUGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5j
b3JlV29ybGQoKSk7CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlm
aWVyKCkpLT5yZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxk
KCkpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCit2b2lkIEluamVjdGVkQnVuZGxl
OjpyZW1vdmVVc2VyU3R5bGVTaGVldHMoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkUGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChzY3JpcHRX
b3JsZC0+Y29yZVdvcmxkKCkpOworICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+
aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKHNjcmlwdFdvcmxk
LT5jb3JlV29ybGQoKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFVzZXJD
b250ZW50KCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFVzZXJDb250ZW50KFdlYlBh
Z2VHcm91cFByb3h5KiBwYWdlR3JvdXApCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkUGFnZUdy
b3VwKCktPnJlbW92ZUFsbFVzZXJDb250ZW50KCk7CisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAo
cGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5yZW1vdmVBbGxVc2VyQ29udGVudCgpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlOjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkKQEAg
LTIwNCw2ICsyMDMsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6d2lsbERlc3Ryb3lQYWdlKFdl
YgogICAgIG1fY2xpZW50LndpbGxEZXN0cm95UGFnZSh0aGlzLCBwYWdlKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXZWJQYWdlR3JvdXBQcm94eSog
cGFnZUdyb3VwKQoreworICAgIG1fY2xpZW50LmRpZEluaXRpYWxpemVQYWdlR3JvdXAodGhpcywg
cGFnZUdyb3VwKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJv
ZHkpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYw
LDcgQEAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUJ1bmRsZTsKIGNsYXNzIEltbXV0YWJsZUFycmF5
OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYlBhZ2U7CitjbGFz
cyBXZWJQYWdlR3JvdXBQcm94eTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGUgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTgzLDE2ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sKTsKICAgICB2b2lkIHJlbW92ZUFsbFZpc2l0
ZWRMaW5rcygpOwogICAgIHZvaWQgYWN0aXZhdGVNYWNGb250QXNjZW50SGFjaygpOwotICAgIHZv
aWQgb3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoYm9vbCBlbmFibGVkKTsK
KyAgICB2b2lkIG92ZXJyaWRlWFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKFdlYlBhZ2VH
cm91cFByb3h5KiBwYWdlR3JvdXAsIGJvb2wgZW5hYmxlZCk7CiAKICAgICAvLyBVc2VyQ29udGVu
dCBBUEkKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCos
IGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkq
IHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlw
dEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwotICAg
IHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRl
bGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyk7Ci0gICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCByZW1vdmVVc2VyU3R5bGVT
aGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwotICAg
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqKTsK
LSAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0
KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlz
dCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOworICAgIHZvaWQgYWRk
VXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVB
cnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoV2ViUGFn
ZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1
cmwpOworICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqLCBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQg
cmVtb3ZlVXNlclNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkKik7CisgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoV2ViUGFnZUdyb3VwUHJv
eHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7CisgICAgdm9pZCByZW1vdmVBbGxVc2Vy
Q29udGVudChXZWJQYWdlR3JvdXBQcm94eSopOwogCiAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9u
IEFQSQogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpOwpAQCAtMTAy
LDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsYmFjayBob29rcwogICAgIHZvaWQgZGlk
Q3JlYXRlUGFnZShXZWJQYWdlKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV2ViUGFnZSop
OworICAgIHZvaWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXZWJQYWdlR3JvdXBQcm94eSopOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgQVBJT2JqZWN0Kik7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDbGllbnQ6OndpbGxEZXN0cm95UGEKICAgICBt
X2NsaWVudC53aWxsRGVzdHJveVBhZ2UodG9BUEkoYnVuZGxlKSwgdG9BUEkocGFnZSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRJbml0
aWFsaXplUGFnZUdyb3VwKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIFdlYlBhZ2VHcm91cFByb3h5
KiBwYWdlR3JvdXApCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRJbml0aWFsaXplUGFnZUdyb3Vw
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRJbml0aWFsaXplUGFnZUdyb3Vw
KHRvQVBJKGJ1bmRsZSksIHRvQVBJKHBhZ2VHcm91cCksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
fQorCiB2b2lkIEluamVjdGVkQnVuZGxlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZShJbmplY3Rl
ZEJ1bmRsZSogYnVuZGxlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1l
c3NhZ2VCb2R5KQogewogICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UpCkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTEgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQVBJT2JqZWN0OwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGU7CiBjbGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGFnZUdyb3VwUHJv
eHk7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1
bmRsZUNsaWVudD4gewogcHVibGljOgogICAgIHZvaWQgZGlkQ3JlYXRlUGFnZShJbmplY3RlZEJ1
bmRsZSosIFdlYlBhZ2UqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95UGFnZShJbmplY3RlZEJ1bmRs
ZSosIFdlYlBhZ2UqKTsKKyAgICB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3JvdXAoSW5qZWN0ZWRC
dW5kbGUqLCBXZWJQYWdlR3JvdXBQcm94eSopOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1l
c3NhZ2VCb2R5KTsKIH07CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2Rl
cnMuaAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW5jbHVkZSAiVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBE
YXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzMsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIC8vIEFkZHMKIC8vIC0gQnVuZGxlUGFnZSAtPiBQYWdlCiAvLyAtIEJ1bmRsZUZy
YW1lIC0+IEZyYW1lCisvLyAtIEJ1bmRsZVBhZ2VHcm91cCAtPiBQYWdlR3JvdXAKIAogY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VFbmNv
ZGVyPEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyPiB7CiBwdWJsaWM6CkBAIC02MCw2
ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoZnJhbWUtPmZy
YW1lSUQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEFQ
SU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VHcm91cDogeworICAgICAgICAgICAgV2ViUGFnZUdyb3Vw
UHJveHkqIHBhZ2VHcm91cCA9IHN0YXRpY19jYXN0PFdlYlBhZ2VHcm91cFByb3h5Kj4obV9yb290
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShwYWdlR3JvdXAtPnBhZ2VHcm91cElEKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MCw2
ICs3OCw3IEBAIHB1YmxpYzoKIC8vIEFkZHMKIC8vICAgLSBQYWdlIC0+IEJ1bmRsZVBhZ2UKIC8v
ICAgLSBGcmFtZSAtPiBCdW5kbGVGcmFtZQorLy8gICAtIFBhZ2VHcm91cCAtPiBCdW5kbGVQYWdl
R3JvdXAKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgOiBwdWJsaWMg
VXNlck1lc3NhZ2VEZWNvZGVyPEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyPiB7CiBw
dWJsaWM6CkBAIC0xMDksNiArMTE4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvZGVyLm1f
cm9vdCA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5cGVQYWdlR3Jv
dXA6IHsKKyAgICAgICAgICAgIFdlYlBhZ2VHcm91cERhdGEgcGFnZUdyb3VwRGF0YTsKKyAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhZ2VHcm91cERhdGEpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlByb2Nlc3M6
OnNoYXJlZCgpLndlYlBhZ2VHcm91cChwYWdlR3JvdXBEYXRhKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Nyw0NCArODcsNDQgQEAgc2l6ZV90IFdLQnVuZGxlR2V0SmF2YVNjcmlwdE9iamVjdHND
b3VudAogICAgIHJldHVybiB0b0ltcGwoYnVuZGxlUmVmKS0+amF2YVNjcmlwdE9iamVjdHNDb3Vu
dCgpOwogfQogCi12b2lkIFdLQnVuZGxlQWRkVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYsIFdLU3RyaW5nUmVmIHNv
dXJjZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0FycmF5UmVmIHdoaXRlbGlzdFJlZiwgV0tBcnJh
eVJlZiBibGFja2xpc3RSZWYsIFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGlt
ZVJlZiwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzUmVmKQordm9p
ZCBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29y
bGRSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0FycmF5UmVm
IHdoaXRlbGlzdFJlZiwgV0tBcnJheVJlZiBibGFja2xpc3RSZWYsIFdLVXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZVJlZiwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzUmVmKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5hZGRVc2VyU2NyaXB0
KHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIHRvV1RGU3Ry
aW5nKHVybFJlZiksIHRvSW1wbCh3aGl0ZWxpc3RSZWYpLCB0b0ltcGwoYmxhY2tsaXN0UmVmKSwg
dG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lUmVmKSwgdG9Vc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzUmVmKSk7CisgICAgdG9JbXBsKGJ1bmRsZVJl
ZiktPmFkZFVzZXJTY3JpcHQodG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChzY3JpcHRXb3Js
ZFJlZiksIHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIHRvV1RGU3RyaW5nKHVybFJlZiksIHRvSW1w
bCh3aGl0ZWxpc3RSZWYpLCB0b0ltcGwoYmxhY2tsaXN0UmVmKSwgdG9Vc2VyU2NyaXB0SW5qZWN0
aW9uVGltZShpbmplY3Rpb25UaW1lUmVmKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzUmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChX
S0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRS
ZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS0FycmF5UmVmIHdo
aXRlbGlzdFJlZiwgV0tBcnJheVJlZiBibGFja2xpc3RSZWYsIFdLVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZEZyYW1lc1JlZikKK3ZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVl
dChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJl
ZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tTdHJpbmdSZWYgc291
cmNlUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLQXJyYXlSZWYgd2hpdGVsaXN0UmVmLCBXS0FycmF5
UmVmIGJsYWNrbGlzdFJlZiwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJh
bWVzUmVmKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5hZGRVc2VyU3R5bGVTaGVldCh0b0lt
cGwoc2NyaXB0V29ybGRSZWYpLCB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCB0b1dURlN0cmluZyh1
cmxSZWYpLCB0b0ltcGwod2hpdGVsaXN0UmVmKSwgdG9JbXBsKGJsYWNrbGlzdFJlZiksIHRvVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lc1JlZikpOworICAgIHRvSW1wbChi
dW5kbGVSZWYpLT5hZGRVc2VyU3R5bGVTaGVldCh0b0ltcGwocGFnZUdyb3VwUmVmKSwgdG9JbXBs
KHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZTdHJpbmcoc291cmNlUmVmKSwgdG9XVEZTdHJpbmcodXJs
UmVmKSwgdG9JbXBsKHdoaXRlbGlzdFJlZiksIHRvSW1wbChibGFja2xpc3RSZWYpLCB0b1VzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXNSZWYpKTsKIH0KIAotdm9pZCBXS0J1
bmRsZVJlbW92ZVVzZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNjcmlw
dFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBXS1VSTFJlZiB1cmxSZWYpCit2b2lkIFdLQnVuZGxl
UmVtb3ZlVXNlclNjcmlwdChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwg
V0tVUkxSZWYgdXJsUmVmKQogewotICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU2Ny
aXB0KHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHVybFJlZikpOworICAgIHRv
SW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU2NyaXB0KHRvSW1wbChwYWdlR3JvdXBSZWYpLCB0
b0ltcGwoc2NyaXB0V29ybGRSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpKTsKIH0KIAotdm9pZCBX
S0J1bmRsZVJlbW92ZVVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5k
bGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tVUkxSZWYgdXJsUmVmKQordm9pZCBX
S0J1bmRsZVJlbW92ZVVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlw
dFdvcmxkUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJl
bW92ZVVzZXJTdHlsZVNoZWV0KHRvSW1wbChzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHVy
bFJlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU3R5bGVTaGVldCh0b0lt
cGwocGFnZUdyb3VwUmVmKSwgdG9JbXBsKHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZTdHJpbmcodXJs
UmVmKSk7CiB9CiAKLXZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU2NyaXB0cyhXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYpCit2b2lkIFdL
QnVuZGxlUmVtb3ZlVXNlclNjcmlwdHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29y
bGRSZWYpCiB7Ci0gICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlbW92ZVVzZXJTY3JpcHRzKHRvSW1w
bChzY3JpcHRXb3JsZFJlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU2Ny
aXB0cyh0b0ltcGwocGFnZUdyb3VwUmVmKSwgdG9JbXBsKHNjcmlwdFdvcmxkUmVmKSk7CiB9CiAK
LXZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVm
LCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmKQordm9pZCBXS0J1bmRsZVJl
bW92ZVVzZXJTdHlsZVNoZWV0cyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJl
ZikKIHsKLSAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKHRvSW1w
bChzY3JpcHRXb3JsZFJlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU3R5
bGVTaGVldHModG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChzY3JpcHRXb3JsZFJlZikpOwog
fQogCi12b2lkIFdLQnVuZGxlUmVtb3ZlQWxsVXNlckNvbnRlbnQoV0tCdW5kbGVSZWYgYnVuZGxl
UmVmKQordm9pZCBXS0J1bmRsZVJlbW92ZUFsbFVzZXJDb250ZW50KFdLQnVuZGxlUmVmIGJ1bmRs
ZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAgIHRvSW1wbChi
dW5kbGVSZWYpLT5yZW1vdmVBbGxVc2VyQ29udGVudCgpOworICAgIHRvSW1wbChidW5kbGVSZWYp
LT5yZW1vdmVBbGxVc2VyQ29udGVudCh0b0ltcGwocGFnZUdyb3VwUmVmKSk7CiB9CiAKLXZvaWQg
V0tCdW5kbGVPdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihXS0J1bmRsZVJl
ZiBidW5kbGVSZWYsIGJvb2wgZW5hYmxlZCkKK3ZvaWQgV0tCdW5kbGVPdmVycmlkZVhTU0F1ZGl0
b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChidW5k
bGVSZWYpLT5vdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihlbmFibGVkKTsK
KyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+b3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RS
dW5uZXIodG9JbXBsKHBhZ2VHcm91cFJlZiksIGVuYWJsZWQpOwogfQogCiB2b2lkIFdLQnVuZGxl
UmVwb3J0RXhjZXB0aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGV4Y2VwdGlv
bikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZS5oCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQs
MTcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogLy8gQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpX
S0J1bmRsZURpZENyZWF0ZVBhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpX
S0J1bmRsZVdpbGxEZXN0cm95UGFnZUNhbGxiYWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAo
KldLQnVuZGxlRGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S1N0cmluZ1JlZiBuYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRDcmVhdGVQYWdlQ2FsbGJhY2spKFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVXaWxsRGVzdHJveVBhZ2VDYWxsYmFjayko
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZEluaXRpYWxpemVQYWdlR3JvdXBD
YWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3Jv
dXAsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRS
ZWNlaXZlTWVzc2FnZUNhbGxiYWNrKShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG5h
bWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHN0
cnVjdCBXS0J1bmRsZUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwogICAgIGNvbnN0
IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50SW5mbzsKICAgICBXS0J1bmRsZURpZENyZWF0ZVBhZ2VDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZVBhZ2U7CiAgICAgV0tC
dW5kbGVXaWxsRGVzdHJveVBhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWxsRGVzdHJveVBhZ2U7CisgICAgV0tCdW5kbGVEaWRJbml0aWFsaXplUGFnZUdy
b3VwQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRJbml0aWFsaXplUGFn
ZUdyb3VwOwogICAgIFdLQnVuZGxlRGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2U7CiB9OwogdHlwZWRlZiBz
dHJ1Y3QgV0tCdW5kbGVDbGllbnQgV0tCdW5kbGVDbGllbnQ7CkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2Fz
dC5oCShyZXZpc2lvbiA3MzA1OSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDE1
IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFzcyBQYWdlT3ZlcmxheTsK
IGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBhZ2VHcm91cFByb3h5
OwogCi1XS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWYsIEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKQor
V0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmLCBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUNTU1N0eWxl
RGVjbGFyYXRpb25SZWYsIFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24pCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tCdW5kbGVGcmFtZVJlZiwgV2ViRnJhbWUpCiBXS19BRERfQVBJX01BUFBJTkco
V0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVOb2RlSGFuZGxlUmVmLCBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUpCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVQYWdlR3JvdXBSZWYsIFdlYlBh
Z2VHcm91cFByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYs
IFBhZ2VPdmVybGF5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlUGFnZVJlZiwgV2ViUGFn
ZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZVJhbmdlSGFuZGxlUmVmLCBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDczMDU5KQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0
VUlDbGllbnQoV0tCdW5kbGVQYWcKICAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAorV0tCdW5kbGVQYWdlR3JvdXBSZWYg
V0tCdW5kbGVQYWdlR2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQoreworICAg
IHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VHcm91cCgpKTsKK30KKwogV0tCdW5k
bGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYpCiB7CiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+bWFpbkZyYW1lKCkpOwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
MCw2ICsyMDAsNyBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50CiBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBh
Z2VVSUNsaWVudCogY2xpZW50KTsKIAorV0tfRVhQT1JUIFdLQnVuZGxlUGFnZUdyb3VwUmVmIFdL
QnVuZGxlUGFnZUdldFBhZ2VHcm91cChXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQg
V0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWYgV0tCdW5kbGVQ
YWdlR2V0QmFja0ZvcndhcmRMaXN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZUdyb3VwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tCdW5kbGVQYWdlR3JvdXAu
aCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK1dLVHlwZUlEIFdLQnVuZGxlUGFnZUdyb3VwR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1
cm4gdG9BUEkoV2ViUGFnZUdyb3VwUHJveHk6OkFQSVR5cGUpOworfQorCitXS1N0cmluZ1JlZiBX
S0J1bmRsZVBhZ2VHcm91cENvcHlJZGVudGlmaWVyKFdLQnVuZGxlUGFnZUdyb3VwUmVmIGJ1bmRs
ZVBhZ2VHcm91cCkKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGJ1bmRsZVBhZ2VH
cm91cCktPmlkZW50aWZpZXIoKSk7Cit9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaAkocmV2
aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VHcm91cC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS0J1bmRsZVBhZ2VHcm91cF9oCisjZGVmaW5lIFdLQnVuZGxlUGFnZUdyb3Vw
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdy
b3VwR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZVBhZ2VHcm91
cENvcHlJZGVudGlmaWVyKFdLQnVuZGxlUGFnZUdyb3VwUmVmIGJ1bmRsZVBhZ2VHcm91cCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZVBhZ2VH
cm91cF9oICovCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCShyZXZpc2lvbiA3MzA1OSkKKysrIFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTYgKzU1LDE2IEBAIGVudW0gV0tVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzIHsKIH07CiB0eXBlZGVmIGVudW0gV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczsKIAotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVB
ZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBz
Y3JpcHRXb3JsZCwgV0tTdHJpbmdSZWYgc291cmNlLCBXS1VSTFJlZiB1cmwsIFdLQXJyYXlSZWYg
d2hpdGVsaXN0LCBXS0FycmF5UmVmIGJsYWNrbGlzdCwgV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZSBpbmplY3Rpb25UaW1lLCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJl
ZiBidW5kbGUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLU3RyaW5nUmVm
IHNvdXJjZSwgV0tVUkxSZWYgdXJsLCBXS0FycmF5UmVmIHdoaXRlbGlzdCwgV0tBcnJheVJlZiBi
bGFja2xpc3QsIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyk7Ci1X
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHQoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1VSTFJlZiB1cmwpOwotV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJlZiBidW5k
bGUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQsIFdLVVJMUmVmIHVybCk7Ci1X
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHRzKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCk7Ci1XS19FWFBPUlQgdm9pZCBX
S0J1bmRsZVJlbW92ZVVzZXJTdHlsZVNoZWV0cyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxl
U2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQpOwotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1v
dmVBbGxVc2VyQ29udGVudChXS0J1bmRsZVJlZiBidW5kbGUpOworV0tfRVhQT1JUIHZvaWQgV0tC
dW5kbGVBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1N0cmlu
Z1JlZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3QsIFdLQXJyYXlS
ZWYgYmxhY2tsaXN0LCBXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdL
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcyk7CitXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZUFkZFVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxk
LCBXS1N0cmluZ1JlZiBzb3VyY2UsIFdLVVJMUmVmIHVybCwgV0tBcnJheVJlZiB3aGl0ZWxpc3Qs
IFdLQXJyYXlSZWYgYmxhY2tsaXN0LCBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVVc2VyU2NyaXB0KFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkLCBXS1VSTFJlZiB1cmwpOworV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVSZW1vdmVVc2VyU3R5bGVTaGVldChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxl
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3Js
ZCwgV0tVUkxSZWYgdXJsKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlVXNlclNjcmlw
dHMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdL
QnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVSZW1vdmVVc2VyU3R5bGVTaGVldHMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VH
cm91cFJlZiBwYWdlR3JvdXAsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxVc2VyQ29udGVudChXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CiAKIC8vIFdpbGwgbWFrZSBX
ZWJQcm9jZXNzIGlnbm9yZSB0aGlzIHByZWZlcmVuY2UgdW50aWwgYSBwcmVmZXJlbmNlcyBjaGFu
Z2Ugbm90aWZpY2F0aW9uLCBvbmx5IGZvciBXZWJLaXRUZXN0UnVubmVyIHVzZS4KLVdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoV0tC
dW5kbGVSZWYgYnVuZGxlLCBib29sIGVuYWJsZWQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVP
dmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVzdFJ1bm5lcihXS0J1bmRsZVJlZiBidW5kbGUs
IFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEzIEBACiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1l
bnUuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudEhhbmRs
ZXIuaD4KQEAgLTEwMSw3ICsxMDIsNyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2U+IFdlYlBhZ2U6OmNy
ZWF0ZSh1aW50CiB7CiAgICAgUmVmUHRyPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZihuZXcgV2Vi
UGFnZShwYWdlSUQsIHBhcmFtZXRlcnMpKTsKIAotICAgIGlmIChwYXJhbWV0ZXJzLnZpc2libGVU
b0luamVjdGVkQnVuZGxlICYmIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxlKCkp
CisgICAgaWYgKHBhZ2UtPnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkg
JiYgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKSkKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLmdldCgp
KTsKIAogICAgIHJldHVybiBwYWdlLnJlbGVhc2UoKTsKQEAgLTExMSw3ICsxMTIsNiBAQCBXZWJQ
YWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgOiBtX3ZpZXdTaXplKHBh
cmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2lzSW5SZWRvKGZhbHNlKQogICAgICwgbV9pc0Ns
b3NlZChmYWxzZSkKLSAgICAsIG1faXNWaXNpYmxlVG9JbmplY3RlZEJ1bmRsZShwYXJhbWV0ZXJz
LnZpc2libGVUb0luamVjdGVkQnVuZGxlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fd2lu
ZG93SXNWaXNpYmxlKGZhbHNlKQogI2VsaWYgUExBVEZPUk0oV0lOKQpAQCAtMTQzLDEzICsxNDMs
MTMgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogCiAgICAgdXBk
YXRlUHJlZmVyZW5jZXMocGFyYW1ldGVycy5zdG9yZSk7CiAKLSAgICBtX3BhZ2UtPnNldEdyb3Vw
TmFtZSgiV2ViS2l0Mkdyb3VwIik7CisgICAgbV9wYWdlR3JvdXAgPSBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS53ZWJQYWdlR3JvdXAocGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhKTsKKyAgICBtX3BhZ2Ut
PnNldEdyb3VwTmFtZShtX3BhZ2VHcm91cC0+aWRlbnRpZmllcigpKTsKIAogICAgIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0
KTsKIAogICAgIG1fZHJhd2luZ0FyZWEgPSBEcmF3aW5nQXJlYTo6Y3JlYXRlKHBhcmFtZXRlcnMu
ZHJhd2luZ0FyZWFJbmZvLnR5cGUsIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJbmZvLmlkZW50aWZp
ZXIsIHRoaXMpOwotCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZTo6Y3JlYXRlTWFpbkZyYW1l
KHRoaXMpOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2ViUGFn
ZTo6Y2xvc2UoKQogCiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAKLSAgICBpZiAobV9pc1Zpc2li
bGVUb0luamVjdGVkQnVuZGxlICYmIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluamVjdGVkQnVuZGxl
KCkpCisgICAgaWYgKHBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlKCkgJiYg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKSkKICAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuaW5qZWN0ZWRCdW5kbGUoKS0+d2lsbERlc3Ryb3lQYWdlKHRoaXMpOwogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDczMDU5KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CitjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdlYlBvcHVwTWVudTsKIGNs
YXNzIFdlYldoZWVsRXZlbnQ7CiAKQEAgLTEwOSw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCgpOwogICAgIERyYXdp
bmdBcmVhKiBkcmF3aW5nQXJlYSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd2luZ0FyZWEuZ2V0KCk7
IH0KIAorICAgIFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VHcm91cC5nZXQoKTsgfQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNw
ZWN0b3IqIGluc3BlY3RvcigpOwogI2VuZGlmCkBAIC0zMTAsNiArMzEzLDggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiAKKyAgICBSZWZQdHI8V2Vi
UGFnZUdyb3VwUHJveHk+IG1fcGFnZUdyb3VwOworCiAgICAgU3RyaW5nIG1fY3VzdG9tVXNlckFn
ZW50OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdTaXplOwpAQCAtMzE3LDcgKzMyMiw2
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNJblJlZG87CiAgICAgYm9vbCBtX2lzQ2xvc2Vk
OwotICAgIGJvb2wgbV9pc1Zpc2libGVUb0luamVjdGVkQnVuZGxlOwogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIC8vIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgd2luZG93IGlzIHZpc2libGUgb3Ig
bm90LgpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91
cFByb3h5LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2VHcm91cFByb3h5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiBXZWJQYWdlR3JvdXBQcm94eTo6Y3Jl
YXRlKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIGRhdGEpCit7CisgICAgUmVmUHRyPFdlYlBhZ2VH
cm91cFByb3h5PiBwYWdlR3JvdXAgPSBhZG9wdFJlZihuZXcgV2ViUGFnZUdyb3VwUHJveHkoZGF0
YSkpOworICAgIAorICAgIGlmIChwYWdlR3JvdXAtPmlzVmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUo
KSAmJiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRJbml0aWFsaXplUGFnZUdyb3Vw
KHBhZ2VHcm91cC5nZXQoKSk7CisKKyAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKK30K
KworV2ViUGFnZUdyb3VwUHJveHk6On5XZWJQYWdlR3JvdXBQcm94eSgpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZUdyb3VwUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlR3JvdXBQcm94eS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZUdyb3VwUHJveHlfaAorI2RlZmluZSBXZWJQYWdl
R3JvdXBQcm94eV9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJQYWdl
R3JvdXBEYXRhLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VHcm91cFByb3h5IDogcHVibGljIEFQSU9iamVjdCB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVQYWdlR3Jv
dXA7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gY3JlYXRlKGNv
bnN0IFdlYlBhZ2VHcm91cERhdGEmKTsKKyAgICB2aXJ0dWFsIH5XZWJQYWdlR3JvdXBQcm94eSgp
OworCisgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmlkZW50aWZlcjsgfQorICAgIHVpbnQ2NF90IHBhZ2VHcm91cElEKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLnBhZ2VHcm91cElEOyB9CisgICAgYm9vbCBpc1Zpc2libGVUb0luamVjdGVkQnVuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnZpc2libGVUb0luamVjdGVkQnVuZGxlOyB9CisKK3By
aXZhdGU6CisgICAgV2ViUGFnZUdyb3VwUHJveHkoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgZGF0
YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBXZWJQYWdlR3JvdXBE
YXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
UGFnZUdyb3VwUHJveHlfaApJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDczMDU5KQorKysg
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3Niw2ICs1NzYs
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cU2hhcmVkXFdlYlBhZ2VHcm91cERhdGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlBhZ2VHcm91cERhdGEuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNo
YXJlZFxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAg
LTEyODYsNiArMTI5NCwxNCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVxXZWJQYWdlLm1lc3NhZ2VzLmluIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJQYWdlR3Jv
dXBQcm94eS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYlBhZ2VHcm91cFByb3h5LmgiDQor
CQkJCQk+DQorCQkJCTwvRmlsZT4NCiAJCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0id2luIg0KIAkJ
CQkJPg0KQEAgLTE1MjEsNiArMTUzNywxNCBAQAogCQkJCQkJCT4NCiAJCQkJCQk8L0ZpbGU+DQog
CQkJCQkJPEZpbGUNCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVk
QnVuZGxlXEFQSVxjXFdLQnVuZGxlUGFnZUdyb3VwLmNwcCINCisJCQkJCQkJPg0KKwkJCQkJCTwv
RmlsZT4NCisJCQkJCQk8RmlsZQ0KKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
SW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlR3JvdXAuaCINCisJCQkJCQkJPg0KKwkJ
CQkJCTwvRmlsZT4NCisJCQkJCQk8RmlsZQ0KIAkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAiDQogCQkJ
CQkJCT4NCiAJCQkJCQk8L0ZpbGU+DQpAQCAtMTkwOCw2ICsxOTMyLDE0IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJQ
YWdlR3JvdXAuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYlBhZ2VHcm91cC5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYlBhZ2VOYW1l
c3BhY2UuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTIwODIsNiArMjExNCwxNCBAQAog
CQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VHcm91cC5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9G
aWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElc
Q1xXS1BhZ2VHcm91cC5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQog
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlTmFtZXNwYWNlLmNw
cCINCiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mkdl
bmVyYXRlZC5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQu
bWFrZQkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9k
ICIuLlxVSVByb2Nlc3NcQVBJXENcV0tOYXRpdmVFdmVudC5oIiAiJChXRUJLSVRPVVRQVVRESVIp
XGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdL
TmF2aWdhdGlvbkRhdGEuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAg
ICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2UuaCIgIiQoV0VCS0lUT1VU
UFVURElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xB
UElcQ1xXS1BhZ2VHcm91cC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
ICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5oIiAi
JChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5c
VUlQcm9jZXNzXEFQSVxDXFdLUHJlZmVyZW5jZXMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNs
dWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKQEAg
LTYwLDYgKzYxLDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVj
dGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlTm9kZUhhbmRsZS5oIiAiJChXRUJLSVRPVVRQVVRESVIp
XGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3Rl
ZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmgiICIkKFdFQktJVE9VVFBV
VERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXElu
amVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlUGFnZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGlu
Y2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1
bmRsZVxBUElcY1xXS0J1bmRsZVBhZ2VHcm91cC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1
ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRs
ZVxBUElcY1xXS0J1bmRsZVBhZ2VPdmVybGF5LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVk
ZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxl
XEFQSVxjXFdLQnVuZGxlUGFnZVByaXZhdGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRl
XFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVc
QVBJXGNcV0tCdW5kbGVQcml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJL
aXQyIgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzMwNTkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0xMi0wMSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBQYWdlR3JvdXBpbmcgdG8gV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMzMyCisKKyAgICAgICAgLSBVcGRh
dGUgdGVzdGluZyBoYXJuZXNzZXMgdG8gZGVhbCB3aXRoIG5ldyBQYWdlR3JvdXAgQVBJLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLm06CisgICAg
ICAgIChXS0J1bmRsZUluaXRpYWxpemUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVk
QnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZEluaXRpYWxpemVQYWdlR3JvdXApOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXplVGVz
dE5hbWVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0Lmg6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZVRlc3Q6OmluaXRpYWxpemUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVUZXN0OjpkaWRJbml0aWFsaXplUGFn
ZUdyb3VwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaF9C
dW5kbGUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RG9jdW1lbnRTdGFydFVzZXJTY3Jp
cHRBbGVydENyYXNoVGVzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9t
YWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZv
cm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2lu
L1BsYXRmb3JtV2ViVmlld1dpbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlOjpkaWRJbml0aWFsaXplUGFnZUdyb3VwKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6YmVnaW5U
ZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwYWdlR3JvdXApOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclNj
cmlwdCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU3R5bGVT
aGVldCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9y
RW5hYmxlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcDoK
KyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorCiAyMDEw
LTEyLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9t
YWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9N
aW5pQnJvd3Nlci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubQkocmV2aXNpb24gNzMwNDMp
CisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4u
bQkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCB2b2lkIFdLQnVuZGxlSW5pdGlhbGl6
ZShXS0J1bmRsZVJlZiBidW5kCiAgICAgICAgIDAsCiAgICAgICAgIGRpZENyZWF0ZVBhZ2UsCiAg
ICAgICAgIHdpbGxEZXN0cm95UGFnZSwKKyAgICAgICAgMCwgLy8gZGlkSW5pdGlhbGl6ZVBhZ2VH
cm91cAogICAgICAgICBkaWRSZWNpZXZlTWVzc2FnZQogICAgIH07CiAgICAgV0tCdW5kbGVTZXRD
bGllbnQoYnVuZGxlLCAmY2xpZW50KTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkv
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczMDQz
KQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNSArNTQsMjAgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXI6OmluaXRpYWxpegogICAgICAgICB0aGlzLAogICAgICAgICBkaWRDcmVhdGVQ
YWdlLAogICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCisgICAgICAgIGRpZEluaXRpYWxpemVQYWdl
R3JvdXAsCiAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlCiAgICAgfTsKICAgICBXS0J1bmRsZVNl
dENsaWVudChtX2J1bmRsZSwgJmNsaWVudCk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXN0
IGZyb20gdGhlICJpbml0aWFsaXphdGlvblVzZXJEYXRhIi4KLSAgICBhc3NlcnQoV0tHZXRUeXBl
SUQoaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7Ci0gICAg
V0tTdHJpbmdSZWYgdGVzdE5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oaW5pdGlhbGl6
YXRpb25Vc2VyRGF0YSk7CiAKLSAgICBpbml0aWFsaXplVGVzdE5hbWVkKGJ1bmRsZSwgVXRpbDo6
dG9TVEQodGVzdE5hbWUpKTsKKyAgICBhc3NlcnQoV0tHZXRUeXBlSUQoaW5pdGlhbGl6YXRpb25V
c2VyRGF0YSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgIFdLRGljdGlvbmFyeVJl
ZiBpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+
KGluaXRpYWxpemF0aW9uVXNlckRhdGEpOworCisgICAgV0tTdHJpbmdSZWYgdGVzdE5hbWUgPSBz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0aWFs
aXphdGlvbkRpY3Rpb25hcnksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUZXN0TmFt
ZSIpKSk7CisgICAgV0tUeXBlUmVmIHVzZXJEYXRhID0gV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShpbml0aWFsaXphdGlvbkRpY3Rpb25hcnksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJVc2VyRGF0YSIpKTsKKyAgICAKKyAgICBpbml0aWFsaXplVGVzdE5hbWVkKGJ1bmRsZSwgVXRp
bDo6dG9TVEQodGVzdE5hbWUpLCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC03OSw2ICs4NCwxMyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6d2lsbERlc3RyCiAgICAgc2VsZi0+bV9jdXJyZW50
VGVzdC0+d2lsbERlc3Ryb3lQYWdlKGJ1bmRsZSwgcGFnZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyOjpkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIEluamVjdGVkQnVuZGxlQ29udHJvbGxlciogc2VsZiA9IHN0YXRpY19jYXN0PElu
amVjdGVkQnVuZGxlQ29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsK
KyAgICBhc3NlcnQoc2VsZi0+bV9jdXJyZW50VGVzdCk7CisgICAgc2VsZi0+bV9jdXJyZW50VGVz
dC0+ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChidW5kbGUsIHBhZ2VHcm91cCk7Cit9CisKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKiBz
ZWxmID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtOTQsNyArMTA2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXI6OmR1bXBUZXN0TgogICAgICAgICBwcmludGYoIiVzXG4iLCAoKml0KS5maXJz
dC5jX3N0cigpKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxp
emVUZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRp
ZmllcikKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXplVGVzdE5hbWVk
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIsIFdLVHlw
ZVJlZiB1c2VyRGF0YSkKIHsKICAgICBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbiBj
cmVhdGVUZXN0RnVuY3Rpb24gPSBtX2NyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uc1tp
ZGVudGlmaWVyXTsKICAgICBpZiAoIWNyZWF0ZVRlc3RGdW5jdGlvbikgewpAQCAtMTAzLDcgKzEx
NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXoKICAgICB9CiAK
ICAgICBtX2N1cnJlbnRUZXN0ID0gY3JlYXRlVGVzdEZ1bmN0aW9uKGlkZW50aWZpZXIpOwotICAg
IG1fY3VycmVudFRlc3QtPmluaXRpYWxpemUoYnVuZGxlKTsKKyAgICBtX2N1cnJlbnRUZXN0LT5p
bml0aWFsaXplKGJ1bmRsZSwgdXNlckRhdGEpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlQ29u
dHJvbGxlcjo6cmVnaXN0ZXJDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbihjb25zdCBz
dGQ6OnN0cmluZyYgaWRlbnRpZmllciwgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24g
ZnVuY3Rpb24pCkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxl
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVm
LCBXS1R5cGVSZWYpOwogCiAgICAgdm9pZCBkdW1wVGVzdE5hbWVzKCk7Ci0gICAgdm9pZCBpbml0
aWFsaXplVGVzdE5hbWVkKFdLQnVuZGxlUmVmIGJ1bmRsZSwgY29uc3Qgc3RkOjpzdHJpbmcmKTsK
KyAgICB2b2lkIGluaXRpYWxpemVUZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25zdCBz
dGQ6OnN0cmluZyYsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CiAKICAgICB0eXBlZGVmIEluamVjdGVk
QnVuZGxlVGVzdCogKCpDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbikoY29uc3Qgc3Rk
OjpzdHJpbmcmKTsKICAgICB2b2lkIHJlZ2lzdGVyQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVu
Y3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmLCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlv
bik7CkBAIC01MCw5ICs1MCwxMCBAQCBwcml2YXRlOgogICAgIEluamVjdGVkQnVuZGxlQ29udHJv
bGxlcigpOwogICAgIH5JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIoKTsKIAotICAgIHN0YXRpYyB2
b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lQ
YWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFn
ZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFn
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5pdGlh
bGl6ZVBhZ2VHcm91cChXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVu
ZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDcmVh
dGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbj4gbV9jcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RG
dW5jdGlvbnM7CiAgICAgV0tCdW5kbGVSZWYgbV9idW5kbGU7CkluZGV4OiBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlVGVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVUZXN0LmgJKHJldmlzaW9uIDczMDQzKQor
KysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDExIEBAIGNsYXNzIEluamVjdGVkQnVuZGxlVGVzdCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVUZXN0KCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUmVmLCBX
S0J1bmRsZVBhZ2VHcm91cFJlZikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKFdLQnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5KSB7IH0KIAogICAgIHN0ZDo6c3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMs
MjEgQEAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKIAotV0tD
b250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpz
dHJpbmcmIHRlc3ROYW1lKQorV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3ROYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluamVjdGVkQnVuZGxlUGF0aChBZG9w
dFdLLCBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKSk7CiAgICAgV0tDb250ZXh0UmVmIGNvbnRl
eHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKGluamVjdGVkQnVuZGxl
UGF0aC5nZXQoKSk7CiAKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBp
bml0aWFsaXphdGlvbkRpY3Rpb25hcnkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0
ZSgpKTsKKyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGVzdE5hbWVLZXkoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRlc3ROYW1lIikpOwogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXN0TmFtZVN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh0ZXN0TmFtZS5jX3N0cigpKSk7Ci0gICAgV0tDb250ZXh0U2V0
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZvckluamVjdGVkQnVuZGxlKGNvbnRleHQsIHRlc3ROYW1l
U3RyaW5nLmdldCgpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGluaXRpYWxpemF0aW9uRGlj
dGlvbmFyeS5nZXQoKSwgdGVzdE5hbWVLZXkuZ2V0KCksIHRlc3ROYW1lU3RyaW5nLmdldCgpKTsK
KworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VyRGF0YUtleShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlckRhdGEiKSk7CisgICAgV0tEaWN0aW9uYXJ5
QWRkSXRlbShpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkuZ2V0KCksIHVzZXJEYXRhS2V5LmdldCgp
LCB1c2VyRGF0YSk7CisKKyAgICBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9y
SW5qZWN0ZWRCdW5kbGUoY29udGV4dCwgaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5LmdldCgpKTsK
IAogICAgIHJldHVybiBjb250ZXh0OwogfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFV0aWwgewogLy8gUnVucyBhIHBsYXRmb3JtIHJ1bmxvb3Ag
dW50aWwgdGhlICdkb25lJyBpcyB0cnVlLiAKIHZvaWQgcnVuKGJvb2wqIGRvbmUpOwogCi1XS0Nv
bnRleHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0
cmluZyYpOworV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3Qo
Y29uc3Qgc3RkOjpzdHJpbmcmLCBXS1R5cGVSZWYgdXNlckRhdGEgPSAwKTsKIAogV0tTdHJpbmdS
ZWYgY3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRoKCk7CiBXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNv
dXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSwgY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKSW5kZXg6
IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24g
NzMwNDMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFdpbmRvd01lc3NhZ2VPYnNlcnZl
cjsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKIHB1YmxpYzoKLSAgICBQbGF0Zm9ybVdlYlZp
ZXcoV0tQYWdlTmFtZXNwYWNlUmVmKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNw
YWNlUmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogICAgIH5QbGF0Zm9ybVdlYlZpZXcoKTsKIAog
ICAgIFdLUGFnZVJlZiBwYWdlKCk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRT
dGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcAkocmV2aXNpb24gNzMwNDMpCisrKyBXZWJLaXRU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRB
bGVydENyYXNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsMTEgQEAgc3RhdGljIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZgogCiBURVNUKFdlYktpdDIsIERvY3VtZW50
U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3QpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoIkRvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3QiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cChBZG9wdFdLLCBXS1BhZ2VHcm91
cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEb2N1
bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hUZXN0UGFnZUdyb3VwIikpKTsgCisKKyAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENy
YXNoVGVzdCIsIHBhZ2VHcm91cC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVz
cGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29u
dGV4dC5nZXQoKSkpOwotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2Uu
Z2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCks
IHBhZ2VHcm91cC5nZXQoKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVudDsKICAgICBt
ZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0
Q3Jhc2hfQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoX0J1bmRsZS5j
cHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaF9CdW5kbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVUZXN0LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZVBhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgor
I2luY2x1ZGUgPGFzc2VydC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTM4
LDExICs0MCwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKICAgICB7CisgICAgICAg
IGFzc2VydChXS0dldFR5cGVJRCh1c2VyRGF0YSkgPT0gV0tCdW5kbGVQYWdlR3JvdXBHZXRUeXBl
SUQoKSk7CisgICAgICAgIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9IHN0YXRpY19j
YXN0PFdLQnVuZGxlUGFnZUdyb3VwUmVmPih1c2VyRGF0YSk7CisKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHNvdXJjZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiYWxlcnQoJ2FuIGFsZXJ0Jyk7IikpOwotICAgICAgICBXS0J1bmRsZUFkZFVzZXJTY3Jp
cHQoYnVuZGxlLCBXS0J1bmRsZVNjcmlwdFdvcmxkTm9ybWFsV29ybGQoKSwgc291cmNlLmdldCgp
LCAwLCAwLCAwLCBrV0tJbmplY3RBdERvY3VtZW50U3RhcnQsIGtXS0luamVjdEluQWxsRnJhbWVz
KTsKKyAgICAgICAgV0tCdW5kbGVBZGRVc2VyU2NyaXB0KGJ1bmRsZSwgcGFnZUdyb3VwLCBXS0J1
bmRsZVNjcmlwdFdvcmxkTm9ybWFsV29ybGQoKSwgc291cmNlLmdldCgpLCAwLCAwLCAwLCBrV0tJ
bmplY3RBdERvY3VtZW50U3RhcnQsIGtXS0luamVjdEluQWxsRnJhbWVzKTsKICAgICB9CisKK3By
aXZhdGU6CisgICAgV0tCdW5kbGVQYWdlR3JvdXBSZWYgbV9wYWdlR3JvdXA7CiB9OwogCiBzdGF0
aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFs
ZXJ0Q3Jhc2hUZXN0PiByZWdpc3RyYXIoIkRvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFz
aFRlc3QiKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2Vi
Vmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9Q
bGF0Zm9ybVdlYlZpZXdNYWMubW0JKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwxMCArMjksMTAgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1QbGF0Zm9ybVdl
YlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmKQor
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VO
YW1lc3BhY2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBOU1JlY3Qg
cmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgcGFnZU5hbWVzcGFjZVJlZjpuYW1lc3BhY2VSZWZd
OworICAgIG1fdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgcGFnZU5h
bWVzcGFjZVJlZjpwYWdlTmFtZXNwYWNlUmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOwog
CiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbW1tO
U1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJl
Y3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7CiAgICAgbV93aW5kb3cgPSBbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1JlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dp
bmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107CkluZGV4
OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmll
d1dpbi5jcHAJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDE0
IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZWdpc3RlcldpbmRvd0NsYXMKICAgICA6OlJlZ2lz
dGVyQ2xhc3NFeFcoJnduZENsYXNzKTsKIH0KIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdl
YlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFjZVJlZikKK1BsYXRmb3JtV2ViVmlldzo6
UGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiBuYW1lc3BhY2VSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1fcGFyZW50V2luZG93TWVzc2FnZU9ic2VydmVy
KDApCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwogCiAgICAgUkVDVCB2aWV3UmVjdCA9
IHswLCAwLCA4MDAsIDYwMH07CiAgICAgbV93aW5kb3cgPSBDcmVhdGVXaW5kb3dFeFcoMCwgaG9z
dFdpbmRvd0NsYXNzTmFtZSwgTCJUZXN0V2ViS2l0QVBJIiwgV1NfT1ZFUkxBUFBFRFdJTkRPVywg
dmlld1JlY3QubGVmdCwgdmlld1JlY3QudG9wLCB2aWV3UmVjdC5yaWdodCwgdmlld1JlY3QuYm90
dG9tLCAwLCAwLCAwLCB0aGlzKTsKLSAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUodmlld1JlY3Qs
IG5hbWVzcGFjZVJlZiwgbV93aW5kb3cpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3
UmVjdCwgbmFtZXNwYWNlUmVmLCBwYWdlR3JvdXBSZWYsIG1fd2luZG93KTsKIH0KIAogUGxhdGZv
cm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiVGVzdEludm9jYXRpb24uaCIKICNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0UHJpdmF0ZS5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlz
aW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDExIEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZShXS0IKICAgICBzdGF0aWNfY2FzdDxJ
bmplY3RlZEJ1bmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbERlc3Ry
b3lQYWdlKHBhZ2UpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRJbml0aWFsaXplUGFn
ZUdyb3VwKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVu
ZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRJbml0aWFsaXplUGFnZUdy
b3VwKHBhZ2VHcm91cCk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNz
YWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KTsKQEAgLTc1LDYgKzgwLDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShXS0J1bmRsZQogICAgICAgICB0aGlzLAog
ICAgICAgICBkaWRDcmVhdGVQYWdlLAogICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCisgICAgICAg
IGRpZEluaXRpYWxpemVQYWdlR3JvdXAsCiAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlCiAgICAg
fTsKICAgICBXS0J1bmRsZVNldENsaWVudChtX2J1bmRsZSwgJmNsaWVudCk7CkBAIC05OSw2ICsx
MDUsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6d2lsbERlc3Ryb3lQYWdlKFdLQgogICAgIH0K
IH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXS0J1bmRs
ZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXApCit7CisgICAgbV9wYWdlR3JvdXAgPSBwYWdlR3JvdXA7
Cit9CisKIEluamVjdGVkQnVuZGxlUGFnZSogSW5qZWN0ZWRCdW5kbGU6OnBhZ2UoKSBjb25zdAog
ewogICAgIC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBoYXZlIHRoZSBVSSBwcm9jZXNzIHNlbmQg
b3ZlciBhIHJlZmVyZW5jZSB0byB0aGUgbWFpbgpAQCAtMTM3LDcgKzE0OCw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZygpCiAgICAgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zp
c2l0ZWRMaW5rcyhtX2J1bmRsZSwgZmFsc2UpOwogICAgIFdLQnVuZGxlUmVtb3ZlQWxsVmlzaXRl
ZExpbmtzKG1fYnVuZGxlKTsKIAotICAgIFdLQnVuZGxlUmVtb3ZlQWxsVXNlckNvbnRlbnQobV9i
dW5kbGUpOworICAgIFdLQnVuZGxlUmVtb3ZlQWxsVXNlckNvbnRlbnQobV9idW5kbGUsIG1fcGFn
ZUdyb3VwKTsKIAogICAgIHBhZ2UoKS0+cmVzZXQoKTsKIH0KSW5kZXg6IFdlYktpdFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgJKHJldmlzaW9uIDczMDQzKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2
ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoV0tCdW5kbGVSZWYpOwogCiAg
ICAgV0tCdW5kbGVSZWYgYnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9idW5kbGU7IH0KKyAgICBX
S0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VHcm91
cDsgfQogCiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGxheW91dFRlc3RDb250cm9sbGVyKCkg
eyByZXR1cm4gbV9sYXlvdXRUZXN0Q29udHJvbGxlci5nZXQoKTsgfQogICAgIEdDQ29udHJvbGxl
ciogZ2NDb250cm9sbGVyKCkgeyByZXR1cm4gbV9nY0NvbnRyb2xsZXIuZ2V0KCk7IH0KQEAgLTcw
LDE1ICs3MSwxOCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShX
S0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVz
c2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZElu
aXRpYWxpemVQYWdlR3JvdXAoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShX
S0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKICAgICB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tC
dW5kbGVQYWdlUmVmKTsKICAgICB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVBhZ2VSZWYp
OworICAgIHZvaWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXS0J1bmRsZVBhZ2VHcm91cFJlZik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5KTsKIAogICAgIHZvaWQgYmVnaW5UZXN0aW5nKCk7CiAKICAgICBX
S0J1bmRsZVJlZiBtX2J1bmRsZTsKKyAgICBXS0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91
cDsKICAgICBWZWN0b3I8T3duUHRyPEluamVjdGVkQnVuZGxlUGFnZT4gPiBtX3BhZ2VzOwogCiAg
ICAgUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwpJ
bmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcz
MDQzKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHNvdXJjZVdLID0gdG9XSyhzb3VyY2UpOwogICAgIFdLUmV0YWluUHRyPFdL
QnVuZGxlU2NyaXB0V29ybGRSZWY+IHNjcmlwdFdvcmxkKEFkb3B0V0ssIFdLQnVuZGxlU2NyaXB0
V29ybGRDcmVhdGVXb3JsZCgpKTsKIAotICAgIFdLQnVuZGxlQWRkVXNlclNjcmlwdChJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIHNjcmlwdFdvcmxkLmdldCgpLCBzb3VyY2VXSy5n
ZXQoKSwgMCwgMCwgMCwKKyAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLmJ1bmRsZSgpLCBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZUdyb3VwKCks
IHNjcmlwdFdvcmxkLmdldCgpLCBzb3VyY2VXSy5nZXQoKSwgMCwgMCwgMCwKICAgICAgICAgKHJ1
bkF0U3RhcnQgPyBrV0tJbmplY3RBdERvY3VtZW50U3RhcnQgOiBrV0tJbmplY3RBdERvY3VtZW50
RW5kKSwKICAgICAgICAgKGFsbEZyYW1lcyA/IGtXS0luamVjdEluQWxsRnJhbWVzIDoga1dLSW5q
ZWN0SW5Ub3BGcmFtZU9ubHkpKTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHNvdXJjZVdLID0gdG9XSyhzb3VyY2UpOwogICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0
V29ybGRSZWY+IHNjcmlwdFdvcmxkKEFkb3B0V0ssIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVX
b3JsZCgpKTsKIAotICAgIFdLQnVuZGxlQWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLmJ1bmRsZSgpLCBzY3JpcHRXb3JsZC5nZXQoKSwgc291cmNlV0suZ2V0KCksIDAs
IDAsIDAsCisgICAgV0tCdW5kbGVBZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlR3JvdXAoKSwgc2Ny
aXB0V29ybGQuZ2V0KCksIHNvdXJjZVdLLmdldCgpLCAwLCAwLCAwLAogICAgICAgICAoYWxsRnJh
bWVzID8ga1dLSW5qZWN0SW5BbGxGcmFtZXMgOiBrV0tJbmplY3RJblRvcEZyYW1lT25seSkpOwog
fQogCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0Q2Fu
T3BlbldpbgogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7Ci0gICAgV0tCdW5kbGVPdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVk
Rm9yVGVzdFJ1bm5lcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIHRydWUpOwor
ICAgIFdLQnVuZGxlT3ZlcnJpZGVYU1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFn
ZUdyb3VwKCksIHRydWUpOwogfQogCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2lu
ZG93Q291bnQoKQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCShyZXZpc2lvbiA3MzA0MykKKysrIFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZp
ZXcoV0tQYWdlTgogCiAgICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07CiAgICAg
bV93aW5kb3cgPSBDcmVhdGVXaW5kb3dFeFcoMCwgaG9zdFdpbmRvd0NsYXNzTmFtZSwgTCJXZWJL
aXRUZXN0UnVubmVyIiwgV1NfT1ZFUkxBUFBFRFdJTkRPVywgMCAvKlhPRkZTRVQqLywgMCAvKllP
RkZTRVQqLywgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgR2V0TW9kdWxl
SGFuZGxlKDApLCAwKTsKLSAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUodmlld1JlY3QsIG5hbWVz
cGFjZVJlZiwgbV93aW5kb3cpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwg
bmFtZXNwYWNlUmVmLCAwIC8qcGFnZUdyb3VwUmVmKi8sIG1fd2luZG93KTsKIH0KIAogUGxhdGZv
cm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkK
</data>
<flag name="review"
          id="66095"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>