<?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>29320</bug_id>
          
          <creation_ts>2009-09-16 16:37:04 -0700</creation_ts>
          <short_desc>JS callback objects should store the global object</short_desc>
          <delta_ts>2009-09-18 11:57:27 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147670</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-16 16:37:04 -0700</bug_when>
    <thetext>JS callback objects (position, database) should store the global object instead of the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147725</commentid>
    <comment_count>1</comment_count>
      <attachid>39678</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-16 20:00:13 -0700</bug_when>
    <thetext>Created attachment 39678
patch

This patch changes the callbacks to store a global object instead of the Frame and removes some unnecessary script()-&gt;isEnabled() checks. I will do a follow up which changes the global object to use the &apos;current&apos; one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147726</commentid>
    <comment_count>2</comment_count>
      <attachid>39678</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2009-09-16 20:11:39 -0700</bug_when>
    <thetext>Comment on attachment 39678
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147729</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-16 20:43:05 -0700</bug_when>
    <thetext>Landed in r48453 with slight tweaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147918</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-17 13:29:34 -0700</bug_when>
    <thetext>Why exec-&gt;dynamicGlobalObject() some times and exec-&gt;lexicalGlobalObject() other times?  Also, this patch doesn&apos;t have tests...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148279</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-18 11:57:27 -0700</bug_when>
    <thetext>Yeah, this definitely needs tests...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39678</attachid>
            <date>2009-09-16 20:00:13 -0700</date>
            <delta_ts>2009-09-16 20:11:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>42751</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQ1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjYgQEAKKzIwMDktMDktMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTMyMAorICAgICAgICBK
