<?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>36252</bug_id>
          
          <creation_ts>2010-03-17 17:07:52 -0700</creation_ts>
          <short_desc>Create an ARRAY_LENGTH macro for WTF</short_desc>
          <delta_ts>2010-10-04 11:42: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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>32828</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201054</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-17 17:07:52 -0700</bug_when>
    <thetext>Create an ARRAY_LENGTH macro for WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201055</commentid>
    <comment_count>1</comment_count>
      <attachid>50976</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-17 17:08:12 -0700</bug_when>
    <thetext>Created attachment 50976
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289030</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-04 11:42:02 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 32828 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50976</attachid>
            <date>2010-03-17 17:08:12 -0700</date>
            <delta_ts>2010-06-11 10:17:16 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>ArrayLengthPatch.txt</filename>
            <type>text/plain</type>
            <size>48448</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MDk0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDMtMTYgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CisKKyAgICAgICAgQWRkZWQgQVJSQVlfTEVOR1RIIGZ1bmN0aW9uIGFuZCB1c2VkIGl0IGluc3Rl
YWQgb2YgaGFuZC13cml0dGVuIGNvZGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmVkIFB0ckFuZEZsYWdzLmguIFRo
ZSBmaWxlIHdhcyByZW1vdmVkIGxvbmcgYWdvLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUp
OiBVc2UgQVJSQVlfTEVOR1RILgorCisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuaDoKKyAg
ICAgICAgKEpTQzo6Q29sbGVjdG9yQml0bWFwOjpjb3VudCk6IFJlbW92ZSBXVEY6OiBwcmVmaXgg
ZnJvbSB1c2UKKyAgICAgICAgb2YgYml0Q291bnQuIEluIFdURiB3ZSBpbmplY3QgdGhpbmdzIGlu
dG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UKKyAgICAgICAgYW5kIHRoaXMgaXMgbm8gZXhjZXB0aW9u
LgorCisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
Zm9ybWF0TG9jYWxlRGF0ZSk6IFVzZSBBUlJBWV9MRU5HVEguCisKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24p
OiBSZW1vdmUgV1RGOjogcHJlZml4IGFzIGFib3ZlLgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpzY29wZUNoYWluKTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnNldFNjb3Bl
Q2hhaW4pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2V0TmF0aXZlRnVuY3Rp
b24pOiBEaXR0by4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOiBVc2UgQVJSQVlfTEVOR1RILgorCisg
ICAgICAgICogcnVudGltZS9KU0ltbWVkaWF0ZS5oOgorICAgICAgICAoSlNDOjpyZWludGVycHJl
dERvdWJsZVRvSW50cHRyKTogUmVtb3ZlIFdURjo6IHByZWZpeCBhcyBhYm92ZS4KKyAgICAgICAg
KEpTQzo6cmVpbnRlcnByZXRJbnRwdHJUb0RvdWJsZSk6IERpdHRvLgorCisgICAgICAgICogcnVu
dGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmFwcGVuZFF1
b3RlZFN0cmluZyk6IFVzZSBBUlJBWV9MRU5HVEguCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
Ojp0b0pTT04pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmFwcGVuZFN0cmlu
Z2lmaWVkVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHA6
CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6U21hbGxTdHJpbmdzKTogRGl0dG8uCisKKyAg
ICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpmcm9t
KTogVXNlIEFSUkFZX0xFTkdUSC4KKworICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAg
ICAgICAgKFdURjo6Yml0d2lzZV9jYXN0KTogTWFya2VkIHRoaXMgaW5saW5lIQorICAgICAgICAo
V1RGOjpBUlJBWV9MRU5HVEgpOiBBZGRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSAoYWN0dWFsbHkgd3Jp
dHRlbiBieSBTYW0pLgorICAgICAgICBBZGRlZCB1c2luZyBkZWNsYXJhdGlvbnMgZm9yIHB1Ymxp
YyB0aGluZ3MgaW4gV1RGIG5hbWVzcGFjZSBkZWZpbmVkCisgICAgICAgIGluIHRoaXMgZmlsZS4K
KwogMjAxMC0wMy0xNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQsIERhcmluIEFkbGVyLgpJbmRleDog
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NjA5NCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1MSw3
ICs1NTEsNiBAQAogCQkwODhGQTVCOTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmRvbU51bWJlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEZBNUJBMEVGNzZENDMwMDU3OEU2RiAv
KiBSYW5kb21OdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZG9t
TnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RTI3OUU4MEVGODNCMTAw
MDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJhbmRvbU51bWJlclNlZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEIxRjkyMUIwRjE3NTAyRDAwMzY0NjhFIC8qIFB0ckFuZEZsYWdzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFB0ckFuZEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBCMzMwQzI2MEYzOEM2MjMwMDY5MkRFMyAvKiBUeXBlVHJhaXRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVUcmFpdHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwQjREN0U2MjBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlVHJhaXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25G
YXN0TWFsbG9jUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93bkZhc3RN
YWxsb2NQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzMsNyArMTMzMiw2
IEBACiAJCQkJNjU4MEY3OTUwOTQwNzA1NjAwODJDMjE5IC8qIFBhc3NSZWZQdHIuaCAqLywKIAkJ
CQk2NUQ2RDg3RTA5QjVBMzJFMDAwMkU0RDcgLyogUGxhdGZvcm0uaCAqLywKIAkJCQlBN0Q2NDlB
OTEwMTUyMjRFMDA5QjJFMUIgLyogUG9zc2libHlOdWxsLmggKi8sCi0JCQkJMEIxRjkyMUIwRjE3
NTAyRDAwMzY0NjhFIC8qIFB0ckFuZEZsYWdzLmggKi8sCiAJCQkJMDg4RkE1QjkwRUY3NkQ0MzAw
NTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8sCiAJCQkJMDg4RkE1QkEwRUY3NkQ0MzAwNTc4
RTZGIC8qIFJhbmRvbU51bWJlci5oICovLAogCQkJCTA4RTI3OUU4MEVGODNCMTAwMDdEQjUyMyAv
KiBSYW5kb21OdW1iZXJTZWVkLmggKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA1NjA5NCkKKysrIEphdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzNCw3ICsxMTM0
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICAj
aWYgSEFWRShDT01QVVRFRF9HT1RPKQogICAgICAgICAgICAgI2RlZmluZSBMSVNUX09QQ09ERV9M
QUJFTChpZCwgbGVuZ3RoKSAmJmlkLAogICAgICAgICAgICAgICAgIHN0YXRpYyBPcGNvZGUgbGFi
ZWxzW10gPSB7IEZPUl9FQUNIX09QQ09ERV9JRChMSVNUX09QQ09ERV9MQUJFTCkgfTsKLSAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihsYWJlbHMpIC8gc2l6ZW9m
KE9wY29kZSk7ICsraSkKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFS
UkFZX0xFTkdUSChsYWJlbHMpOyArK2kpCiAgICAgICAgICAgICAgICAgICAgIG1fb3Bjb2RlVGFi
bGVbaV0gPSBsYWJlbHNbaV07CiAgICAgICAgICAgICAjdW5kZWYgTElTVF9PUENPREVfTEFCRUwK
ICAgICAgICAgI2VuZGlmIC8vIEhBVkUoQ09NUFVURURfR09UTykKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNTYwOTQpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICsrcmVzdWx0OwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0Q2VsbCA+PiA1OyBpIDwgQklUTUFQX1dP
UkRTOyArK2kpCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoYml0c1tp
XSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGJpdENvdW50KGJpdHNbaV0pOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBzaXplX3QgaXNFbXB0eSgp
IC8vIE11Y2ggbW9yZSBlZmZpY2llbnQgdGhhbiB0ZXN0aW5nIGNvdW50KCkgPT0gMC4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNTYwOTQp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShF
eGVjU3RhdAogICAgIC8vIFdlIHRydW5jYXRlIHRoZSBzdHJpbmcgcmV0dXJuZWQgZnJvbSBDRkRh
dGVGb3JtYXR0ZXIgaWYgaXQncyBhYnN1cmRseSBsb25nICg+IDIwMCBjaGFyYWN0ZXJzKS4KICAg
ICAvLyBUaGF0J3Mgbm90IGdyZWF0IGVycm9yIGhhbmRsaW5nLCBidXQgaXQganVzdCB3b24ndCBo
YXBwZW4gc28gaXQgZG9lc24ndCBtYXR0ZXIuCiAgICAgVUNoYXIgYnVmZmVyWzIwMF07Ci0gICAg
Y29uc3Qgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZl
clswXSk7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IEFSUkFZX0xFTkdUSChidWZm
ZXIpOwogICAgIHNpemVfdCBsZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpOwogICAg
IEFTU0VSVChsZW5ndGggPD0gYnVmZmVyTGVuZ3RoKTsKICAgICBpZiAobGVuZ3RoID4gYnVmZmVy
TGVuZ3RoKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDU2
MDk0KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKldU
Rjo6Yml0d2lzZV9jYXN0PE5hdGl2ZUZ1bmN0aW9uKj4obV9kYXRhKTsKKyAgICAgICAgICAgIHJl
dHVybiAqYml0d2lzZV9jYXN0PE5hdGl2ZUZ1bmN0aW9uKj4obV9kYXRhKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVj
dERhdGEmKTsKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNjb3Bl
Q2hhaW4mIHNjb3BlQ2hhaW4oKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkpOwotICAgICAgICAgICAgcmV0dXJuICpXVEY6OmJpdHdpc2Vf
Y2FzdDxTY29wZUNoYWluKj4obV9kYXRhKTsKKyAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9j
YXN0PFNjb3BlQ2hhaW4qPihtX2RhdGEpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgY2xlYXJT
Y29wZUNoYWluKCkKICAgICAgICAgewpAQCAtMTEzLDExICsxMTMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihjb25zdCBTY29wZUNoYWluJiBzYykKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsK
LSAgICAgICAgICAgICpXVEY6OmJpdHdpc2VfY2FzdDxTY29wZUNoYWluKj4obV9kYXRhKSA9IHNj
OworICAgICAgICAgICAgKmJpdHdpc2VfY2FzdDxTY29wZUNoYWluKj4obV9kYXRhKSA9IHNjOwog
ICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0TmF0aXZlRnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24g
ZnVuYykKICAgICAgICAgewotICAgICAgICAgICAgKldURjo6Yml0d2lzZV9jYXN0PE5hdGl2ZUZ1
bmN0aW9uKj4obV9kYXRhKSA9IGZ1bmM7CisgICAgICAgICAgICAqYml0d2lzZV9jYXN0PE5hdGl2
ZUZ1bmN0aW9uKj4obV9kYXRhKSA9IGZ1bmM7CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQg
Y2hhciBtX2RhdGFbc2l6ZW9mKHZvaWQqKV07CiAgICAgfTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiA1NjA5NCkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NyArMzI1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4
ZWMpIEpTT05PYmplY3QoSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJv
dG90eXBlKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9OwogCi0gICAgYWRkU3RhdGlj
R2xvYmFscyhzdGF0aWNHbG9iYWxzLCBzaXplb2Yoc3RhdGljR2xvYmFscykgLyBzaXplb2YoR2xv
YmFsUHJvcGVydHlJbmZvKSk7CisgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBB
UlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogCiAgICAgLy8gU2V0IGdsb2JhbCBmdW5jdGlv
bnMuCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmgJKHJldmlzaW9uIDU2
MDk0KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NywxMiArNDcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBpbmxpbmUgaW50cHRyX3QgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihkb3VibGUg
dmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjpiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUpOwog
ICAgIH0KIAogICAgIGlubGluZSBkb3VibGUgcmVpbnRlcnByZXRJbnRwdHJUb0RvdWJsZShpbnRw
dHJfdCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmJpdHdpc2VfY2FzdDxkb3Vi
bGU+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKTsK
ICAgICB9CiAjZW5kaWYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CShyZXZpc2lvbiA1NjA5NCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFN0cmluZ2lmaWVyOjph
cHBlbmRRdW90ZWRTdHJpbmcoU3RyCiAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIg
aGV4RGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgICAgICAgICAgICAgVUNoYXIg
Y2ggPSBkYXRhW2ldOwogICAgICAgICAgICAgICAgIFVDaGFyIGhleFtdID0geyAnXFwnLCAndScs
IGhleERpZ2l0c1soY2ggPj4gMTIpICYgMHhGXSwgaGV4RGlnaXRzWyhjaCA+PiA4KSAmIDB4Rl0s
IGhleERpZ2l0c1soY2ggPj4gNCkgJiAweEZdLCBoZXhEaWdpdHNbY2ggJiAweEZdIH07Ci0gICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4LCBzaXplb2YoaGV4KSAvIHNpemVvZihVQ2hh
cikpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleCwgQVJSQVlfTEVOR1RIKGhl
eCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDcg
KzM0OSw3IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ2lmaWVyOjp0b0pTT04oSlNWYWwKICAgICAg
ICAgcmV0dXJuIHZhbHVlOwogCiAgICAgSlNWYWx1ZSBsaXN0W10gPSB7IHByb3BlcnR5TmFtZS52
YWx1ZShtX2V4ZWMpIH07Ci0gICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNpemVvZihsaXN0KSAvIHNp
emVvZihKU1ZhbHVlKSk7CisgICAgQXJnTGlzdCBhcmdzKGxpc3QsIEFSUkFZX0xFTkdUSChsaXN0
KSk7CiAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dmFsdWUsIGFyZ3MpOwogfQogCkBAIC0zNjMsNyArMzYzLDcgQEAgU3RyaW5naWZpZXI6OlN0cmlu
Z2lmeVJlc3VsdCBTdHJpbmdpZmllcgogICAgIC8vIENhbGwgdGhlIHJlcGxhY2VyIGZ1bmN0aW9u
LgogICAgIGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAg
IEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5hbWUudmFsdWUobV9leGVjKSwgdmFsdWUgfTsK
LSAgICAgICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNpemVvZihsaXN0KSAvIHNpemVvZihKU1ZhbHVl
KSk7CisgICAgICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBBUlJBWV9MRU5HVEgobGlzdCkpOwogICAg
ICAgICB2YWx1ZSA9IGNhbGwobV9leGVjLCBtX3JlcGxhY2VyLCBtX3JlcGxhY2VyQ2FsbFR5cGUs
IG1fcmVwbGFjZXJDYWxsRGF0YSwgaG9sZGVyLCBhcmdzKTsKICAgICAgICAgaWYgKG1fZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAkocmV2aXNpb24gNTYwOTQp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDcgKzYxLDcgQEAgU21hbGxTdHJpbmdzU3RvcmFnZTo6U21hbGxTdHJpbmdzU3Rv
cmFnZQogCiBTbWFsbFN0cmluZ3M6OlNtYWxsU3RyaW5ncygpCiB7Ci0gICAgQ09NUElMRV9BU1NF
UlQobnVtQ2hhcmFjdGVyc1RvU3RvcmUgPT0gc2l6ZW9mKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
cykgLyBzaXplb2YobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdKSwgSXNOdW1DaGFyYWN0ZXJz
Q29uc3RJblN5bmNXaXRoQ2xhc3NVc2FnZSk7CisgICAgQ09NUElMRV9BU1NFUlQobnVtQ2hhcmFj
dGVyc1RvU3RvcmUgPT0gQVJSQVlfTEVOR1RIKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncyksIElz
TnVtQ2hhcmFjdGVyc0NvbnN0SW5TeW5jV2l0aENsYXNzVXNhZ2UpOwogICAgIGNsZWFyKCk7CiB9
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAkocmV2aXNpb24gNTYwOTQpCisr
KyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzgsNyArMTc4LDcgQEAgVVN0cmluZzo6VVN0cmluZyhjb25zdCBVQ2hhciogYywgdW5zaWduZQog
VVN0cmluZyBVU3RyaW5nOjpmcm9tKGludCBpKQogewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9m
KGkpICogM107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVD
aGFyKTsKKyAgICBVQ2hhciogZW5kID0gYnVmICsgQVJSQVlfTEVOR1RIKGJ1Zik7CiAgICAgVUNo
YXIqIHAgPSBlbmQ7CiAKICAgICBpZiAoaSA9PSAwKQpAQCAtMjA3LDcgKzIwNyw3IEBAIFVTdHJp
bmcgVVN0cmluZzo6ZnJvbShpbnQgaSkKIFVTdHJpbmcgVVN0cmluZzo6ZnJvbShsb25nIGxvbmcg
aSkKIHsKICAgICBVQ2hhciBidWZbMSArIHNpemVvZihpKSAqIDNdOwotICAgIFVDaGFyKiBlbmQg
PSBidWYgKyBzaXplb2YoYnVmKSAvIHNpemVvZihVQ2hhcik7CisgICAgVUNoYXIqIGVuZCA9IGJ1
ZiArIEFSUkFZX0xFTkdUSChidWYpOwogICAgIFVDaGFyKiBwID0gZW5kOwogCiAgICAgaWYgKGkg
PT0gMCkKQEAgLTI0MCw3ICsyNDAsNyBAQCBVU3RyaW5nIFVTdHJpbmc6OmZyb20obG9uZyBsb25n
IGkpCiBVU3RyaW5nIFVTdHJpbmc6OmZyb20odW5zaWduZWQgaW50IHUpCiB7CiAgICAgVUNoYXIg
YnVmW3NpemVvZih1KSAqIDNdOwotICAgIFVDaGFyKiBlbmQgPSBidWYgKyBzaXplb2YoYnVmKSAv
IHNpemVvZihVQ2hhcik7CisgICAgVUNoYXIqIGVuZCA9IGJ1ZiArIEFSUkFZX0xFTkdUSChidWYp
OwogICAgIFVDaGFyKiBwID0gZW5kOwogCiAgICAgaWYgKHUgPT0gMCkKQEAgLTI1OCw3ICsyNTgs
NyBAQCBVU3RyaW5nIFVTdHJpbmc6OmZyb20odW5zaWduZWQgaW50IHUpCiBVU3RyaW5nIFVTdHJp
bmc6OmZyb20obG9uZyBsKQogewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9mKGwpICogM107Ci0g
ICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBV
Q2hhciogZW5kID0gYnVmICsgQVJSQVlfTEVOR1RIKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7
CiAKICAgICBpZiAobCA9PSAwKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJh
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2
aXNpb24gNTYwOTQpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV1RGX1N0ZExpYkV4dHJhc19oCiAjZGVm
aW5lIFdURl9TdGRMaWJFeHRyYXNfaAogCisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KIAogLy8gVXNlIHRoZXNlIHRvIGRlY2xhcmUgYW5kIGRlZmluZSBh
IHN0YXRpYyBsb2NhbCB2YXJpYWJsZSAoc3RhdGljIFQ7KSBzbyB0aGF0CkBAIC01MywxMSArNTQs
OSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIC8qCi0gICAgICogQysrJ3MgaWRlYSBvZiBh
IHJlaW50ZXJwcmV0X2Nhc3QgbGFja3Mgc3VmZmljaWVudCBjb2pvbmVzLgotICAgICAqLworICAg
IC8vIEMrKydzIGlkZWEgb2YgYSByZWludGVycHJldF9jYXN0IGxhY2tzIHN1ZmZpY2llbnQgY29q
b25lcy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUTywgdHlwZW5hbWUgRlJPTT4KLSAgICBUTyBi
aXR3aXNlX2Nhc3QoRlJPTSBmcm9tKQorICAgIGlubGluZSBUTyBiaXR3aXNlX2Nhc3QoRlJPTSBm
cm9tKQogICAgIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRPKSA9PSBzaXplb2Yo
RlJPTSksIFdURl9iaXR3aXNlX2Nhc3Rfc2l6ZW9mX2Nhc3RlZF90eXBlc19pc19lcXVhbCk7CiAg
ICAgICAgIHVuaW9uIHsKQEAgLTc2LDYgKzc1LDEzIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICByZXR1cm4gKCgoYml0cyArIChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEp
ID4+IDI0OwogICAgIH0KIAorICAgIC8vIE1hY3JvIHRoYXQgcmV0dXJucyBhIGNvbXBpbGUgdGlt
ZSBjb25zdGFudCB3aXRoIHRoZSBsZW5ndGggb2YgYW4gYXJyYXksIGJ1dCBnaXZlcyBhbiBlcnJv
ciBpZiBwYXNzZWQgYSBub24tYXJyYXkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGUsIHNpemVfdCBsZW5ndGg+IGNoYXIgKCZBcnJheUxlbmd0aEhlbHBlckZ1bmN0aW9uKEVsZW1l
bnRUeXBlICgmKVtsZW5ndGhdKSlbbGVuZ3RoXTsKKyAgICAjZGVmaW5lIEFSUkFZX0xFTkdUSChh
cnJheSkgKHNpemVvZig6OldURjo6QXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihhcnJheSkpKQor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpiaXRDb3VudDsKK3VzaW5nIFdURjo6
Yml0d2lzZV9jYXN0OworCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDQs
OCArOTQ0LDcgQEAgc3RhdGljIEFSSUFSb2xlTWFwKiBjcmVhdGVBUklBUm9sZU1hcCgpCiAgICAg
fTsKICAgICBBUklBUm9sZU1hcCogcm9sZU1hcCA9IG5ldyBBUklBUm9sZU1hcDsKICAgICAKLSAg
ICBjb25zdCB1bnNpZ25lZCBudW1Sb2xlcyA9IHNpemVvZihyb2xlcykgLyBzaXplb2Yocm9sZXNb
MF0pOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Sb2xlczsgKytpKQorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgocm9sZXMpOyArK2kpCiAgICAgICAg
IHJvbGVNYXAtPnNldChyb2xlc1tpXS5hcmlhUm9sZSwgcm9sZXNbaV0ud2ViY29yZVJvbGUpOwog
ICAgIHJldHVybiByb2xlTWFwOwogfQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA1NjA5
NCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNDYsMTMgKzEwNDYsMTMgQEAgLSAoTlNWYWx1ZSop
cG9zaXRpb24KIAogdHlwZWRlZiBIYXNoTWFwPGludCwgTlNTdHJpbmcqPiBBY2Nlc3NpYmlsaXR5
Um9sZU1hcDsKIAorc3RydWN0IFJvbGVFbnRyeSB7CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgdmFs
dWU7CisgICAgTlNTdHJpbmcqIHN0cmluZzsKK307CisgICAgCiBzdGF0aWMgY29uc3QgQWNjZXNz
aWJpbGl0eVJvbGVNYXAmIGNyZWF0ZUFjY2Vzc2liaWxpdHlSb2xlTWFwKCkKIHsKLSAgICBzdHJ1
Y3QgUm9sZUVudHJ5IHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWU7Ci0gICAgICAg
IE5TU3RyaW5nKiBzdHJpbmc7Ci0gICAgfTsKLSAgICAKICAgICBzdGF0aWMgY29uc3QgUm9sZUVu
dHJ5IHJvbGVzW10gPSB7CiAgICAgICAgIHsgVW5rbm93blJvbGUsIE5TQWNjZXNzaWJpbGl0eVVu
a25vd25Sb2xlIH0sCiAgICAgICAgIHsgQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QnV0dG9u
Um9sZSB9LApAQCAtMTE0OSw4ICsxMTQ5LDcgQEAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlS
b2xlTWFwJiBjcmVhdAogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAg
PSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwogICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIG51
bVJvbGVzID0gc2l6ZW9mKHJvbGVzKSAvIHNpemVvZihyb2xlc1swXSk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bVJvbGVzOyArK2kpCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEFSUkFZX0xFTkdUSChyb2xlcyk7ICsraSkKICAgICAgICAgcm9sZU1hcC5zZXQocm9sZXNb
aV0udmFsdWUsIHJvbGVzW2ldLnN0cmluZyk7CiAgICAgcmV0dXJuIHJvbGVNYXA7CiB9CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiA1NjA5NCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTksNyArNTksNyBAQCBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShOb25O
dWxsCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
IndpbmRvdyIpLCBkKCktPnNoZWxsLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsKICAg
ICAKLSAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIHNpemVvZihzdGF0aWNHbG9i
YWxzKSAvIHNpemVvZihHbG9iYWxQcm9wZXJ0eUluZm8pKTsKKyAgICBhZGRTdGF0aWNHbG9iYWxz
KHN0YXRpY0dsb2JhbHMsIEFSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiB9CiAKIHZvaWQg
SlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAK
ICNlbmRpZgogfTsKIAotY29uc3QgdW5zaWduZWQgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzID0gc2l6
ZW9mKGNvbXB1dGVkUHJvcGVydGllcykgLyBzaXplb2YoY29tcHV0ZWRQcm9wZXJ0aWVzWzBdKTsK
K2NvbnN0IHVuc2lnbmVkIG51bUNvbXB1dGVkUHJvcGVydGllcyA9IEFSUkFZX0xFTkdUSChjb21w
dXRlZFByb3BlcnRpZXMpOwogCiBzdGF0aWMgaW50IHZhbHVlRm9yUmVwZWF0UnVsZShpbnQgcnVs
ZSkKIHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgU3RyaW5nIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciB9fTsKICAgICAgICAgICAgIFN0cmluZyByZXM7Ci0gICAgICAgICAgICBjb25zdCBpbnQgbnJw
cm9wcyA9IHNpemVvZihwcm9wZXJ0aWVzKSAvIHNpemVvZihwcm9wZXJ0aWVzWzBdKTsKKyAgICAg
ICAgICAgIGNvbnN0IGludCBucnByb3BzID0gQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOwogICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucnByb3BzOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgdmFsdWUgPSBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzW2ldLCA0KTsKICAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CkBAIC03NjIsNyArNzYyLDcgQEAg
c3RhdGljIGNvbnN0IGludCBibG9ja1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdp
ZG93cwogfTsKIAotY29uc3QgdW5zaWduZWQgbnVtQmxvY2tQcm9wZXJ0aWVzID0gc2l6ZW9mKGJs
b2NrUHJvcGVydGllcykgLyBzaXplb2YoYmxvY2tQcm9wZXJ0aWVzWzBdKTsKK2NvbnN0IHVuc2ln
bmVkIG51bUJsb2NrUHJvcGVydGllcyA9IEFSUkFZX0xFTkdUSChibG9ja1Byb3BlcnRpZXMpOwog
CiBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Y29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0CiB7CkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg5Myw3ICsxODkzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0
aW9uU2hvcnRoYW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSB9
OwotICAgIGNvbnN0IGludCBudW1Qcm9wZXJ0aWVzID0gc2l6ZW9mKHByb3BlcnRpZXMpIC8gc2l6
ZW9mKHByb3BlcnRpZXNbMF0pOworICAgIGNvbnN0IGludCBudW1Qcm9wZXJ0aWVzID0gQVJSQVlf
TEVOR1RIKHByb3BlcnRpZXMpOwogICAgIAogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMs
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKTsKIApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbkRlbGF5IH07Ci0gICAgY29uc3QgaW50IG51bVByb3BlcnRpZXMgPSBzaXpl
b2YocHJvcGVydGllcykgLyBzaXplb2YocHJvcGVydGllc1swXSk7CisgICAgY29uc3QgaW50IG51
bVByb3BlcnRpZXMgPSBBUlJBWV9MRU5HVEgocHJvcGVydGllcyk7CiAgICAgCiAgICAgU2hvcnRo
YW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKTsKIApJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPGludCwgQ1NTUHJvcGVydHlMb25naGFuZAogc3RhdGlj
IHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKIHsKICAg
ICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAot
ICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgc2l6ZW9m
KGFycmF5KSAvIHNpemVvZihhcnJheVswXSkpKQorICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NT
UHJvcGVydHlMb25naGFuZChhcnJheSwgQVJSQVlfTEVOR1RIKGFycmF5KSkpCiAKICAgICAvLyBG
SVhNRTogVGhlICdmb250JyBwcm9wZXJ0eSBoYXMgInNob3J0aGFuZCBuYXR1cmUiIGJ1dCBpcyBu
b3QgcGFyc2VkIGFzIGEgc2hvcnRoYW5kLgogCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NjA5
NCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcg
KzUzMiw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiAgICAgbV9kZWNvZGVyID0gMDsKICAg
ICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IHNpemVvZihtX25hbWVDb2xsZWN0aW9uSW5mbykgLyBz
aXplb2YobV9uYW1lQ29sbGVjdGlvbkluZm9bMF0pOworICAgIHVuc2lnbmVkIGNvdW50ID0gQVJS
QVlfTEVOR1RIKG1fbmFtZUNvbGxlY3Rpb25JbmZvKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fbmFtZUNvbGxlY3Rp
b25JbmZvW2ldKTsKIApJbmRleDogV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHJldmlzaW9uIDU2MDk0KQor
KysgV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlJhbmdlRXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0V4
Y2VwdGlvbi5oIgpAQCAtMTYzLDcgKzE2NCw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uKEV4Y2VwdGkKICAgICAgICAgY29kZSAtPSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VFeGNl
cHRpb25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHJhbmdlRXhjZXB0aW9uTmFtZXM7CiAg
ICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSByYW5nZUV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAg
ICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihyYW5nZUV4Y2VwdGlvbk5hbWVzKSAvIHNpemVv
ZihyYW5nZUV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IEFSUkFZ
X0xFTkdUSChyYW5nZUV4Y2VwdGlvbk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0g
UmFuZ2VFeGNlcHRpb246OkJBRF9CT1VOREFSWVBPSU5UU19FUlI7CiAgICAgfSBlbHNlIGlmIChj
b2RlID49IEV2ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IEV2
ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk1heCkgewogICAgICAgICB0eXBlID0gRXZlbnRF
eGNlcHRpb25UeXBlOwpAQCAtMTcxLDcgKzE3Miw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uKEV4Y2VwdGkKICAgICAgICAgY29kZSAtPSBFdmVudEV4Y2VwdGlvbjo6RXZlbnRF
eGNlcHRpb25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IGV2ZW50RXhjZXB0aW9uTmFtZXM7
CiAgICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSBldmVudEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsK
LSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihldmVudEV4Y2VwdGlvbk5hbWVzKSAvIHNp
emVvZihldmVudEV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IEFS
UkFZX0xFTkdUSChldmVudEV4Y2VwdGlvbk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0
ID0gRXZlbnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOwogICAgIH0gZWxz
ZSBpZiAoY29kZSA+PSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNl
cHRpb25PZmZzZXQgJiYgY29kZSA8PSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJl
cXVlc3RFeGNlcHRpb25NYXgpIHsKICAgICAgICAgdHlwZSA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uVHlwZTsKQEAgLTE3OSw3ICsxODAsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbihFeGNlcHRpCiAgICAgICAgIGNvZGUgLT0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OlhN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSB4bWxIdHRw
UmVxdWVzdEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0geG1sSHR0
cFJlcXVlc3RFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBz
aXplb2YoeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeG1sSHR0cFJlcXVl
c3RFeGNlcHRpb25OYW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBBUlJBWV9MRU5H
VEgoeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lcyk7CiAgICAgICAgIC8vIFhNTEh0dHBSZXF1
ZXN0IGV4Y2VwdGlvbiBjb2RlcyBzdGFydCB3aXRoIDEwMSBhbmQgd2UgZG9uJ3Qgd2FudCAxMDAg
ZW1wdHkgZWxlbWVudHMgaW4gdGhlIG5hbWUgYXJyYXkKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0
ID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogI2lmIEVOQUJMRShYUEFU
SCkKQEAgLTE4OSw3ICsxOTAsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihF
eGNlcHRpCiAgICAgICAgIGNvZGUgLT0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9uT2Zm
c2V0OwogICAgICAgICBuYW1lVGFibGUgPSB4cGF0aEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBk
ZXNjcmlwdGlvblRhYmxlID0geHBhdGhFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5h
bWVUYWJsZVNpemUgPSBzaXplb2YoeHBhdGhFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeHBhdGhF
eGNlcHRpb25OYW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBBUlJBWV9MRU5HVEgo
eHBhdGhFeGNlcHRpb25OYW1lcyk7CiAgICAgICAgIC8vIFhQYXRoIGV4Y2VwdGlvbiBjb2RlcyBz
dGFydCB3aXRoIDUxIGFuZCB3ZSBkb24ndCB3YW50IDUxIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBu
YW1lIGFycmF5CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFhQYXRoRXhjZXB0aW9uOjpJTlZB
TElEX0VYUFJFU1NJT05fRVJSOwogI2VuZGlmCkBAIC0yMDAsNyArMjAxLDcgQEAgdm9pZCBnZXRF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aQogICAgICAgICBjb2RlIC09IFNWR0V4Y2Vw
dGlvbjo6U1ZHRXhjZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSBzdmdFeGNlcHRp
b25OYW1lczsKICAgICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IHN2Z0V4Y2VwdGlvbkRlc2NyaXB0
aW9uczsKLSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihzdmdFeGNlcHRpb25OYW1lcykg
LyBzaXplb2Yoc3ZnRXhjZXB0aW9uTmFtZXNbMF0pOworICAgICAgICBuYW1lVGFibGVTaXplID0g
QVJSQVlfTEVOR1RIKHN2Z0V4Y2VwdGlvbk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0
ID0gU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlI7CiAjZW5kaWYKICAgICB9IGVsc2Ug
ewpAQCAtMjA4LDcgKzIwOSw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4
Y2VwdGkKICAgICAgICAgdHlwZU5hbWUgPSAiRE9NIjsKICAgICAgICAgbmFtZVRhYmxlID0gZXhj
ZXB0aW9uTmFtZXM7CiAgICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSBleGNlcHRpb25EZXNjcmlw
dGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2YoZXhjZXB0aW9uTmFtZXMpIC8g
c2l6ZW9mKGV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IEFSUkFZ
X0xFTkdUSChleGNlcHRpb25OYW1lcyk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IElOREVY
X1NJWkVfRVJSOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2
aXNpb24gNTYwOTQpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NzUsOCArMTQ3NSw3IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBj
cmVhdGVDb21tYW5kTWEKIAogICAgIENvbW1hbmRNYXAmIGNvbW1hbmRNYXAgPSAqbmV3IENvbW1h
bmRNYXA7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBudW1Db21tYW5kcyA9IHNpemVvZihjb21tYW5k
cykgLyBzaXplb2YoY29tbWFuZHNbMF0pOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1Db21tYW5kczsgaSsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX0xF
TkdUSChjb21tYW5kcyk7IGkrKykgewogICAgICAgICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNv
bW1hbmRzW2ldLm5hbWUpKTsKICAgICAgICAgY29tbWFuZE1hcC5zZXQoY29tbWFuZHNbaV0ubmFt
ZSwgJmNvbW1hbmRzW2ldLmNvbW1hbmQpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCShyZXZpc2lvbiA1NjA5NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRl
ICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApA
QCAtMTM2LDcgKzEzNyw3IEBAIHVuc2lnbmVkIFdlYkdMQnVmZmVyOjpieXRlTGVuZ3RoKHVuc2ln
bmUKIAogbG9uZyBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQgbG9uZyB0
eXBlKQogewotICAgIHNpemVfdCBudW1FbnRyaWVzID0gc2l6ZW9mKG1fbWF4SW5kZXhDYWNoZSkg
LyBzaXplb2YoTWF4SW5kZXhDYWNoZUVudHJ5KTsKKyAgICBzaXplX3QgbnVtRW50cmllcyA9IEFS
UkFZX0xFTkdUSChtX21heEluZGV4Q2FjaGUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtRW50cmllczsgaSsrKQogICAgICAgICBpZiAobV9tYXhJbmRleENhY2hlW2ldLnR5cGUgPT0g
dHlwZSkKICAgICAgICAgICAgIHJldHVybiBtX21heEluZGV4Q2FjaGVbaV0ubWF4SW5kZXg7CkBA
IC0xNDUsNyArMTQ2LDcgQEAgbG9uZyBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgodW5z
aQogCiB2b2lkIFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleCh1bnNpZ25lZCBsb25nIHR5
cGUsIGxvbmcgdmFsdWUpCiB7Ci0gICAgaW50IG51bUVudHJpZXMgPSBzaXplb2YobV9tYXhJbmRl
eENhY2hlKSAvIHNpemVvZihNYXhJbmRleENhY2hlRW50cnkpOworICAgIGludCBudW1FbnRyaWVz
ID0gQVJSQVlfTEVOR1RIKG1fbWF4SW5kZXhDYWNoZSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1FbnRyaWVzOyBpKyspCiAgICAgICAgIGlmIChtX21heEluZGV4Q2FjaGVbaV0udHlwZSA9
PSB0eXBlKSB7CiAgICAgICAgICAgICBtX21heEluZGV4Q2FjaGVbaV0ubWF4SW5kZXggPSB2YWx1
ZTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgaW50IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMoaQogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICgodGV4dHVyZSAtIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkgPiBzaXplb2YobV90ZXh0dXJlVW5pdHMpIC8gc2l6ZW9mKFRl
eHR1cmVVbml0U3RhdGUpKSB7CisgICAgaWYgKCh0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUwKSA+IEFSUkFZX0xFTkdUSChtX3RleHR1cmVVbml0cykpIHsKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVN
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsOCArMTUwLDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRlRnJvbUVsZQogICAgIAogICAgIC8vIENoZWNr
IGZvciBhIHN0cmV0Y2hhYmxlIGNoYXJhY3Rlci4KICAgICBpZiAoIXN0cmV0Y2hEaXNhYmxlZCAm
JiBmaXJzdENoYXIpIHsKLSAgICAgICAgY29uc3QgaW50IG1heEluZGV4ID0gc2l6ZW9mKHN0cmV0
Y2h5Q2hhcmFjdGVycykgLyBzaXplb2Yoc3RyZXRjaHlDaGFyYWN0ZXJzWzBdKTsKLSAgICAgICAg
Zm9yIChpbmRleCsrOyBpbmRleCA8IG1heEluZGV4OyBpbmRleCsrKSB7CisgICAgICAgIGZvciAo
aW5kZXgrKzsgaW5kZXggPCBBUlJBWV9MRU5HVEgoc3RyZXRjaHlDaGFyYWN0ZXJzKTsgaW5kZXgr
KykgewogICAgICAgICAgICAgaWYgKHN0cmV0Y2h5Q2hhcmFjdGVyc1tpbmRleF0uY2hhcmFjdGVy
ID09IGZpcnN0Q2hhcikgewogICAgICAgICAgICAgICAgIGlzU3RyZXRjaHkgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDU2MDk0KQor
KysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsx
ODUsNyBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGNvbnN0CiAgICAgLy8g
SXQgaXMgYWxzbyBhIFNZTlRBWF9FUlIgaWYgdGhlIGN1c3RvbSBoYW5kbGVyIFVSTCwgYXMgY3Jl
YXRlZCBieSByZW1vdmluZwogICAgIC8vIHRoZSAiJXMiIHRva2VuIGFuZCBwcmVwZW5kaW5nIHRo
ZSBiYXNlIHVybCwgZG9lcyBub3QgcmVzb2x2ZS4KICAgICBTdHJpbmcgbmV3VVJMID0gdXJsOwot
ICAgIG5ld1VSTC5yZW1vdmUoaW5kZXgsIHNpemVvZih0b2tlbikgLyBzaXplb2YodG9rZW5bMF0p
KTsKKyAgICBuZXdVUkwucmVtb3ZlKGluZGV4LCBBUlJBWV9MRU5HVEgodG9rZW4pKTsKIAogICAg
IEtVUkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOwogICAgIEtVUkwga3VybChiYXNl
LCBuZXdVUkwpOwpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3Bw
CShyZXZpc2lvbiA1NjA5NCkKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxOSw3ICs3MTksNyBAQCBzdGF0aWMgdm9pZCBhZGRT
aG9ydGhhbmRQcm9wZXJ0aWVzKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW4KICAgICB9OwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihhbmlt
YXRhYmxlU2hvcnRoYW5kUHJvcGVydGllcykgLyBzaXplb2YoYW5pbWF0YWJsZVNob3J0aGFuZFBy
b3BlcnRpZXNbMF0pOyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlf
TEVOR1RIKGFuaW1hdGFibGVTaG9ydGhhbmRQcm9wZXJ0aWVzKTsgKytpKSB7CiAgICAgICAgIGlu
dCBwcm9wZXJ0eUlEID0gYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXNbaV07CiAgICAgICAg
IENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3Bl
cnR5SUQpOwogICAgICAgICBpZiAobG9uZ2hhbmQubGVuZ3RoKCkgPiAwKQpAQCAtNzMyLDcgKzcz
Miw3IEBAIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFByb3BlcnRpZXMoKQogICAgICAgICBDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQKICAgICB9OwogCi0gICAgQ1NTUHJvcGVydHlMb25naGFuZCBmb250
TG9uZ2hhbmQoYW5pbWF0YWJsZUZvbnRQcm9wZXJ0aWVzLCBzaXplb2YoYW5pbWF0YWJsZUZvbnRQ
cm9wZXJ0aWVzKSAvIHNpemVvZihhbmltYXRhYmxlRm9udFByb3BlcnRpZXNbMF0pKTsKKyAgICBD
U1NQcm9wZXJ0eUxvbmdoYW5kIGZvbnRMb25naGFuZChhbmltYXRhYmxlRm9udFByb3BlcnRpZXMs
IEFSUkFZX0xFTkdUSChhbmltYXRhYmxlRm9udFByb3BlcnRpZXMpKTsKICAgICBhZGRQcm9wZXJ0
eVdyYXBwZXIoQ1NTUHJvcGVydHlGb250LCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKENT
U1Byb3BlcnR5Rm9udCwgZm9udExvbmdoYW5kKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkocmV2
aXNpb24gNTYwOTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzU5LDcgKzE3NTksNyBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmIHVybCkK
ICAgICAgICAgNjY2OSwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCiAKICAgICB9
OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9ydExpc3RFbmQgPSBi
bG9ja2VkUG9ydExpc3QgKyBzaXplb2YoYmxvY2tlZFBvcnRMaXN0KSAvIHNpemVvZihibG9ja2Vk
UG9ydExpc3RbMF0pOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9y
dExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBBUlJBWV9MRU5HVEgoYmxvY2tlZFBvcnRMaXN0
KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBUaGUgcG9ydCBsaXN0IG11c3QgYmUgc29ydGVk
IGZvciBiaW5hcnlfc2VhcmNoIHRvIHdvcmsuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUUKICAgICAgICAgImltYWdlL3gtaWNvbiIs
ICAgIC8vIGljbwogICAgICAgICAiaW1hZ2UveC14Yml0bWFwIiAgLy8geGJtCiAgICAgfTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZih0eXBlcykgLyBzaXplb2YodHlwZXNbMF0p
OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSCh0eXBlcyk7
ICsraSkgewogICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGVzW2ldKTsK
ICAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKHR5cGVzW2ldKTsK
ICAgICB9CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRl
ZEphdmFTY3JpcAogICAgICAgICAidGV4dC9qc2NyaXB0IiwKICAgICAgICAgInRleHQvbGl2ZXNj
cmlwdCIsCiAgICAgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZih0eXBlcykg
LyBzaXplb2YodHlwZXNbMF0pOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJB
WV9MRU5HVEgodHlwZXMpOyArK2kpCiAgICAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVz
LT5hZGQodHlwZXNbaV0pOwogfQogCkBAIC0yMTksMTMgKzIxOSwxMyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNCiAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVy
S25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CiB9CiAKK3N0cnVjdCBUeXBlRXh0ZW5zaW9uUGFpciB7
CisgICAgY29uc3QgY2hhciogdHlwZTsKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb247Cit9Owor
CiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTWVkaWFUeXBlTWFwcygpCiB7Ci0gICAgc3RydWN0IFR5
cGVFeHRlbnNpb25QYWlyIHsKLSAgICAgICAgY29uc3QgY2hhciogdHlwZTsKLSAgICAgICAgY29u
c3QgY2hhciogZXh0ZW5zaW9uOwotICAgIH07Ci0KICAgICAvLyBBIHRhYmxlIG9mIGNvbW1vbiBt
ZWRpYSBNSU1FIHR5cGVzIGFuZCBmaWxlIGV4dGVuc3Rpb25zIHVzZWQgd2hlbiBhIHBsYXRmb3Jt
J3MKICAgICAvLyBzcGVjaWZpYyBNSU1FIHR5cGUgbG9va3VwIGRvZW5zJ3QgaGF2ZSBhIG1hdGNo
IGZvciBhIG1lZGlhIGZpbGUgZXh0ZW5zaW9uLiBXaGlsZSBzb21lCiAgICAgLy8gZmlsZSBleHRl
bnNpb25zIGFyZSBjbGFpbWVkIGJ5IG11bHRpcGxlIE1JTUUgdHlwZXMsIHRoaXMgdGFibGUgb25s
eSBpbmNsdWRlcyBvbmUgCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZU1lZGlhVHlwZU1hcHMoKQogICAgIH07CiAKICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9u
TWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47Ci0gICAg
Y29uc3QgdW5zaWduZWQgbnVtUGFpcnMgPSBzaXplb2YocGFpcnMpIC8gc2l6ZW9mKHBhaXJzWzBd
KTsKKyAgICBjb25zdCB1bnNpZ25lZCBudW1QYWlycyA9IEFSUkFZX0xFTkdUSChwYWlycyk7CiAg
ICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBudW1QYWlyczsgKytuZHgpCiAgICAgICAg
IG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAtPnNldChwYWlyc1tuZHhdLmV4dGVuc2lvbiwg
cGFpcnNbbmR4XS50eXBlKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gNTYwOTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9w
ZXJhdAogICAgICJoaWdobGlnaHQiLAogICAgICJsaWdodGVyIgogfTsKLWNvbnN0IGludCBudW1D
b21wb3NpdGVPcGVyYXRvck5hbWVzID0gc2l6ZW9mKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpIC8g
c2l6ZW9mKGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbMF0pOworY29uc3QgaW50IG51bUNvbXBvc2l0
ZU9wZXJhdG9yTmFtZXMgPSBBUlJBWV9MRU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7CiAK
IGJvb2wgcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb25zdCBTdHJpbmcmIHMsIENvbXBvc2l0ZU9w
ZXJhdG9yJiBvcCkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAJKHJldmlz
aW9uIDU2MDk0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQ29yZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgVVNFKENPUkVfVEVYVCkKIAogI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAvLyBUaGUg
Zm9sbG93aW5nIHN5bWJvbHMgYXJlIFNQSSBpbiAxMC41LgpAQCAtMTI2LDggKzEyNyw4IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGwKICAgICAgICAgc3RhdGljIGNv
bnN0IHZvaWQqIG9wdGlvbktleXNbXSA9IHsga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVk
ZGluZ0xldmVsIH07CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBsdHJPcHRpb25WYWx1ZXNb
XSA9IHsga0NGQm9vbGVhbkZhbHNlIH07CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxP
cHRpb25WYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKLSAgICAgICAgc3RhdGljIENGRGlj
dGlvbmFyeVJlZiBsdHJUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIHNpemVvZihvcHRp
b25LZXlzKSAvIHNpemVvZigqb3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBz
dGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywg
c2l6ZW9mKG9wdGlvbktleXMpIC8gc2l6ZW9mKCpvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7
CisgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0
aW9uVmFsdWVzLCBBUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAg
ICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0
aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZh
bHVlcywgQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKICAgICAgICAg
dHlwZXNldHRlci5hZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5n
QW5kT3B0aW9ucyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBtX3J1bi5sdHIoKSA/IGx0clR5cGVz
ZXR0ZXJPcHRpb25zIDogcnRsVHlwZXNldHRlck9wdGlvbnMpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgdHlwZXNldHRlci5hZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3Ry
aW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCShyZXZpc2lvbiA1NjA5NCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBTaW1wbGVGb250RGF0YTo6Y2hl
Y2tTaGFwZXNBcmFiaWMoKQogICAgIC8vIGhldXJpc3RpYyBpcyB0aGF0IGlmIHN1Y2ggYSBmb250
IGhhcyBhIGdseXBoIG1ldGFtb3JwaG9zaXMgdGFibGUsIHRoZW4KICAgICAvLyBpdCBpbmNsdWRl
cyBzaGFwaW5nIGluZm9ybWF0aW9uIGZvciBBcmFiaWMuCiAgICAgRm91ckNoYXJDb2RlIHRhYmxl
c1tdID0geyAnbW9yeCcsICdtb3J0JyB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplb2YodGFibGVzKSAvIHNpemVvZih0YWJsZXNbMF0pOyArK2kpIHsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKHRhYmxlcyk7ICsraSkgewogICAgICAgICBCeXRl
Q291bnQgdGFibGVTaXplOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBBVFNGb250R2V0VGFi
bGUoZm9udElELCB0YWJsZXNbaV0sIDAsIDAsIDAsICZ0YWJsZVNpemUpOwogICAgICAgICBpZiAo
c3RhdHVzID09IG5vRXJyKSB7CkBAIC00ODQsMTQgKzQ4NCwxNCBAQCBDRkRpY3Rpb25hcnlSZWYg
U2ltcGxlRm9udERhdGE6OmdldENGU3RyCiAgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1dpdGhL
ZXJuaW5nRGlzYWJsZWRbXSA9IHsgZ2V0Q1RGb250KCksIGtlcm5pbmdBZGp1c3RtZW50LCBhbGxv
d0xpZ2F0dXJlcwogICAgICAgICAgICAgPyBsaWdhdHVyZXNBbGxvd2VkIDogbGlnYXR1cmVzTm90
QWxsb3dlZCB9OwogICAgICAgICBhdHRyaWJ1dGVzRGljdGlvbmFyeS5hZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZShOVUxMLCBrZXlzV2l0aEtlcm5pbmdEaXNhYmxlZCwgdmFsdWVzV2l0aEtlcm5p
bmdEaXNhYmxlZCwKLSAgICAgICAgICAgIHNpemVvZihrZXlzV2l0aEtlcm5pbmdEaXNhYmxlZCkg
LyBzaXplb2YoKmtleXNXaXRoS2VybmluZ0Rpc2FibGVkKSwKKyAgICAgICAgICAgIEFSUkFZX0xF
TkdUSChrZXlzV2l0aEtlcm5pbmdEaXNhYmxlZCksCiAgICAgICAgICAgICAma0NGQ29weVN0cmlu
Z0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQnkgb21pdHRpbmcgdGhlIGtDVEtlcm5BdHRy
aWJ1dGVOYW1lIGF0dHJpYnV0ZSwgd2UgZ2V0IENvcmUgVGV4dCdzIHN0YW5kYXJkIGtlcm5pbmcu
CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBrZXlzV2l0aEtlcm5pbmdFbmFibGVkW10gPSB7
IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBrQ1RMaWdhdHVyZUF0dHJpYnV0ZU5hbWUgfTsKICAgICAg
ICAgY29uc3Qgdm9pZCogdmFsdWVzV2l0aEtlcm5pbmdFbmFibGVkW10gPSB7IGdldENURm9udCgp
LCBhbGxvd0xpZ2F0dXJlcyA/IGxpZ2F0dXJlc0FsbG93ZWQgOiBsaWdhdHVyZXNOb3RBbGxvd2Vk
IH07CiAgICAgICAgIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKE5VTEwsIGtleXNXaXRoS2VybmluZ0VuYWJsZWQsIHZhbHVlc1dpdGhLZXJuaW5nRW5hYmxl
ZCwKLSAgICAgICAgICAgIHNpemVvZihrZXlzV2l0aEtlcm5pbmdFbmFibGVkKSAvIHNpemVvZigq
a2V5c1dpdGhLZXJuaW5nRW5hYmxlZCksCisgICAgICAgICAgICBBUlJBWV9MRU5HVEgoa2V5c1dp
dGhLZXJuaW5nRW5hYmxlZCksCiAgICAgICAgICAgICAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgfQog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1z
KCkKICAgICAgICAgLy8gQnV0IFNPQ0tTNSBjcmVkZW50aWFscyBkb24ndCB3b3JrIGF0IHRoZSB0
aW1lIG9mIHRoaXMgd3JpdGluZyBhbnl3YXksIHNlZSA8cmRhcjovLzY3NzY2OTg+LgogICAgICAg
ICBjb25zdCB2b2lkKiBwcm94eUtleXNbXSA9IHsga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5
SG9zdCwga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5UG9ydCB9OwogICAgICAgICBjb25zdCB2
b2lkKiBwcm94eVZhbHVlc1tdID0geyBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0
KCkgfTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdERpY3Rpb25h
cnkoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIHByb3h5S2V5cywgcHJveHlWYWx1ZXMs
IHNpemVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3REaWN0aW9uYXJ5KEFkb3B0Q0Ys
IENGRGljdGlvbmFyeUNyZWF0ZSgwLCBwcm94eUtleXMsIHByb3h5VmFsdWVzLCBBUlJBWV9MRU5H
VEgocHJveHlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0
eShtX3JlYWRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5U09DS1NQcm94eSwgY29ubmVj
dERpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQyLDcg
KzM0Miw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICBp
ZiAoc2hvdWxkVXNlU1NMKCkpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0geyBrQ0ZT
dHJlYW1TU0xQZWVyTmFtZSwga0NGU3RyZWFtU1NMTGV2ZWwgfTsKICAgICAgICAgY29uc3Qgdm9p
ZCogdmFsdWVzW10gPSB7IGhvc3QuZ2V0KCksIGtDRlN0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxO
ZWdvdGlhdGVkU1NMIH07Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHNldHRp
bmdzKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIHNpemVvZihr
ZXlzKSAvIHNpemVvZigqa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gc2V0dGluZ3MoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMs
IHZhbHVlcywgQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENGUmVhZFN0
cmVhbVNldFByb3BlcnR5KG1fcmVhZFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xT
ZXR0aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3RyZWFtU2V0UHJvcGVy
dHkobV93cml0ZVN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0aW5ncywgc2V0
dGluZ3MuZ2V0KCkpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5j
cHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsOSBAQAogI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5o
IgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5o
IgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5o
IgotI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAko
cmV2aXNpb24gNTYwOTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVn
aXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIHZvaWQg
YWRkVG9UZXh0Q29kZWNNYXAoY29uc3QgY2hhcgogCiBzdGF0aWMgdm9pZCBwcnVuZUJsYWNrbGlz
dGVkQ29kZWNzKCkKIHsKLSAgICBzaXplX3QgYmxhY2tsaXN0ZWRDb2RlY0xpc3RMZW5ndGggPSBz
aXplb2YodGV4dEVuY29kaW5nTmFtZUJsYWNrbGlzdCkgLyBzaXplb2YodGV4dEVuY29kaW5nTmFt
ZUJsYWNrbGlzdFswXSk7CisgICAgc2l6ZV90IGJsYWNrbGlzdGVkQ29kZWNMaXN0TGVuZ3RoID0g
QVJSQVlfTEVOR1RIKHRleHRFbmNvZGluZ05hbWVCbGFja2xpc3QpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYmxhY2tsaXN0ZWRDb2RlY0xpc3RMZW5ndGg7ICsraSkgewogICAgICAgICBj
b25zdCBjaGFyKiBhdG9taWNOYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KHRleHRFbmNv
ZGluZ05hbWVCbGFja2xpc3RbaV0pOwogICAgICAgICBpZiAoIWF0b21pY05hbWUpCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiA1NjA5NCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2w6Omhhc1ZhbGlkQXZnQ2hh
clcKICAgICBpZiAoIWZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwKSB7CiAgICAg
ICAgIGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwID0gbmV3IEhhc2hTZXQ8QXRv
bWljU3RyaW5nPjsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplb2YoZm9udEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGgpIC8gc2l6ZW9mKGZvbnRGYW1p
bGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoWzBdKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRo
KTsgaSsrKQogICAgICAgICAgICAgZm9udEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhNYXAt
PmFkZChBdG9taWNTdHJpbmcoZm9udEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhbaV0pKTsK
ICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAJKHJldmlzaW9uIDU2MDk0
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAj
aWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4K
QEAgLTYyLDcgKzYzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaW50ZXJuZXRFeHBs
bwogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDEsIDEgIC8v
IH0KIH07CiAKLXN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJuZXRFeHBsb3JlckxpbmVCcmVha3NB
ZnRlclF1ZXN0aW9uTWFya1RhYmxlU2l6ZSA9IHNpemVvZihpbnRlcm5ldEV4cGxvcmVyTGluZUJy
ZWFrc0FmdGVyUXVlc3Rpb25NYXJrVGFibGUpIC8gc2l6ZW9mKCppbnRlcm5ldEV4cGxvcmVyTGlu
ZUJyZWFrc0FmdGVyUXVlc3Rpb25NYXJrVGFibGUpOworc3RhdGljIGNvbnN0IHNpemVfdCBpbnRl
cm5ldEV4cGxvcmVyTGluZUJyZWFrc0FmdGVyUXVlc3Rpb25NYXJrVGFibGVTaXplID0gQVJSQVlf
TEVOR1RIKGludGVybmV0RXhwbG9yZXJMaW5lQnJlYWtzQWZ0ZXJRdWVzdGlvbk1hcmtUYWJsZSk7
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRCcmVha0FmdGVyKFVDaGFyIGNoLCBVQ2hhciBu
ZXh0Q2gpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkocmV2aXNpb24gNTYwOTQp
CisrKyBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY3LDE5ICsxNjcsMTkgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlQW5kU2tpcFR5cGUoY29u
cwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCpjdXJyVHJhbnNmb3JtID09
ICdzJykgewotICAgICAgICBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHNrZXdY
RGVzYywgc2l6ZW9mKHNrZXdYRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgaWYgKHNr
aXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBza2V3WERlc2MsIEFSUkFZX0xFTkdUSChza2V3
WERlc2MpKSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1f
U0tFV1g7Ci0gICAgICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBz
a2V3WURlc2MsIHNpemVvZihza2V3WURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIGVs
c2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBza2V3WURlc2MsIEFSUkFZX0xF
TkdUSChza2V3WURlc2MpKSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19U
UkFOU0ZPUk1fU0tFV1k7Ci0gICAgICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9y
bSwgZW5kLCBzY2FsZURlc2MsIHNpemVvZihzY2FsZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisg
ICAgICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBzY2FsZURlc2Ms
IEFSUkFZX0xFTkdUSChzY2FsZURlc2MpKSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zv
cm06OlNWR19UUkFOU0ZPUk1fU0NBTEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCB0
cmFuc2xhdGVEZXNjLCBzaXplb2YodHJhbnNsYXRlRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAg
ICB9IGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCB0cmFuc2xhdGVEZXNj
LCBBUlJBWV9MRU5HVEgodHJhbnNsYXRlRGVzYykpKQogICAgICAgICB0eXBlID0gU1ZHVHJhbnNm
b3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTsKLSAgICBlbHNlIGlmIChza2lwU3RyaW5nKGN1
cnJUcmFuc2Zvcm0sIGVuZCwgcm90YXRlRGVzYywgc2l6ZW9mKHJvdGF0ZURlc2MpIC8gc2l6ZW9m
KFVDaGFyKSkpCisgICAgZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHJv
dGF0ZURlc2MsIEFSUkFZX0xFTkdUSChyb3RhdGVEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdU
cmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fUk9UQVRFOwotICAgIGVsc2UgaWYgKHNraXBTdHJpbmco
Y3VyclRyYW5zZm9ybSwgZW5kLCBtYXRyaXhEZXNjLCBzaXplb2YobWF0cml4RGVzYykgLyBzaXpl
b2YoVUNoYXIpKSkKKyAgICBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwg
bWF0cml4RGVzYywgQVJSQVlfTEVOR1RIKG1hdHJpeERlc2MpKSkKICAgICAgICAgdHlwZSA9IFNW
R1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9NQVRSSVg7CiAgICAgZWxzZSAKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24gNTYwOTQpCisrKyBXZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAg
Ym9vbCBTVkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdAogICAgIGlmIChjdXJyVmll
d1NwZWMgPj0gZW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXNraXBTdHJp
bmcoY3VyclZpZXdTcGVjLCBlbmQsIHN2Z1ZpZXdTcGVjLCBzaXplb2Yoc3ZnVmlld1NwZWMpIC8g
c2l6ZW9mKFVDaGFyKSkpCisgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCBz
dmdWaWV3U3BlYywgQVJSQVlfTEVOR1RIKHN2Z1ZpZXdTcGVjKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0g
JygnICkKQEAgLTk3LDcgKzk3LDcgQEAgYm9vbCBTVkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhj
b25zdCBTdAogCiAgICAgd2hpbGUgKGN1cnJWaWV3U3BlYyA8IGVuZCAmJiAqY3VyclZpZXdTcGVj
ICE9ICcpJykgewogICAgICAgICBpZiAoKmN1cnJWaWV3U3BlYyA9PSAndicpIHsKLSAgICAgICAg
ICAgIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2aWV3Qm94U3BlYywgc2l6ZW9m
KHZpZXdCb3hTcGVjKSAvIHNpemVvZihVQ2hhcikpKSB7CisgICAgICAgICAgICBpZiAoc2tpcFN0
cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdmlld0JveFNwZWMsIEFSUkFZX0xFTkdUSCh2aWV3Qm94
U3BlYykpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1
cnJWaWV3U3BlYyAhPSAnKCcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIFNW
R1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0CiAgICAgICAgICAgICAgICAgaWYgKGN1
cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKScpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdmlld1Rh
cmdldFNwZWMsIHNpemVvZih2aWV3VGFyZ2V0U3BlYykgLyBzaXplb2YoVUNoYXIpKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2aWV3VGFy
Z2V0U3BlYywgQVJSQVlfTEVOR1RIKHZpZXdUYXJnZXRTcGVjKSkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyclZpZXdTcGVjID49IGVuZCB8fCAqY3VyclZpZXdTcGVjICE9ICcoJykKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiB2aWV3VGFyZ2V0U3RhcnQgPSArK2N1cnJWaWV3U3BlYzsKQEAgLTEyMSw3ICsxMjEsNyBAQCBi
b29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoKmN1
cnJWaWV3U3BlYyA9PSAneicpIHsKLSAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmll
d1NwZWMsIGVuZCwgem9vbUFuZFBhblNwZWMsIHNpemVvZih6b29tQW5kUGFuU3BlYykgLyBzaXpl
b2YoVUNoYXIpKSkKKyAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVu
ZCwgem9vbUFuZFBhblNwZWMsIEFSUkFZX0xFTkdUSCh6b29tQW5kUGFuU3BlYykpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChjdXJyVmlld1NwZWMgPj0g
ZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNv
bnN0IFN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY3VyclZp
ZXdTcGVjKys7CiAgICAgICAgIH0gZWxzZSBpZiAoKmN1cnJWaWV3U3BlYyA9PSAncCcpIHsKLSAg
ICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgcHJlc2VydmVBc3Bl
Y3RSYXRpb1NwZWMsIHNpemVvZihwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYykgLyBzaXplb2YoVUNo
YXIpKSkKKyAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgcHJl
c2VydmVBc3BlY3RSYXRpb1NwZWMsIEFSUkFZX0xFTkdUSChwcmVzZXJ2ZUFzcGVjdFJhdGlvU3Bl
YykpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChjdXJy
Vmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJz
ZVZpZXdTcGVjKGNvbnN0IFN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgY3VyclZpZXdTcGVjKys7CiAgICAgICAgIH0gZWxzZSBpZiAoKmN1cnJWaWV3U3BlYyA9
PSAndCcpIHsKLSAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwg
dHJhbnNmb3JtU3BlYywgc2l6ZW9mKHRyYW5zZm9ybVNwZWMpIC8gc2l6ZW9mKFVDaGFyKSkpCisg
ICAgICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3VyclZpZXdTcGVjLCBlbmQsIHRyYW5zZm9ybVNw
ZWMsIEFSUkFZX0xFTkdUSCh0cmFuc2Zvcm1TcGVjKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3
U3BlYyAhPSAnKCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHWm9v
bUFuZFBhbi5jcHAJKHJldmlzaW9uIDU2MDk0KQorKysgV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBh
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgc3RhdGljIGNvbnN0IFVDaGFy
IG1hZ25pZnlbXSA9ICB7J20nLCAnYQogCiBib29sIFNWR1pvb21BbmRQYW46OnBhcnNlWm9vbUFu
ZFBhbihjb25zdCBVQ2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kKQogewotICAgIGlmIChz
a2lwU3RyaW5nKHN0YXJ0LCBlbmQsIGRpc2FibGUsIHNpemVvZihkaXNhYmxlKSAvIHNpemVvZihV
Q2hhcikpKQorICAgIGlmIChza2lwU3RyaW5nKHN0YXJ0LCBlbmQsIGRpc2FibGUsIEFSUkFZX0xF
TkdUSChkaXNhYmxlKSkpCiAgICAgICAgIHNldFpvb21BbmRQYW4oU1ZHX1pPT01BTkRQQU5fRElT
QUJMRSk7Ci0gICAgZWxzZSBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5kLCBtYWduaWZ5LCBzaXpl
b2YobWFnbmlmeSkgLyBzaXplb2YoVUNoYXIpKSkKKyAgICBlbHNlIGlmIChza2lwU3RyaW5nKHN0
YXJ0LCBlbmQsIG1hZ25pZnksIEFSUkFZX0xFTkdUSChtYWduaWZ5KSkpCiAgICAgICAgIHNldFpv
b21BbmRQYW4oU1ZHX1pPT01BTkRQQU5fTUFHTklGWSk7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiA1NjA5NCkKKysr
IFdlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAzLDcg
KzcwMyw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUZ1bmN0aW9uTWFwKCkKICAgICAgICAgeyAidHJh
bnNsYXRlIiwgeyAmY3JlYXRlRnVuVHJhbnNsYXRlLCAzIH0gfSwKICAgICAgICAgeyAidHJ1ZSIs
IHsgJmNyZWF0ZUZ1blRydWUsIDAgfSB9LAogICAgIH07Ci0gICAgY29uc3QgdW5zaWduZWQgaW50
IG51bUZ1bmN0aW9ucyA9IHNpemVvZihmdW5jdGlvbnMpIC8gc2l6ZW9mKGZ1bmN0aW9uc1swXSk7
CisgICAgY29uc3QgdW5zaWduZWQgaW50IG51bUZ1bmN0aW9ucyA9IEFSUkFZX0xFTkdUSChmdW5j
dGlvbnMpOwogCiAgICAgZnVuY3Rpb25NYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9u
UmVjPjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnVuY3Rpb25zOyArK2kpCklu
ZGV4OiBXZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94
bWwvWFBhdGhQYXJzZXIuY3BwCShyZXZpc2lvbiA1NjA5NCkKKysrIFdlYkNvcmUveG1sL1hQYXRo
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDEzIEBAIHN0YXRpYyBYTUxD
YXQgY2hhckNhdChVQ2hhciBhQ2hhcikKICAgICByZXR1cm4gTm90UGFydE9mTmFtZTsKIH0KIAor
c3RydWN0IEF4aXNOYW1lIHsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIFN0ZXA6OkF4aXMg
YXhpczsKK307CisKIHN0YXRpYyB2b2lkIHNldFVwQXhpc05hbWVzTWFwKEF4aXNOYW1lc01hcCYg
YXhpc05hbWVzKQogewotICAgIHN0cnVjdCBBeGlzTmFtZSB7Ci0gICAgICAgIGNvbnN0IGNoYXIq
IG5hbWU7Ci0gICAgICAgIFN0ZXA6OkF4aXMgYXhpczsKLSAgICB9OwogICAgIGNvbnN0IEF4aXNO
YW1lIGF4aXNOYW1lTGlzdFtdID0gewogICAgICAgICB7ICJhbmNlc3RvciIsIFN0ZXA6OkFuY2Vz
dG9yQXhpcyB9LAogICAgICAgICB7ICJhbmNlc3Rvci1vci1zZWxmIiwgU3RlcDo6QW5jZXN0b3JP
clNlbGZBeGlzIH0sCkBAIC05NCw3ICs5NSw3IEBAIHN0YXRpYyB2b2lkIHNldFVwQXhpc05hbWVz
TWFwKEF4aXNOYW1lc00KICAgICAgICAgeyAicHJlY2VkaW5nLXNpYmxpbmciLCBTdGVwOjpQcmVj
ZWRpbmdTaWJsaW5nQXhpcyB9LAogICAgICAgICB7ICJzZWxmIiwgU3RlcDo6U2VsZkF4aXMgfQog
ICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihheGlzTmFtZUxpc3Qp
IC8gc2l6ZW9mKGF4aXNOYW1lTGlzdFswXSk7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgQVJSQVlfTEVOR1RIKGF4aXNOYW1lTGlzdCk7ICsraSkKICAgICAgICAgYXhpc05hbWVz
LnNldChheGlzTmFtZUxpc3RbaV0ubmFtZSwgYXhpc05hbWVMaXN0W2ldLmF4aXMpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>