<?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>46629</bug_id>
          
          <creation_ts>2010-09-27 09:30:04 -0700</creation_ts>
          <short_desc>The mouseDidMoveOverElement callback in the injected bundle should include modifier info</short_desc>
          <delta_ts>2010-09-27 09:53:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>285499</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-27 09:30:04 -0700</bug_when>
    <thetext>The mouseDidMoveOverElement callback in the injected bundle should include modifier info</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285503</commentid>
    <comment_count>1</comment_count>
      <attachid>68920</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-27 09:36:58 -0700</bug_when>
    <thetext>Created attachment 68920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285507</commentid>
    <comment_count>2</comment_count>
      <attachid>68921</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-27 09:39:17 -0700</bug_when>
    <thetext>Created attachment 68921
Actual patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285514</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-27 09:53:02 -0700</bug_when>
    <thetext>Landed in r68397.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68920</attachid>
            <date>2010-09-27 09:36:58 -0700</date>
            <delta_ts>2010-09-27 09:39:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>events.diff</filename>
            <type>text/plain</type>
            <size>70630</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiA2NTM3MykKKysrIFdlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgVHlwZUJ1bmRsZVBhZ2UsCiAgICAgICAgIFR5cGVCdW5kbGVTY3JpcHRXb3JsZCwKICAgICAg