UyBjYWxsYmFjayBvYmplY3RzIHNob3VsZCBzdG9yZSB0aGUgZ2xvYmFsIG9iamVjdAorCisgICAg
ICAgIFRoaXMganVzdCBjaGFuZ2VzIHRoZSBjYWxsYmFjayBvYmplY3RzIHRvIHN0b3JlIHRoZSBn
bG9iYWwgb2JqZWN0IGluc3RlYWQKKyAgICAgICAgb2YgdGhlIGZyYW1lLiBBIGZvbGxvdyB1cCBw
YXRjaCB3aWxsIGNoYW5nZSB0aGVtIHRvIHN0b3JlIHRoZSAnY3VycmVudCcgCisgICAgICAgIGds
b2JhbCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgbGV4aWNhbCBvciBkeW5hbWljLgorCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZTogUmVtb3ZlIHVudXNlZCBWb2lkQ2FsbGJhY2suCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25F
cnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21T
UUxTdGF0ZW1lbnRDYWxsYmFjazo6SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrOjpoYW5kbGVFdmVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjazo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
OjpKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjazo6RGF0
YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s6OkRhdGE6Omdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2su
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjazo6SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Wb2lkQ2FsbGJhY2s6OkpTQ3Vz
dG9tVm9pZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tVm9pZENhbGxiYWNr
OjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJh
Y2suaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tVm9pZENhbGxiYWNrOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNlOjp0cmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU0RhdGFiYXNlOjpyZWFkVHJhbnNhY3Rpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQ
b3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246Ondh
dGNoUG9zaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6
CisKIDIwMDktMDktMTUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gNDg0MzApCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTM5MCw3ICszOTAsNiBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBUcmVlV2Fsa2VyIFwKICAg
ICBVSUV2ZW50IFwKICAgICBWYWxpZGl0eVN0YXRlIFwKLSAgICBWb2lkQ2FsbGJhY2sgXAogICAg
IFdlYktpdEFuaW1hdGlvbkV2ZW50IFwKICAgICBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUgXAogICAg
IFdlYktpdENTU0tleWZyYW1lc1J1bGUgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ4NDMwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyNjUsOCArNDI2NSw2
IEBACiAJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgwQzk4
NjBDRDI5NEVFMDBBMEI3QjMgLyogQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oICovOyB9OwogCQlC
QzgyNDMyOTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjQzMjUwRDBDRThBMjAwNDYwQzhGIC8q
IEpTU1FMRXJyb3IuaCAqLzsgfTsKIAkJQkM4MjQzMkEwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FM
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDODI0MzI2MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTFRyYW5zYWN0aW9uLmggKi87IH07
Ci0JCUJDODI0MzJCMEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyNDMyNzBEMENFOEEy
MDA0NjBDOEYgLyogSlNWb2lkQ2FsbGJhY2suY3BwICovOyB9OwotCQlCQzgyNDMyQzBEMENFOEEy
MDA0NjBDOEYgLyogSlNWb2lkQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDODI0MzI4MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1ZvaWRDYWxs
YmFjay5oICovOyB9OwogCQlCQzgyNDNFODBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVy
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4
MjQzRTYwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJQkM4
MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYg
LyogV2luZG93RmVhdHVyZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQzhCODUzRTBFN0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEI4
NTNDMEU3QzdGMTEwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZU1hYy5oICovOyB9OwpAQCAtOTMz
Nyw4ICs5MzM1LDYgQEAKIAkJQkM4MEM5ODYwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MjQzMjUw
RDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTUUxFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgy
NDMyNjBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDODI0MzI3MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1ZvaWRDYWxsYmFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZvaWRDYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDODI0MzI4MEQwQ0U4QTIwMDQ2MEM4
RiAvKiBKU1ZvaWRDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1ZvaWRDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgyNDNFNjBE
MENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2luZG93RmVhdHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzgyNDNFNzBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93RmVhdHVyZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93RmVhdHVyZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9s
bGJhclRoZW1lTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGJh
clRoZW1lTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjgwOCw4ICsxMjgw
NCw2IEBACiAJCQkJRTQ0NjE0MTMwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5oICov
LAogCQkJCTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwICov
LAogCQkJCTE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAqLywK
LQkJCQlCQzgyNDMyNzBEMENFOEEyMDA0NjBDOEYgLyogSlNWb2lkQ2FsbGJhY2suY3BwICovLAot
CQkJCUJDODI0MzI4MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1ZvaWRDYWxsYmFjay5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBIVE1MOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2OTc3
LDcgKzE2OTcxLDYgQEAKIAkJCQkxQTc1MEQ1RDBBOTBERUUxMDAwRkYyMTUgLyogSlNUcmVlV2Fs
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlDRjA5REEyQjQ3MDA5NjMzQTUgLyogSlNV
SUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNUM3NzA5MzEwMEQzQ0E4MDA1QkEyNjcgLyog
SlNWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzgyNDMyQzBEMENFOEEyMDA0
NjBDOEYgLyogSlNWb2lkQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjNFMEU0
Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTZGRTA3MjBFNkNDQkVFMDBCRjYwODggLyogSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDc0MEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktp
dENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTkxNzIsNyArMTkxNjUsNiBA
QAogCQkJCTUxNkJCNzk0MENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg2NjI5RDAwOURBMkI0ODAwOTYzM0E1IC8qIEpTVUlFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNUM3NzA5NDEwMEQzQ0E4MDA1QkEyNjcgLyogSlNW
YWxpZGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDODI0MzJCMEQwQ0U4QTIwMDQ2
MEM4RiAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYzRDBF
NENFRkFDMDA3RDZGRTUgLyogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMTZGRTA3MTBFNkNDQkVFMDBCRjYwODggLyogSlNXZWJLaXRDU1NLZXlmcmFtZVJ1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwNzMwRTZDQ0JFRTAwQkY2MDg4IC8qIEpT
V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9u
IDQ4NDMwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwyMyArMzUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OkpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkK
K0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKEpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICA6IG1f
Y2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQogewogfQogCiB2b2lkIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
azo6aGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIGdlb3Bvc2l0aW9uKQogewogICAgIEFTU0VSVCht
X2NhbGxiYWNrKTsKLSAgICBBU1NFUlQobV9mcmFtZSk7Ci0gICAgCi0gICAgaWYgKCFtX2ZyYW1l
LT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9n
bG9iYWxPYmplY3QpOwogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgbGlrZWx5IHRoZSB3cm9uZyBn
bG9iYWxPYmplY3QgKGZvciBwcm90b3R5cGUgY2hhaW5zIGF0IGxlYXN0KQotICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAg
RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAKICAg
ICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgCkBAIC03MCwx
MiArNjUsMTIgQEAgdm9pZCBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZQogICAg
IFJlZlB0cjxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CiAKICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgZGVw
cmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShleGVjKSwgZ2VvcG9zaXRpb24pKTsKKyAg
ICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBnZW9wb3NpdGlv
bikpOwogCi0gICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIu
c3RhcnQoKTsKICAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1f
Y2FsbGJhY2ssIGFyZ3MpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0
Q2hlY2tlci5zdG9wKCk7Ci0gICAgCisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+
dGltZW91dENoZWNrZXIuc3RvcCgpOworCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgIApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiA0
ODQzMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDI5ICsyNywyOCBAQAogI2RlZmluZSBKU0N1c3RvbVBvc2l0
aW9uQ2FsbGJhY2tfaAogCiAjaW5jbHVkZSAiUG9zaXRpb25DYWxsYmFjay5oIgotI2luY2x1ZGUg
PHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKLW5h
bWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEpTT2JqZWN0OwotfQotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZyYW1lOwogY2xhc3MgR2VvcG9zaXRpb247CiAKIGNsYXNzIEpTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkNhbGxiYWNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZShKU0M6
OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVj
dCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhjYWxsYmFj
aywgZ2xvYmFsT2JqZWN0KSk7CisgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisgICAgSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2Jh
bE9iamVjdCopOworCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9uKik7
CiAKICAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxiYWNrOwotICAg
IFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0RPTUdsb2Jh
bE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDQ4NDMwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDIzICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCi1KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpCitKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soSlNPYmpl
Y3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogbV9j
YWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2dsb2JhbE9i
amVjdChnbG9iYWxPYmplY3QpCiB7CiB9CiAKIHZvaWQgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2s6OmhhbmRsZUV2ZW50KFBvc2l0aW9uRXJyb3IqIHBvc2l0aW9uRXJyb3IpCiB7CiAgICAg
QVNTRVJUKG1fY2FsbGJhY2spOwotICAgIEFTU0VSVChtX2ZyYW1lKTsKLSAgICAKLSAgICBpZiAo
IW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFT
U0VSVChtX2dsb2JhbE9iamVjdCk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBsaWtlbHkgdGhl
IHdyb25nIGdsb2JhbE9iamVjdCAoZm9yIHByb3RvdHlwZSBjaGFpbnMgYXQgbGVhc3QpCi0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxP
YmplY3QoKTsKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwog
ICAgIAogICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAK
QEAgLTcwLDE1ICs2NSwxNSBAQCB2b2lkIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpo
YW5kCiAgICAgUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPiBwcm90ZWN0KHRo
aXMpOwogICAgIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBl
bmQodG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpLCBw
b3NpdGlvbkVycm9yKSk7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBtX2dsb2JhbE9iamVj
dC5nZXQoKSwgcG9zaXRpb25FcnJvcikpOwogICAgIAotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgY2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2NhbGxiYWNrLCBhcmdzKTsKLSAgICBnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIG1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhl
Yyk7Ci0gICAgCisKICAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsK
IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDQ4NDMwKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywyOSArMjcsMjcgQEAKICNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAog
CiAjaW5jbHVkZSAiUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSA8cnVudGltZS9K
U09iamVjdC5oPgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8cnVu
dGltZS9Qcm90ZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotbmFtZXNwYWNlIEpT
QyB7Ci0gICAgY2xhc3MgSlNPYmplY3Q7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
LWNsYXNzIEZyYW1lOwogY2xhc3MgUG9zaXRpb25FcnJvcjsKIAogY2xhc3MgSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRpb25FcnJvckNhbGxiYWNrIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4g
Y3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUp
KTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICB9CiAgICAg
CiBwcml2YXRlOgotICAgIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrKEpTQzo6SlNPYmpl
Y3QqIGNhbGxiYWNrLCBGcmFtZSopOworICAgIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoUG9zaXRpb25FcnJvciopOwogCiAgICAg
SlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKLSAgICBSZWZQdHI8
RnJhbWU+IG1fZnJhbWU7CisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNET01HbG9iYWxPYmplY3Q+
IG1fZ2xvYmFsT2JqZWN0OwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxi
YWNrLmNwcAkocmV2aXNpb24gNDg0MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0N1c3RvbVNRTFN0YXRlbWVudENh
bGxiYWNrLmgiCisKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtNDAsMjMgKzQxLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAgICAgCi1KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrOjpKU0N1c3RvbVNR
TFN0YXRlbWVudENhbGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQorSlND
dXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjazo6SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjayhK
U09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
OiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKIH0KICAgICAKIHZvaWQgSlNDdXN0b21TUUxTdGF0
ZW1lbnRDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBT
UUxSZXN1bHRTZXQqIHJlc3VsdFNldCwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKQogewogICAgIEFT
U0VSVChtX2NhbGxiYWNrKTsKLSAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKG1fZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgCi0gICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxpa2VseSB0
aGUgd3JvbmcgZ2xvYmFsT2JqZWN0IChmb3IgcHJvdG90eXBlIGNoYWlucyBhdCBsZWFzdCkKLSAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2Jh
bE9iamVjdCgpOwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgICAgIAogICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
IApAQCAtNzUsMTIgKzcxLDEyIEBAIHZvaWQgSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjazo6
aGFuZGwKICAgICBSZWZQdHI8SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjaz4gcHJvdGVjdCh0
aGlzKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQo
dG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpLCB0cmFu
c2FjdGlvbikpOwotICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgZGVwcmVjYXRlZEdsb2JhbE9i
amVjdEZvclByb3RvdHlwZShleGVjKSwgcmVzdWx0U2V0KSk7CisgICAgYXJncy5hcHBlbmQodG9K
UyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgdHJhbnNhY3Rpb24pKTsKKyAgICBhcmdzLmFw
cGVuZCh0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCByZXN1bHRTZXQpKTsKICAgICAg
ICAgCi0gICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7CisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3Rh
cnQoKTsKICAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2Fs
bGJhY2ssIGFyZ3MpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENo
ZWNrZXIuc3RvcCgpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaAkocmV2aXNpb24gNDg0MzAp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMzIgKzMxLDI5IEBACiAKICNpZiBFTkFCTEUoREFUQUJBU0Up
CiAKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVu
dENhbGxiYWNrLmgiCi0KLSNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9Qcm90ZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotbmFtZXNwYWNl
IEpTQyB7Ci0gICAgY2xhc3MgSlNPYmplY3Q7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRnJhbWU7CiBjbGFzcyBTUUxSZXN1bHRTZXQ7CiAKIGNsYXNzIEpTQ3VzdG9tU1FMU3Rh
dGVtZW50Q2FsbGJhY2sgOiBwdWJsaWMgU1FMU3RhdGVtZW50Q2FsbGJhY2sgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0
ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0
ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21TUUxTdGF0ZW1l
bnRDYWxsYmFjayhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwgU1FMUmVzdWx0U2V0KiwgYm9vbCYg
cmFpc2VkRXhjZXB0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBKU0N1c3RvbVNRTFN0YXRlbWVudENh
bGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworICAgIEpTQ3VzdG9tU1FM
U3RhdGVtZW50Q2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CiAKICAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxiYWNr
OwotICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0RP
TUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2suY3BwCShyZXZpc2lvbiA0ODQzMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMjMgKzQx
LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAg
ICAgCi1KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9tU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKK0pTQ3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX2ZyYW1lKGZyYW1lKQorICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewogfQogICAgIAogYm9vbCBKU0N1c3Rv
bVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgU1FMRXJyb3IqIGVycm9yKQogewogICAgIEFTU0VSVChtX2NhbGxiYWNrKTsK
LSAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgCi0gICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgbGlrZWx5IHRoZSB3cm9uZyBnbG9i
YWxPYmplY3QgKGZvciBwcm90b3R5cGUgY2hhaW5zIGF0IGxlYXN0KQotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7Ci0g
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgRXhl
Y1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgCiAg
ICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICAKQEAg
LTc4LDE3ICs3MywxNyBAQCBib29sIEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6
CiAgICAgUmVmUHRyPEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4gcHJvdGVjdCh0
aGlzKTsKICAgICAgICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdz
LmFwcGVuZCh0b0pTKGV4ZWMsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoZXhl
YyksIHRyYW5zYWN0aW9uKSk7Ci0gICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBkZXByZWNhdGVk
R2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpLCBlcnJvcikpOworICAgIGFyZ3MuYXBwZW5k
KHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0KCksIHRyYW5zYWN0aW9uKSk7CisgICAgYXJn
cy5hcHBlbmQodG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgZXJyb3IpKTsKICAgICAg
ICAgCiAgICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkt
PnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBpZiAoaGFuZGxlRXZlbnRDYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJlc3VsdCA9IGNhbGwoZXhlYywgaGFuZGxlRXZlbnRG
dW5jdGlvbiwgaGFuZGxlRXZlbnRDYWxsVHlwZSwgaGFuZGxlRXZlbnRDYWxsRGF0YSwgbV9jYWxs
YmFjaywgYXJncyk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBjYWxsKGV4ZWMsIG1fY2Fs
bGJhY2ssIGNhbGxiYWNrQ2FsbFR5cGUsIGNhbGxiYWNrQ2FsbERhdGEsIG1fY2FsbGJhY2ssIGFy
Z3MpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7Ci0gICAgICAgIAorICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRD
aGVja2VyLnN0b3AoKTsKKwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAg
ICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAgICAgICAgCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmgJKHJldmlzaW9uIDQ4NDMwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzIgKzMx
LDI5IEBACiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCIKLQotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU09i
amVjdDsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotY2xhc3MgRnJhbWU7CiBjbGFz
cyBTUUxFcnJvcjsKICAgICAKIGNsYXNzIEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ayA6IHB1YmxpYyBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGNyZWF0ZShK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgfQog
ICAgICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qLCBT
UUxFcnJvciopOwogCiBwcml2YXRlOgotICAgIEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKKyAgICBKU0N1c3RvbVNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CiAKICAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxi
YWNrOwotICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxK
U0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9OwogICAgIAogfQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxi
YWNrLmNwcAkocmV2aXNpb24gNDg0MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDEw
IEBACiAjaWYgRU5BQkxFKERBVEFCQVNFKQogCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgpAQCAtNDcsMjUgKzQ4LDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBzdGF0aWMgV1RG
OjpSZWZDb3VudGVkTGVha0NvdW50ZXIgY291bnRlcigiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNh
bGxiYWNrIik7CiAjZW5kaWYKIAotLy8gV2UgaGF2ZSB0byBjbGVhbiB1cCB0aGUgZGF0YSBvbiB0
aGUgbWFpbiB0aHJlYWQgZm9yIHR3byByZWFzb25zOgotLy8KLS8vICAgICAxKSBDYW4ndCBkZXJl
ZiBhIEZyYW1lIG9uIGEgbm9uLW1haW4gdGhyZWFkLgotLy8gICAgIDIpIFVucHJvdGVjdGluZyB0
aGUgSlNPYmplY3Qgb24gYSBub24tbWFpbiB0aHJlYWQgd291bGQgcmVnaXN0ZXIgdGhhdCB0aHJl
YWQKLS8vICAgICAgICBmb3IgSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24sIHdoaWNoIGNv
dWxkIHVubmVjZXNzYXJpbHkgc2xvdyB0aGluZ3MgZG93bi4KKy8vIFdlIGhhdmUgdG8gY2xlYW4g
dXAgdGhlIGRhdGEgb24gdGhlIG1haW4gdGhyZWFkIGJlY2F1c2UgdW5wcm90ZWN0aW5nIHRoZSAK
Ky8vIEpTT2JqZWN0IG9uIGEgbm9uLW1haW4gdGhyZWFkIHdvdWxkIHJlZ2lzdGVyIHRoYXQgdGhy
ZWFkIGZvciBKYXZhU2NyaXB0CisvLyBnYXJiYWdlIGNvbGxlY3Rpb24sIHdoaWNoIGNvdWxkIHVu
bmVjZXNzYXJpbHkgc2xvdyB0aGluZ3MgZG93bi4KIAogY2xhc3MgSlNDdXN0b21TUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrOjpEYXRhIHsKIHB1YmxpYzoKLSAgICBEYXRhKEpTT2JqZWN0KiBjYWxsYmFj
aywgRnJhbWUqIGZyYW1lKSA6IG1fY2FsbGJhY2soY2FsbGJhY2spLCBtX2ZyYW1lKGZyYW1lKSB7
IH0KKyAgICBEYXRhKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKKyAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgfQorCiAgICAgSlNPYmplY3QqIGNh
bGxiYWNrKCkgeyByZXR1cm4gbV9jYWxsYmFjazsgfQotICAgIEZyYW1lKiBmcmFtZSgpIHsgcmV0
dXJuIG1fZnJhbWUuZ2V0KCk7IH0KKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBQcm90
ZWN0ZWRQdHI8SlNPYmplY3Q+IG1fY2FsbGJhY2s7Ci0gICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1l
OworICAgIFByb3RlY3RlZFB0cjxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiB9
OwogCi1KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s6OkpTQ3VzdG9tU1FMVHJhbnNhY3Rp
b25DYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKLSAgICA6IG1fZGF0
YShuZXcgRGF0YShjYWxsYmFjaywgZnJhbWUpKQorSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxi
YWNrOjpKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogbV9kYXRhKG5ldyBEYXRhKGNh
bGxiYWNrLCBnbG9iYWxPYmplY3QpKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjb3VudGVyLmlu
Y3JlbWVudCgpOwpAQCAtOTAsMTMgKzk0LDkgQEAgdm9pZCBKU0N1c3RvbVNRTFRyYW5zYWN0aW9u
Q2FsbGJhY2s6OmhhbgogewogICAgIEFTU0VSVChtX2RhdGEpOwogICAgIEFTU0VSVChtX2RhdGEt
PmNhbGxiYWNrKCkpOwotICAgIEFTU0VSVChtX2RhdGEtPmZyYW1lKCkpOwotCi0gICAgaWYgKCFt
X2RhdGEtPmZyYW1lKCktPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIEFTU0VSVChtX2RhdGEtPmdsb2JhbE9iamVjdCgpKTsKIAotICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGxpa2VseSB0aGUgd3JvbmcgZ2xvYmFsT2JqZWN0IChmb3IgcHJvdG90eXBlIGNoYWlucyBh
dCBsZWFzdCkKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9kYXRhLT5mcmFt
ZSgpLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIAogICAgIEpTQzo6SlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEpT
Q3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjazo6aGFuCiAgICAgUmVmUHRyPEpTQ3VzdG9tU1FM
VHJhbnNhY3Rpb25DYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKICAgICAgICAgCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIGRlcHJlY2F0
ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoZXhlYyksIHRyYW5zYWN0aW9uKSk7CisgICAgYXJn
cy5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHRyYW5zYWN0aW9uKSk7CiAKICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBp
ZiAoaGFuZGxlRXZlbnRDYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgJKHJl
dmlzaW9uIDQ4NDMwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2lmIEVOQUJM
RShEQVRBQkFTRSkKIAogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCIKLQogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDIsMTcgKzQx
LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFt
ZTsKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OwogCiBjbGFzcyBKU0N1c3RvbVNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2sgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25DYWxsYmFjayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjcmVh
dGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsg
fQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4g
Y3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2soY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgIH0KIAogICAg
IHZpcnR1YWwgfkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjaygpOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiosIGJvb2wmIHJhaXNlZEV4Y2Vw
dGlvbik7CiAKIHByaXZhdGU6Ci0gICAgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrKEpT
Qzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworICAgIEpTQ3VzdG9tU1FMVHJhbnNhY3Rp
b25DYWxsYmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqKTsK
IAogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURhdGEodm9pZCopOwogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmNwcAkocmV2aXNpb24gNDg0MzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MjMgKzQwLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAgICAgCi1KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21T
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJh
bWUpCitKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21TUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fZnJh
bWUoZnJhbWUpCisgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7CiB9CiAgICAg
CiB2b2lkIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudChT
UUxFcnJvciogZXJyb3IpCiB7CiAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwotICAgIEFTU0VSVCht
X2ZyYW1lKTsKKyAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogCi0gICAgaWYgKCFtX2ZyYW1l
LT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGxpa2VseSB0aGUgd3JvbmcgZ2xvYmFsT2JqZWN0IChmb3IgcHJvdG90eXBlIGNo
YWlucyBhdCBsZWFzdCkKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFt
ZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpOwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7CiAKQEAgLTc1LDExICs3MCwxMSBAQCB2b2lkIEpTQ3VzdG9tU1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrCiAgICAgUmVmUHRyPEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
LSAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90
b3R5cGUoZXhlYyksIGVycm9yKSk7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBtX2dsb2Jh
bE9iamVjdC5nZXQoKSwgZXJyb3IpKTsKIAotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgY2FsbChleGVjLCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBtX2NhbGxiYWNrLCBhcmdzKTsKLSAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDQ4NDMwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwzMSArMzIsMjggQEAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKLQotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3Qu
aD4KKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJv
dGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKLW5hbWVzcGFjZSBKU0MgewotICAg
IGNsYXNzIEpTT2JqZWN0OwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1l
OwogY2xhc3MgU1FMRXJyb3I7CiAKIGNsYXNzIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrIDogcHVibGljIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soY2FsbGJhY2ss
IGZyYW1lKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTUUxFcnJv
ciopOwogCiBwcml2YXRlOgotICAgIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworICAgIEpTQ3VzdG9tU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KTsKIAogICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmpl
Y3Q+IG1fY2FsbGJhY2s7Ci0gICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOworICAgIEpTQzo6UHJv
dGVjdGVkUHRyPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCShyZXZp
c2lvbiA0ODQzMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyMiArMzgsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKICAgICAKLUpTQ3VzdG9tVm9pZENhbGxiYWNr
OjpKU0N1c3RvbVZvaWRDYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkK
K0pTQ3VzdG9tVm9pZENhbGxiYWNrOjpKU0N1c3RvbVZvaWRDYWxsYmFjayhKU09iamVjdCogY2Fs
bGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2NhbGxiYWNr
KGNhbGxiYWNrKQotICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKIHsKIH0KICAgICAKIHZvaWQgSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRs
ZUV2ZW50KCkKIHsKICAgICBBU1NFUlQobV9jYWxsYmFjayk7Ci0gICAgQVNTRVJUKG1fZnJhbWUp
OwotICAgICAgIAotICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0
KTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgICAgIAogICAgIEpTQzo6SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
ICAgICAgICAgCkBAIC03MywyNyArNjksMTQgQEAgdm9pZCBKU0N1c3RvbVZvaWRDYWxsYmFjazo6
aGFuZGxlRXZlbnQoKQogICAgICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIAotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFy
dCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CiAgICAgY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2Nh
bGxiYWNrLCBhcmdzKTsKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENo
ZWNrZXIuc3RvcCgpOwotICAgICAgICAKKyAgICBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAgICAgICAgIAogICAgIERv
Y3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogfQotIAotUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+IHRvVm9pZENhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKLXsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7Ci0gICAgaWYg
KCFvYmplY3QpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIEZyYW1lKiBmcmFtZSA9IGFz
SlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgp
OwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBK
U0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOwotfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9p
ZENhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZv
aWRDYWxsYmFjay5oCShyZXZpc2lvbiA0ODQzMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21Wb2lkQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksMzMgKzI5LDI4IEBACiAj
aWZuZGVmIEpTQ3VzdG9tVm9pZENhbGxiYWNrX2gKICNkZWZpbmUgSlNDdXN0b21Wb2lkQ2FsbGJh
Y2tfaAogCisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJWb2lkQ2Fs
bGJhY2suaCIKLQotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxydW50
aW1lL1Byb3RlY3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEpTQ3VzdG9tVm9pZENhbGxiYWNrIDogcHVibGljIFZvaWRDYWxsYmFj
ayB7CitwdWJsaWM6IAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tVm9pZENhbGxiYWNr
PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tVm9p
ZENhbGxiYWNrKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICB9CiAgICAgCi0gICAgY2xh
c3MgRnJhbWU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KCk7CiAgICAgCi0gICAgY2xh
c3MgSlNDdXN0b21Wb2lkQ2FsbGJhY2sgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKLSAgICBwdWJs
aWM6IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVZvaWRDYWxsYmFjaz4gY3Jl
YXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21Wb2lkQ2FsbGJhY2soY2FsbGJh
Y2ssIGZyYW1lKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudCgpOwotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBKU0N1c3RvbVZv
aWRDYWxsYmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKLQotICAgICAgICBK
U0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxiYWNrOwotICAgICAgICBSZWZQ
dHI8RnJhbWU+IG1fZnJhbWU7Ci0gICAgfTsKK3ByaXZhdGU6CisgICAgSlNDdXN0b21Wb2lkQ2Fs
bGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKLSAg
ICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gdG9Wb2lkQ2FsbGJhY2soSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+IG1f
Y2FsbGJhY2s7CisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xv
YmFsT2JqZWN0OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4NDMwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsMTcgKzUyLDEzIEBAIEpTVmFsdWUgSlNEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihFeGVjU3QK
ICAgICBTdHJpbmcgb2xkVmVyc2lvbiA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CiAgICAg
U3RyaW5nIG5ld1ZlcnNpb24gPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOwogCi0gICAgRnJh
bWUqIGZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5p
bXBsKCktPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgCiAgICAgSlNPYmplY3QqIG9iamVjdDsKICAgICBpZiAoIShvYmplY3QgPSBh
cmdzLmF0KDIpLmdldE9iamVjdCgpKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
CiAgICAgCi0gICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKEpTQ3Vz
dG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpKTsKKyAgICBS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2soSlNDdXN0b21TUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkp
KTsKICAgICAKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrOwogICAgIGlmICghYXJncy5hdCgzKS5pc051bGwoKSkgewpAQCAtNzEsMjQgKzY3LDI1
IEBAIEpTVmFsdWUgSlNEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihFeGVjU3QKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBlcnJv
ckNhbGxiYWNrID0gSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIGZyYW1lKTsKKyAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpOwogICAgIH0KICAgICAKICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2s7CiAgICAgaWYgKCFhcmdzLmF0KDQpLmlzTnVsbCgpKSB7Ci0gICAgICAgIHN1Y2Nlc3ND
YWxsYmFjayA9IHRvVm9pZENhbGxiYWNrKGV4ZWMsIGFyZ3MuYXQoNCkpOwotICAgICAgICBpZiAo
IXN1Y2Nlc3NDYWxsYmFjaykgeworICAgICAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDQpLmdl
dE9iamVjdCgpKSkgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlT
TUFUQ0hfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9
CisKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0
ZShvYmplY3QsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiAgICAgfQotICAgIAorCiAg
ICAgbV9pbXBsLT5jaGFuZ2VWZXJzaW9uKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGNhbGxiYWNr
LnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjay5yZWxl
YXNlKCkpOwogICAgIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgSlNW
YWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MsIERhdGFiYXNlKiBkYXRhYmFzZSwgYm9vbCByZWFkT25seSkKK3N0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZVRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgRGF0
YWJhc2UqIGRhdGFiYXNlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHJl
YWRPbmx5KQogewogICAgIEpTT2JqZWN0KiBvYmplY3Q7CiAgICAgCkBAIC05NiwxMiArOTMsOCBA
QCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhCiAgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIH0gICAgICAgIAotIAotICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNET01X
aW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIFJl
ZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU0N1c3RvbVNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKSk7CisgICAgIAorICAgIFJlZlB0cjxT
UUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjayhKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2Fs
bGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCkpOwogICAgIFJlZlB0cjxTUUxUcmFu
c2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7CiAgICAgCiAgICAgaWYgKGFyZ3Mu
c2l6ZSgpID4gMSAmJiAhYXJncy5hdCgxKS5pc051bGwoKSkgewpAQCAtMTEwLDE2ICsxMDMsMTcg
QEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlVHJhbnNhY3Rpb24oRXhlY1N0YQogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIAotICAgICAgICBlcnJvckNhbGxiYWNr
ID0gSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZy
YW1lKTsKKyAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIH0KIAogICAgIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKICAgICBpZiAoYXJncy5zaXplKCkg
PiAyICYmICFhcmdzLmF0KDIpLmlzTnVsbCgpKSB7Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayA9
IHRvVm9pZENhbGxiYWNrKGV4ZWMsIGFyZ3MuYXQoMikpOwotICAgICAgICBpZiAoIXN1Y2Nlc3ND
YWxsYmFjaykgeworICAgICAgICBpZiAoIShvYmplY3QgPSBhcmdzLmF0KDIpLmdldE9iamVjdCgp
KSkgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJS
KTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CisKKyAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3Qs
IGdsb2JhbE9iamVjdCk7CiAgICAgfQogICAgIAogICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihj
YWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBzdWNjZXNzQ2FsbGJh
Y2sucmVsZWFzZSgpLCByZWFkT25seSk7CkBAIC0xMjgsMTMgKzEyMiwxNCBAQCBzdGF0aWMgSlNW
YWx1ZSBjcmVhdGVUcmFuc2FjdGlvbihFeGVjU3RhCiAKIEpTVmFsdWUgSlNEYXRhYmFzZTo6dHJh
bnNhY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIHJl
dHVybiBjcmVhdGVUcmFuc2FjdGlvbihleGVjLCBhcmdzLCBtX2ltcGwuZ2V0KCksIGZhbHNlKTsK
KyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywgbV9pbXBsLmdldCgpLCBl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCksIGZhbHNlKTsKIH0KICAgICAKIEpTVmFsdWUgSlNE
YXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKIHsKLSAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywgbV9pbXBs
LmdldCgpLCB0cnVlKTsKKyAgICByZXR1cm4gY3JlYXRlVHJhbnNhY3Rpb24oZXhlYywgYXJncywg
bV9pbXBsLmdldCgpLCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCksIHRydWUpOwogfQotICAg
IAorCiB9CisKICNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0UpCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4NDMwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9u
Q2FsbGJhY2soRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIFBhc3NSZWZQ
dHI8UG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlUG9zaXRpb25DYWxsYmFjayhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgLy8gVGhlIHNwZWMgc3BlY2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0aGlzIG9iamVjdC4K
ICAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKSkgewpAQCAt
NTAsMTEgKzUwLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IGNyZWEK
ICAgICB9CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIEZy
YW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
aW1wbCgpLT5mcmFtZSgpOwotICAgIHJldHVybiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNy
ZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICByZXR1cm4gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
OjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxQ
b3NpdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9uRXJyb3JDYWxsYmFjayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCitzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9uRXJyb3JDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgLy8g
QXJndW1lbnQgaXMgb3B0aW9uYWwgKGhlbmNlIHVuZGVmaW5lZCBpcyBhbGxvd2VkKSwgYW5kIG51
bGwgaXMgYWxsb3dlZC4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKQEAgLTY3
LDggKzY2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPgogICAg
IH0KIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgRnJhbWUq
IGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCktPmZyYW1lKCk7Ci0gICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpj
cmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogfQogCiBzdGF0aWMgUGFzc1Jl
ZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0xMjUsMTIgKzEyMywxMiBAQCBKU1ZhbHVlIEpTR2VvbG9j
YXRpb246OmdldEN1cnJlbnRQb3NpdGlvCiB7CiAgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNh
bGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRp
b25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFj
ayA9IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2soZXhlYywgYXJncy5hdCgwKSk7CisgICAgUmVmUHRy
PFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkNhbGxi
YWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncy5hdCgwKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICBBU1NFUlQocG9zaXRpb25DYWxsYmFjayk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkVycm9yQ2Fs
bGJhY2soZXhlYywgYXJncy5hdCgxKSk7CisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25FcnJvckNhbGxiYWNrKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncy5hdCgxKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAt
MTQ3LDEyICsxNDUsMTIgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4
ZQogewogICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0
aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0gICAgUmVmUHRy
PFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkNhbGxi
YWNrKGV4ZWMsIGFyZ3MuYXQoMCkpOworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3Np
dGlvbkNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25DYWxsYmFjayhleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGFyZ3MuYXQoMCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2Fs
bGJhY2spOwogCi0gICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJv
ckNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25FcnJvckNhbGxiYWNrKGV4ZWMsIGFyZ3MuYXQoMSkp
OworICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFj
ayA9IGNyZWF0ZVBvc2l0aW9uRXJyb3JDYWxsYmFjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGFyZ3MuYXQoMSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNDg0MzApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw4ICs5NSw3IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChF
eGUKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCi0gICAgICAgICAgICBjYWxsYmFjayA9
IEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAg
ICAgICAgY2FsbGJhY2sgPSBKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrOjpjcmVhdGUob2Jq
ZWN0LCBnbG9iYWxPYmplY3QoKSk7CiAgICAgfQogICAgIAogICAgIFJlZlB0cjxTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwpAQCAtMTA3LDggKzEwNiw3IEBAIEpTVmFs
dWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGUKICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCkt
PmZyYW1lKCkpCi0gICAgICAgICAgICBlcnJvckNhbGxiYWNrID0gSlNDdXN0b21TUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgICAgIGVycm9yQ2Fs
bGJhY2sgPSBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3Qs
IGdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Cg==
</data>
<flag name="review"
          id="20800"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>