ICAgVHlwZUJ1bmRsZU5vZGVIYW5kbGUsCisgICAgICAgIFR5cGVCdW5kbGVNb3VzZUV2ZW50LAor
ICAgICAgICBUeXBlQnVuZGxlV2hlZWxFdmVudCwKKyAgICAgICAgVHlwZUJ1bmRsZUtleWJvYXJk
RXZlbnQsCiAKICAgICAgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMKICAgICAgICAgVHlwZVZpZXcK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNwcAkocmV2aXNpb24gNjUzNzMp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JO
YXYKICAgICBpZiAoIW1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BhZ2VQb2xpY3lDbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b1JlZihwYWdlKSwgdG9XSyh0eXBlKSwg
dG9VUkxSZWYodXJsLmltcGwoKSksIHRvUmVmKGZyYW1lKSwgdG9SZWYobGlzdGVuZXIpLCBtX3Bh
Z2VQb2xpY3lDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlUG9saWN5Q2xpZW50LmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9SZWYocGFnZSksIHRvUmVmKHR5cGUpLCB0b1VS
TFJlZih1cmwuaW1wbCgpKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBv
bGljeUNsaWVudC5jbGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTksNyAr
NTksNyBAQCBib29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3CiAgICAgaWYg
KCFtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKHRvUmVmKHBhZ2UpLCB0b1dLKHR5cGUpLCB0b1VSTFJlZih1cmwu
aW1wbCgpKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHRvUmVmKHBhZ2UpLCB0b1JlZih0eXBlKSwgdG9VUkxSZWYodXJsLmltcGwo
KSksIHRvUmVmKGZyYW1lKSwgdG9SZWYobGlzdGVuZXIpLCBtX3BhZ2VQb2xpY3lDbGllbnQuY2xp
ZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCShyZXZpc2lvbiA2NTM3MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5lIFdL
VHlwZUlEIHRvUmVmKFdlYktpdDo6QVBJT2JqZWN0OgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
S1R5cGVJRD4odHlwZSk7CiB9CiAKLWlubGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdG9XSyhX
ZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQoraW5saW5lIFdLRnJhbWVOYXZpZ2F0aW9uVHlw
ZSB0b1JlZihXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQogewogICAgIFdLRnJhbWVOYXZp
Z2F0aW9uVHlwZSB3a1R5cGUgPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlT3RoZXI7CiAKSW5kZXg6
IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NTM3
MykKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsNiArMTgyLDE3IEBACiAJCUJDMjBFQzA3MTE2RUY3RkYwMDA5NEE1MCAv
KiBXS1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMjBFQzA1MTE2RUY3RkYwMDA5NEE1MCAvKiBXS1N0cmluZ0NGLmNwcCAqLzsgfTsK
IAkJQkMyMEVENjYxMTZGOTcxMTAwMDk0QTUwIC8qIFdLVVJMQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjBFRDY0MTE2Rjk3MTEwMDA5NEE1MCAv
KiBXS1VSTENGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwogCQlCQzIwRUQ2NzExNkY5NzExMDAwOTRBNTAgLyogV0tVUkxDRi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwRUQ2NTExNkY5NzExMDAwOTRB
NTAgLyogV0tVUkxDRi5jcHAgKi87IH07CisJCUJDMjE2NkQxMTIwRjRDODkwMEM3QzY1RCAvKiBX
S0J1bmRsZU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMjE2NkNGMTIwRjRDODkwMEM3QzY1RCAvKiBXS0J1bmRsZU1vdXNlRXZlbnQu
aCAqLzsgfTsKKwkJQkMyMTY2RDIxMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIx
NjZEMDEyMEY0Qzg5MDBDN0M2NUQgLyogV0tCdW5kbGVNb3VzZUV2ZW50LmNwcCAqLzsgfTsKKwkJ
QkMyMTY4NzkxMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIxNjg3
NTEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmNwcCAqLzsg
fTsKKwkJQkMyMTY4N0ExMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVjdGVkQnVuZGxlS2V5Ym9hcmRF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
MTY4NzYxMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5oICov
OyB9OworCQlCQzIxNjg3QjEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVlbEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MjE2ODc3MTIwRkNFQkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuY3BwICov
OyB9OworCQlCQzIxNjg3QzEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVlbEV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIx
Njg3ODEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmggKi87IH07
CisJCUJDMjE2ODgyMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIxNjg3RDEyMEZEMEUzMDBD
N0M2NUQgLyogV0tCdW5kbGVFdmVudC5oICovOyB9OworCQlCQzIxNjg4MzEyMEZEMEUzMDBDN0M2
NUQgLyogV0tCdW5kbGVLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjE2ODdFMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRs
ZUtleWJvYXJkRXZlbnQuY3BwICovOyB9OworCQlCQzIxNjg4NDEyMEZEMEUzMDBDN0M2NUQgLyog
V0tCdW5kbGVLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzIxNjg3RjEyMEZEMEUzMDBDN0M2NUQgLyogV0tCdW5kbGVLZXlib2Fy
ZEV2ZW50LmggKi87IH07CisJCUJDMjE2ODg1MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdo
ZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyMTY4ODAxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5jcHAgKi87
IH07CisJCUJDMjE2ODg2MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVsRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjE2ODgxMTIw
RkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVsRXZlbnQuaCAqLzsgfTsKIAkJQkMyNjUxRjYx
MTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUxRjUxMTgy
NUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovOyB9
OwogCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTIxMjExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi87IH07CiAJCUJDMjY1MjE3MTE4
MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTIxMzExODI2MDgxMDAyNDNFMTIgLyogRHJh
d2luZ0FyZWFQcm94eS5oICovOyB9OwpAQCAtMjI1LDYgKzIzNiw4IEBACiAJCUJDODc4MEZDMTE2
MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg3ODBGQjExNjFDMkI4MDBDQzI3
NjggLyogUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oICovOyB9OwogCQlCQzg3REZBQTEwMTgx
MDE0MDA1NjQyMTYgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODdERkE5MTAxODEwMTQwMDU2NDIxNiAvKiBsaWJp
Y3Vjb3JlLmR5bGliICovOyB9OwogCQlCQzhBNTAxNTExNzY1RjU2MDA3NTc1NzMgLyogV0tSZXRh
aW5QdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
OEE1MDE0MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1JldGFpblB0ci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDOEZEOTAxMTIwRTZERDcwMEYzRTcx
QSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEZEOEZGMTIwRTZERDcwMEYzRTcxQSAvKiBJbmplY3Rl
ZEJ1bmRsZU1vdXNlRXZlbnQuaCAqLzsgfTsKKwkJQkM4RkQ5MDIxMjBFNkRENzAwRjNFNzFBIC8q
IEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhGRDkwMDEyMEU2REQ3MDBGM0U3MUEgLyogSW5qZWN0ZWRC
dW5kbGVNb3VzZUV2ZW50LmNwcCAqLzsgfTsKIAkJQkM5NjNENkIxMTNERDE5MjAwNTc0QkUyIC8q
IFdlYlBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovOyB9OwogCQlCQzk2
M0Q2RTExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTYzRDZEMTEzREQxQTUwMDU3NEJFMiAvKiBX
ZWJQYWdlTWFjLm1tICovOyB9OwogCQlCQzlCMzhBMTEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJh
bWVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM5QjM4OUYxMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCAqLzsgfTsKQEAgLTUy
NCw2ICs1MzcsMTcgQEAKIAkJQkMyMEVDMDUxMTZFRjdGRjAwMDk0QTUwIC8qIFdLU3RyaW5nQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTdHJpbmdDRi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjBFRDY0MTE2Rjk3MTEwMDA5NEE1MCAv
KiBXS1VSTENGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMQ0YuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEVENjUxMTZGOTcxMTAwMDk0QTUwIC8q
IFdLVVJMQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVUkxD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjE2NkNGMTIwRjRDODkwMEM3
QzY1RCAvKiBXS0J1bmRsZU1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tCdW5kbGVNb3VzZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMjE2NkQwMTIwRjRDODkwMEM3QzY1RCAvKiBXS0J1bmRsZU1vdXNlRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVNb3VzZUV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMTY4NzUxMjBGQ0VCQzAwQzdDNjVEIC8q
IEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzIxNjg3NjEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRC
dW5kbGVLZXlib2FyZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
amVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzIxNjg3NzEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlV2hl
ZWxFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjE2ODc4MTIwRkNF
QkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDMjE2ODdEMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMTY4N0UxMjBGRDBFMzAwQzdDNjVEIC8q
IFdLQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0J1bmRsZUtleWJvYXJkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzIxNjg3RjEyMEZEMEUzMDBDN0M2NUQgLyogV0tCdW5kbGVLZXlib2FyZEV2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlS2V5Ym9hcmRFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzIxNjg4MDEyMEZEMEUzMDBDN0M2
NUQgLyogV0tCdW5kbGVXaGVlbEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLQnVuZGxlV2hlZWxFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMjE2ODgxMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVsRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVXaGVlbEV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjY1MUY1MTE4MjVFRjgwMDI0M0UxMiAvKiBD
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIxMjExODI2MDgxMDAyNDNFMTIgLyog
RHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
NjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTY3LDYgKzU5MSw4IEBACiAJCUJDODdERkE5MTAxODEwMTQwMDU2NDIx
NiAvKiBsaWJpY3Vjb3JlLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJpY3Vjb3Jl
LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGliaWN1Y29yZS5keWxpYjsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKIAkJQkM4QTUwMTAxMTc2NUFGNzAwNzU3NTczIC8qIEluZm8ucGxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9IEluZm8ucGxpc3Q7IHBhdGggPSBXZWJQ
cm9jZXNzL0luZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEE1MDE0
MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1JldGFpblB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1JldGFpblB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzhGRDhGRjEyMEU2REQ3MDBGM0U3MUEgLyogSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzhGRDkwMDEyMEU2REQ3MDBGM0U3MUEg
LyogSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDOTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFn
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUIzODlGMTBGNTM4QkUwMDQ0
M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkZyYW1lUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExOTMsNiAr
MTIxOSwxMiBAQAogCQkJCUJDQThDNkFFMTFFM0MwODcwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oICovLAogCQkJCUJDMTRERjc2MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCAqLywKIAkJCQlCQzE0REY3NTEyMEI1Qjc5MDA4MjZD
MEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oICovLAorCQkJCUJDOEZEOTAwMTIwRTZE
RDcwMEYzRTcxQSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuY3BwICovLAorCQkJCUJDOEZE
OEZGMTIwRTZERDcwMEYzRTcxQSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaCAqLywKKwkJ
CQlCQzIxNjg3NTEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50
LmNwcCAqLywKKwkJCQlCQzIxNjg3NjEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVL
ZXlib2FyZEV2ZW50LmggKi8sCisJCQkJQkMyMTY4NzcxMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVj
dGVkQnVuZGxlV2hlZWxFdmVudC5jcHAgKi8sCisJCQkJQkMyMTY4NzgxMjBGQ0VCQzAwQzdDNjVE
IC8qIEluamVjdGVkQnVuZGxlV2hlZWxFdmVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBJbmpl
Y3RlZEJ1bmRsZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjM2LDYgKzEyNjgs
MTMgQEAKIAkJCQlFMUVFNTVGMzExRjhGMTg5MDBDQ0JFRTQgLyogV0tCdW5kbGVSYW5nZS5oICov
LAogCQkJCUJDMTRERjlDMTIwQjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlwdFdvcmxkLmNw
cCAqLywKIAkJCQlCQzE0REY5RDEyMEI2MzVGMDA4MjZDMEMgLyogV0tCdW5kbGVTY3JpcHRXb3Js
ZC5oICovLAorCQkJCUJDMjE2ODdEMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUV2ZW50Lmgg
Ki8sCisJCQkJQkMyMTY2RDAxMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVudC5j
cHAgKi8sCisJCQkJQkMyMTY2Q0YxMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVu
dC5oICovLAorCQkJCUJDMjE2ODgwMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVsRXZl
bnQuY3BwICovLAorCQkJCUJDMjE2ODgxMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVs
RXZlbnQuaCAqLywKKwkJCQlCQzIxNjg3RTEyMEZEMEUzMDBDN0M2NUQgLyogV0tCdW5kbGVLZXli
b2FyZEV2ZW50LmNwcCAqLywKKwkJCQlCQzIxNjg3RjEyMEZEMEUzMDBDN0M2NUQgLyogV0tCdW5k
bGVLZXlib2FyZEV2ZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTQ4NCw2ICsxNTIzLDEzIEBACiAJCQkJQkMxNERGNzcxMjBCNUI3
OTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMTRERjlGMTIwQjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlwdFdvcmxkLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE0RTEwQTEyMEI5MDVFMDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4RkQ5MDExMjBFNkRENzAw
RjNFNzFBIC8qIEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkMyMTY2RDExMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMyMTY4N0ExMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVjdGVkQnVuZGxlS2V5
Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyMTY4N0MxMjBGQ0VCQzAwQzdDNjVE
IC8qIEluamVjdGVkQnVuZGxlV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyMTY4
ODIxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMjE2ODg0MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMjE2ODg2MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVs
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ2OTU0MTIxNEU2Q0IwMDBCOThFQiAvKiBX
ZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4
RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0U0Njk1QTEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE3MDYsNiArMTc1MiwxMiBAQAogCQkJCUJDMTRERjc4MTIwQjVC
NzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMTRERjlFMTIwQjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlwdFdvcmxkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTRFMTA5MTIwQjkwNUUwMDgyNkMwQyAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDOEZEOTAyMTIw
RTZERDcwMEYzRTcxQSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkMyMTY2RDIxMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzIxNjg3OTEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0
ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDMjE2ODdCMTIw
RkNFQkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQkMyMTY4ODMxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlS2V5Ym9hcmRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzIxNjg4NTEyMEZEMEUzMDBDN0M2NUQgLyogV0tC
dW5kbGVXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTQ2OTUzMTIxNEU2Q0Iw
MDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTQ2OTU1
MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTkxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUtl
eWJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVLZXli
b2FyZEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbmplY3RlZEJ1bmRsZUtleWJv
YXJkRXZlbnQ6OkluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudChXZWJFdmVudDo6VHlwZSB0eXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dCwgY29uc3QgV1RGOjpTdHJpbmcmIHVubW9kaWZpZWRU
ZXh0LCBjb25zdCBXVEY6OlN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFs
S2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBib29sIGlzQXV0b1JlcGVhdCwgYm9v
bCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtleSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmll
cnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgOiBtX3dlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4
dCwgdW5tb2RpZmllZFRleHQsIGtleUlkZW50aWZpZXIsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwg
bmF0aXZlVmlydHVhbEtleUNvZGUsIGlzQXV0b1JlcGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5
LCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKK3sKK30KKworSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2
ZW50Ojp+SW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50KCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlS2V5
Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1
bmRsZUtleWJvYXJkRXZlbnRfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
V2ViRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEluamVjdGVkQnVuZGxl
S2V5Ym9hcmRFdmVudCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQnVuZGxlS2V5Ym9hcmRFdmVudDsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudD4gY3JlYXRlKFdlYkV2ZW50
OjpUeXBlIHR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0LCBjb25zdCBXVEY6OlN0cmluZyYg
dW5tb2RpZmllZFRleHQsIGNvbnN0IFdURjo6U3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaXNBdXRv
UmVwZWF0LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBXZWJFdmVudDo6TW9kaWZp
ZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50KHR5cGUsIHRleHQsIHVubW9k
aWZpZWRUZXh0LCBrZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5hdGl2ZVZp
cnR1YWxLZXlDb2RlLCBpc0F1dG9SZXBlYXQsIGlzS2V5cGFkLCBpc1N5c3RlbUtleSwgbW9kaWZp
ZXJzLCB0aW1lc3RhbXApKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZUtl
eWJvYXJkRXZlbnQoKTsKKworICAgIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYktleWJvYXJk
RXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYktleWJvYXJkRXZlbnQ7IH0KKworcHJpdmF0ZToK
KyAgICBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQoV2ViRXZlbnQ6OlR5cGUgdHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHRleHQsIGNvbnN0IFdURjo6U3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwg
Y29uc3QgV1RGOjpTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNv
ZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNL
ZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXksIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBk
b3VibGUgdGltZXN0YW1wKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gQVBJVHlwZTsgfQorCisgICAgV2ViS2V5Ym9hcmRFdmVudCBtX3dlYktleWJvYXJkRXZlbnQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxl
S2V5Ym9hcmRFdmVudF9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50LmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZU1vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTW91c2VFdmVudC5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50OjpJbmplY3RlZEJ1bmRsZU1vdXNlRXZl
bnQoV2ViRXZlbnQ6OlR5cGUgdHlwZSwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbiwgaW50
IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIGZsb2F0IGRlbHRhWCwgZmxvYXQg
ZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBXZWJFdmVudDo6TW9kaWZpZXJz
IG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICA6IG1fd2ViTW91c2VFdmVudCh0eXBl
LCBidXR0b24sIHgsIHksIGdsb2JhbFgsIGdsb2JhbFksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVos
IGNsaWNrQ291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wKQoreworfQorCitJbmplY3RlZEJ1bmRs
ZU1vdXNlRXZlbnQ6On5JbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQoKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNb3Vz
ZUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEluamVjdGVkQnVuZGxlTW91c2VFdmVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlTW91
c2VFdmVudF9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50
IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJ
VHlwZSA9IFR5cGVCdW5kbGVNb3VzZUV2ZW50OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVNb3VzZUV2ZW50PiBjcmVhdGUoV2ViRXZlbnQ6OlR5cGUgdHlwZSwgV2ViTW91
c2VFdmVudDo6QnV0dG9uIGJ1dHRvbiwgaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGds
b2JhbFksIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlj
a0NvdW50LCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVNb3VzZUV2
ZW50KHR5cGUsIGJ1dHRvbiwgeCwgeSwgZ2xvYmFsWCwgZ2xvYmFsWSwgZGVsdGFYLCBkZWx0YVks
IGRlbHRhWiwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCB0aW1lc3RhbXApKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQoKTsKKworICAgIGNvbnN0IFdlYk1v
dXNlRXZlbnQmIHdlYk1vdXNlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYk1vdXNlRXZlbnQ7
IH0KKworcHJpdmF0ZToKKyAgICBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQoV2ViRXZlbnQ6OlR5
cGUgdHlwZSwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbiwgaW50IHgsIGludCB5LCBpbnQg
Z2xvYmFsWCwgaW50IGdsb2JhbFksIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBk
ZWx0YVosIGludCBjbGlja0NvdW50LCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgZG91
YmxlIHRpbWVzdGFtcCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IEFQSVR5cGU7IH0KKworICAgIFdlYk1vdXNlRXZlbnQgbV93ZWJNb3VzZUV2ZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZU1vdXNlRXZl
bnRfaApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAJKHJldmlz
aW9uIDY1MzczKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDE0ICs2Mywx
NCBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvCiBib29sIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShXZWJQYWdlKiBwYWdl
LCBOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlvbiBh
Y3Rpb24pCiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2VydE5vZGUpCi0gICAgICAgIHJl
dHVybiBtX2NsaWVudC5zaG91bGRJbnNlcnROb2RlKHRvUmVmKHBhZ2UpLCB0b1JlZihub2RlKSwg
dG9SZWYocmFuZ2VUb1JlcGxhY2UpLCB0b1dLKGFjdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8p
OworICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkSW5zZXJ0Tm9kZSh0b1JlZihwYWdlKSwg
dG9SZWYobm9kZSksIHRvUmVmKHJhbmdlVG9SZXBsYWNlKSwgdG9SZWYoYWN0aW9uKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnRUZXh0KFdlYlBhZ2UqIHBhZ2UsIFN0cmlu
Z0ltcGwqIHRleHQsIFJhbmdlKiByYW5nZVRvUmVwbGFjZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFj
dGlvbikKIHsKICAgICBpZiAobV9jbGllbnQuc2hvdWxkSW5zZXJ0VGV4dCkKLSAgICAgICAgcmV0
dXJuIG1fY2xpZW50LnNob3VsZEluc2VydFRleHQodG9SZWYocGFnZSksIHRvUmVmKHRleHQpLCB0
b1JlZihyYW5nZVRvUmVwbGFjZSksIHRvV0soYWN0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRJbnNlcnRUZXh0KHRvUmVmKHBhZ2UpLCB0
b1JlZih0ZXh0KSwgdG9SZWYocmFuZ2VUb1JlcGxhY2UpLCB0b1JlZihhY3Rpb24pLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODQsNyArODQsNyBAQCBi
b29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvCiBib29sIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJQYWdlKiBw
YWdlLCBSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5
LCBib29sIHN0aWxsU2VsZWN0aW5nKQogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKQotICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJvbVJhbmdlKSwgdG9SZWYodG9SYW5nZSksIHRv
V0soYWZmaW5pdHkpLCBzdGlsbFNlbGVjdGluZywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
ICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKHRvUmVmKHBhZ2Up
LCB0b1JlZihmcm9tUmFuZ2UpLCB0b1JlZih0b1JhbmdlKSwgdG9SZWYoYWZmaW5pdHkpLCBzdGls
bFNlbGVjdGluZywgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVdo
ZWVsRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlV2hlZWxFdmVudC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbmplY3Rl
ZEJ1bmRsZVdoZWVsRXZlbnQ6OkluamVjdGVkQnVuZGxlV2hlZWxFdmVudChpbnQgeCwgaW50IHks
IGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZs
b2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgV2ViV2hlZWxFdmVudDo6R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUg
dGltZXN0YW1wKQorICAgIDogbV93ZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgeCwgeSwg
Z2xvYmFsWCwgZ2xvYmFsWSwgZGVsdGFYLCBkZWx0YVksIHdoZWVsVGlja3NYLCB3aGVlbFRpY2tz
WSwgZ3JhbnVsYXJpdHksIG1vZGlmaWVycywgdGltZXN0YW1wKQoreworfQorCitJbmplY3RlZEJ1
bmRsZVdoZWVsRXZlbnQ6On5JbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQoKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVX
aGVlbEV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEluamVjdGVkQnVuZGxlV2hlZWxFdmVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxl
V2hlZWxFdmVudF9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJFdmVu
dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVXaGVlbEV2
ZW50IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUg
QVBJVHlwZSA9IFR5cGVCdW5kbGVXaGVlbEV2ZW50OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50PiBjcmVhdGUoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFs
WCwgaW50IGdsb2JhbFksIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCB3aGVlbFRp
Y2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksIFdlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVXaGVlbEV2
ZW50KHgsIHksIGdsb2JhbFgsIGdsb2JhbFksIGRlbHRhWCwgZGVsdGFZLCB3aGVlbFRpY2tzWCwg
d2hlZWxUaWNrc1ksIGdyYW51bGFyaXR5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlV2hlZWxFdmVudCgpOworCisgICAgY29uc3Qg
V2ViV2hlZWxFdmVudCYgd2ViV2hlZWxFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViV2hlZWxF
dmVudDsgfQorCitwcml2YXRlOgorICAgIEluamVjdGVkQnVuZGxlV2hlZWxFdmVudChpbnQgeCwg
aW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0
YVksIGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgV2ViV2hlZWxFdmVudDo6
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBk
b3VibGUgdGltZXN0YW1wKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gQVBJVHlwZTsgfQorCisgICAgV2ViV2hlZWxFdmVudCBtX3dlYldoZWVsRXZlbnQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlV2hlZWxF
dmVudF9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCShyZXZpc2lvbiA2NTM3MykKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOSArMjYsMTMgQEAKICNpZm5kZWYgV0tCdW5kbGVBUElDYXN0X2gK
ICNkZWZpbmUgV0tCdW5kbGVBUElDYXN0X2gKIAorI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5j
bHVkZSAiV0tCdW5kbGVCYXNlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVLZXlib2FyZEV2ZW50Lmgi
CisjaW5jbHVkZSAiV0tCdW5kbGVNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdl
LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLQnVuZGxl
V2hlZWxFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9ySW5zZXJ0QWN0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0QWZmaW5pdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1pvb21N
b2RlLmg+CkBAIC00Miw4ICs0NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUtl
eWJvYXJkRXZlbnQ7CitjbGFzcyBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQ7CiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwor
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJQYWdlOwogCkBAIC01MywxNCArNjAsMjEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJ
VHlwZUluZm88V0tCdQogdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5k
bGVSZWY+ICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIEluamVjdGVkQnVuZGxlKiBJ
bXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZj4gICAgICAgICAgICAgIHsgdHlwZWRlZiBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88
V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4gICAgICAgICAgICAgeyB0eXBlZGVmIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJ
VHlwZUluZm88V0tCdW5kbGVNb3VzZUV2ZW50UmVmPiAgICAgICAgICAgICAgeyB0eXBlZGVmIElu
amVjdGVkQnVuZGxlTW91c2VFdmVudCogSW1wbFR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBC
dW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZVdoZWVsRXZlbnRSZWY+ICAgICAgICAgICAgICB7IHR5
cGVkZWYgSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50KiBJbXBsVHlwZTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlS2V5Ym9hcmRFdmVudFJlZj4gICAgICAg
ICAgIHsgdHlwZWRlZiBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQqIEltcGxUeXBlOyB9Owog
dGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5kbGVOb2RlUmVmPiAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdlYkNvcmU6Ok5vZGUqIEltcGxUeXBlOyB9OwogdGVt
cGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5kbGVSYW5nZVJlZj4gICAgICAg
ICAgICAgICAgICAgeyB0eXBlZGVmIFdlYkNvcmU6OlJhbmdlKiBJbXBsVHlwZTsgfTsKIHRlbXBs
YXRlPD4gc3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlv
blJlZj4gICAgIHsgdHlwZWRlZiBXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKiBJbXBsVHlw
ZTsgfTsKIAorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsVHlwZT4gc3RydWN0IEJ1bmRsZUltcGxU
eXBlSW5mbyB7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88SW5qZWN0
ZWRCdW5kbGUqPiAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tCdW5kbGVSZWYgQVBJVHlw
ZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUqPiAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgQVBJ
VHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkKj4gICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
IEFQSVR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88SW5qZWN0
ZWRCdW5kbGVNb3VzZUV2ZW50Kj4gICAgICAgICB7IHR5cGVkZWYgV0tCdW5kbGVNb3VzZUV2ZW50
UmVmIEFQSVR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88SW5q
ZWN0ZWRCdW5kbGVXaGVlbEV2ZW50Kj4gICAgICAgICB7IHR5cGVkZWYgV0tCdW5kbGVXaGVlbEV2
ZW50UmVmIEFQSVR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88
SW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50Kj4gICAgICB7IHR5cGVkZWYgV0tCdW5kbGVLZXli
b2FyZEV2ZW50UmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlw
ZUluZm88V2ViRnJhbWUqPiAgICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tCdW5k
bGVGcmFtZVJlZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJ
bmZvPFdlYlBhZ2UqPiAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLQnVuZGxl
UGFnZVJlZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZv
PFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qPiAgICAgeyB0eXBlZGVmIFdLQnVuZGxlQ1NT
U3R5bGVEZWNsYXJhdGlvblJlZiBBUElUeXBlOyB9OwpAQCAtODMsMzIgKzk3LDI3IEBAIGlubGlu
ZSB0eXBlbmFtZSBXZWJLaXQ6OkJ1bmRsZUltcGxUeXBlSW4KICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx0eXBlbmFtZSBXZWJLaXQ6OkJ1bmRsZUltcGxUeXBlSW5mbzxUPjo6QVBJVHlwZT4o
dCk7CiB9CiAKLWlubGluZSBXS0luc2VydEFjdGlvblR5cGUgdG9XSyhXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24gYWN0aW9uKQoraW5saW5lIFdLSW5zZXJ0QWN0aW9uVHlwZSB0b1JlZihXZWJD
b3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYWN0aW9uKSB7
CiAgICAgY2FzZSBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZDoKICAgICAgICAgcmV0
dXJuIGtXS0luc2VydEFjdGlvblR5cGVkOwotICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNv
cmU6OkVkaXRvckluc2VydEFjdGlvblBhc3RlZDoKICAgICAgICAgcmV0dXJuIGtXS0luc2VydEFj
dGlvblBhc3RlZDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkOgogICAgICAgICByZXR1cm4ga1dLSW5zZXJ0QWN0aW9uRHJvcHBlZDsK
LSAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBrV0tJbnNlcnRBY3Rpb25UeXBlZDsKIH0KIAotaW5saW5lIFdLQWZmaW5pdHlUeXBlIHRv
V0soV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQoraW5saW5lIFdLQWZmaW5pdHlUeXBlIHRv
UmVmKFdlYkNvcmU6OkVBZmZpbml0eSBhZmZpbml0eSkKIHsKICAgICBzd2l0Y2ggKGFmZmluaXR5
KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpVUFNUUkVBTToKICAgICAgICAgcmV0dXJuIGtXS0FmZmlu
aXR5VXBzdHJlYW07Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6RE9XTlNUUkVB
TToKICAgICAgICAgcmV0dXJuIGtXS0FmZmluaXR5RG93bnN0cmVhbTsKLSAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBrV0tBZmZpbml0
eVVwc3RyZWFtOwpAQCAtMTI3LDQgKzEzNiw4MCBAQCBpbmxpbmUgV2ViQ29yZTo6Wm9vbU1vZGUg
dG9ab29tTW9kZShXS0J1CiAgICAgcmV0dXJuIFdlYkNvcmU6Olpvb21UZXh0T25seTsKIH0KIAor
aW5saW5lIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyB0b1dlYkV2ZW50TW9kaWZpZXJzKFdL
QnVuZGxlRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMpCit7CisgICAgdW5zaWduZWQgbW9kaWZp
ZXJzID0gMDsKKyAgICBpZiAod2tNb2RpZmllcnMgJiBrV0tCdW5kbGVFdmVudE1vZGlmaWVyc1No
aWZ0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViS2l0OjpXZWJFdmVudDo6U2hpZnRLZXk7
CisgICAgaWYgKHdrTW9kaWZpZXJzICYga1dLQnVuZGxlRXZlbnRNb2RpZmllcnNDb250cm9sS2V5
KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViS2l0OjpXZWJFdmVudDo6Q29udHJvbEtleTsKKyAg
ICBpZiAod2tNb2RpZmllcnMgJiBrV0tCdW5kbGVFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IFdlYktpdDo6V2ViRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAod2tNb2Rp
ZmllcnMgJiBrV0tCdW5kbGVFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIG1vZGlmaWVy
cyB8PSBXZWJLaXQ6OldlYkV2ZW50OjpNZXRhS2V5OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnM+KG1vZGlmaWVycyk7Cit9CisKK2lubGluZSBXZWJL
aXQ6OldlYkV2ZW50OjpUeXBlIHRvV2ViTW91c2VFdmVudFR5cGUoV0tCdW5kbGVNb3VzZUV2ZW50
VHlwZSB3a1R5cGUpCit7CisgICAgc3dpdGNoICh3a1R5cGUpIHsKKyAgICBjYXNlIGtXS0J1bmRs
ZU1vdXNlRXZlbnRUeXBlVXA6CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYkV2ZW50OjpNb3Vz
ZVVwOworICAgIGNhc2Uga1dLQnVuZGxlTW91c2VFdmVudFR5cGVEb3duOgorICAgICAgICByZXR1
cm4gV2ViS2l0OjpXZWJFdmVudDo6TW91c2VEb3duOworICAgIGNhc2Uga1dLQnVuZGxlTW91c2VF
dmVudFR5cGVNb3ZlOgorICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJFdmVudDo6TW91c2VNb3Zl
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJLaXQ6
OldlYkV2ZW50OjpNb3VzZU1vdmU7Cit9CisKK2lubGluZSBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6
OkJ1dHRvbiB0b1dlYk1vdXNlRXZlbnRCdXR0b24oV0tCdW5kbGVNb3VzZUV2ZW50QnV0dG9uIHdr
QnV0dG9uKQoreworICAgIHN3aXRjaCAod2tCdXR0b24pIHsKKyAgICBjYXNlIGtXS0J1bmRsZU1v
dXNlRXZlbnRCdXR0b25Ob0J1dHRvbjoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViTW91c2VF
dmVudDo6Tm9CdXR0b247CisgICAgY2FzZSBrV0tCdW5kbGVNb3VzZUV2ZW50QnV0dG9uTGVmdDoK
KyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBj
YXNlIGtXS0J1bmRsZU1vdXNlRXZlbnRCdXR0b25NaWRkbGU6CisgICAgICAgIHJldHVybiBXZWJL
aXQ6OldlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjsKKyAgICBjYXNlIGtXS0J1bmRsZU1vdXNl
RXZlbnRCdXR0b25SaWdodDoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViTW91c2VFdmVudDo6
UmlnaHRCdXR0b247CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIFdlYktpdDo6V2ViTW91c2VFdmVudDo6Tm9CdXR0b247Cit9CisKK2lubGluZSBXZWJLaXQ6
OldlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IHRvV2ViV2hlZWxFdmVudEdyYW51bGFyaXR5KFdL
QnVuZGxlV2hlZWxFdmVudEdyYW51bGFyaXR5IHdrR3JhbnVsYXJpdHkpCit7CisgICAgc3dpdGNo
ICh3a0dyYW51bGFyaXR5KSB7CisgICAgY2FzZSBrV0tCdW5kbGVXaGVlbEV2ZW50R3JhbnVsYXJp
dHlQYWdlOgorICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBh
Z2VXaGVlbEV2ZW50OworICAgIGNhc2Uga1dLQnVuZGxlV2hlZWxFdmVudEdyYW51bGFyaXR5UGl4
ZWw6CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxX
aGVlbEV2ZW50OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OworfQorCitp
bmxpbmUgV2ViS2l0OjpXZWJFdmVudDo6VHlwZSB0b1dlYktleWJvYXJkRXZlbnRUeXBlKFdLQnVu
ZGxlS2V5Ym9hcmRFdmVudFR5cGUgd2tUeXBlKQoreworICAgIHN3aXRjaCAod2tUeXBlKSB7Cisg
ICAgY2FzZSBrV0tCdW5kbGVLZXlib2FyZEV2ZW50VHlwZUtleURvd246CisgICAgICAgIHJldHVy
biBXZWJLaXQ6OldlYkV2ZW50OjpLZXlEb3duOworICAgIGNhc2Uga1dLQnVuZGxlS2V5Ym9hcmRF
dmVudFR5cGVLZXlVcDoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViRXZlbnQ6OktleVVwOwor
ICAgIGNhc2Uga1dLQnVuZGxlS2V5Ym9hcmRFdmVudFR5cGVSYXdLZXlEb3duOgorICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJFdmVudDo6UmF3S2V5RG93bjsKKyAgICBjYXNlIGtXS0J1bmRsZUtl
eWJvYXJkRXZlbnRUeXBlQ2hhcjoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViRXZlbnQ6OkNo
YXI7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6V2ViRXZlbnQ6OktleURvd247Cit9CisKICNlbmRpZiAvLyBXS0J1bmRsZUFQSUNhc3RfaApJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhc2UuaAkocmV2aXNpb24gNjUzNzMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVGcmFtZSogV0tCdQogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVIYW5kbGVS
ZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0J1bmRsZVBhZ2UqIFdLQnVuZGxlUGFnZVJlZjsK
IHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQnVuZGxlU2NyaXB0V29ybGQqIFdLQnVuZGxlU2NyaXB0
V29ybGRSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0J1bmRsZU1vdXNlRXZlbnQqIFdLQnVu
ZGxlTW91c2VFdmVudFJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQnVuZGxlV2hlZWxFdmVu
dCogV0tCdW5kbGVXaGVlbEV2ZW50UmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVL
ZXlib2FyZEV2ZW50KiBXS0J1bmRsZUtleWJvYXJkRXZlbnRSZWY7CiAKIHR5cGVkZWYgc3RydWN0
IE9wYXF1ZVdLQnVuZGxlRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogV0tCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlKiBXS0J1bmRs
ZU5vZGVSZWY7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVFdmVudC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0J1bmRsZUV2ZW50X2gK
KyNkZWZpbmUgV0tCdW5kbGVFdmVudF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAga1dLQnVuZGxlRXZlbnRNb2RpZmll
cnNTaGlmdEtleSA9IDEgPDwgMCwKKyAgICBrV0tCdW5kbGVFdmVudE1vZGlmaWVyc0NvbnRyb2xL
ZXkgPSAxIDw8IDEsCisgICAga1dLQnVuZGxlRXZlbnRNb2RpZmllcnNBbHRLZXkgPSAxIDw8IDIs
CisgICAga1dLQnVuZGxlRXZlbnRNb2RpZmllcnNNZXRhS2V5ID0gMSA8PCAzCit9OwordHlwZWRl
ZiB1aW50MzJfdCBXS0J1bmRsZUV2ZW50TW9kaWZpZXJzOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVFdmVudF9oICovCkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVLZXlib2FyZEV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVLZXlib2FyZEV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUtleWJvYXJkRXZlbnQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQnVuZGxl
S2V5Ym9hcmRFdmVudC5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50
LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQnVuZGxlS2V5Ym9hcmRF
dmVudEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvUmVmKEluamVjdGVkQnVuZGxlS2V5Ym9h
cmRFdmVudDo6QVBJVHlwZSk7Cit9CisKK1dLQnVuZGxlS2V5Ym9hcmRFdmVudFJlZiBXS0J1bmRs
ZUtleWJvYXJkRXZlbnRDcmVhdGUoV0tCdW5kbGVLZXlib2FyZEV2ZW50VHlwZSB0eXBlLCBXS1N0
cmluZ1JlZiB0ZXh0LCBXS1N0cmluZ1JlZiB1bm1vZGlmaWVkVGV4dCwgV0tTdHJpbmdSZWYga2V5
SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxL
ZXlDb2RlLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtl
eSwgV0tCdW5kbGVFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCit7
CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudD4ga2V5Ym9hcmRFdmVudCA9
IEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHRvV2ViS2V5Ym9hcmRFdmVudFR5
cGUodHlwZSksIHRvV0sodGV4dCktPnN0cmluZygpLCB0b1dLKHVubW9kaWZpZWRUZXh0KS0+c3Ry
aW5nKCksIHRvV0soa2V5SWRlbnRpZmllciktPnN0cmluZygpLCB3aW5kb3dzVmlydHVhbEtleUNv
ZGUsIG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBpc0F1dG9SZXBlYXQsIGlzS2V5cGFkLCBpc1N5c3Rl
bUtleSwgdG9XZWJFdmVudE1vZGlmaWVycyhtb2RpZmllcnMpLCB0aW1lc3RhbXApOworICAgIHJl
dHVybiB0b1JlZihrZXlib2FyZEV2ZW50LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitX
S0J1bmRsZUtleWJvYXJkRXZlbnRSZWYgV0tCdW5kbGVLZXlib2FyZEV2ZW50UmV0YWluKFdLQnVu
ZGxlS2V5Ym9hcmRFdmVudFJlZiBrZXlib2FyZEV2ZW50UmVmKQoreworICAgIHRvV0soa2V5Ym9h
cmRFdmVudFJlZiktPnJlZigpOworICAgIHJldHVybiBrZXlib2FyZEV2ZW50UmVmOworfQorCit2
b2lkIFdLQnVuZGxlS2V5Ym9hcmRFdmVudFJlbGVhc2UoV0tCdW5kbGVLZXlib2FyZEV2ZW50UmVm
IGtleWJvYXJkRXZlbnRSZWYpCit7CisgICAgdG9XSyhrZXlib2FyZEV2ZW50UmVmKS0+ZGVyZWYo
KTsKK30KKwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUtleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUtleWJv
YXJkRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV0tCdW5kbGVLZXlib2FyZEV2ZW50X2gKKyNkZWZpbmUgV0tCdW5kbGVLZXlib2FyZEV2
ZW50X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZUJhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlRXZlbnQuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIHsKKyAgICBrV0tC
dW5kbGVLZXlib2FyZEV2ZW50VHlwZUtleURvd24gPSAwLAorICAgIGtXS0J1bmRsZUtleWJvYXJk
RXZlbnRUeXBlS2V5VXAgPSAxLAorICAgIGtXS0J1bmRsZUtleWJvYXJkRXZlbnRUeXBlUmF3S2V5
RG93biA9IDIsCisgICAga1dLQnVuZGxlS2V5Ym9hcmRFdmVudFR5cGVDaGFyID0gMworfTsKK3R5
cGVkZWYgdWludDMyX3QgV0tCdW5kbGVLZXlib2FyZEV2ZW50VHlwZTsKKworV0tfRVhQT1JUIFdL
VHlwZUlEIFdLQnVuZGxlS2V5Ym9hcmRFdmVudEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tC
dW5kbGVLZXlib2FyZEV2ZW50UmVmIFdLQnVuZGxlS2V5Ym9hcmRFdmVudENyZWF0ZShXS0J1bmRs
ZUtleWJvYXJkRXZlbnRUeXBlIHR5cGUsIFdLU3RyaW5nUmVmIHRleHQsIFdLU3RyaW5nUmVmIHVu
bW9kaWZpZWRUZXh0LCBXS1N0cmluZ1JlZiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1
YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaXNBdXRvUmVwZWF0LCBi
b29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBXS0J1bmRsZUV2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisKK1dLX0VYUE9SVCBXS0J1bmRsZUtleWJvYXJk
RXZlbnRSZWYgV0tCdW5kbGVLZXlib2FyZEV2ZW50UmV0YWluKFdLQnVuZGxlS2V5Ym9hcmRFdmVu
dFJlZiBrZXlib2FyZEV2ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlS2V5Ym9hcmRFdmVu
dFJlbGVhc2UoV0tCdW5kbGVLZXlib2FyZEV2ZW50UmVmIGtleWJvYXJkRXZlbnQpOworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVLZXlib2FyZEV2
ZW50X2ggKi8KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU1vdXNlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU1vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTW91c2VF
dmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiV0tCdW5kbGVNb3VzZUV2ZW50LmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU1v
dXNlRXZlbnQuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQ
SUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tCdW5kbGVN
b3VzZUV2ZW50R2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYoSW5qZWN0ZWRCdW5kbGVN
b3VzZUV2ZW50OjpBUElUeXBlKTsKK30KKworV0tCdW5kbGVNb3VzZUV2ZW50UmVmIFdLQnVuZGxl
TW91c2VFdmVudENyZWF0ZShXS0J1bmRsZU1vdXNlRXZlbnRUeXBlIHR5cGUsIFdLQnVuZGxlTW91
c2VFdmVudEJ1dHRvbiBidXR0b24sIGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9i
YWxZLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tD
b3VudCwgV0tCdW5kbGVFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXAp
Cit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTW91c2VFdmVudD4gbW91c2VFdmVudCA9IElu
amVjdGVkQnVuZGxlTW91c2VFdmVudDo6Y3JlYXRlKHRvV2ViTW91c2VFdmVudFR5cGUodHlwZSks
IHRvV2ViTW91c2VFdmVudEJ1dHRvbihidXR0b24pLCB4LCB5LCBnbG9iYWxYLCBnbG9iYWxZLCBk
ZWx0YVgsIGRlbHRhWSwgZGVsdGFaLCBjbGlja0NvdW50LCB0b1dlYkV2ZW50TW9kaWZpZXJzKG1v
ZGlmaWVycyksIHRpbWVzdGFtcCk7CisgICAgcmV0dXJuIHRvUmVmKG1vdXNlRXZlbnQucmVsZWFz
ZSgpLnJlbGVhc2VSZWYoKSk7Cit9CisKK1dLQnVuZGxlTW91c2VFdmVudFJlZiBXS0J1bmRsZU1v
dXNlRXZlbnRSZXRhaW4oV0tCdW5kbGVNb3VzZUV2ZW50UmVmIG1vdXNlRXZlbnRSZWYpCit7Cisg
ICAgdG9XSyhtb3VzZUV2ZW50UmVmKS0+cmVmKCk7CisgICAgcmV0dXJuIG1vdXNlRXZlbnRSZWY7
Cit9CisKK3ZvaWQgV0tCdW5kbGVNb3VzZUV2ZW50UmVsZWFzZShXS0J1bmRsZU1vdXNlRXZlbnRS
ZWYgbW91c2VFdmVudFJlZikKK3sKKyAgICB0b1dLKG1vdXNlRXZlbnRSZWYpLT5kZXJlZigpOwor
fQorCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVNb3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlTW91c2VFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTW91c2VFdmVudC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0J1bmRs
ZU1vdXNlRXZlbnRfaAorI2RlZmluZSBXS0J1bmRsZU1vdXNlRXZlbnRfaAorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFzZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVFdmVudC5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS0J1bmRsZU1vdXNlRXZlbnRUeXBl
VXAgPSAwLAorICAgIGtXS0J1bmRsZU1vdXNlRXZlbnRUeXBlRG93biA9IDEsCisgICAga1dLQnVu
ZGxlTW91c2VFdmVudFR5cGVNb3ZlID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tCdW5kbGVN
b3VzZUV2ZW50VHlwZTsKKworZW51bSB7CisgICAga1dLQnVuZGxlTW91c2VFdmVudEJ1dHRvbk5v
QnV0dG9uID0gLTEsCisgICAga1dLQnVuZGxlTW91c2VFdmVudEJ1dHRvbkxlZnQgPSAwLAorICAg
IGtXS0J1bmRsZU1vdXNlRXZlbnRCdXR0b25NaWRkbGUgPSAxLAorICAgIGtXS0J1bmRsZU1vdXNl
RXZlbnRCdXR0b25SaWdodCA9IDIsCit9OwordHlwZWRlZiB1aW50MzJfdCBXS0J1bmRsZU1vdXNl
RXZlbnRCdXR0b247CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZU1vdXNlRXZlbnRHZXRU
eXBlSUQoKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlTW91c2VFdmVudFJlZiBXS0J1bmRsZU1vdXNl
RXZlbnRDcmVhdGUoV0tCdW5kbGVNb3VzZUV2ZW50VHlwZSB0eXBlLCBXS0J1bmRsZU1vdXNlRXZl
bnRCdXR0b24gYnV0dG9uLCBpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwg
ZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQs
IFdLQnVuZGxlRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKwor
V0tfRVhQT1JUIFdLQnVuZGxlTW91c2VFdmVudFJlZiBXS0J1bmRsZU1vdXNlRXZlbnRSZXRhaW4o
V0tCdW5kbGVNb3VzZUV2ZW50UmVmIG1vdXNlRXZlbnQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVNb3VzZUV2ZW50UmVsZWFzZShXS0J1bmRsZU1vdXNlRXZlbnRSZWYgbW91c2VFdmVudCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZU1vdXNl
RXZlbnRfaCAqLwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDY1MzczKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsMjEgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRab29t
TW9kZShXS0J1bmRsZVBhZwogICAgIHRvV0socGFnZVJlZiktPnNldFpvb21Nb2RlKHRvWm9vbU1v
ZGUoem9vbU1vZGUpKTsKIH0KIAordm9pZCBXS0J1bmRsZVBhZ2VQb3N0TW91c2VFdmVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVNb3VzZUV2ZW50UmVmIG1vdXNlRXZlbnRSZWYp
Cit7CisgICAgdG9XSyhwYWdlUmVmKS0+cG9zdE1vdXNlRXZlbnQodG9XSyhtb3VzZUV2ZW50UmVm
KSk7Cit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlUG9zdFdoZWVsRXZlbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlV2hlZWxFdmVudFJlZiB3aGVlbEV2ZW50UmVmKQoreworICAgIHRv
V0socGFnZVJlZiktPnBvc3RXaGVlbEV2ZW50KHRvV0sod2hlZWxFdmVudFJlZikpOworfQorCit2
b2lkIFdLQnVuZGxlUGFnZVBvc3RLZXlib2FyZEV2ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZUtleWJvYXJkRXZlbnRSZWYga2V5Ym9hcmRFdmVudFJlZikKK3sKKyAgICB0b1dL
KHBhZ2VSZWYpLT5wb3N0S2V5Ym9hcmRFdmVudCh0b1dLKGtleWJvYXJkRXZlbnRSZWYpKTsKK30K
Kwogdm9pZCBXS0J1bmRsZVBhZ2VTdG9wTG9hZGluZyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikK
IHsKICAgICB0b1dLKHBhZ2VSZWYpLT5zdG9wTG9hZGluZygpOwpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlUHJpdmF0ZS5oCShyZXZpc2lvbiA2NTM3MykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDEwIEBAIFdLX0VYUE9SVCBmbG9hdCBXS0J1bmRsZVBhZ2VHZXRab29tRmFjdG8K
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIGZsb2F0IHpvb21GYWN0b3IpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0
Wm9vbU1vZGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVpvb21Nb2RlIHpvb21N
b2RlKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUG9zdE1vdXNlRXZlbnQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTW91c2VFdmVudFJlZiBtb3VzZUV2ZW50KTsKK1dLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlUGFnZVBvc3RXaGVlbEV2ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZVdoZWVsRXZlbnRSZWYgd2hlZWxFdmVudCk7CitXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VQb3N0S2V5Ym9hcmRFdmVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVL
ZXlib2FyZEV2ZW50UmVmIGtleWJvYXJkRXZlbnQpOworCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVBhZ2VTdG9wTG9hZGluZyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKICNpZmRlZiBfX2NwbHVz
cGx1cwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlV2hlZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVXaGVlbEV2ZW50
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJXS0J1bmRsZVdoZWVsRXZlbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlV2hlZWxF
dmVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZVdoZWVs
RXZlbnRHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b1JlZihJbmplY3RlZEJ1bmRsZVdoZWVs
RXZlbnQ6OkFQSVR5cGUpOworfQorCitXS0J1bmRsZVdoZWVsRXZlbnRSZWYgV0tCdW5kbGVXaGVl
bEV2ZW50Q3JlYXRlKGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBmbG9h
dCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0IHdoZWVsVGlj
a3NZLCBXS0J1bmRsZVdoZWVsRXZlbnRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV0tCdW5kbGVF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCit7CisgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlV2hlZWxFdmVudD4gd2hlZWxFdmVudCA9IEluamVjdGVkQnVuZGxlV2hl
ZWxFdmVudDo6Y3JlYXRlKHgsIHksIGdsb2JhbFgsIGdsb2JhbFksIGRlbHRhWCwgZGVsdGFZLCB3
aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1ksIHRvV2ViV2hlZWxFdmVudEdyYW51bGFyaXR5KGdyYW51
bGFyaXR5KSwgdG9XZWJFdmVudE1vZGlmaWVycyhtb2RpZmllcnMpLCB0aW1lc3RhbXApOworICAg
IHJldHVybiB0b1JlZih3aGVlbEV2ZW50LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitX
S0J1bmRsZVdoZWVsRXZlbnRSZWYgV0tCdW5kbGVXaGVlbEV2ZW50UmV0YWluKFdLQnVuZGxlV2hl
ZWxFdmVudFJlZiB3aGVlbEV2ZW50UmVmKQoreworICAgIHRvV0sod2hlZWxFdmVudFJlZiktPnJl
ZigpOworICAgIHJldHVybiB3aGVlbEV2ZW50UmVmOworfQorCit2b2lkIFdLQnVuZGxlV2hlZWxF
dmVudFJlbGVhc2UoV0tCdW5kbGVXaGVlbEV2ZW50UmVmIHdoZWVsRXZlbnRSZWYpCit7CisgICAg
dG9XSyh3aGVlbEV2ZW50UmVmKS0+ZGVyZWYoKTsKK30KKwpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlV2hlZWxFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVdoZWVs
RXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVdoZWVsRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5kbGVXaGVlbEV2ZW50X2gKKyNkZWZpbmUgV0tC
dW5kbGVXaGVlbEV2ZW50X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0J1bmRsZUJhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlRXZl
bnQuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVt
IHsKKyAgICBrV0tCdW5kbGVXaGVlbEV2ZW50R3JhbnVsYXJpdHlQYWdlID0gMCwKKyAgICBrV0tC
dW5kbGVXaGVlbEV2ZW50R3JhbnVsYXJpdHlQaXhlbCA9IDEKK307Cit0eXBlZGVmIHVpbnQzMl90
IFdLQnVuZGxlV2hlZWxFdmVudEdyYW51bGFyaXR5OworCitXS19FWFBPUlQgV0tUeXBlSUQgV0tC
dW5kbGVXaGVlbEV2ZW50R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0J1bmRsZVdoZWVsRXZl
bnRSZWYgV0tCdW5kbGVXaGVlbEV2ZW50Q3JlYXRlKGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgs
IGludCBnbG9iYWxZLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgd2hlZWxUaWNr
c1gsIGZsb2F0IHdoZWVsVGlja3NZLCBXS0J1bmRsZVdoZWVsRXZlbnRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgV0tCdW5kbGVFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3Rh
bXApOworCitXS19FWFBPUlQgV0tCdW5kbGVXaGVlbEV2ZW50UmVmIFdLQnVuZGxlV2hlZWxFdmVu
dFJldGFpbihXS0J1bmRsZVdoZWVsRXZlbnRSZWYgd2hlZWxFdmVudCk7CitXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVdoZWVsRXZlbnRSZWxlYXNlKFdLQnVuZGxlV2hlZWxFdmVudFJlZiB3aGVlbEV2
ZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQnVu
ZGxlV2hlZWxFdmVudF9oICovCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gNjUzNzMpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVdo
ZWVsRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlSUQuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZENvbnRyb2xsZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94
eS5oIgpAQCAtMzM1LDYgKzMzOCwyMSBAQCB2b2lkIFdlYlBhZ2U6OnNldFpvb21Nb2RlKFpvb21N
b2RlIG1vZGUpCiAKIC8vIEV2ZW50cyAKIAordm9pZCBXZWJQYWdlOjpwb3N0TW91c2VFdmVudChJ
bmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQpCit7CisgICAgcGFzc01vdXNlRXZl
bnRUb1dlYkNvcmUobW91c2VFdmVudC0+d2ViTW91c2VFdmVudCgpKTsKK30KKwordm9pZCBXZWJQ
YWdlOjpwb3N0V2hlZWxFdmVudChJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQqIHdoZWVsRXZlbnQp
Cit7CisgICAgcGFzc1doZWVsRXZlbnRUb1dlYkNvcmUod2hlZWxFdmVudC0+d2ViV2hlZWxFdmVu
dCgpKTsKK30KKwordm9pZCBXZWJQYWdlOjpwb3N0S2V5Ym9hcmRFdmVudChJbmplY3RlZEJ1bmRs
ZUtleWJvYXJkRXZlbnQqIGtleWJvYXJkRXZlbnQpCit7CisgICAgcGFzc0tleUV2ZW50VG9XZWJD
b3JlKGtleWJvYXJkRXZlbnQtPndlYktleWJvYXJkRXZlbnQoKSk7Cit9CisKIHN0YXRpYyBjb25z
dCBXZWJFdmVudCogZ19jdXJyZW50RXZlbnQgPSAwOwogCiAvLyBGSVhNRTogV2ViUGFnZTo6Y3Vy
cmVudEV2ZW50IGlzIHVzZWQgYnkgdGhlIHBsdWctaW4gY29kZSB0byBhdm9pZCBoYXZpbmcgdG8g
Y29udmVydCBmcm9tIERPTSBldmVudHMgYmFjayB0bwpAQCAtMzY0LDE1ICszODIsMjkgQEAgcHJp
dmF0ZToKIAogdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQpCiB7Ci0gICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudChtb3VzZUV2ZW50KTsK
LQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJv
eHlNZXNzYWdlOjpEaWRSZWNlaXZlRXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpKSk7CisgICAgcGFzc01vdXNlRXZlbnRU
b1dlYkNvcmUobW91c2VFdmVudCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6d2hlZWxFdmVudChjb25z
dCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRSZWNlaXZlRXZlbnQs
IG1fcGFnZUlELCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4od2hlZWxFdmVudC50
eXBlKCkpKSk7CisgICAgcGFzc1doZWVsRXZlbnRUb1dlYkNvcmUod2hlZWxFdmVudCk7Cit9CisK
K3ZvaWQgV2ViUGFnZTo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRF
dmVudCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2Vi
UGFnZVByb3h5TWVzc2FnZTo6RGlkUmVjZWl2ZUV2ZW50LCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4o
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWJvYXJkRXZlbnQudHlwZSgpKSkpOworICAgIHBhc3NL
ZXlFdmVudFRvV2ViQ29yZShrZXlib2FyZEV2ZW50KTsKK30KIAordm9pZCBXZWJQYWdlOjpwYXNz
TW91c2VFdmVudFRvV2ViQ29yZShjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQorewor
ICAgIEN1cnJlbnRFdmVudCBjdXJyZW50RXZlbnQobW91c2VFdmVudCk7CiAgICAgaWYgKCFtX21h
aW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtTW91c2VFdmVudCA9IHBsYXRmb3JtKG1vdXNlRXZlbnQp
OwotICAgIAogICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LmV2ZW50VHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudFByZXNzZWQ6CiAgICAgICAgICAgICBtX21h
aW5GcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZl
bnQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKQEAgLTM4OSwxMSArNDIxLDkgQEAgdm9pZCBXZWJQYWdl
Ojptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjp3
aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit2b2lkIFdlYlBhZ2U6
OnBhc3NXaGVlbEV2ZW50VG9XZWJDb3JlKGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
CiB7CiAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudCh3aGVlbEV2ZW50KTsKLQotICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdl
OjpEaWRSZWNlaXZlRXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50
MzJfdD4od2hlZWxFdmVudC50eXBlKCkpKSk7CiAgICAgaWYgKCFtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MDEsMTIgKzQzMSw5IEBAIHZv
aWQgV2ViUGFnZTo6d2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEUKICAgICBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtV2hl
ZWxFdmVudCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYga2V5Ym9hcmRFdmVudCkKK3ZvaWQgV2ViUGFnZTo6cGFzc0tleUV2ZW50VG9XZWJDb3Jl
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiB7CiAgICAgQ3VycmVudEV2
ZW50IGN1cnJlbnRFdmVudChrZXlib2FyZEV2ZW50KTsKLQotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRSZWNlaXZlRXZl
bnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2V5Ym9hcmRF
dmVudC50eXBlKCkpKSk7Ci0KICAgICBpZiAoIW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmll
dygpKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDY1MzczKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYTsKK2NsYXNzIEluamVj
dGVkQnVuZGxlS2V5Ym9hcmRFdmVudDsKK2NsYXNzIEluamVjdGVkQnVuZGxlTW91c2VFdmVudDsK
K2NsYXNzIEluamVjdGVkQnVuZGxlV2hlZWxFdmVudDsKIGNsYXNzIFdlYkV2ZW50OwogY2xhc3Mg
V2ViRnJhbWU7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwpAQCAtMTE5LDYgKzEyMiwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRab29tRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNldFpvb21N
b2RlKFdlYkNvcmU6Olpvb21Nb2RlKTsKIAorICAgIHZvaWQgcG9zdE1vdXNlRXZlbnQoSW5qZWN0
ZWRCdW5kbGVNb3VzZUV2ZW50Kik7CisgICAgdm9pZCBwb3N0V2hlZWxFdmVudChJbmplY3RlZEJ1
bmRsZVdoZWVsRXZlbnQqKTsKKyAgICB2b2lkIHBvc3RLZXlib2FyZEV2ZW50KEluamVjdGVkQnVu
ZGxlS2V5Ym9hcmRFdmVudCopOworCiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMTQ4LDE1ICsxNTUsMTkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCk7CiAg
ICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwotICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBX
ZWJNb3VzZUV2ZW50Jik7Ci0gICAgdm9pZCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
KTsKLSAgICB2b2lkIGtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlk
Q2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihXZWJGcmFtZSosIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pOwogCisgICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdl
Yk1vdXNlRXZlbnQmKTsKKyAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYp
OworICAgIHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworICAgIHZvaWQg
cGFzc01vdXNlRXZlbnRUb1dlYkNvcmUoY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZvaWQg
cGFzc1doZWVsRXZlbnRUb1dlYkNvcmUoY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQg
cGFzc0tleUV2ZW50VG9XZWJDb3JlKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKKwogICAgIFdl
YkNvcmU6OlBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKSW5kZXg6IFdlYktp
dDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCShyZXZpc2lvbiA2NTM3MykKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03NTksNiArNzU5LDMwIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
V2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgiDQog
CQkJCQk+DQogCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
V2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuY3Bw
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50
LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQu
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50
LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQu
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50
LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCiAJCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0iQVBJ
Ig0KIAkJCQkJPg0KQEAgLTg0NSw2ICs4NjksMzQgQEAKIAkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVTY3JpcHRXb3JsZC5oIg0K
IAkJCQkJCQk+DQogCQkJCQkJPC9GaWxlPg0KKwkJCQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZUV2ZW50Lmgi
DQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCisJCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlS2V5Ym9h
cmRFdmVudC5jcHAiDQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCisJ
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdL
QnVuZGxlS2V5Ym9hcmRFdmVudC5oIg0KKwkJCQkJCQk+DQorCQkJCQkJPC9GaWxlPg0KKwkJCQkJ
CTxGaWxlDQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRs
ZVxBUElcY1xXS0J1bmRsZU1vdXNlRXZlbnQuY3BwIg0KKwkJCQkJCQk+DQorCQkJCQkJPC9GaWxl
Pg0KKwkJCQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmpl
Y3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU1vdXNlRXZlbnQuaCINCisJCQkJCQkJPg0KKwkJCQkJ
CTwvRmlsZT4NCisJCQkJCQk8RmlsZQ0KKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVXaGVlbEV2ZW50LmNwcCINCisJCQkJCQkJ
Pg0KKwkJCQkJCTwvRmlsZT4NCisJCQkJCQk8RmlsZQ0KKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVXaGVlbEV2ZW50LmgiDQor
CQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQogCQkJCQk8L0ZpbHRlcj4NCiAJCQkJPC9GaWx0ZXI+
DQogCQkJCTxGaWx0ZXINCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCShyZXZpc2lv
biA2NTM3MykKKysrIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMzAsOSArMzAsMTIgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nl
c3NcQVBJXHdpblxXS1ZpZXcuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIi
CiAgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tC
dW5kbGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVCYXNlLmgi
ICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAgIHhjb3B5IC95IC9kICIu
LlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlRXZlbnQuaCIgIiQoV0VC
S0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVGcmFtZS5oIiAiJChXRUJLSVRPVVRQ
VVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJ
bmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQ
VVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJ
bmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZUluaXRpYWxpemUuaCIgIiQoV0VCS0lUT1VUUFVU
RElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5q
ZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVLZXlib2FyZEV2ZW50LmgiICIkKFdFQktJVE9VVFBV
VERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXElu
amVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlTW91c2VFdmVudC5oIiAiJChXRUJLSVRPVVRQVVRE
SVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmpl
Y3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNs
dWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5k
bGVcQVBJXGNcV0tCdW5kbGVOb2RlSGFuZGxlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVk
ZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxl
XEFQSVxjXFdLQnVuZGxlUGFnZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0
MiIKQEAgLTQwLDYgKzQzLDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNz
XEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlUHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRE
SVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmpl
Y3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVJhbmdlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5j
bHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVu
ZGxlXEFQSVxjXFdLQnVuZGxlU2NyaXB0V29ybGQuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNs
dWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5k
bGVcQVBJXGNcV0tCdW5kbGVXaGVlbEV2ZW50LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVk
ZVxXZWJLaXQyIgogICAgIC1kZWwgIiQoV0VCS0lUT1VUUFVURElSKVxidWlsZGZhaWxlZCIKIAog
Y2xlYW46Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68921</attachid>
            <date>2010-09-27 09:39:17 -0700</date>
            <delta_ts>2010-09-27 09:49:30 -0700</delta_ts>
            <desc>Actual patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17775</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODM5NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDktMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQgY2FsbGJhY2sgaW4gdGhlIGluamVjdGVkIGJ1bmRsZSBzaG91
bGQgaW5jbHVkZSBtb2RpZmllciBpbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NjYyOQorCisgICAgICAgIC0gTW92ZXMgZXZlbnQgcmVsYXRlZCBB
UEkgZW51bXMgdG8gV0tFdmVudC5oIHdoaWNoIGNhbiBiZSBzaGFyZWQgYmV0d2VlbgorICAgICAg
ICAgIGJvdGggdGhlIGJ1bmRsZSBhbmQgdGhlIG1haW4gQVBJLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9jL1dLRXZlbnQuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1JlZik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoK
KyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6Om1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52
Y3Byb2o6CisgICAgICAgICogd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZToKKwogMjAxMC0wOS0y
NyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBtb3VzZSB3
aGVlbCBldmVudHMgdGhlIHJpZ2h0IGNvb3JkaW5hdGVzIG9uIFdpbmRvd3MKSW5kZXg6IFdlYktp
dDIvU2hhcmVkL0FQSS9jL1dLRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0V2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0V2
ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLRXZlbnRfaAorI2RlZmluZSBXS0V2ZW50X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7
CisgICAga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSA9IDEgPDwgMCwKKyAgICBrV0tFdmVudE1v
ZGlmaWVyc0NvbnRyb2xLZXkgPSAxIDw8IDEsCisgICAga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkg
PSAxIDw8IDIsCisgICAga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5ID0gMSA8PCAzCit9OwordHlw
ZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOworCitlbnVtIHsKKyAgICBrV0tFdmVudE1v
dXNlQnV0dG9uTm9CdXR0b24gPSAtMSwKKyAgICBrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRv
biA9IDAsCisgICAga1dLRXZlbnRNb3VzZUJ1dHRvbk1pZGRsZUJ1dHRvbiA9IDEsCisgICAga1dL
RXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uID0gMiwKK307Cit0eXBlZGVmIGludDMyX3QgV0tF
dmVudE1vdXNlQnV0dG9uOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLyogV0tFdmVudF9oICovCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNh
c3QuaAkocmV2aXNpb24gNjgzNTcpCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2RlZmluZSBXS1NoYXJl
ZEFQSUNhc3RfaAogCiAjaW5jbHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSAiV0tFdmVudC5oIgor
I2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViTnVtYmVyLmgiCiAjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCkBAIC0xNTIsNiArMTU0LDQyIEBAIGlu
bGluZSBXS1R5cGVJRCB0b1JlZihBUElPYmplY3Q6OlR5cGUgdHkKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V0tUeXBlSUQ+KHR5cGUpOwogfQogCitpbmxpbmUgV0tFdmVudE1vZGlmaWVycyB0b1Jl
ZihXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycykKK3sKKyAgICBXS0V2ZW50TW9kaWZpZXJz
IHdrTW9kaWZpZXJzID0gMDsKKyAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZlbnQ6OlNoaWZ0S2V5
KQorICAgICAgICB3a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAg
IGlmIChtb2RpZmllcnMgJiBXZWJFdmVudDo6Q29udHJvbEtleSkKKyAgICAgICAgd2tNb2RpZmll
cnMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBX
ZWJFdmVudDo6QWx0S2V5KQorICAgICAgICB3a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVy
c0FsdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZlbnQ6Ok1ldGFLZXkpCisgICAgICAg
IHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKyAgICByZXR1cm4gd2tN
b2RpZmllcnM7Cit9CisKK2lubGluZSBXS0V2ZW50TW91c2VCdXR0b24gdG9SZWYoV2ViTW91c2VF
dmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKQoreworICAgIFdLRXZlbnRNb3VzZUJ1dHRvbiB3a01v
dXNlQnV0dG9uID0ga1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uOworCisgICAgc3dpdGNoICht
b3VzZUJ1dHRvbikgeworICAgIGNhc2UgV2ViTW91c2VFdmVudDo6Tm9CdXR0b246CisgICAgICAg
IHdrTW91c2VCdXR0b24gPSBrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b247CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjoKKyAgICAgICAgd2tNb3Vz
ZUJ1dHRvbiA9IGtXS0V2ZW50TW91c2VCdXR0b25MZWZ0QnV0dG9uOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjoKKyAgICAgICAgd2tNb3VzZUJ1
dHRvbiA9IGtXS0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b247CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b246CisgICAgICAgIHdrTW91c2VCdXR0
b24gPSBrV0tFdmVudE1vdXNlQnV0dG9uUmlnaHRCdXR0b247CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHJldHVybiB3a01vdXNlQnV0dG9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIFdLU2hhcmVkQVBJQ2FzdF9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNjgzNTcpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCi0jaW5jbHVkZSAiV2Vi
RXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC04NSw0MiArODQsNiBAQCBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25U
eXBlIHRvUmVmKFdlYkNvCiAgICAgcmV0dXJuIHdrVHlwZTsKIH0KIAotaW5saW5lIFdLRXZlbnRN
b2RpZmllcnMgdG9SZWYoV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMpCi17Ci0gICAgV0tF
dmVudE1vZGlmaWVycyB3a01vZGlmaWVycyA9IDA7Ci0gICAgaWYgKG1vZGlmaWVycyAmIFdlYkV2
ZW50OjpTaGlmdEtleSkKLSAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNT
aGlmdEtleTsKLSAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZlbnQ6OkNvbnRyb2xLZXkpCi0gICAg
ICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleTsKLSAgICBpZiAo
bW9kaWZpZXJzICYgV2ViRXZlbnQ6OkFsdEtleSkKLSAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dL
RXZlbnRNb2RpZmllcnNBbHRLZXk7Ci0gICAgaWYgKG1vZGlmaWVycyAmIFdlYkV2ZW50OjpNZXRh
S2V5KQotICAgICAgICB3a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7Ci0g
ICAgcmV0dXJuIHdrTW9kaWZpZXJzOwotfQotCi1pbmxpbmUgV0tFdmVudE1vdXNlQnV0dG9uIHRv
UmVmKFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbikKLXsKLSAgICBXS0V2ZW50TW91
c2VCdXR0b24gd2tNb3VzZUJ1dHRvbiA9IGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbjsKLQot
ICAgIHN3aXRjaCAobW91c2VCdXR0b24pIHsKLSAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0
dG9uOgotICAgICAgICB3a01vdXNlQnV0dG9uID0ga1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9u
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b246Ci0g
ICAgICAgIHdrTW91c2VCdXR0b24gPSBrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0b246Ci0gICAg
ICAgIHdrTW91c2VCdXR0b24gPSBrV0tFdmVudE1vdXNlQnV0dG9uTWlkZGxlQnV0dG9uOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOgotICAgICAg
ICB3a01vdXNlQnV0dG9uID0ga1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gd2tNb3VzZUJ1dHRvbjsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiA2ODM1NikKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcs
MTIgQEAKICNkZWZpbmUgV0tQYWdlX2gKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+CiAKICNpZm5kZWYgX19jcGx1c3BsdXMKICNpbmNs
dWRlIDxzdGRib29sLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHN0ZGludC5oPgotCiAjaWZkZWYg
X19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC00OCwyMiArNDcsNiBAQCBlbnVt
IHsKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLRnJhbWVOYXZpZ2F0aW9uVHlwZTsKIAotZW51bSB7
Ci0gICAga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSA9IDEgPDwgMCwKLSAgICBrV0tFdmVudE1v
ZGlmaWVyc0NvbnRyb2xLZXkgPSAxIDw8IDEsCi0gICAga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkg
PSAxIDw8IDIsCi0gICAga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5ID0gMSA8PCAzCi19OwotdHlw
ZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwotCi1lbnVtIHsKLSAgICBrV0tFdmVudE1v
dXNlQnV0dG9uTm9CdXR0b24gPSAtMSwKLSAgICBrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRv
biA9IDAsCi0gICAga1dLRXZlbnRNb3VzZUJ1dHRvbk1pZGRsZUJ1dHRvbiA9IDEsCi0gICAga1dL
RXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uID0gMiwKLX07Ci10eXBlZGVmIGludDMyX3QgV0tF
dmVudE1vdXNlQnV0dG9uOwotCiAvLyBGcmFtZUxvYWQgQ2xpZW50CiB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNjgzNjQpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw3IEBACiAJCUJDNDA3NjJBMTI0RkYwNDAwMDY4
RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNDA3NjI0MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3RO
Uy5tbSAqLzsgfTsKIAkJQkM0MDc2MkIxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VO
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0MDc2
MjUxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkM0MDc2MkMxMjRGRjA0MDAwNjhGMjBB
IC8qIFdLVVJMUmVzcG9uc2VOUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNDA3NjI2MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMu
bW0gKi87IH07CisJCUJDNDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQwNzgzQzEyNTBGQURE
MDA2OEYyMEEgLyogV0tFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJQkM0OTg2MTgxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM0OTg2MTYxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5oICovOyB9OwogCQlCQzQ5ODYxOTEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQuY3BwICovOyB9OwogCQlCQzQ5ODYyRjEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5k
bGVIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzQ5ODYyRDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0UmVzdWx0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtNjc3
LDYgKzY3OCw3IEBACiAJCUJDNDA3NjI0MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3RO
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVVJMUmVxdWVz
dE5TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQwNzYyNTEyNEZGMDQwMDA2
OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVVJMUmVzcG9uc2VOUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQw
NzYyNjEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tVUkxSZXNwb25zZU5TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzQwNzgzQzEyNTBGQUREMDA2OEYyMEEgLyogV0tFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0V2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0OTg2MkQx
MjREMThDMTAwRDgzNEUxIC8qIFdLQnVuZGxlSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1OTgsNiArMTYwMCw3IEBACiAJCQkJQkM0MDc1REUxMjRGRjAy
NzAwNjhGMjBBIC8qIFdLRGljdGlvbmFyeS5oICovLAogCQkJCUJDNDA3NURGMTI0RkYwMjcwMDY4
RjIwQSAvKiBXS0Vycm9yLmNwcCAqLywKIAkJCQlCQzQwNzVFMDEyNEZGMDI3MDA2OEYyMEEgLyog
V0tFcnJvci5oICovLAorCQkJCUJDNDA3ODNDMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50Lmgg
Ki8sCiAJCQkJQkM0MDc1RTExMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFycmF5LmNwcCAq
LywKIAkJCQlCQzQwNzVFMjEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCAqLywK
IAkJCQlCQzQwNzVFMzEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAg
Ki8sCkBAIC0xODUwLDYgKzE4NTMsNyBAQAogCQkJCUJDNDA3NjI5MTI0RkYwNDAwMDY4RjIwQSAv
KiBXS1VSTFJlcXVlc3ROUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MkIxMjRGRjA0MDAw
NjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNEN0Ex
MjRGRUZDMTAwRkZCRkI1IC8qIEJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM0
MDc4M0QxMjUwRkFERDAwNjhGMjBBIC8qIFdLRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCShyZXZpc2lvbiA2ODM1NikKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudDo6d2lsbFJ1bgogICAgICAgICBtX2NsaWVudC53aWxsUnVuSmF2YVNjcmlwdFBy
b21wdCh0b1JlZihwYWdlKSwgdG9SZWYobWVzc2FnZS5pbXBsKCkpLCB0b1JlZihkZWZhdWx0VmFs
dWUuaW1wbCgpKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2Vi
UGFnZSogcGFnZSwgY29uc3QgSGl0VGVzdFJlc3VsdCYgY29yZUhpdFRlc3RSZXN1bHQsIFJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1
bHQmIGNvcmVIaXRUZXN0UmVzdWx0LCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgUmVm
UHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQubW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaQogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ6OmNyZWF0ZShjb3JlSGl0VGVzdFJlc3VsdCk7CiAKICAgICBXS1R5cGVSZWYgdXNlckRh
dGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvUmVm
KHBhZ2UpLCB0b1JlZihoaXRUZXN0UmVzdWx0LmdldCgpKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0
b1JlZihwYWdlKSwgdG9SZWYoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvUmVmKG1vZGlmaWVycyks
ICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBh
ZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudC5oCShyZXZpc2lvbiA2ODM1NikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50X2gKIAog
I2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNTAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2UqLCBjb25z
dCBTdHJpbmcmLCBXZWJGcmFtZSopOwogICAgIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRDb25maXJt
KFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmLCBXZWJGcmFtZSopOwogICAgIHZvaWQgd2lsbFJ1bkph
dmFTY3JpcHRQcm9tcHQoV2ViUGFnZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdl
YkZyYW1lKik7Ci0gICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlKiwgY29u
c3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7
CisgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlKiwgY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYsIFdlYkV2ZW50OjpNb2RpZmllcnMsIFJlZlB0cjxBUElPYmplY3Q+
JiB1c2VyRGF0YSk7CiAKIHByaXZhdGU6CiAgICAgV0tCdW5kbGVQYWdlVUlDbGllbnQgbV9jbGll
bnQ7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiA2ODM1NykKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS0J1bmRsZVBhZ2VfaAogCiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnQuaD4KIAogI2lmbmRlZiBf
X2NwbHVzcGx1cwogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KQEAgLTExNyw3ICsxMTgsNyBAQCB0eXBl
ZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsU2V0U3RhdHVzCiB0eXBlZGVmIHZvaWQgKCpXS0J1
bmRsZVBhZ2VXaWxsUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbFJ1bkph
dmFTY3JpcHRDb25maXJtQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxSdW5KYXZhU2NyaXB0UHJvbXB0Q2Fs
bGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmlu
Z1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlTW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnRDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dFJlZiBoaXRUZXN0UmVzdWx0LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUhpdFRlc3RSZXN1bHRS
ZWYgaGl0VGVzdFJlc3VsdCwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLVHlwZVJlZiog
dXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tCdW5kbGVQYWdl
VUlDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKSW5kZXg6IFdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZp
c2lvbiA2ODM1NikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbAogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVz
ZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KG1fcGFnZSwg
aGl0VGVzdFJlc3VsdCwgdXNlckRhdGEpOworICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNs
aWVudCgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KG1fcGFnZSwgaGl0VGVzdFJlc3VsdCwgc3Rh
dGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJGbGFncyksIHVzZXJEYXRhKTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpNb3VzZURpZE1vdmVPdmVy
RWxlbWVudCwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obW9kaWZpZXJGbGFncywgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CkluZGV4OiBX
ZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJL
aXQyLnZjcHJvagkocmV2aXNpb24gNjgzNTcpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtNTgwLDYgKzU4MCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLRXZl
bnQuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tNdXRhYmxlQXJyYXkuY3BwIg0KIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkocmV2aXNpb24gNjgzNjAp
CisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDYgKzEzLDcgQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxTaGFyZWRcQVBJXGNcV0tE
YXRhLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95
IC9kICIuLlxTaGFyZWRcQVBJXGNcV0tEaWN0aW9uYXJ5LmgiICIkKFdFQktJVE9VVFBVVERJUilc
aW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxTaGFyZWRcQVBJXGNcV0tFcnJv
ci5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAv
ZCAiLi5cU2hhcmVkXEFQSVxjXFdLRXZlbnQuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRl
XFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFNoYXJlZFxBUElcY1xXS011dGFibGVBcnJh
eS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAv
ZCAiLi5cU2hhcmVkXEFQSVxjXFdLTXV0YWJsZURpY3Rpb25hcnkuaCIgIiQoV0VCS0lUT1VUUFVU
RElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFNoYXJlZFxBUElcY1xX
S051bWJlci5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
</data>
<flag name="review"
          id="58515"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>