<?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>230867</bug_id>
          
          <creation_ts>2021-09-27 16:11:13 -0700</creation_ts>
          <short_desc>[libpas] Fix coalescing of the large sharing pool and make it easy to introspect it (update to e4d20851ee9ff00f2962b349a9ff8465695a83d7)</short_desc>
          <delta_ts>2021-09-28 10:04:20 -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>bmalloc</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797689</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-27 16:11:13 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797690</commentid>
    <comment_count>1</comment_count>
      <attachid>439409</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-27 16:16:53 -0700</bug_when>
    <thetext>Created attachment 439409
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797695</commentid>
    <comment_count>2</comment_count>
      <attachid>439412</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-27 16:20:45 -0700</bug_when>
    <thetext>Created attachment 439412
patchy mcpatcherson</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797698</commentid>
    <comment_count>3</comment_count>
      <attachid>439413</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-27 16:26:21 -0700</bug_when>
    <thetext>Created attachment 439413
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797928</commentid>
    <comment_count>4</comment_count>
      <attachid>439413</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-28 09:48:11 -0700</bug_when>
    <thetext>Comment on attachment 439413
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797936</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-28 10:03:16 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/283178/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797938</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-28 10:04:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83627842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439409</attachid>
            <date>2021-09-27 16:16:53 -0700</date>
            <delta_ts>2021-09-27 16:20:45 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24014</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE1MikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA5LTI3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gRml4IGNvYWxlc2Np
bmcgb2YgdGhlIGxhcmdlIHNoYXJpbmcgcG9vbCBhbmQgbWFrZSBpdCBlYXN5IHRvIGludHJvc3Bl
Y3QgaXQgKHVwZGF0ZSB0byBlNGQyMDg1MWVlOWZmMDBmMjk2MmIzNDlhOWZmODQ2NTY5NWE4M2Q3
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBh
ZGRzIHRoZSBhYmlsaXR5IHRvIGVuYWJsZSB0aGUgbGlicGFzIHN0YXR1cyByZXBvcnRlciwgYWRk
cyBhIGxhcmdlIHNoYXJpbmcgcG9vbCBkdW1wIHRvCisgICAgICAgIHRoZSBzdGF0dXMgcmVwb3J0
LCBhbmQgZml4ZXMgYSBsYXJnZSBzaGFyaW5nIHBvb2wgY29hbGVzY2luZyBidWcgZm91bmQgYnkg
ZG9pbmcgdGhhdC4gUHJldmlvdXNseQorICAgICAgICB3ZSB3ZXJlbid0IGNvYWxlc2NpbmcgdGhp
bmdzIHRoYXQgYXJlIG5vdCBmcmVlK2NvbW1pdHRlZC4KKworICAgICAgICBBbHNvIHVwZGF0ZXMg
dGhlIGV4cG9ydCBzY3JpcHQgdGhhdCBJIHVzZSB0byBrZWVwIHRoZSBsaWJwYXMgZ2l0IHJlcG8g
aW4gc3luYyB3aXRoIHdoYXQncyBpbiBXSy4KKworICAgICAgICBUaGUgbGFyZ2Ugc2hhcmluZyBw
b29sIGlzIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggbGlicGFzIGNhbiBmaW5kIG1lbW9yeSB0aGF0
IGNhbiBiZSBkZWNvbW1pdHRlZAorICAgICAgICBhY3Jvc3MgaXNvbGF0ZWQgbGFyZ2UgaGVhcHMs
IGV2ZW4gaWYgdGhvc2UgbGFyZ2UgaGVhcHMgc2hhcmUgcGFnZXMgd2l0aCBvbmUgYW5vdGhlci4g
VGhlIG1haW4KKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmUgaXMgYSByZWQtYmxhY2sgdHJlZSBvZiBu
b2RlcyB0aGF0IHJlcHJlc2VudCBtZW1vcnkgcmFuZ2VzLiBJZiB0aGVyZSBhcmUgdHdvCisgICAg
ICAgIGFkamFjZW50IHJhbmdlcyBvZiBtZW1vcnkgdGhhdCBhcmUgYm90aCBmdWxseSBsaXZlIGFu
ZCBjb21taXR0ZWQgb3IgYm90aCBkZWNvbW1pdHRlZCwgdGhlbiB3ZQorICAgICAgICB3YW50IHRo
b3NlIHRvIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2luZ2xlIG5vZGUuIFRoYXQgd2Fzbid0IHF1
aXRlIHdvcmtpbmcgcmlnaHQuIEV2ZW4gdGhlCisgICAgICAgIGxpYnBhcyB0ZXN0IGZvciB0aGlz
IHdhcyB0ZXN0aW5nIHRoZSB3cm9uZyB0aGluZy4gVGhpcyBmaXhlcyB0aGUgYmVoYXZpb3IgYW5k
IHRoZSB0ZXN0LiBJdCdzCisgICAgICAgIHBlcmYtbmV1dHJhbCBzaW5jZSBsYXJnZSBoZWFwcyB1
c3VhbGx5IGhhdmUgYSBzbWFsbCBudW1iZXIgb2Ygb2JqZWN0cyBpbiB0aGVtIGFueXdheS4KKwor
ICAgICAgICAqIGJtYWxsb2MvRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RW52
aXJvbm1lbnQ6OkVudmlyb25tZW50KToKKyAgICAgICAgKiBsaWJwYXMvZXhwb3J0LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBsaWJwYXMvZXhwb3J0LnNoOiBSZW1vdmVkLgorICAgICAgICAqIGxpYnBh
cy9zcmMvbGlicGFzL3Bhc19iaXRmaXRfZGlyZWN0b3J5LmM6CisgICAgICAgIChwYXNfYml0Zml0
X2RpcmVjdG9yeV9jb25zdHJ1Y3QpOgorICAgICAgICAocGFzX2JpdGZpdF9kaXJlY3RvcnlfZ2V0
X2ZpcnN0X2ZyZWVfdmlldyk6CisgICAgICAgICogbGlicGFzL3NyYy9saWJwYXMvcGFzX2xhcmdl
X3NoYXJpbmdfcG9vbC5jOgorICAgICAgICAoc3RhdGVzX21hdGNoKToKKyAgICAgICAgKiBsaWJw
YXMvc3JjL2xpYnBhcy9wYXNfc3RhdHVzX3JlcG9ydGVyLmM6CisgICAgICAgIChwYXNfc3RhdHVz
X3JlcG9ydGVyX2R1bXBfYml0Zml0X2RpcmVjdG9yeSk6CisgICAgICAgIChkdW1wX2xhcmdlX3No
YXJpbmdfcG9vbF9ub2RlX2NhbGxiYWNrKToKKyAgICAgICAgKHBhc19zdGF0dXNfcmVwb3J0ZXJf
ZHVtcF9sYXJnZV9zaGFyaW5nX3Bvb2wpOgorICAgICAgICAocGFzX3N0YXR1c19yZXBvcnRlcl9k
dW1wX2V2ZXJ5dGhpbmcpOgorICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNf
cmVwb3J0ZXIuaDoKKyAgICAgICAgKiBsaWJwYXMvc3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9vbER1
bXAuY3BwOgorICAgICAgICAqIGxpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sRHVtcC5o
OgorICAgICAgICAqIGxpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sVGVzdHMuY3BwOgor
ICAgICAgICAoc3RkOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAoc3RkOjpSYW5nZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChzdGQ6OlJhbmdlOjpvcGVyYXRvciE9IGNvbnN0KToKKyAg
ICAgICAgKHN0ZDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChzdGQ6OmFzc2VydFN0YXRlKToKKyAg
ICAgICAgKHN0ZDo6dGVzdEdvb2RDb2FsZXNjZUVwb2NoVXBkYXRlKToKKyAgICAgICAgKGFkZExh
cmdlU2hhcmluZ1Bvb2xUZXN0cyk6CisgICAgICAgIChzdGQ6OnRlc3RCYWRDb2FsZXNjZUVwb2No
VXBkYXRlKTogRGVsZXRlZC4KKwogMjAyMS0wOS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIGZpeCBEZWJ1Z0hlYXAKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksMTAgQEAgaW50IG1hbGxvY19lbmdhZ2VkX25hbm8odm9pZCk7CiB9CiAjZW5kaWYKIAorI2lm
IEJVU0UoTElCUEFTKQorI2luY2x1ZGUgInBhc19zdGF0dXNfcmVwb3J0ZXIuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHN0YXRpYyBib29sIGlzTWFsbG9jRW52aXJvbm1lbnRW
YXJpYWJsZVNldCgpCkBAIC0xMzYsNiArMTQwLDE0IEBAIERFRklORV9TVEFUSUNfUEVSX1BST0NF
U1NfU1RPUkFHRShFbnZpcm8KIEVudmlyb25tZW50OjpFbnZpcm9ubWVudChjb25zdCBMb2NrSG9s
ZGVyJikKICAgICA6IG1faXNEZWJ1Z0hlYXBFbmFibGVkKGNvbXB1dGVJc0RlYnVnSGVhcEVuYWJs
ZWQoKSkKIHsKKyNpZiBCVVNFKExJQlBBUykKKyAgICBjb25zdCBjaGFyKiBzdGF0dXNSZXBvcnRl
ciA9IGdldGVudigiV2ViS2l0UGFzU3RhdHVzUmVwb3J0ZXIiKTsKKyAgICBpZiAoc3RhdHVzUmVw
b3J0ZXIpIHsKKyAgICAgICAgdW5zaWduZWQgZW5hYmxlZDsKKyAgICAgICAgaWYgKHNzY2FuZihz
dGF0dXNSZXBvcnRlciwgIiV1IiwgJmVuYWJsZWQpID09IDEpCisgICAgICAgICAgICBwYXNfc3Rh
dHVzX3JlcG9ydGVyX2VuYWJsZWQgPSBlbmFibGVkOworICAgIH0KKyNlbmRpZgogfQogCiBib29s
IEVudmlyb25tZW50Ojpjb21wdXRlSXNEZWJ1Z0hlYXBFbmFibGVkKCkKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2xpYnBhcy9leHBvcnQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGli
cGFzL2V4cG9ydC5yYgkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvZXhw
b3J0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisjIS91c3IvYmluL2VudiBy
dWJ5CisjIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisj
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICdmaWxldXRp
bHMnCityZXF1aXJlICdnZXRvcHRsb25nJworcmVxdWlyZSAncGF0aG5hbWUnCisKK29wdHMgPSBH
ZXRvcHRMb25nLm5ldygKKyAgICBbICctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19BUkdV
TUVOVCBdLAorICAgIFsgJy0tZm9yY2UnLCAnLWYnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVCBd
CispCisKKyRmb3JjZSA9IGZhbHNlCisKK29wdHMuZWFjaCB7CisgICAgfCBvcHQsIGFyZyB8Cisg
ICAgY2FzZSBvcHQKKyAgICB3aGVuICctLWhlbHAnCisgICAgICAgIHB1dHMgIlVzYWdlOiAuL2V4
cG9ydC5yYiBbLWZdIDxkZXN0aW5hdGlvbj4iCisgICAgICAgIHB1dHMKKyAgICAgICAgcHV0cyAi
Q29waWVzIGxvY2FsIGdpdCBjaGVja291dCAoaW5jbHVkaW5nIHVuc3RhZ2VkIGNoYW5nZXMgdG8g
ZmlsZXMgaW4gdGhlIHJlcG8pIHRvIHRoZSIKKyAgICAgICAgcHV0cyAiZGVzdGluYXRpb24uIE11
c3QgYmUgcnVuIGluIHRoZSByZXBvJ3MgZGlyZWN0b3J5ICh0aGUgZGlyZWN0b3J5IHRoYXQgY29u
dGFpbnMgdGhpcyIKKyAgICAgICAgcHV0cyAic2NyaXB0KS4gRG9lcyBub3QgY2hhbmdlIHRoZSB0
aW1lc3RhbXAgb2YgZmlsZXMgdGhhdCBkaWQgbm90IGNoYW5nZS4iCisgICAgICAgIHB1dHMKKyAg
ICAgICAgcHV0cyAiT3B0aW9uczoiCisgICAgICAgIHB1dHMgIi0taGVscCAoLWgpICAgICBQcmlu
dCB0aGlzIG1lc3NhZ2UuIgorICAgICAgICBwdXRzICItLWZvcmNlICgtZikgICAgQ29weSB0byB0
aGUgZGVzdGluYXRpb24gZXZlbiBpZiBpdCBkb2Vzbid0IGxvb2sgbGlrZSBhIGxpYnBhcyBkaXJl
Y3RvcnkuIgorICAgICAgICBleGl0IDAKKworICAgIHdoZW4gJy0tZm9yY2UnCisgICAgICAgICRm
b3JjZSA9IHRydWUKKworICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICBlbmQKK30KKworcmFp
c2UgIkJhZCBhcmd1bWVudDsgc2VlIC0taGVscCIgdW5sZXNzIEFSR1YubGVuZ3RoID09IDEKKwor
JGRlc3RpbmF0aW9uID0gUGF0aG5hbWUubmV3KEFSR1ZbMF0pLnJlYWxwYXRoCisKK3VubGVzcyBQ
YXRobmFtZS5uZXcoInNyYy9saWJwYXMiKS5kaXJlY3Rvcnk/CisgICAgcHV0cyAiRXJyb3I6IG11
c3QgcnVuIHRoaXMgc2NyaXB0IGZyb20gYSBsaWJwYXMgZGlyZWN0b3J5LiIKKyAgICBleGl0IDEK
K2VuZAorCit1bmxlc3MgKCRkZXN0aW5hdGlvbiArICJzcmMvbGlicGFzIikuZGlyZWN0b3J5Pwor
ICAgIGlmICRmb3JjZQorICAgICAgICBwdXRzICJXYXJuaW5nOiBkZXN0aW5hdGlvbiBkb2VzIG5v
dCBsb29rIGxpa2UgYSBsaWJwYXMgZGlyZWN0b3J5LiIKKyAgICBlbHNlCisgICAgICAgIHB1dHMg
IkVycm9yOiBkZXN0aW5hdGlvbiBkb2VzIG5vdCBsb29rIGxpa2UgYSBsaWJwYXMgZGlyZWN0b3J5
OyB1c2UgLS1mb3JjZSB0byBvdmVycmlkZS4iCisgICAgICAgIGV4aXQgMQorICAgIGVuZAorZW5k
CisKK2RlZiBwcmVwYXJlRGlyZWN0b3J5KGRpcmVjdG9yeSkKKyAgICByZXR1cm4gaWYgZGlyZWN0
b3J5LmRpcmVjdG9yeT8KKyAgICByYWlzZSBpZiBkaXJlY3RvcnkudG9fcyA9PSAiLiIKKyAgICBy
YWlzZSBpZiBkaXJlY3RvcnkudG9fcy5sZW5ndGggPD0gJGRlc3RpbmF0aW9uLnRvX3MubGVuZ3Ro
CisgICAgcHJlcGFyZURpcmVjdG9yeShkaXJlY3RvcnkuZGlybmFtZSkKKyAgICBwdXRzICJQcmVw
YXJpbmcgZGlyZWN0b3J5ICN7ZGlyZWN0b3J5fSIKKyAgICBGaWxlVXRpbHMucm1fcmYoZGlyZWN0
b3J5KQorICAgIGRpcmVjdG9yeS5ta2RpcgorZW5kCisKK0lPLnBvcGVuKCJnaXQgbHMtZmlsZXMi
LCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgaW5wLmVhY2hfbGluZSB7CisgICAgICAgIHwgbGlu
ZSB8CisgICAgICAgIGxpbmUuY2hvbXAhCisgICAgICAgIGlucHV0RmlsZSA9IFBhdGhuYW1lLm5l
dyhsaW5lKQorCisgICAgICAgIHJhaXNlIGlmIGlucHV0RmlsZS5kaXJlY3Rvcnk/CisgICAgICAg
IAorICAgICAgICBvdXRwdXRGaWxlID0gJGRlc3RpbmF0aW9uICsgbGluZQorCisgICAgICAgIGNv
bnRlbnRzID0gaW5wdXRGaWxlLnJlYWQKKworICAgICAgICBpZiBvdXRwdXRGaWxlLmV4aXN0PyBh
bmQKKyAgICAgICAgICBpbnB1dEZpbGUuZGlyZWN0b3J5PyA9PSBvdXRwdXRGaWxlLmRpcmVjdG9y
eT8gYW5kCisgICAgICAgICAgaW5wdXRGaWxlLmV4ZWN1dGFibGU/ID09IG91dHB1dEZpbGUuZXhl
Y3V0YWJsZT8gYW5kCisgICAgICAgICAgY29udGVudHMgPT0gb3V0cHV0RmlsZS5yZWFkCisgICAg
ICAgICAgICAjcHV0cyAiU2tpcHBpbmcgI3tsaW5lfSIKKyAgICAgICAgICAgIG5leHQKKyAgICAg
ICAgZW5kCisKKyAgICAgICAgcHV0cyAiQ29weWluZyAje2xpbmV9IHRvICN7b3V0cHV0RmlsZX0i
CisKKyAgICAgICAgcHJlcGFyZURpcmVjdG9yeShvdXRwdXRGaWxlLmRpcm5hbWUpCisKKyAgICAg
ICAgRmlsZVV0aWxzLnJtX3JmKG91dHB1dEZpbGUpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUo
Y29udGVudHMpCisKKyAgICAgICAgb3V0cHV0RmlsZS5jaG1vZCgwNzU1KSBpZiBpbnB1dEZpbGUu
ZXhlY3V0YWJsZT8KKyAgICB9Cit9CisKK3JhaXNlIHVubGVzcyAkPyA9PSAwCisKKwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5yYgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9leHBvcnQuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5zaAkocmV2aXNpb24gMjgz
MDExKQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5zaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM5ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
IyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
IyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotc2V0IC1lCi1zZXQgLXgKLQotcm0gLXJmIGxpYnBhcy1leHBvcnQKLWdpdCBjbG9uZSAu
IGxpYnBhcy1leHBvcnQKLXJtIC1yZiBsaWJwYXMtZXhwb3J0Ly5naXQKLQotd2hlcmU9JDEKLQot
aWYgWyAieCR3aGVyZSIgIT0gIngiIF0KLXRoZW4KLSAgICBkaXR0byBsaWJwYXMtZXhwb3J0ICR3
aGVyZQotICAgIHJtIC1yZiBsaWJwYXMtZXhwb3J0Ci1maQotCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvZXhwb3J0LnNoCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfYml0Zml0X2Rp
cmVjdG9yeS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFz
L3Bhc19iaXRmaXRfZGlyZWN0b3J5LmMJKHJldmlzaW9uIDI4MzAxMSkKKysrIFNvdXJjZS9ibWFs
bG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19iaXRmaXRfZGlyZWN0b3J5LmMJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDYgKzQ2LDEwIEBAIHZvaWQgcGFzX2JpdGZpdF9kaXJlY3RvcnlfY29uc3RydWN0
KHBhc18KIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKyAgICAv
KiBOT1RFIC0gdGhpcyB3b3JrcyBldmVuIGlmIHRoZSBjb25maWcgaXMgZGlzYWJsZWQsIGFuZCBw
cm9kdWNlcyBhIGRpcmVjdG9yeSB0aGF0IGlzIGVtcHR5IGFuZAorICAgICAgIGRvZXMgbm90aGlu
Zy4gVGhpcyBtYWtlcyBzZW5zZSBiZWNhdXNlIGl0IG1ha2VzIGl0IGVhc3kgdG8gaXRlcmF0ZSBv
dmVyIHRoZSBkaXJlY3RvcmllcyBpbiBhIGhlYXAKKyAgICAgICB3aXRob3V0IGtub3dpbmcgd2hh
dCB5b3VyIGNvbmZpZyBpcy4gKi8KKwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBwYXNfbG9n
KCJDcmVhdGluZyBkaXJlY3RvcnkgJXBcbiIsIGRpcmVjdG9yeSk7CiAgICAgCkBAIC01NCw3ICs1
OCw3IEBAIHZvaWQgcGFzX2JpdGZpdF9kaXJlY3RvcnlfY29uc3RydWN0KHBhc18KICAgICBwYXNf
Yml0Zml0X2RpcmVjdG9yeV9tYXhfZnJlZV92ZWN0b3JfY29uc3RydWN0KCZkaXJlY3RvcnktPm1h
eF9mcmVlcyk7CiAgICAgcGFzX2JpdGZpdF9kaXJlY3Rvcnlfdmlld192ZWN0b3JfY29uc3RydWN0
KCZkaXJlY3RvcnktPnZpZXdzKTsKICAgICBwYXNfY29tcGFjdF9hdG9taWNfYml0Zml0X3NpemVf
Y2xhc3NfcHRyX3N0b3JlKCZkaXJlY3RvcnktPmxhcmdlc3Rfc2l6ZV9jbGFzcywgTlVMTCk7Ci0g
ICAgZGlyZWN0b3J5LT5jb25maWdfa2luZCA9IGNvbmZpZy0+a2luZDsKKyAgICBkaXJlY3Rvcnkt
PmNvbmZpZ19raW5kID0gY29uZmlnLT5iYXNlLmlzX2VuYWJsZWQgPyBjb25maWctPmtpbmQgOiBw
YXNfYml0Zml0X3BhZ2VfY29uZmlnX2tpbmRfbnVsbDsKIAogICAgIGRpcmVjdG9yeS0+aGVhcCA9
IGhlYXA7CiAgICAgcGFzX2JpdGZpdF9kaXJlY3Rvcnlfc2VnbWVudGVkX2JpdHZlY3RvcnNfY29u
c3RydWN0KCZkaXJlY3RvcnktPmJpdHZlY3RvcnMpOwpAQCAtNjIsNyArNjYsNyBAQCB2b2lkIHBh
c19iaXRmaXRfZGlyZWN0b3J5X2NvbnN0cnVjdChwYXNfCiAKICAgICAvKiBXZSBjb3VsZCBoYXZl
IGJlZW4gbGF6eSBhYm91dCB0aGlzIC0gYnV0IGl0J3MgcHJvYmFibHkgbm90IHN1cGVyIG5lY2Vz
c2FyeSBzaW5jZSB0aGUgcG9pbnQKICAgICAgICBvZiBiaXRmaXQgZ2xvYmFsIGRpcmVjdG9yaWVz
IGlzIHRoYXQgdGhlcmUgd29uJ3QgYmUgdG9vIG1hbnkgb2YgdGhlbS4gKi8KLSAgICBpZiAocGFz
X2JpdGZpdF9kaXJlY3RvcnlfZG9lc19zaGFyaW5nKGRpcmVjdG9yeSkpIHsKKyAgICBpZiAoY29u
ZmlnLT5iYXNlLmlzX2VuYWJsZWQgJiYgcGFzX2JpdGZpdF9kaXJlY3RvcnlfZG9lc19zaGFyaW5n
KGRpcmVjdG9yeSkpIHsKICAgICAgICAgcGFzX3BhZ2Vfc2hhcmluZ19wb29sX2FkZCgKICAgICAg
ICAgICAgICZwYXNfcGh5c2ljYWxfcGFnZV9zaGFyaW5nX3Bvb2wsCiAgICAgICAgICAgICBwYXNf
cGFnZV9zaGFyaW5nX3BhcnRpY2lwYW50X2NyZWF0ZSgKQEAgLTEwMiw2ICsxMDYsOCBAQCBwYXNf
Yml0Zml0X2RpcmVjdG9yeV9nZXRfZmlyc3RfZnJlZV92aWV3CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhc19iaXRmaXRfcGFnZV9jb25maWcqIHBhZ2VfY29uZmln
KQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworICAgIFBBU19B
U1NFUlQocGFnZV9jb25maWctPmJhc2UuaXNfZW5hYmxlZCk7CiAgICAgCiAgICAgZm9yICg7Oykg
ewogICAgICAgICBwYXNfZm91bmRfaW5kZXggZm91bmRfaW5kZXg7CkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2xhcmdlX3NoYXJpbmdf
cG9vbC5jCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xp
YnBhcy9wYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmMJKHdvcmtpbmcgY29weSkKQEAgLTI4NywxMyAr
Mjg3LDM5IEBAIHN1Y2Nlc3NvcihwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlKQogc3RhdGlj
IGJvb2wgc3RhdGVzX21hdGNoKHBhc19sYXJnZV9zaGFyaW5nX25vZGUqIGxlZnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFzX2xhcmdlX3NoYXJpbmdfbm9kZSogcmlnaHQpCiB7Ci0gICAg
cmV0dXJuIGxlZnQtPmlzX2NvbW1pdHRlZCA9PSByaWdodC0+aXNfY29tbWl0dGVkCi0gICAgICAg
ICYmIGxlZnQtPnN5bmNocm9uaXphdGlvbl9zdHlsZSA9PSByaWdodC0+c3luY2hyb25pemF0aW9u
X3N0eWxlCi0gICAgICAgICYmICgoIWxlZnQtPm51bV9saXZlX2J5dGVzICYmICFyaWdodC0+bnVt
X2xpdmVfYnl0ZXMpIHx8Ci0gICAgICAgICAgICAocGFzX3JhbmdlX3NpemUobGVmdC0+cmFuZ2Up
ID09IGxlZnQtPm51bV9saXZlX2J5dGVzICYmCi0gICAgICAgICAgICAgcGFzX3JhbmdlX3NpemUo
cmlnaHQtPnJhbmdlKSA9PSByaWdodC0+bnVtX2xpdmVfYnl0ZXMpKQotICAgICAgICAmJiAobGVm
dC0+dXNlX2Vwb2NoID09IHJpZ2h0LT51c2VfZXBvY2gKLSAgICAgICAgICAgIHx8ICghbGVmdC0+
aXNfY29tbWl0dGVkICYmICFsZWZ0LT5udW1fbGl2ZV9ieXRlcykpOworICAgIGJvb2wgYm90aF9l
bXB0eTsKKyAgICBib29sIGJvdGhfZnVsbDsKKyAgICAKKyAgICBpZiAobGVmdC0+aXNfY29tbWl0
dGVkICE9IHJpZ2h0LT5pc19jb21taXR0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChsZWZ0LT5zeW5jaHJvbml6YXRpb25fc3R5bGUgIT0gcmlnaHQtPnN5bmNocm9uaXphdGlv
bl9zdHlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm90aF9lbXB0eSA9CisgICAg
ICAgICFsZWZ0LT5udW1fbGl2ZV9ieXRlcyAmJgorICAgICAgICAhcmlnaHQtPm51bV9saXZlX2J5
dGVzOworICAgIAorICAgIGJvdGhfZnVsbCA9CisgICAgICAgIHBhc19yYW5nZV9zaXplKGxlZnQt
PnJhbmdlKSA9PSBsZWZ0LT5udW1fbGl2ZV9ieXRlcyAmJgorICAgICAgICBwYXNfcmFuZ2Vfc2l6
ZShyaWdodC0+cmFuZ2UpID09IHJpZ2h0LT5udW1fbGl2ZV9ieXRlczsKKworICAgIGlmICghYm90
aF9lbXB0eSAmJiAhYm90aF9mdWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvKiBS
aWdodCBub3c6IGJvdGggc2lkZXMgaGF2ZSBpZGVudGljYWwgY29tbWl0IHN0YXRlcyBhbmQgaWRl
bnRpY2FsIHN5bmNocm9uaXphdGlvbiBzdHllcy4gQW5kCisgICAgICAgZWl0aGVyIGJvdGggc2lk
ZXMgYXJlIGVtcHR5IG9yIGJvdGggc2lkZXMgYXJlIGZ1bGwuCisgICAgCisgICAgICAgVGhlIG9u
bHkgcmVhc29uIHdoeSB3ZSB3b3VsZG4ndCB3YW50IHRvIGNvYWxlc2NlIGlzIGlmIGVwb2NocyBk
aWRuJ3QgbWF0Y2guIEJ1dCB0aGF0IG9ubHkKKyAgICAgICBtYXR0ZXJzIHdoZW4gdGhlIG1lbW9y
eSBpcyBmcmVlIGFuZCBjb21taXR0ZWQuICovCisKKyAgICBpZiAoIWxlZnQtPmlzX2NvbW1pdHRl
ZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYm90aF9mdWxsKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBsZWZ0LT51c2VfZXBvY2ggPT0gcmlnaHQtPnVzZV9l
cG9jaDsKIH0KIAogc3RhdGljIGJvb2wgaXNfZWxpZ2libGUocGFzX2xhcmdlX3NoYXJpbmdfbm9k
ZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0
dXNfcmVwb3J0ZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xp
YnBhcy9wYXNfc3RhdHVzX3JlcG9ydGVyLmMJKHJldmlzaW9uIDI4MzAxMSkKKysrIFNvdXJjZS9i
bWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNfcmVwb3J0ZXIuYwkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgInBhc19oZWFwX3RhYmxlLmgiCiAjaW5j
bHVkZSAicGFzX2xhcmdlX2hlYXAuaCIKICNpbmNsdWRlICJwYXNfbGFyZ2VfbWFwLmgiCisjaW5j
bHVkZSAicGFzX2xhcmdlX3NoYXJpbmdfcG9vbC5oIgogI2luY2x1ZGUgInBhc19sYXJnZV91dGls
aXR5X2ZyZWVfaGVhcC5oIgogI2luY2x1ZGUgInBhc19sb2cuaCIKICNpbmNsdWRlICJwYXNfcGFn
ZV9zaGFyaW5nX3Bvb2wuaCIKQEAgLTE5Niw2ICsxOTcsOSBAQCBzdGF0aWMgdm9pZCByZXBvcnRf
Yml0Zml0X2RpcmVjdG9yeV9jb250CiB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9iaXRm
aXRfZGlyZWN0b3J5KAogICAgIHBhc19zdHJlYW0qIHN0cmVhbSwgcGFzX2JpdGZpdF9kaXJlY3Rv
cnkqIGRpcmVjdG9yeSkKIHsKKyAgICBpZiAoZGlyZWN0b3J5LT5jb25maWdfa2luZCA9PSBwYXNf
Yml0Zml0X3BhZ2VfY29uZmlnX2tpbmRfbnVsbCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAg
IHBhc19zdHJlYW1fcHJpbnRmKHN0cmVhbSwgIiAgICAgICAgICAgICVzIEdsb2JhbCBEaXIgKCVw
KTogIiwKICAgICAgICAgICAgICAgICAgICAgICBwYXNfYml0Zml0X3BhZ2VfY29uZmlnX3Zhcmlh
bnRfZ2V0X2NhcGl0YWxpemVkX3N0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFz
X2JpdGZpdF9wYWdlX2NvbmZpZ19raW5kX2dldF9jb25maWcoZGlyZWN0b3J5LT5jb25maWdfa2lu
ZCktPnZhcmlhbnQpLApAQCAtNjQ0LDYgKzY0OCwzOSBAQCB2b2lkIHBhc19zdGF0dXNfcmVwb3J0
ZXJfZHVtcF9hbGxfaGVhcHNfCiAgICAgcGFzX3N0cmVhbV9wcmludGYoc3RyZWFtLCAiXG4iKTsK
IH0KIAorc3RhdGljIGJvb2wgZHVtcF9sYXJnZV9zaGFyaW5nX3Bvb2xfbm9kZV9jYWxsYmFjayhw
YXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhcmcpCit7CisgICAgcGFzX3N0cmVhbSogc3Ry
ZWFtOworCisgICAgc3RyZWFtID0gYXJnOworCisgICAgcGFzX3N0cmVhbV9wcmludGYoc3RyZWFt
LCAiICAgICAgICAlcC4uLiVwOiAlcywgJXp1LyV6dSBsaXZlICglLjBsZiUlKSwgJWxsdSIsCisg
ICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKW5vZGUtPnJhbmdlLmJlZ2luLAorICAgICAgICAg
ICAgICAgICAgICAgICh2b2lkKilub2RlLT5yYW5nZS5lbmQsCisgICAgICAgICAgICAgICAgICAg
ICAgcGFzX2NvbW1pdF9tb2RlX2dldF9zdHJpbmcobm9kZS0+aXNfY29tbWl0dGVkKSwKKyAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5udW1fbGl2ZV9ieXRlcywKKyAgICAgICAgICAgICAgICAg
ICAgICBwYXNfcmFuZ2Vfc2l6ZShub2RlLT5yYW5nZSksCisgICAgICAgICAgICAgICAgICAgICAg
MTAwLiAqIChkb3VibGUpbm9kZS0+bnVtX2xpdmVfYnl0ZXMgLyAoZG91YmxlKXBhc19yYW5nZV9z
aXplKG5vZGUtPnJhbmdlKSwKKyAgICAgICAgICAgICAgICAgICAgICBub2RlLT51c2VfZXBvY2gp
OworCisgICAgaWYgKG5vZGUtPnN5bmNocm9uaXphdGlvbl9zdHlsZSAhPSBwYXNfcGh5c2ljYWxf
bWVtb3J5X2lzX2xvY2tlZF9ieV92aXJ0dWFsX3JhbmdlX2NvbW1vbl9sb2NrKSB7CisgICAgICAg
IHBhc19zdHJlYW1fcHJpbnRmKAorICAgICAgICAgICAgc3RyZWFtLCAiLCAlcyIsCisgICAgICAg
ICAgICBwYXNfcGh5c2ljYWxfbWVtb3J5X3N5bmNocm9uaXphdGlvbl9zdHlsZV9nZXRfc3RyaW5n
KG5vZGUtPnN5bmNocm9uaXphdGlvbl9zdHlsZSkpOworICAgIH0KKworICAgIHBhc19zdHJlYW1f
cHJpbnRmKHN0cmVhbSwgIlxuIik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBwYXNf
c3RhdHVzX3JlcG9ydGVyX2R1bXBfbGFyZ2Vfc2hhcmluZ19wb29sKHBhc19zdHJlYW0qIHN0cmVh
bSkKK3sKKyAgICBwYXNfc3RyZWFtX3ByaW50ZihzdHJlYW0sICIgICAgTGFyZ2Ugc2hhcmluZyBw
b29sIGNvbnRlbnRzOlxuIik7CisgICAgcGFzX2xhcmdlX3NoYXJpbmdfcG9vbF9mb3JfZWFjaChk
dW1wX2xhcmdlX3NoYXJpbmdfcG9vbF9ub2RlX2NhbGxiYWNrLCBzdHJlYW0sIHBhc19sb2NrX2lz
X2hlbGQpOworfQorCiB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF91dGlsaXR5X2hlYXAo
cGFzX3N0cmVhbSogc3RyZWFtKQogewogICAgIHBhc19zdHJlYW1fcHJpbnRmKHN0cmVhbSwgIiAg
ICBVdGlsaXR5IEhlYXA6XG4iKTsKQEAgLTk1OCw2ICs5OTUsMTAgQEAgdm9pZCBwYXNfc3RhdHVz
X3JlcG9ydGVyX2R1bXBfZXZlcnl0aGluZwogICAgIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9h
bGxfaGVhcHMoc3RyZWFtKTsKICAgICBwYXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfYWxsX3NoYXJl
ZF9wYWdlX2RpcmVjdG9yaWVzKHN0cmVhbSk7CiAgICAgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1w
X2FsbF9oZWFwc19ub25fdXRpbGl0eV9zdW1tYXJpZXMoc3RyZWFtKTsKKyAgICAKKyAgICBpZiAo
cGFzX3N0YXR1c19yZXBvcnRlcl9lbmFibGVkID49IDMpCisgICAgICAgIHBhc19zdGF0dXNfcmVw
b3J0ZXJfZHVtcF9sYXJnZV9zaGFyaW5nX3Bvb2woc3RyZWFtKTsKKyAgICAKICAgICBwYXNfc3Rh
dHVzX3JlcG9ydGVyX2R1bXBfdXRpbGl0eV9oZWFwKHN0cmVhbSk7CiAKICAgICBpZiAocGFzX3N0
YXR1c19yZXBvcnRlcl9lbmFibGVkID49IDMpIHsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBh
cy9zcmMvbGlicGFzL3Bhc19zdGF0dXNfcmVwb3J0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfc3RhdHVzX3JlcG9ydGVyLmgJKHJldmlzaW9u
IDI4MzAxMSkKKysrIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNf
cmVwb3J0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKGMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4LDcgQEAgUEFTX0FQSSB2b2lk
IHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9oZQogUEFTX0FQSSB2b2lkIHBhc19zdGF0dXNfcmVw
b3J0ZXJfZHVtcF9hbGxfaGVhcHMocGFzX3N0cmVhbSogc3RyZWFtKTsKIFBBU19BUEkgdm9pZCBw
YXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfYWxsX3NoYXJlZF9wYWdlX2RpcmVjdG9yaWVzKHBhc19z
dHJlYW0qIHN0cmVhbSk7CiBQQVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX2Fs
bF9oZWFwc19ub25fdXRpbGl0eV9zdW1tYXJpZXMocGFzX3N0cmVhbSogc3RyZWFtKTsKK1BBU19B
UEkgdm9pZCBwYXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfbGFyZ2Vfc2hhcmluZ19wb29sKHBhc19z
dHJlYW0qIHN0cmVhbSk7CiBQQVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX3V0
aWxpdHlfaGVhcChwYXNfc3RyZWFtKiBzdHJlYW0pOwogUEFTX0FQSSB2b2lkIHBhc19zdGF0dXNf
cmVwb3J0ZXJfZHVtcF90b3RhbF9mcmFnbWVudGF0aW9uKHBhc19zdHJlYW0qIHN0cmVhbSk7CiBQ
QVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX3RpZXJfdXBfcmF0ZXMocGFzX3N0
cmVhbSogc3RyZWFtKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJn
ZVNoYXJpbmdQb29sRHVtcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFz
L3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmNwcAkocmV2aXNpb24gMjgzMDExKQorKysg
U291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTYgQEAgdm9pZCBmb3JFYWNoTGFyZ2VTaGFyaW5n
UG9vbE5vZGUoZnVuY3RpbwogICAgIHBhc19sYXJnZV9zaGFyaW5nX3Bvb2xfZm9yX2VhY2goZm9y
RWFjaEFkYXB0ZXIsICZ2aXNpdG9yLCBwYXNfbG9ja19pc19ub3RfaGVsZCk7CiB9CiAKK3ZlY3Rv
cjxwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKj4gbGFyZ2VTaGFyaW5nUG9vbEFzVmVjdG9yKCkKK3sK
KyAgICB2ZWN0b3I8cGFzX2xhcmdlX3NoYXJpbmdfbm9kZSo+IHJlc3VsdDsKKyAgICBmb3JFYWNo
TGFyZ2VTaGFyaW5nUG9vbE5vZGUoWyZdIChwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlKSAt
PiBib29sIHsKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhub2RlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBkdW1wTGFyZ2VT
aGFyaW5nUG9vbCgpCiB7CiAgICAgY291dCA8PCAiTGFyZ2Ugc2hhcmluZyBwb29sOlxuIjsKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sRHVtcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJp
bmdQb29sRHVtcC5oCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMv
c3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9vbER1bXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsMTAgQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSAicGFzX2xhcmdlX3No
YXJpbmdfcG9vbC5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogdm9pZCBmb3JFYWNoTGFyZ2VTaGFy
aW5nUG9vbE5vZGUoc3RkOjpmdW5jdGlvbjxib29sKHBhc19sYXJnZV9zaGFyaW5nX25vZGUqKT4g
dmlzaXRvcik7CitzdGQ6OnZlY3RvcjxwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKj4gbGFyZ2VTaGFy
aW5nUG9vbEFzVmVjdG9yKCk7CiB2b2lkIGR1bXBMYXJnZVNoYXJpbmdQb29sKCk7CiAKICNlbmRp
ZiAvLyBUTEMKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJp
bmdQb29sVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMv
dGVzdC9MYXJnZVNoYXJpbmdQb29sVGVzdHMuY3BwCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3Vy
Y2UvYm1hbGxvYy9saWJwYXMvc3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9vbFRlc3RzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU2LDYgKzU2LDI2IEBAIHN0cnVjdCBSYW5nZSB7CiAgICAgICAgICwg
ZXBvY2goZXBvY2gpCiAgICAgewogICAgIH0KKworICAgIGV4cGxpY2l0IFJhbmdlKHBhc19sYXJn
ZV9zaGFyaW5nX25vZGUqIG5vZGUpCisgICAgICAgIDogYmVnaW4obm9kZS0+cmFuZ2UuYmVnaW4p
CisgICAgICAgICwgZW5kKG5vZGUtPnJhbmdlLmVuZCkKKyAgICAgICAgLCBpc0NvbW1pdHRlZChu
b2RlLT5pc19jb21taXR0ZWQpCisgICAgICAgICwgbnVtTGl2ZUJ5dGVzKG5vZGUtPm51bV9saXZl
X2J5dGVzKQorICAgICAgICAsIGVwb2NoKG5vZGUtPnVzZV9lcG9jaCkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBvcGVyYXRvcj09KFJhbmdlIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJlZ2luID09IG90aGVyLmJlZ2luCisgICAgICAgICAgICAmJiBlbmQgPT0gb3RoZXIu
ZW5kCisgICAgICAgICAgICAmJiBpc0NvbW1pdHRlZCA9PSBvdGhlci5pc0NvbW1pdHRlZAorICAg
ICAgICAgICAgJiYgbnVtTGl2ZUJ5dGVzID09IG90aGVyLm51bUxpdmVCeXRlcworICAgICAgICAg
ICAgJiYgZXBvY2ggPT0gb3RoZXIuZXBvY2g7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9
KFJhbmdlIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAog
ICAgIHVpbnRwdHJfdCBiZWdpbjsKICAgICB1aW50cHRyX3QgZW5kOwpAQCAtNjQsMjQgKzg0LDUx
IEBAIHN0cnVjdCBSYW5nZSB7CiAgICAgdWludDY0X3QgZXBvY2g7CiB9OwogCitvc3RyZWFtJiBv
cGVyYXRvcjw8KG9zdHJlYW0mIG91dCwgUmFuZ2UgcmFuZ2UpCit7CisgICAgb3V0IDw8IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJhbmdlLmJlZ2luKSA8PCAiLi4uIiA8PCByZWludGVycHJldF9j
YXN0PHZvaWQqPihyYW5nZS5lbmQpCisgICAgICAgIDw8ICIsICIgPDwgKHJhbmdlLmlzQ29tbWl0
dGVkID8gImNvbW1pdHRlZCIgOiAiZGVjb21taXR0ZWQiKSA8PCAiLCAiCisgICAgICAgIDw8IHJh
bmdlLm51bUxpdmVCeXRlcyA8PCAiLyIgPDwgKHJhbmdlLmVuZCAtIHJhbmdlLmJlZ2luKSA8PCAi
LCAiIDw8IHJhbmdlLmVwb2NoOworICAgIHJldHVybiBvdXQ7Cit9CisKIHZvaWQgYXNzZXJ0U3Rh
dGUoY29uc3QgdmVjdG9yPFJhbmdlPiYgcmFuZ2VzKQogewotICAgIHNpemVfdCBpbmRleCA9IDA7
Ci0gICAgZm9yRWFjaExhcmdlU2hhcmluZ1Bvb2xOb2RlKAotICAgICAgICBbJl0gKHBhc19sYXJn
ZV9zaGFyaW5nX25vZGUqIG5vZGUpIC0+IGJvb2wgewotICAgICAgICAgICAgQ0hFQ0tfTEVTUyhp
bmRleCwgcmFuZ2VzLnNpemUoKSk7Ci0gICAgICAgICAgICBSYW5nZSBleHBlY3RlZFJhbmdlID0g
cmFuZ2VzW2luZGV4KytdOwotICAgICAgICAgICAgQ0hFQ0tfRVFVQUwobm9kZS0+cmFuZ2UuYmVn
aW4sIGV4cGVjdGVkUmFuZ2UuYmVnaW4pOwotICAgICAgICAgICAgQ0hFQ0tfRVFVQUwobm9kZS0+
cmFuZ2UuZW5kLCBleHBlY3RlZFJhbmdlLmVuZCk7Ci0gICAgICAgICAgICBDSEVDS19FUVVBTChu
b2RlLT5pc19jb21taXR0ZWQsIGV4cGVjdGVkUmFuZ2UuaXNDb21taXR0ZWQpOwotICAgICAgICAg
ICAgQ0hFQ0tfRVFVQUwobm9kZS0+bnVtX2xpdmVfYnl0ZXMsIGV4cGVjdGVkUmFuZ2UubnVtTGl2
ZUJ5dGVzKTsKLSAgICAgICAgICAgIENIRUNLX0VRVUFMKG5vZGUtPnVzZV9lcG9jaCwgZXhwZWN0
ZWRSYW5nZS5lcG9jaCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0g
ICAgQ0hFQ0tfRVFVQUwoaW5kZXgsIHJhbmdlcy5zaXplKCkpOworICAgIHZlY3RvcjxwYXNfbGFy
Z2Vfc2hhcmluZ19ub2RlKj4gbm9kZXMgPSBsYXJnZVNoYXJpbmdQb29sQXNWZWN0b3IoKTsKKyAg
ICAKKyAgICBib29sIGFsbEdvb2QgPSB0cnVlOworCisgICAgaWYgKG5vZGVzLnNpemUoKSAhPSBy
YW5nZXMuc2l6ZSgpKSB7CisgICAgICAgIGNvdXQgPDwgIlN0YXRlIGRvZXMgbm90IG1hdGNoIGJl
Y2F1c2Ugd2UgZXhwZWN0ZWQgIiA8PCByYW5nZXMuc2l6ZSgpIDw8ICIgcmFuZ2VzIGJ1dCBnb3Qg
IgorICAgICAgICAgICAgIDw8IG5vZGVzLnNpemUoKSA8PCAiIHJhbmdlcy5cbiI7CisgICAgICAg
IGFsbEdvb2QgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbm9kZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBwYXNf
bGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlID0gbm9kZXNbaW5kZXhdOworICAgICAgICAgICAgUmFu
Z2UgYWN0dWFsUmFuZ2Uobm9kZSk7CisgICAgICAgICAgICBSYW5nZSBleHBlY3RlZFJhbmdlID0g
cmFuZ2VzW2luZGV4XTsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZFJhbmdlICE9IGFjdHVhbFJh
bmdlKSB7CisgICAgICAgICAgICAgICAgY291dCA8PCAiU3RhdGUgZG9lcyBub3QgbWF0Y2ggYXQg
aW5kZXggIiA8PCBpbmRleCA8PCAiOiBleHBlY3RlZDpcbiIKKyAgICAgICAgICAgICAgICAgICAg
IDw8ICIgICAgIiA8PCBleHBlY3RlZFJhbmdlIDw8ICIsIGJ1dCBnb3Q6XG4iCisgICAgICAgICAg
ICAgICAgICAgICA8PCAiICAgICIgPDwgYWN0dWFsUmFuZ2UgPDwgIlxuIjsKKyAgICAgICAgICAg
ICAgICBhbGxHb29kID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoIWFsbEdvb2QpIHsKKyAgICAgICAgY291dCA8PCAiR290IG1pc21hdGNoIGluIHN0
YXRlcy4gRXhwZWN0ZWQgdGhlIHN0YXRlIHRvIGJlOlxuIjsKKyAgICAgICAgZm9yIChSYW5nZSBy
YW5nZSA6IHJhbmdlcykKKyAgICAgICAgICAgIGNvdXQgPDwgIiAgICAiIDw8IHJhbmdlIDw8ICJc
biI7CisgICAgICAgIGNvdXQgPDwgIkJ1dCBnb3Q6XG4iOworICAgICAgICBmb3IgKHBhc19sYXJn
ZV9zaGFyaW5nX25vZGUqIG5vZGUgOiBub2RlcykKKyAgICAgICAgICAgIGNvdXQgPDwgIiAgICAi
IDw8IFJhbmdlKG5vZGUpIDw8ICJcbiI7CisgICAgfQorCisgICAgQ0hFQ0soYWxsR29vZCk7CiB9
CiAKLXZvaWQgdGVzdEJhZENvYWxlc2NlRXBvY2hVcGRhdGUoKQordm9pZCB0ZXN0R29vZENvYWxl
c2NlRXBvY2hVcGRhdGUoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiAgICAgCkBAIC0xMjMsMTAgKzE3MCw3IEBAIHZvaWQgdGVzdEJhZENvYWxlc2NlRXBv
Y2hVcGRhdGUoKQogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkdW1wTGFyZ2VTaGFyaW5nUG9v
bCgpOwogCi0gICAgYXNzZXJ0U3RhdGUoeyBSYW5nZSgwLCAxMCAqIFBHLCBwYXNfY29tbWl0dGVk
LCAxMCAqIFBHLCAwKSwKLSAgICAgICAgICAgICAgICAgIFJhbmdlKDEwICogUEcsIDMwICogUEcs
IHBhc19jb21taXR0ZWQsIDIwICogUEcsIDMpLAotICAgICAgICAgICAgICAgICAgUmFuZ2UoMzAg
KiBQRywgRU5ELCBwYXNfY29tbWl0dGVkLCBFTkQgLSAzMCAqIFBHLCAwKSB9KTsKLSAgICAKKyAg
ICBhc3NlcnRTdGF0ZSh7IFJhbmdlKDAsIEVORCwgcGFzX2NvbW1pdHRlZCwgRU5ELCAzKSB9KTsK
IH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBAIC0xMzgsNyArMTgyLDcgQEAgdm9pZCBh
ZGRMYXJnZVNoYXJpbmdQb29sVGVzdHMoKQogI2lmIFRMQwogICAgIEVwb2NoSXNDb3VudGVyIGVw
b2NoSXNDb3VudGVyOwogICAgIAotICAgIEFERF9URVNUKHRlc3RCYWRDb2FsZXNjZUVwb2NoVXBk
YXRlKCkpOworICAgIEFERF9URVNUKHRlc3RHb29kQ29hbGVzY2VFcG9jaFVwZGF0ZSgpKTsKICNl
bmRpZiAvLyBUTEMKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439412</attachid>
            <date>2021-09-27 16:20:45 -0700</date>
            <delta_ts>2021-09-27 16:26:21 -0700</delta_ts>
            <desc>patchy mcpatcherson</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24778</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE1MikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA5LTI3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gRml4IGNvYWxlc2Np
bmcgb2YgdGhlIGxhcmdlIHNoYXJpbmcgcG9vbCBhbmQgbWFrZSBpdCBlYXN5IHRvIGludHJvc3Bl
Y3QgaXQgKHVwZGF0ZSB0byBlNGQyMDg1MWVlOWZmMDBmMjk2MmIzNDlhOWZmODQ2NTY5NWE4M2Q3
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBh
ZGRzIHRoZSBhYmlsaXR5IHRvIGVuYWJsZSB0aGUgbGlicGFzIHN0YXR1cyByZXBvcnRlciwgYWRk
cyBhIGxhcmdlIHNoYXJpbmcgcG9vbCBkdW1wIHRvCisgICAgICAgIHRoZSBzdGF0dXMgcmVwb3J0
LCBhbmQgZml4ZXMgYSBsYXJnZSBzaGFyaW5nIHBvb2wgY29hbGVzY2luZyBidWcgZm91bmQgYnkg
ZG9pbmcgdGhhdC4gUHJldmlvdXNseQorICAgICAgICB3ZSB3ZXJlbid0IGNvYWxlc2NpbmcgdGhp
bmdzIHRoYXQgYXJlIG5vdCBmcmVlK2NvbW1pdHRlZC4KKworICAgICAgICBBbHNvIHVwZGF0ZXMg
dGhlIGV4cG9ydCBzY3JpcHQgdGhhdCBJIHVzZSB0byBrZWVwIHRoZSBsaWJwYXMgZ2l0IHJlcG8g
aW4gc3luYyB3aXRoIHdoYXQncyBpbiBXSy4KKworICAgICAgICBUaGUgbGFyZ2Ugc2hhcmluZyBw
b29sIGlzIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggbGlicGFzIGNhbiBmaW5kIG1lbW9yeSB0aGF0
IGNhbiBiZSBkZWNvbW1pdHRlZAorICAgICAgICBhY3Jvc3MgaXNvbGF0ZWQgbGFyZ2UgaGVhcHMs
IGV2ZW4gaWYgdGhvc2UgbGFyZ2UgaGVhcHMgc2hhcmUgcGFnZXMgd2l0aCBvbmUgYW5vdGhlci4g
VGhlIG1haW4KKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmUgaXMgYSByZWQtYmxhY2sgdHJlZSBvZiBu
b2RlcyB0aGF0IHJlcHJlc2VudCBtZW1vcnkgcmFuZ2VzLiBJZiB0aGVyZSBhcmUgdHdvCisgICAg
ICAgIGFkamFjZW50IHJhbmdlcyBvZiBtZW1vcnkgdGhhdCBhcmUgYm90aCBmdWxseSBsaXZlIGFu
ZCBjb21taXR0ZWQgb3IgYm90aCBkZWNvbW1pdHRlZCwgdGhlbiB3ZQorICAgICAgICB3YW50IHRo
b3NlIHRvIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2luZ2xlIG5vZGUuIFRoYXQgd2Fzbid0IHF1
aXRlIHdvcmtpbmcgcmlnaHQuIEV2ZW4gdGhlCisgICAgICAgIGxpYnBhcyB0ZXN0IGZvciB0aGlz
IHdhcyB0ZXN0aW5nIHRoZSB3cm9uZyB0aGluZy4gVGhpcyBmaXhlcyB0aGUgYmVoYXZpb3IgYW5k
IHRoZSB0ZXN0LiBJdCdzCisgICAgICAgIHBlcmYtbmV1dHJhbCBzaW5jZSBsYXJnZSBoZWFwcyB1
c3VhbGx5IGhhdmUgYSBzbWFsbCBudW1iZXIgb2Ygb2JqZWN0cyBpbiB0aGVtIGFueXdheS4KKwor
ICAgICAgICBUaGUgbmV3IHN0YXR1cyByZXBvcnRpbmcgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZW5h
YmxlZCB3aXRoIHRoZSBXZWJLaXRQYXNTdGF0dXNSZXBvcnRlcgorICAgICAgICBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4gVGhpcyB0YWtlcyBhbiBpbnRlZ2VyIHRoYXQgdGVsbHMgdGhlIGFtb3VudCBv
ZiBkYXRhIGluIHRoZSByZXBvcnQuIEhlcmUKKyAgICAgICAgYXJlIHRoZSByZWNvZ25pemVkIHZh
bHVlczoKKworICAgICAgICAxIC0ganVzdCByZXBvcnQgbnVtYmVyIG9mIGhlYXBzCisgICAgICAg
IDIgLSBzb21ldGhpbmcgaW4gYmV0d2VlbiAxIGFuZCAzCisgICAgICAgIDMgLSByZXBvcnQgZXZl
cnl0aGluZyB0aGF0IHRoZSBzdGF0dXMgcmVwb3J0ZXIgY2FuIHJlcG9ydCByaWdodCBub3cgKHBl
ci1wYWdlIGRhdGEgZm9yCisgICAgICAgICAgICBzZWdyZWdhdGVkL2JpdGZpdCBoZWFwcywgbG90
cyBvZiBkZXRhaWxzIGZvciBsYXJnZSBoZWFwcykKKworICAgICAgICBJZiB0aGUgc3RhdHVzIHJl
cG9ydGVyIGV2ZXIgcmVwb3J0ZWQgcGVyLW9iamVjdCBpbmZvcm1hdGlvbiwgaXQgd291bGQgYmUg
YXQgbGV2ZWwgNCBvciBoaWdoZXIuCisgICAgICAgIEl0J3Mgc2FmZSB0byBwYXNzIDk5OTkgb3Ig
d2hhdGV2ZXIgaWYgeW91IGp1c3Qgd2FudCB0aGUgbWF4aW11bSByZXBvcnQgdGhhdCBsaWJwYXMg
c3VwcG9ydHMuCisgICAgICAgIFRMO0RSIGZvciBub3cgeW91IHVzdWFsbHkgd2FudCBXZWJLaXRQ
YXNTdGF0dXNSZXBvcnRlcj0zLgorCisgICAgICAgICogYm1hbGxvYy9FbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQpOgorICAgICAgICAq
IGxpYnBhcy9leHBvcnQucmI6IEFkZGVkLgorICAgICAgICAqIGxpYnBhcy9leHBvcnQuc2g6IFJl
bW92ZWQuCisgICAgICAgICogbGlicGFzL3NyYy9saWJwYXMvcGFzX2JpdGZpdF9kaXJlY3Rvcnku
YzoKKyAgICAgICAgKHBhc19iaXRmaXRfZGlyZWN0b3J5X2NvbnN0cnVjdCk6CisgICAgICAgIChw
YXNfYml0Zml0X2RpcmVjdG9yeV9nZXRfZmlyc3RfZnJlZV92aWV3KToKKyAgICAgICAgKiBsaWJw
YXMvc3JjL2xpYnBhcy9wYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmM6CisgICAgICAgIChzdGF0ZXNf
bWF0Y2gpOgorICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNfcmVwb3J0ZXIu
YzoKKyAgICAgICAgKHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9iaXRmaXRfZGlyZWN0b3J5KToK
KyAgICAgICAgKGR1bXBfbGFyZ2Vfc2hhcmluZ19wb29sX25vZGVfY2FsbGJhY2spOgorICAgICAg
ICAocGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX2xhcmdlX3NoYXJpbmdfcG9vbCk6CisgICAgICAg
IChwYXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfZXZlcnl0aGluZyk6CisgICAgICAgICogbGlicGFz
L3NyYy9saWJwYXMvcGFzX3N0YXR1c19yZXBvcnRlci5oOgorICAgICAgICAqIGxpYnBhcy9zcmMv
dGVzdC9MYXJnZVNoYXJpbmdQb29sRHVtcC5jcHA6CisgICAgICAgICogbGlicGFzL3NyYy90ZXN0
L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmg6CisgICAgICAgICogbGlicGFzL3NyYy90ZXN0L0xhcmdl
U2hhcmluZ1Bvb2xUZXN0cy5jcHA6CisgICAgICAgIChzdGQ6OlJhbmdlOjpSYW5nZSk6CisgICAg
ICAgIChzdGQ6OlJhbmdlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKHN0ZDo6UmFuZ2U6
Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoc3RkOjpvcGVyYXRvcjw8KToKKyAgICAgICAg
KHN0ZDo6YXNzZXJ0U3RhdGUpOgorICAgICAgICAoc3RkOjp0ZXN0R29vZENvYWxlc2NlRXBvY2hV
cGRhdGUpOgorICAgICAgICAoYWRkTGFyZ2VTaGFyaW5nUG9vbFRlc3RzKToKKyAgICAgICAgKHN0
ZDo6dGVzdEJhZENvYWxlc2NlRXBvY2hVcGRhdGUpOiBEZWxldGVkLgorCiAyMDIxLTA5LTIyICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2xpYnBhc10gZml4IERl
YnVnSGVhcApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAJKHJldmlz
aW9uIDI4MzAxMSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMCBAQCBpbnQgbWFsbG9jX2VuZ2FnZWRfbmFubyh2
b2lkKTsKIH0KICNlbmRpZgogCisjaWYgQlVTRShMSUJQQVMpCisjaW5jbHVkZSAicGFzX3N0YXR1
c19yZXBvcnRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogc3RhdGljIGJv
b2wgaXNNYWxsb2NFbnZpcm9ubWVudFZhcmlhYmxlU2V0KCkKQEAgLTEzNiw2ICsxNDAsMTQgQEAg
REVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEVudmlybwogRW52aXJvbm1lbnQ6OkVu
dmlyb25tZW50KGNvbnN0IExvY2tIb2xkZXImKQogICAgIDogbV9pc0RlYnVnSGVhcEVuYWJsZWQo
Y29tcHV0ZUlzRGVidWdIZWFwRW5hYmxlZCgpKQogeworI2lmIEJVU0UoTElCUEFTKQorICAgIGNv
bnN0IGNoYXIqIHN0YXR1c1JlcG9ydGVyID0gZ2V0ZW52KCJXZWJLaXRQYXNTdGF0dXNSZXBvcnRl
ciIpOworICAgIGlmIChzdGF0dXNSZXBvcnRlcikgeworICAgICAgICB1bnNpZ25lZCBlbmFibGVk
OworICAgICAgICBpZiAoc3NjYW5mKHN0YXR1c1JlcG9ydGVyLCAiJXUiLCAmZW5hYmxlZCkgPT0g
MSkKKyAgICAgICAgICAgIHBhc19zdGF0dXNfcmVwb3J0ZXJfZW5hYmxlZCA9IGVuYWJsZWQ7Cisg
ICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRW52aXJvbm1lbnQ6OmNvbXB1dGVJc0RlYnVnSGVhcEVu
YWJsZWQoKQpJbmRleDogU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvZXhwb3J0LnJiCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9ibWFsbG9jL2xpYnBhcy9leHBvcnQucmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MjEgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyMgQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgJ2ZpbGV1dGlscycKK3JlcXVpcmUgJ2dldG9wdGxvbmcnCityZXF1aXJl
ICdwYXRobmFtZScKKworb3B0cyA9IEdldG9wdExvbmcubmV3KAorICAgIFsgJy0taGVscCcsICct
aCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UIF0sCisgICAgWyAnLS1mb3JjZScsICctZicsIEdl
dG9wdExvbmc6Ok5PX0FSR1VNRU5UIF0KKykKKworJGZvcmNlID0gZmFsc2UKKworb3B0cy5lYWNo
IHsKKyAgICB8IG9wdCwgYXJnIHwKKyAgICBjYXNlIG9wdAorICAgIHdoZW4gJy0taGVscCcKKyAg
ICAgICAgcHV0cyAiVXNhZ2U6IC4vZXhwb3J0LnJiIFstZl0gPGRlc3RpbmF0aW9uPiIKKyAgICAg
ICAgcHV0cworICAgICAgICBwdXRzICJDb3BpZXMgbG9jYWwgZ2l0IGNoZWNrb3V0IChpbmNsdWRp
bmcgdW5zdGFnZWQgY2hhbmdlcyB0byBmaWxlcyBpbiB0aGUgcmVwbykgdG8gdGhlIgorICAgICAg
ICBwdXRzICJkZXN0aW5hdGlvbi4gTXVzdCBiZSBydW4gaW4gdGhlIHJlcG8ncyBkaXJlY3Rvcnkg
KHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIgorICAgICAgICBwdXRzICJzY3JpcHQp
LiBEb2VzIG5vdCBjaGFuZ2UgdGhlIHRpbWVzdGFtcCBvZiBmaWxlcyB0aGF0IGRpZCBub3QgY2hh
bmdlLiIKKyAgICAgICAgcHV0cworICAgICAgICBwdXRzICJPcHRpb25zOiIKKyAgICAgICAgcHV0
cyAiLS1oZWxwICgtaCkgICAgIFByaW50IHRoaXMgbWVzc2FnZS4iCisgICAgICAgIHB1dHMgIi0t
Zm9yY2UgKC1mKSAgICBDb3B5IHRvIHRoZSBkZXN0aW5hdGlvbiBldmVuIGlmIGl0IGRvZXNuJ3Qg
bG9vayBsaWtlIGEgbGlicGFzIGRpcmVjdG9yeS4iCisgICAgICAgIGV4aXQgMAorCisgICAgd2hl
biAnLS1mb3JjZScKKyAgICAgICAgJGZvcmNlID0gdHJ1ZQorCisgICAgZWxzZQorICAgICAgICBy
YWlzZQorICAgIGVuZAorfQorCityYWlzZSAiQmFkIGFyZ3VtZW50OyBzZWUgLS1oZWxwIiB1bmxl
c3MgQVJHVi5sZW5ndGggPT0gMQorCiskZGVzdGluYXRpb24gPSBQYXRobmFtZS5uZXcoQVJHVlsw
XSkucmVhbHBhdGgKKwordW5sZXNzIFBhdGhuYW1lLm5ldygic3JjL2xpYnBhcyIpLmRpcmVjdG9y
eT8KKyAgICBwdXRzICJFcnJvcjogbXVzdCBydW4gdGhpcyBzY3JpcHQgZnJvbSBhIGxpYnBhcyBk
aXJlY3RvcnkuIgorICAgIGV4aXQgMQorZW5kCisKK3VubGVzcyAoJGRlc3RpbmF0aW9uICsgInNy
Yy9saWJwYXMiKS5kaXJlY3Rvcnk/CisgICAgaWYgJGZvcmNlCisgICAgICAgIHB1dHMgIldhcm5p
bmc6IGRlc3RpbmF0aW9uIGRvZXMgbm90IGxvb2sgbGlrZSBhIGxpYnBhcyBkaXJlY3RvcnkuIgor
ICAgIGVsc2UKKyAgICAgICAgcHV0cyAiRXJyb3I6IGRlc3RpbmF0aW9uIGRvZXMgbm90IGxvb2sg
bGlrZSBhIGxpYnBhcyBkaXJlY3Rvcnk7IHVzZSAtLWZvcmNlIHRvIG92ZXJyaWRlLiIKKyAgICAg
ICAgZXhpdCAxCisgICAgZW5kCitlbmQKKworZGVmIHByZXBhcmVEaXJlY3RvcnkoZGlyZWN0b3J5
KQorICAgIHJldHVybiBpZiBkaXJlY3RvcnkuZGlyZWN0b3J5PworICAgIHJhaXNlIGlmIGRpcmVj
dG9yeS50b19zID09ICIuIgorICAgIHJhaXNlIGlmIGRpcmVjdG9yeS50b19zLmxlbmd0aCA8PSAk
ZGVzdGluYXRpb24udG9fcy5sZW5ndGgKKyAgICBwcmVwYXJlRGlyZWN0b3J5KGRpcmVjdG9yeS5k
aXJuYW1lKQorICAgIHB1dHMgIlByZXBhcmluZyBkaXJlY3RvcnkgI3tkaXJlY3Rvcnl9IgorICAg
IEZpbGVVdGlscy5ybV9yZihkaXJlY3RvcnkpCisgICAgZGlyZWN0b3J5Lm1rZGlyCitlbmQKKwor
SU8ucG9wZW4oImdpdCBscy1maWxlcyIsICJyIikgeworICAgIHwgaW5wIHwKKyAgICBpbnAuZWFj
aF9saW5lIHsKKyAgICAgICAgfCBsaW5lIHwKKyAgICAgICAgbGluZS5jaG9tcCEKKyAgICAgICAg
aW5wdXRGaWxlID0gUGF0aG5hbWUubmV3KGxpbmUpCisKKyAgICAgICAgcmFpc2UgaWYgaW5wdXRG
aWxlLmRpcmVjdG9yeT8KKyAgICAgICAgCisgICAgICAgIG91dHB1dEZpbGUgPSAkZGVzdGluYXRp
b24gKyBsaW5lCisKKyAgICAgICAgY29udGVudHMgPSBpbnB1dEZpbGUucmVhZAorCisgICAgICAg
IGlmIG91dHB1dEZpbGUuZXhpc3Q/IGFuZAorICAgICAgICAgIGlucHV0RmlsZS5kaXJlY3Rvcnk/
ID09IG91dHB1dEZpbGUuZGlyZWN0b3J5PyBhbmQKKyAgICAgICAgICBpbnB1dEZpbGUuZXhlY3V0
YWJsZT8gPT0gb3V0cHV0RmlsZS5leGVjdXRhYmxlPyBhbmQKKyAgICAgICAgICBjb250ZW50cyA9
PSBvdXRwdXRGaWxlLnJlYWQKKyAgICAgICAgICAgICNwdXRzICJTa2lwcGluZyAje2xpbmV9Igor
ICAgICAgICAgICAgbmV4dAorICAgICAgICBlbmQKKworICAgICAgICBwdXRzICJDb3B5aW5nICN7
bGluZX0gdG8gI3tvdXRwdXRGaWxlfSIKKworICAgICAgICBwcmVwYXJlRGlyZWN0b3J5KG91dHB1
dEZpbGUuZGlybmFtZSkKKworICAgICAgICBGaWxlVXRpbHMucm1fcmYob3V0cHV0RmlsZSkKKyAg
ICAgICAgb3V0cHV0RmlsZS53cml0ZShjb250ZW50cykKKworICAgICAgICBvdXRwdXRGaWxlLmNo
bW9kKDA3NTUpIGlmIGlucHV0RmlsZS5leGVjdXRhYmxlPworICAgIH0KK30KKworcmFpc2UgdW5s
ZXNzICQ/ID09IDAKKworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvYm1hbGxvYy9saWJw
YXMvZXhwb3J0LnJiCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEg
IyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL2JtYWxs
b2MvbGlicGFzL2V4cG9ydC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMv
ZXhwb3J0LnNoCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvZXhw
b3J0LnNoCShub25leGlzdGVudCkKQEAgLTEsMzkgKzAsMCBAQAotIyEvYmluL3NoCi0jIENvcHly
aWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1zZXQgLWUKLXNldCAteAotCi1ybSAtcmYgbGli
cGFzLWV4cG9ydAotZ2l0IGNsb25lIC4gbGlicGFzLWV4cG9ydAotcm0gLXJmIGxpYnBhcy1leHBv
cnQvLmdpdAotCi13aGVyZT0kMQotCi1pZiBbICJ4JHdoZXJlIiAhPSAieCIgXQotdGhlbgotICAg
IGRpdHRvIGxpYnBhcy1leHBvcnQgJHdoZXJlCi0gICAgcm0gLXJmIGxpYnBhcy1leHBvcnQKLWZp
Ci0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9leHBvcnQuc2gK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9z
cmMvbGlicGFzL3Bhc19iaXRmaXRfZGlyZWN0b3J5LmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2Jt
YWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2JpdGZpdF9kaXJlY3RvcnkuYwkocmV2aXNpb24g
MjgzMDExKQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2JpdGZpdF9k
aXJlY3RvcnkuYwkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTAgQEAgdm9pZCBwYXNfYml0
Zml0X2RpcmVjdG9yeV9jb25zdHJ1Y3QocGFzXwogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZl
cmJvc2UgPSBmYWxzZTsKIAorICAgIC8qIE5PVEUgLSB0aGlzIHdvcmtzIGV2ZW4gaWYgdGhlIGNv
bmZpZyBpcyBkaXNhYmxlZCwgYW5kIHByb2R1Y2VzIGEgZGlyZWN0b3J5IHRoYXQgaXMgZW1wdHkg
YW5kCisgICAgICAgZG9lcyBub3RoaW5nLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgaXQgbWFr
ZXMgaXQgZWFzeSB0byBpdGVyYXRlIG92ZXIgdGhlIGRpcmVjdG9yaWVzIGluIGEgaGVhcAorICAg
ICAgIHdpdGhvdXQga25vd2luZyB3aGF0IHlvdXIgY29uZmlnIGlzLiAqLworCiAgICAgaWYgKHZl
cmJvc2UpCiAgICAgICAgIHBhc19sb2coIkNyZWF0aW5nIGRpcmVjdG9yeSAlcFxuIiwgZGlyZWN0
b3J5KTsKICAgICAKQEAgLTU0LDcgKzU4LDcgQEAgdm9pZCBwYXNfYml0Zml0X2RpcmVjdG9yeV9j
b25zdHJ1Y3QocGFzXwogICAgIHBhc19iaXRmaXRfZGlyZWN0b3J5X21heF9mcmVlX3ZlY3Rvcl9j
b25zdHJ1Y3QoJmRpcmVjdG9yeS0+bWF4X2ZyZWVzKTsKICAgICBwYXNfYml0Zml0X2RpcmVjdG9y
eV92aWV3X3ZlY3Rvcl9jb25zdHJ1Y3QoJmRpcmVjdG9yeS0+dmlld3MpOwogICAgIHBhc19jb21w
YWN0X2F0b21pY19iaXRmaXRfc2l6ZV9jbGFzc19wdHJfc3RvcmUoJmRpcmVjdG9yeS0+bGFyZ2Vz
dF9zaXplX2NsYXNzLCBOVUxMKTsKLSAgICBkaXJlY3RvcnktPmNvbmZpZ19raW5kID0gY29uZmln
LT5raW5kOworICAgIGRpcmVjdG9yeS0+Y29uZmlnX2tpbmQgPSBjb25maWctPmJhc2UuaXNfZW5h
YmxlZCA/IGNvbmZpZy0+a2luZCA6IHBhc19iaXRmaXRfcGFnZV9jb25maWdfa2luZF9udWxsOwog
CiAgICAgZGlyZWN0b3J5LT5oZWFwID0gaGVhcDsKICAgICBwYXNfYml0Zml0X2RpcmVjdG9yeV9z
ZWdtZW50ZWRfYml0dmVjdG9yc19jb25zdHJ1Y3QoJmRpcmVjdG9yeS0+Yml0dmVjdG9ycyk7CkBA
IC02Miw3ICs2Niw3IEBAIHZvaWQgcGFzX2JpdGZpdF9kaXJlY3RvcnlfY29uc3RydWN0KHBhc18K
IAogICAgIC8qIFdlIGNvdWxkIGhhdmUgYmVlbiBsYXp5IGFib3V0IHRoaXMgLSBidXQgaXQncyBw
cm9iYWJseSBub3Qgc3VwZXIgbmVjZXNzYXJ5IHNpbmNlIHRoZSBwb2ludAogICAgICAgIG9mIGJp
dGZpdCBnbG9iYWwgZGlyZWN0b3JpZXMgaXMgdGhhdCB0aGVyZSB3b24ndCBiZSB0b28gbWFueSBv
ZiB0aGVtLiAqLwotICAgIGlmIChwYXNfYml0Zml0X2RpcmVjdG9yeV9kb2VzX3NoYXJpbmcoZGly
ZWN0b3J5KSkgeworICAgIGlmIChjb25maWctPmJhc2UuaXNfZW5hYmxlZCAmJiBwYXNfYml0Zml0
X2RpcmVjdG9yeV9kb2VzX3NoYXJpbmcoZGlyZWN0b3J5KSkgewogICAgICAgICBwYXNfcGFnZV9z
aGFyaW5nX3Bvb2xfYWRkKAogICAgICAgICAgICAgJnBhc19waHlzaWNhbF9wYWdlX3NoYXJpbmdf
cG9vbCwKICAgICAgICAgICAgIHBhc19wYWdlX3NoYXJpbmdfcGFydGljaXBhbnRfY3JlYXRlKApA
QCAtMTAyLDYgKzEwNiw4IEBAIHBhc19iaXRmaXRfZGlyZWN0b3J5X2dldF9maXJzdF9mcmVlX3Zp
ZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzX2JpdGZpdF9w
YWdlX2NvbmZpZyogcGFnZV9jb25maWcpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworCisgICAgUEFTX0FTU0VSVChwYWdlX2NvbmZpZy0+YmFzZS5pc19lbmFibGVk
KTsKICAgICAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIHBhc19mb3VuZF9pbmRleCBmb3VuZF9p
bmRleDsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19sYXJnZV9z
aGFyaW5nX3Bvb2wuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xp
YnBhcy9wYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmMJKHJldmlzaW9uIDI4MzAxMSkKKysrIFNvdXJj
ZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19sYXJnZV9zaGFyaW5nX3Bvb2wuYwkod29y
a2luZyBjb3B5KQpAQCAtMjg3LDEzICsyODcsMzkgQEAgc3VjY2Vzc29yKHBhc19sYXJnZV9zaGFy
aW5nX25vZGUqIG5vZGUpCiBzdGF0aWMgYm9vbCBzdGF0ZXNfbWF0Y2gocGFzX2xhcmdlX3NoYXJp
bmdfbm9kZSogbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNfbGFyZ2Vfc2hhcmlu
Z19ub2RlKiByaWdodCkKIHsKLSAgICByZXR1cm4gbGVmdC0+aXNfY29tbWl0dGVkID09IHJpZ2h0
LT5pc19jb21taXR0ZWQKLSAgICAgICAgJiYgbGVmdC0+c3luY2hyb25pemF0aW9uX3N0eWxlID09
IHJpZ2h0LT5zeW5jaHJvbml6YXRpb25fc3R5bGUKLSAgICAgICAgJiYgKCghbGVmdC0+bnVtX2xp
dmVfYnl0ZXMgJiYgIXJpZ2h0LT5udW1fbGl2ZV9ieXRlcykgfHwKLSAgICAgICAgICAgIChwYXNf
cmFuZ2Vfc2l6ZShsZWZ0LT5yYW5nZSkgPT0gbGVmdC0+bnVtX2xpdmVfYnl0ZXMgJiYKLSAgICAg
ICAgICAgICBwYXNfcmFuZ2Vfc2l6ZShyaWdodC0+cmFuZ2UpID09IHJpZ2h0LT5udW1fbGl2ZV9i
eXRlcykpCi0gICAgICAgICYmIChsZWZ0LT51c2VfZXBvY2ggPT0gcmlnaHQtPnVzZV9lcG9jaAot
ICAgICAgICAgICAgfHwgKCFsZWZ0LT5pc19jb21taXR0ZWQgJiYgIWxlZnQtPm51bV9saXZlX2J5
dGVzKSk7CisgICAgYm9vbCBib3RoX2VtcHR5OworICAgIGJvb2wgYm90aF9mdWxsOworICAgIAor
ICAgIGlmIChsZWZ0LT5pc19jb21taXR0ZWQgIT0gcmlnaHQtPmlzX2NvbW1pdHRlZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxlZnQtPnN5bmNocm9uaXphdGlvbl9zdHlsZSAh
PSByaWdodC0+c3luY2hyb25pemF0aW9uX3N0eWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBib3RoX2VtcHR5ID0KKyAgICAgICAgIWxlZnQtPm51bV9saXZlX2J5dGVzICYmCisgICAg
ICAgICFyaWdodC0+bnVtX2xpdmVfYnl0ZXM7CisgICAgCisgICAgYm90aF9mdWxsID0KKyAgICAg
ICAgcGFzX3JhbmdlX3NpemUobGVmdC0+cmFuZ2UpID09IGxlZnQtPm51bV9saXZlX2J5dGVzICYm
CisgICAgICAgIHBhc19yYW5nZV9zaXplKHJpZ2h0LT5yYW5nZSkgPT0gcmlnaHQtPm51bV9saXZl
X2J5dGVzOworCisgICAgaWYgKCFib3RoX2VtcHR5ICYmICFib3RoX2Z1bGwpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8qIFJpZ2h0IG5vdzogYm90aCBzaWRlcyBoYXZlIGlkZW50aWNh
bCBjb21taXQgc3RhdGVzIGFuZCBpZGVudGljYWwgc3luY2hyb25pemF0aW9uIHN0eWVzLiBBbmQK
KyAgICAgICBlaXRoZXIgYm90aCBzaWRlcyBhcmUgZW1wdHkgb3IgYm90aCBzaWRlcyBhcmUgZnVs
bC4KKyAgICAKKyAgICAgICBUaGUgb25seSByZWFzb24gd2h5IHdlIHdvdWxkbid0IHdhbnQgdG8g
Y29hbGVzY2UgaXMgaWYgZXBvY2hzIGRpZG4ndCBtYXRjaC4gQnV0IHRoYXQgb25seQorICAgICAg
IG1hdHRlcnMgd2hlbiB0aGUgbWVtb3J5IGlzIGZyZWUgYW5kIGNvbW1pdHRlZC4gKi8KKworICAg
IGlmICghbGVmdC0+aXNfY29tbWl0dGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
IChib3RoX2Z1bGwpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGxlZnQtPnVz
ZV9lcG9jaCA9PSByaWdodC0+dXNlX2Vwb2NoOwogfQogCiBzdGF0aWMgYm9vbCBpc19lbGlnaWJs
ZShwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlKQpJbmRleDogU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy9saWJwYXMvcGFzX3N0YXR1c19yZXBvcnRlci5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNfcmVwb3J0ZXIuYwkocmV2aXNp
b24gMjgzMDExKQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3N0YXR1
c19yZXBvcnRlci5jCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
cGFzX2hlYXBfdGFibGUuaCIKICNpbmNsdWRlICJwYXNfbGFyZ2VfaGVhcC5oIgogI2luY2x1ZGUg
InBhc19sYXJnZV9tYXAuaCIKKyNpbmNsdWRlICJwYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmgiCiAj
aW5jbHVkZSAicGFzX2xhcmdlX3V0aWxpdHlfZnJlZV9oZWFwLmgiCiAjaW5jbHVkZSAicGFzX2xv
Zy5oIgogI2luY2x1ZGUgInBhc19wYWdlX3NoYXJpbmdfcG9vbC5oIgpAQCAtMTk2LDYgKzE5Nyw5
IEBAIHN0YXRpYyB2b2lkIHJlcG9ydF9iaXRmaXRfZGlyZWN0b3J5X2NvbnQKIHZvaWQgcGFzX3N0
YXR1c19yZXBvcnRlcl9kdW1wX2JpdGZpdF9kaXJlY3RvcnkoCiAgICAgcGFzX3N0cmVhbSogc3Ry
ZWFtLCBwYXNfYml0Zml0X2RpcmVjdG9yeSogZGlyZWN0b3J5KQogeworICAgIGlmIChkaXJlY3Rv
cnktPmNvbmZpZ19raW5kID09IHBhc19iaXRmaXRfcGFnZV9jb25maWdfa2luZF9udWxsKQorICAg
ICAgICByZXR1cm47CisgICAgCiAgICAgcGFzX3N0cmVhbV9wcmludGYoc3RyZWFtLCAiICAgICAg
ICAgICAgJXMgR2xvYmFsIERpciAoJXApOiAiLAogICAgICAgICAgICAgICAgICAgICAgIHBhc19i
aXRmaXRfcGFnZV9jb25maWdfdmFyaWFudF9nZXRfY2FwaXRhbGl6ZWRfc3RyaW5nKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXNfYml0Zml0X3BhZ2VfY29uZmlnX2tpbmRfZ2V0X2NvbmZp
ZyhkaXJlY3RvcnktPmNvbmZpZ19raW5kKS0+dmFyaWFudCksCkBAIC02NDQsNiArNjQ4LDM5IEBA
IHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX2FsbF9oZWFwc18KICAgICBwYXNfc3RyZWFt
X3ByaW50ZihzdHJlYW0sICJcbiIpOwogfQogCitzdGF0aWMgYm9vbCBkdW1wX2xhcmdlX3NoYXJp
bmdfcG9vbF9ub2RlX2NhbGxiYWNrKHBhc19sYXJnZV9zaGFyaW5nX25vZGUqIG5vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGFyZykK
K3sKKyAgICBwYXNfc3RyZWFtKiBzdHJlYW07CisKKyAgICBzdHJlYW0gPSBhcmc7CisKKyAgICBw
YXNfc3RyZWFtX3ByaW50ZihzdHJlYW0sICIgICAgICAgICVwLi4uJXA6ICVzLCAlenUvJXp1IGxp
dmUgKCUuMGxmJSUpLCAlbGx1IiwKKyAgICAgICAgICAgICAgICAgICAgICAodm9pZCopbm9kZS0+
cmFuZ2UuYmVnaW4sCisgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKW5vZGUtPnJhbmdlLmVu
ZCwKKyAgICAgICAgICAgICAgICAgICAgICBwYXNfY29tbWl0X21vZGVfZ2V0X3N0cmluZyhub2Rl
LT5pc19jb21taXR0ZWQpLAorICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm51bV9saXZlX2J5
dGVzLAorICAgICAgICAgICAgICAgICAgICAgIHBhc19yYW5nZV9zaXplKG5vZGUtPnJhbmdlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAxMDAuICogKGRvdWJsZSlub2RlLT5udW1fbGl2ZV9ieXRl
cyAvIChkb3VibGUpcGFzX3JhbmdlX3NpemUobm9kZS0+cmFuZ2UpLAorICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnVzZV9lcG9jaCk7CisKKyAgICBpZiAobm9kZS0+c3luY2hyb25pemF0aW9u
X3N0eWxlICE9IHBhc19waHlzaWNhbF9tZW1vcnlfaXNfbG9ja2VkX2J5X3ZpcnR1YWxfcmFuZ2Vf
Y29tbW9uX2xvY2spIHsKKyAgICAgICAgcGFzX3N0cmVhbV9wcmludGYoCisgICAgICAgICAgICBz
dHJlYW0sICIsICVzIiwKKyAgICAgICAgICAgIHBhc19waHlzaWNhbF9tZW1vcnlfc3luY2hyb25p
emF0aW9uX3N0eWxlX2dldF9zdHJpbmcobm9kZS0+c3luY2hyb25pemF0aW9uX3N0eWxlKSk7Cisg
ICAgfQorCisgICAgcGFzX3N0cmVhbV9wcmludGYoc3RyZWFtLCAiXG4iKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9sYXJnZV9zaGFyaW5n
X3Bvb2wocGFzX3N0cmVhbSogc3RyZWFtKQoreworICAgIHBhc19zdHJlYW1fcHJpbnRmKHN0cmVh
bSwgIiAgICBMYXJnZSBzaGFyaW5nIHBvb2wgY29udGVudHM6XG4iKTsKKyAgICBwYXNfbGFyZ2Vf
c2hhcmluZ19wb29sX2Zvcl9lYWNoKGR1bXBfbGFyZ2Vfc2hhcmluZ19wb29sX25vZGVfY2FsbGJh
Y2ssIHN0cmVhbSwgcGFzX2xvY2tfaXNfaGVsZCk7Cit9CisKIHZvaWQgcGFzX3N0YXR1c19yZXBv
cnRlcl9kdW1wX3V0aWxpdHlfaGVhcChwYXNfc3RyZWFtKiBzdHJlYW0pCiB7CiAgICAgcGFzX3N0
cmVhbV9wcmludGYoc3RyZWFtLCAiICAgIFV0aWxpdHkgSGVhcDpcbiIpOwpAQCAtOTU4LDYgKzk5
NSwxMCBAQCB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9ldmVyeXRoaW5nCiAgICAgcGFz
X3N0YXR1c19yZXBvcnRlcl9kdW1wX2FsbF9oZWFwcyhzdHJlYW0pOwogICAgIHBhc19zdGF0dXNf
cmVwb3J0ZXJfZHVtcF9hbGxfc2hhcmVkX3BhZ2VfZGlyZWN0b3JpZXMoc3RyZWFtKTsKICAgICBw
YXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfYWxsX2hlYXBzX25vbl91dGlsaXR5X3N1bW1hcmllcyhz
dHJlYW0pOworICAgIAorICAgIGlmIChwYXNfc3RhdHVzX3JlcG9ydGVyX2VuYWJsZWQgPj0gMykK
KyAgICAgICAgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX2xhcmdlX3NoYXJpbmdfcG9vbChzdHJl
YW0pOworICAgIAogICAgIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF91dGlsaXR5X2hlYXAoc3Ry
ZWFtKTsKIAogICAgIGlmIChwYXNfc3RhdHVzX3JlcG9ydGVyX2VuYWJsZWQgPj0gMykgewpJbmRl
eDogU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3N0YXR1c19yZXBvcnRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0
dXNfcmVwb3J0ZXIuaAkocmV2aXNpb24gMjgzMDExKQorKysgU291cmNlL2JtYWxsb2MvbGlicGFz
L3NyYy9saWJwYXMvcGFzX3N0YXR1c19yZXBvcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgs
NiArNjgsNyBAQCBQQVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX2hlCiBQQVNf
QVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX2FsbF9oZWFwcyhwYXNfc3RyZWFtKiBz
dHJlYW0pOwogUEFTX0FQSSB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9hbGxfc2hhcmVk
X3BhZ2VfZGlyZWN0b3JpZXMocGFzX3N0cmVhbSogc3RyZWFtKTsKIFBBU19BUEkgdm9pZCBwYXNf
c3RhdHVzX3JlcG9ydGVyX2R1bXBfYWxsX2hlYXBzX25vbl91dGlsaXR5X3N1bW1hcmllcyhwYXNf
c3RyZWFtKiBzdHJlYW0pOworUEFTX0FQSSB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9s
YXJnZV9zaGFyaW5nX3Bvb2wocGFzX3N0cmVhbSogc3RyZWFtKTsKIFBBU19BUEkgdm9pZCBwYXNf
c3RhdHVzX3JlcG9ydGVyX2R1bXBfdXRpbGl0eV9oZWFwKHBhc19zdHJlYW0qIHN0cmVhbSk7CiBQ
QVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX3RvdGFsX2ZyYWdtZW50YXRpb24o
cGFzX3N0cmVhbSogc3RyZWFtKTsKIFBBU19BUEkgdm9pZCBwYXNfc3RhdHVzX3JlcG9ydGVyX2R1
bXBfdGllcl91cF9yYXRlcyhwYXNfc3RyZWFtKiBzdHJlYW0pOwpJbmRleDogU291cmNlL2JtYWxs
b2MvbGlicGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9vbER1bXAuY3Bw
CShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL3Rlc3QvTGFy
Z2VTaGFyaW5nUG9vbER1bXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxNiBAQCB2
b2lkIGZvckVhY2hMYXJnZVNoYXJpbmdQb29sTm9kZShmdW5jdGlvCiAgICAgcGFzX2xhcmdlX3No
YXJpbmdfcG9vbF9mb3JfZWFjaChmb3JFYWNoQWRhcHRlciwgJnZpc2l0b3IsIHBhc19sb2NrX2lz
X25vdF9oZWxkKTsKIH0KIAordmVjdG9yPHBhc19sYXJnZV9zaGFyaW5nX25vZGUqPiBsYXJnZVNo
YXJpbmdQb29sQXNWZWN0b3IoKQoreworICAgIHZlY3RvcjxwYXNfbGFyZ2Vfc2hhcmluZ19ub2Rl
Kj4gcmVzdWx0OworICAgIGZvckVhY2hMYXJnZVNoYXJpbmdQb29sTm9kZShbJl0gKHBhc19sYXJn
ZV9zaGFyaW5nX25vZGUqIG5vZGUpIC0+IGJvb2wgeworICAgICAgICByZXN1bHQucHVzaF9iYWNr
KG5vZGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB2b2lkIGR1bXBMYXJnZVNoYXJpbmdQb29sKCkKIHsKICAgICBjb3V0IDw8ICJMYXJn
ZSBzaGFyaW5nIHBvb2w6XG4iOwpJbmRleDogU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy90ZXN0
L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmgJKHJldmlzaW9uIDI4MzAxMSkKKysr
IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sRHVtcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxMCBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
ICNpbmNsdWRlICJwYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmgiCisjaW5jbHVkZSA8dmVjdG9yPgog
CiB2b2lkIGZvckVhY2hMYXJnZVNoYXJpbmdQb29sTm9kZShzdGQ6OmZ1bmN0aW9uPGJvb2wocGFz
X2xhcmdlX3NoYXJpbmdfbm9kZSopPiB2aXNpdG9yKTsKK3N0ZDo6dmVjdG9yPHBhc19sYXJnZV9z
aGFyaW5nX25vZGUqPiBsYXJnZVNoYXJpbmdQb29sQXNWZWN0b3IoKTsKIHZvaWQgZHVtcExhcmdl
U2hhcmluZ1Bvb2woKTsKIAogI2VuZGlmIC8vIFRMQwpJbmRleDogU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvbGlicGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xUZXN0cy5jcHAJKHJl
dmlzaW9uIDI4MzAxMSkKKysrIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNo
YXJpbmdQb29sVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoYykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNiArNTYsMjYgQEAgc3Ry
dWN0IFJhbmdlIHsKICAgICAgICAgLCBlcG9jaChlcG9jaCkKICAgICB7CiAgICAgfQorCisgICAg
ZXhwbGljaXQgUmFuZ2UocGFzX2xhcmdlX3NoYXJpbmdfbm9kZSogbm9kZSkKKyAgICAgICAgOiBi
ZWdpbihub2RlLT5yYW5nZS5iZWdpbikKKyAgICAgICAgLCBlbmQobm9kZS0+cmFuZ2UuZW5kKQor
ICAgICAgICAsIGlzQ29tbWl0dGVkKG5vZGUtPmlzX2NvbW1pdHRlZCkKKyAgICAgICAgLCBudW1M
aXZlQnl0ZXMobm9kZS0+bnVtX2xpdmVfYnl0ZXMpCisgICAgICAgICwgZXBvY2gobm9kZS0+dXNl
X2Vwb2NoKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oUmFuZ2Ugb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYmVnaW4gPT0gb3RoZXIuYmVnaW4KKyAgICAg
ICAgICAgICYmIGVuZCA9PSBvdGhlci5lbmQKKyAgICAgICAgICAgICYmIGlzQ29tbWl0dGVkID09
IG90aGVyLmlzQ29tbWl0dGVkCisgICAgICAgICAgICAmJiBudW1MaXZlQnl0ZXMgPT0gb3RoZXIu
bnVtTGl2ZUJ5dGVzCisgICAgICAgICAgICAmJiBlcG9jaCA9PSBvdGhlci5lcG9jaDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yIT0oUmFuZ2Ugb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAgICAgCiAgICAgdWludHB0cl90IGJlZ2luOwogICAgIHVpbnRwdHJf
dCBlbmQ7CkBAIC02NCwyNCArODQsNTEgQEAgc3RydWN0IFJhbmdlIHsKICAgICB1aW50NjRfdCBl
cG9jaDsKIH07CiAKK29zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3V0LCBSYW5nZSByYW5n
ZSkKK3sKKyAgICBvdXQgPDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmFuZ2UuYmVnaW4pIDw8
ICIuLi4iIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJhbmdlLmVuZCkKKyAgICAgICAgPDwg
IiwgIiA8PCAocmFuZ2UuaXNDb21taXR0ZWQgPyAiY29tbWl0dGVkIiA6ICJkZWNvbW1pdHRlZCIp
IDw8ICIsICIKKyAgICAgICAgPDwgcmFuZ2UubnVtTGl2ZUJ5dGVzIDw8ICIvIiA8PCAocmFuZ2Uu
ZW5kIC0gcmFuZ2UuYmVnaW4pIDw8ICIsICIgPDwgcmFuZ2UuZXBvY2g7CisgICAgcmV0dXJuIG91
dDsKK30KKwogdm9pZCBhc3NlcnRTdGF0ZShjb25zdCB2ZWN0b3I8UmFuZ2U+JiByYW5nZXMpCiB7
Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKLSAgICBmb3JFYWNoTGFyZ2VTaGFyaW5nUG9vbE5vZGUo
Ci0gICAgICAgIFsmXSAocGFzX2xhcmdlX3NoYXJpbmdfbm9kZSogbm9kZSkgLT4gYm9vbCB7Ci0g
ICAgICAgICAgICBDSEVDS19MRVNTKGluZGV4LCByYW5nZXMuc2l6ZSgpKTsKLSAgICAgICAgICAg
IFJhbmdlIGV4cGVjdGVkUmFuZ2UgPSByYW5nZXNbaW5kZXgrK107Ci0gICAgICAgICAgICBDSEVD
S19FUVVBTChub2RlLT5yYW5nZS5iZWdpbiwgZXhwZWN0ZWRSYW5nZS5iZWdpbik7Ci0gICAgICAg
ICAgICBDSEVDS19FUVVBTChub2RlLT5yYW5nZS5lbmQsIGV4cGVjdGVkUmFuZ2UuZW5kKTsKLSAg
ICAgICAgICAgIENIRUNLX0VRVUFMKG5vZGUtPmlzX2NvbW1pdHRlZCwgZXhwZWN0ZWRSYW5nZS5p
c0NvbW1pdHRlZCk7Ci0gICAgICAgICAgICBDSEVDS19FUVVBTChub2RlLT5udW1fbGl2ZV9ieXRl
cywgZXhwZWN0ZWRSYW5nZS5udW1MaXZlQnl0ZXMpOwotICAgICAgICAgICAgQ0hFQ0tfRVFVQUwo
bm9kZS0+dXNlX2Vwb2NoLCBleHBlY3RlZFJhbmdlLmVwb2NoKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9KTsKLSAgICBDSEVDS19FUVVBTChpbmRleCwgcmFuZ2VzLnNpemUo
KSk7CisgICAgdmVjdG9yPHBhc19sYXJnZV9zaGFyaW5nX25vZGUqPiBub2RlcyA9IGxhcmdlU2hh
cmluZ1Bvb2xBc1ZlY3RvcigpOworICAgIAorICAgIGJvb2wgYWxsR29vZCA9IHRydWU7CisKKyAg
ICBpZiAobm9kZXMuc2l6ZSgpICE9IHJhbmdlcy5zaXplKCkpIHsKKyAgICAgICAgY291dCA8PCAi
U3RhdGUgZG9lcyBub3QgbWF0Y2ggYmVjYXVzZSB3ZSBleHBlY3RlZCAiIDw8IHJhbmdlcy5zaXpl
KCkgPDwgIiByYW5nZXMgYnV0IGdvdCAiCisgICAgICAgICAgICAgPDwgbm9kZXMuc2l6ZSgpIDw8
ICIgcmFuZ2VzLlxuIjsKKyAgICAgICAgYWxsR29vZCA9IGZhbHNlOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBub2Rlcy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgIHBhc19sYXJnZV9zaGFyaW5nX25vZGUqIG5vZGUgPSBub2Rlc1tp
bmRleF07CisgICAgICAgICAgICBSYW5nZSBhY3R1YWxSYW5nZShub2RlKTsKKyAgICAgICAgICAg
IFJhbmdlIGV4cGVjdGVkUmFuZ2UgPSByYW5nZXNbaW5kZXhdOworICAgICAgICAgICAgaWYgKGV4
cGVjdGVkUmFuZ2UgIT0gYWN0dWFsUmFuZ2UpIHsKKyAgICAgICAgICAgICAgICBjb3V0IDw8ICJT
dGF0ZSBkb2VzIG5vdCBtYXRjaCBhdCBpbmRleCAiIDw8IGluZGV4IDw8ICI6IGV4cGVjdGVkOlxu
IgorICAgICAgICAgICAgICAgICAgICAgPDwgIiAgICAiIDw8IGV4cGVjdGVkUmFuZ2UgPDwgIiwg
YnV0IGdvdDpcbiIKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIgICAgIiA8PCBhY3R1YWxSYW5n
ZSA8PCAiXG4iOworICAgICAgICAgICAgICAgIGFsbEdvb2QgPSBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghYWxsR29vZCkgeworICAgICAgICBjb3V0
IDw8ICJHb3QgbWlzbWF0Y2ggaW4gc3RhdGVzLiBFeHBlY3RlZCB0aGUgc3RhdGUgdG8gYmU6XG4i
OworICAgICAgICBmb3IgKFJhbmdlIHJhbmdlIDogcmFuZ2VzKQorICAgICAgICAgICAgY291dCA8
PCAiICAgICIgPDwgcmFuZ2UgPDwgIlxuIjsKKyAgICAgICAgY291dCA8PCAiQnV0IGdvdDpcbiI7
CisgICAgICAgIGZvciAocGFzX2xhcmdlX3NoYXJpbmdfbm9kZSogbm9kZSA6IG5vZGVzKQorICAg
ICAgICAgICAgY291dCA8PCAiICAgICIgPDwgUmFuZ2Uobm9kZSkgPDwgIlxuIjsKKyAgICB9CisK
KyAgICBDSEVDSyhhbGxHb29kKTsKIH0KIAotdm9pZCB0ZXN0QmFkQ29hbGVzY2VFcG9jaFVwZGF0
ZSgpCit2b2lkIHRlc3RHb29kQ29hbGVzY2VFcG9jaFVwZGF0ZSgpCiB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICAKQEAgLTEyMywxMCArMTcwLDcgQEAg
dm9pZCB0ZXN0QmFkQ29hbGVzY2VFcG9jaFVwZGF0ZSgpCiAgICAgaWYgKHZlcmJvc2UpCiAgICAg
ICAgIGR1bXBMYXJnZVNoYXJpbmdQb29sKCk7CiAKLSAgICBhc3NlcnRTdGF0ZSh7IFJhbmdlKDAs
IDEwICogUEcsIHBhc19jb21taXR0ZWQsIDEwICogUEcsIDApLAotICAgICAgICAgICAgICAgICAg
UmFuZ2UoMTAgKiBQRywgMzAgKiBQRywgcGFzX2NvbW1pdHRlZCwgMjAgKiBQRywgMyksCi0gICAg
ICAgICAgICAgICAgICBSYW5nZSgzMCAqIFBHLCBFTkQsIHBhc19jb21taXR0ZWQsIEVORCAtIDMw
ICogUEcsIDApIH0pOwotICAgIAorICAgIGFzc2VydFN0YXRlKHsgUmFuZ2UoMCwgRU5ELCBwYXNf
Y29tbWl0dGVkLCBFTkQsIDMpIH0pOwogfQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKQEAg
LTEzOCw3ICsxODIsNyBAQCB2b2lkIGFkZExhcmdlU2hhcmluZ1Bvb2xUZXN0cygpCiAjaWYgVExD
CiAgICAgRXBvY2hJc0NvdW50ZXIgZXBvY2hJc0NvdW50ZXI7CiAgICAgCi0gICAgQUREX1RFU1Qo
dGVzdEJhZENvYWxlc2NlRXBvY2hVcGRhdGUoKSk7CisgICAgQUREX1RFU1QodGVzdEdvb2RDb2Fs
ZXNjZUVwb2NoVXBkYXRlKCkpOwogI2VuZGlmIC8vIFRMQwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439413</attachid>
            <date>2021-09-27 16:26:21 -0700</date>
            <delta_ts>2021-09-28 09:48:11 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24872</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MzE1MikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA5LTI3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gRml4IGNvYWxlc2Np
bmcgb2YgdGhlIGxhcmdlIHNoYXJpbmcgcG9vbCBhbmQgbWFrZSBpdCBlYXN5IHRvIGludHJvc3Bl
Y3QgaXQgKHVwZGF0ZSB0byBlNGQyMDg1MWVlOWZmMDBmMjk2MmIzNDlhOWZmODQ2NTY5NWE4M2Q3
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBh
ZGRzIHRoZSBhYmlsaXR5IHRvIGVuYWJsZSB0aGUgbGlicGFzIHN0YXR1cyByZXBvcnRlciwgYWRk
cyBhIGxhcmdlIHNoYXJpbmcgcG9vbCBkdW1wIHRvCisgICAgICAgIHRoZSBzdGF0dXMgcmVwb3J0
LCBhbmQgZml4ZXMgYSBsYXJnZSBzaGFyaW5nIHBvb2wgY29hbGVzY2luZyBidWcgZm91bmQgYnkg
ZG9pbmcgdGhhdC4gUHJldmlvdXNseQorICAgICAgICB3ZSB3ZXJlbid0IGNvYWxlc2NpbmcgdGhp
bmdzIHRoYXQgYXJlIG5vdCBmcmVlK2NvbW1pdHRlZC4KKworICAgICAgICBBbHNvIHVwZGF0ZXMg
dGhlIGV4cG9ydCBzY3JpcHQgdGhhdCBJIHVzZSB0byBrZWVwIHRoZSBsaWJwYXMgZ2l0IHJlcG8g
aW4gc3luYyB3aXRoIHdoYXQncyBpbiBXSy4KKworICAgICAgICBUaGUgbGFyZ2Ugc2hhcmluZyBw
b29sIGlzIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggbGlicGFzIGNhbiBmaW5kIG1lbW9yeSB0aGF0
IGNhbiBiZSBkZWNvbW1pdHRlZAorICAgICAgICBhY3Jvc3MgaXNvbGF0ZWQgbGFyZ2UgaGVhcHMs
IGV2ZW4gaWYgdGhvc2UgbGFyZ2UgaGVhcHMgc2hhcmUgcGFnZXMgd2l0aCBvbmUgYW5vdGhlci4g
VGhlIG1haW4KKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmUgaXMgYSByZWQtYmxhY2sgdHJlZSBvZiBu
b2RlcyB0aGF0IHJlcHJlc2VudCBtZW1vcnkgcmFuZ2VzLiBJZiB0aGVyZSBhcmUgdHdvCisgICAg
ICAgIGFkamFjZW50IHJhbmdlcyBvZiBtZW1vcnkgdGhhdCBhcmUgYm90aCBmdWxseSBsaXZlIGFu
ZCBjb21taXR0ZWQgb3IgYm90aCBkZWNvbW1pdHRlZCwgdGhlbiB3ZQorICAgICAgICB3YW50IHRo
b3NlIHRvIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2luZ2xlIG5vZGUuIFRoYXQgd2Fzbid0IHF1
aXRlIHdvcmtpbmcgcmlnaHQuIEV2ZW4gdGhlCisgICAgICAgIGxpYnBhcyB0ZXN0IGZvciB0aGlz
IHdhcyB0ZXN0aW5nIHRoZSB3cm9uZyB0aGluZy4gVGhpcyBmaXhlcyB0aGUgYmVoYXZpb3IgYW5k
IHRoZSB0ZXN0LiBJdCdzCisgICAgICAgIHBlcmYtbmV1dHJhbCBzaW5jZSBsYXJnZSBoZWFwcyB1
c3VhbGx5IGhhdmUgYSBzbWFsbCBudW1iZXIgb2Ygb2JqZWN0cyBpbiB0aGVtIGFueXdheS4KKwor
ICAgICAgICBUaGUgbmV3IHN0YXR1cyByZXBvcnRpbmcgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZW5h
YmxlZCB3aXRoIHRoZSBXZWJLaXRQYXNTdGF0dXNSZXBvcnRlcgorICAgICAgICBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4gVGhpcyB0YWtlcyBhbiBpbnRlZ2VyIHRoYXQgdGVsbHMgdGhlIGFtb3VudCBv
ZiBkYXRhIGluIHRoZSByZXBvcnQuIEhlcmUKKyAgICAgICAgYXJlIHRoZSByZWNvZ25pemVkIHZh
bHVlczoKKworICAgICAgICAxIC0ganVzdCByZXBvcnQgbnVtYmVyIG9mIGhlYXBzCisgICAgICAg
IDIgLSBzb21ldGhpbmcgaW4gYmV0d2VlbiAxIGFuZCAzCisgICAgICAgIDMgLSByZXBvcnQgZXZl
cnl0aGluZyB0aGF0IHRoZSBzdGF0dXMgcmVwb3J0ZXIgY2FuIHJlcG9ydCByaWdodCBub3cgKHBl
ci1wYWdlIGRhdGEgZm9yCisgICAgICAgICAgICBzZWdyZWdhdGVkL2JpdGZpdCBoZWFwcywgbG90
cyBvZiBkZXRhaWxzIGZvciBsYXJnZSBoZWFwcykKKworICAgICAgICBJZiB0aGUgc3RhdHVzIHJl
cG9ydGVyIGV2ZXIgcmVwb3J0ZWQgcGVyLW9iamVjdCBpbmZvcm1hdGlvbiwgaXQgd291bGQgYmUg
YXQgbGV2ZWwgNCBvciBoaWdoZXIuCisgICAgICAgIEl0J3Mgc2FmZSB0byBwYXNzIDk5OTkgb3Ig
d2hhdGV2ZXIgaWYgeW91IGp1c3Qgd2FudCB0aGUgbWF4aW11bSByZXBvcnQgdGhhdCBsaWJwYXMg
c3VwcG9ydHMuCisgICAgICAgIFRMO0RSIGZvciBub3cgeW91IHVzdWFsbHkgd2FudCBXZWJLaXRQ
YXNTdGF0dXNSZXBvcnRlcj0zLgorCisgICAgICAgICogYm1hbGxvYy9FbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQpOgorICAgICAgICAq
IGxpYnBhcy9leHBvcnQucmI6IEFkZGVkLgorICAgICAgICAqIGxpYnBhcy9leHBvcnQuc2g6IFJl
bW92ZWQuCisgICAgICAgICogbGlicGFzL3NyYy9saWJwYXMvcGFzX2JpdGZpdF9kaXJlY3Rvcnku
YzoKKyAgICAgICAgKHBhc19iaXRmaXRfZGlyZWN0b3J5X2NvbnN0cnVjdCk6IEkgbmVlZGVkIHRv
IHJhdGlvbmFsaXplIGhvdyB3ZSBpbml0aWFsaXplIGRpc2FibGVkIGRpcmVjdG9yaWVzIHRvIG1h
a2Ugc3RhdHVzIHJlcG9ydGluZyB3b3JrLgorICAgICAgICAocGFzX2JpdGZpdF9kaXJlY3Rvcnlf
Z2V0X2ZpcnN0X2ZyZWVfdmlldyk6CisgICAgICAgICogbGlicGFzL3NyYy9saWJwYXMvcGFzX2xh
cmdlX3NoYXJpbmdfcG9vbC5jOgorICAgICAgICAoc3RhdGVzX21hdGNoKToKKyAgICAgICAgKiBs
aWJwYXMvc3JjL2xpYnBhcy9wYXNfc3RhdHVzX3JlcG9ydGVyLmM6CisgICAgICAgIChwYXNfc3Rh
dHVzX3JlcG9ydGVyX2R1bXBfYml0Zml0X2RpcmVjdG9yeSk6CisgICAgICAgIChkdW1wX2xhcmdl
X3NoYXJpbmdfcG9vbF9ub2RlX2NhbGxiYWNrKToKKyAgICAgICAgKHBhc19zdGF0dXNfcmVwb3J0
ZXJfZHVtcF9sYXJnZV9zaGFyaW5nX3Bvb2wpOgorICAgICAgICAocGFzX3N0YXR1c19yZXBvcnRl
cl9kdW1wX2V2ZXJ5dGhpbmcpOgorICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0
dXNfcmVwb3J0ZXIuaDoKKyAgICAgICAgKiBsaWJwYXMvc3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9v
bER1bXAuY3BwOgorICAgICAgICAqIGxpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sRHVt
cC5oOgorICAgICAgICAqIGxpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sVGVzdHMuY3Bw
OgorICAgICAgICAoc3RkOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAoc3RkOjpSYW5nZTo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChzdGQ6OlJhbmdlOjpvcGVyYXRvciE9IGNvbnN0KToK
KyAgICAgICAgKHN0ZDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChzdGQ6OmFzc2VydFN0YXRlKToK
KyAgICAgICAgKHN0ZDo6dGVzdEdvb2RDb2FsZXNjZUVwb2NoVXBkYXRlKToKKyAgICAgICAgKGFk
ZExhcmdlU2hhcmluZ1Bvb2xUZXN0cyk6CisgICAgICAgIChzdGQ6OnRlc3RCYWRDb2FsZXNjZUVw
b2NoVXBkYXRlKTogRGVsZXRlZC4KKwogMjAyMS0wOS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFtsaWJwYXNdIGZpeCBEZWJ1Z0hlYXAKSW5kZXg6IFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksMTAgQEAgaW50IG1hbGxvY19lbmdhZ2VkX25hbm8odm9pZCk7CiB9CiAjZW5kaWYKIAor
I2lmIEJVU0UoTElCUEFTKQorI2luY2x1ZGUgInBhc19zdGF0dXNfcmVwb3J0ZXIuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHN0YXRpYyBib29sIGlzTWFsbG9jRW52aXJvbm1l
bnRWYXJpYWJsZVNldCgpCkBAIC0xMzYsNiArMTQwLDE0IEBAIERFRklORV9TVEFUSUNfUEVSX1BS
T0NFU1NfU1RPUkFHRShFbnZpcm8KIEVudmlyb25tZW50OjpFbnZpcm9ubWVudChjb25zdCBMb2Nr
SG9sZGVyJikKICAgICA6IG1faXNEZWJ1Z0hlYXBFbmFibGVkKGNvbXB1dGVJc0RlYnVnSGVhcEVu
YWJsZWQoKSkKIHsKKyNpZiBCVVNFKExJQlBBUykKKyAgICBjb25zdCBjaGFyKiBzdGF0dXNSZXBv
cnRlciA9IGdldGVudigiV2ViS2l0UGFzU3RhdHVzUmVwb3J0ZXIiKTsKKyAgICBpZiAoc3RhdHVz
UmVwb3J0ZXIpIHsKKyAgICAgICAgdW5zaWduZWQgZW5hYmxlZDsKKyAgICAgICAgaWYgKHNzY2Fu
ZihzdGF0dXNSZXBvcnRlciwgIiV1IiwgJmVuYWJsZWQpID09IDEpCisgICAgICAgICAgICBwYXNf
c3RhdHVzX3JlcG9ydGVyX2VuYWJsZWQgPSBlbmFibGVkOworICAgIH0KKyNlbmRpZgogfQogCiBi
b29sIEVudmlyb25tZW50Ojpjb21wdXRlSXNEZWJ1Z0hlYXBFbmFibGVkKCkKSW5kZXg6IFNvdXJj
ZS9ibWFsbG9jL2xpYnBhcy9leHBvcnQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
bGlicGFzL2V4cG9ydC5yYgkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMv
ZXhwb3J0LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisjIS91c3IvYmluL2Vu
diBydWJ5CisjIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICdmaWxl
dXRpbHMnCityZXF1aXJlICdnZXRvcHRsb25nJworcmVxdWlyZSAncGF0aG5hbWUnCisKK29wdHMg
PSBHZXRvcHRMb25nLm5ldygKKyAgICBbICctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVCBdLAorICAgIFsgJy0tZm9yY2UnLCAnLWYnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVO
VCBdCispCisKKyRmb3JjZSA9IGZhbHNlCisKK29wdHMuZWFjaCB7CisgICAgfCBvcHQsIGFyZyB8
CisgICAgY2FzZSBvcHQKKyAgICB3aGVuICctLWhlbHAnCisgICAgICAgIHB1dHMgIlVzYWdlOiAu
L2V4cG9ydC5yYiBbLWZdIDxkZXN0aW5hdGlvbj4iCisgICAgICAgIHB1dHMKKyAgICAgICAgcHV0
cyAiQ29waWVzIGxvY2FsIGdpdCBjaGVja291dCAoaW5jbHVkaW5nIHVuc3RhZ2VkIGNoYW5nZXMg
dG8gZmlsZXMgaW4gdGhlIHJlcG8pIHRvIHRoZSIKKyAgICAgICAgcHV0cyAiZGVzdGluYXRpb24u
IE11c3QgYmUgcnVuIGluIHRoZSByZXBvJ3MgZGlyZWN0b3J5ICh0aGUgZGlyZWN0b3J5IHRoYXQg
Y29udGFpbnMgdGhpcyIKKyAgICAgICAgcHV0cyAic2NyaXB0KS4gRG9lcyBub3QgY2hhbmdlIHRo
ZSB0aW1lc3RhbXAgb2YgZmlsZXMgdGhhdCBkaWQgbm90IGNoYW5nZS4iCisgICAgICAgIHB1dHMK
KyAgICAgICAgcHV0cyAiT3B0aW9uczoiCisgICAgICAgIHB1dHMgIi0taGVscCAoLWgpICAgICBQ
cmludCB0aGlzIG1lc3NhZ2UuIgorICAgICAgICBwdXRzICItLWZvcmNlICgtZikgICAgQ29weSB0
byB0aGUgZGVzdGluYXRpb24gZXZlbiBpZiBpdCBkb2Vzbid0IGxvb2sgbGlrZSBhIGxpYnBhcyBk
aXJlY3RvcnkuIgorICAgICAgICBleGl0IDAKKworICAgIHdoZW4gJy0tZm9yY2UnCisgICAgICAg
ICRmb3JjZSA9IHRydWUKKworICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICBlbmQKK30KKwor
cmFpc2UgIkJhZCBhcmd1bWVudDsgc2VlIC0taGVscCIgdW5sZXNzIEFSR1YubGVuZ3RoID09IDEK
KworJGRlc3RpbmF0aW9uID0gUGF0aG5hbWUubmV3KEFSR1ZbMF0pLnJlYWxwYXRoCisKK3VubGVz
cyBQYXRobmFtZS5uZXcoInNyYy9saWJwYXMiKS5kaXJlY3Rvcnk/CisgICAgcHV0cyAiRXJyb3I6
IG11c3QgcnVuIHRoaXMgc2NyaXB0IGZyb20gYSBsaWJwYXMgZGlyZWN0b3J5LiIKKyAgICBleGl0
IDEKK2VuZAorCit1bmxlc3MgKCRkZXN0aW5hdGlvbiArICJzcmMvbGlicGFzIikuZGlyZWN0b3J5
PworICAgIGlmICRmb3JjZQorICAgICAgICBwdXRzICJXYXJuaW5nOiBkZXN0aW5hdGlvbiBkb2Vz
IG5vdCBsb29rIGxpa2UgYSBsaWJwYXMgZGlyZWN0b3J5LiIKKyAgICBlbHNlCisgICAgICAgIHB1
dHMgIkVycm9yOiBkZXN0aW5hdGlvbiBkb2VzIG5vdCBsb29rIGxpa2UgYSBsaWJwYXMgZGlyZWN0
b3J5OyB1c2UgLS1mb3JjZSB0byBvdmVycmlkZS4iCisgICAgICAgIGV4aXQgMQorICAgIGVuZAor
ZW5kCisKK2RlZiBwcmVwYXJlRGlyZWN0b3J5KGRpcmVjdG9yeSkKKyAgICByZXR1cm4gaWYgZGly
ZWN0b3J5LmRpcmVjdG9yeT8KKyAgICByYWlzZSBpZiBkaXJlY3RvcnkudG9fcyA9PSAiLiIKKyAg
ICByYWlzZSBpZiBkaXJlY3RvcnkudG9fcy5sZW5ndGggPD0gJGRlc3RpbmF0aW9uLnRvX3MubGVu
Z3RoCisgICAgcHJlcGFyZURpcmVjdG9yeShkaXJlY3RvcnkuZGlybmFtZSkKKyAgICBwdXRzICJQ
cmVwYXJpbmcgZGlyZWN0b3J5ICN7ZGlyZWN0b3J5fSIKKyAgICBGaWxlVXRpbHMucm1fcmYoZGly
ZWN0b3J5KQorICAgIGRpcmVjdG9yeS5ta2RpcgorZW5kCisKK0lPLnBvcGVuKCJnaXQgbHMtZmls
ZXMiLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgaW5wLmVhY2hfbGluZSB7CisgICAgICAgIHwg
bGluZSB8CisgICAgICAgIGxpbmUuY2hvbXAhCisgICAgICAgIGlucHV0RmlsZSA9IFBhdGhuYW1l
Lm5ldyhsaW5lKQorCisgICAgICAgIHJhaXNlIGlmIGlucHV0RmlsZS5kaXJlY3Rvcnk/CisgICAg
ICAgIAorICAgICAgICBvdXRwdXRGaWxlID0gJGRlc3RpbmF0aW9uICsgbGluZQorCisgICAgICAg
IGNvbnRlbnRzID0gaW5wdXRGaWxlLnJlYWQKKworICAgICAgICBpZiBvdXRwdXRGaWxlLmV4aXN0
PyBhbmQKKyAgICAgICAgICBpbnB1dEZpbGUuZGlyZWN0b3J5PyA9PSBvdXRwdXRGaWxlLmRpcmVj
dG9yeT8gYW5kCisgICAgICAgICAgaW5wdXRGaWxlLmV4ZWN1dGFibGU/ID09IG91dHB1dEZpbGUu
ZXhlY3V0YWJsZT8gYW5kCisgICAgICAgICAgY29udGVudHMgPT0gb3V0cHV0RmlsZS5yZWFkCisg
ICAgICAgICAgICAjcHV0cyAiU2tpcHBpbmcgI3tsaW5lfSIKKyAgICAgICAgICAgIG5leHQKKyAg
ICAgICAgZW5kCisKKyAgICAgICAgcHV0cyAiQ29weWluZyAje2xpbmV9IHRvICN7b3V0cHV0Rmls
ZX0iCisKKyAgICAgICAgcHJlcGFyZURpcmVjdG9yeShvdXRwdXRGaWxlLmRpcm5hbWUpCisKKyAg
ICAgICAgRmlsZVV0aWxzLnJtX3JmKG91dHB1dEZpbGUpCisgICAgICAgIG91dHB1dEZpbGUud3Jp
dGUoY29udGVudHMpCisKKyAgICAgICAgb3V0cHV0RmlsZS5jaG1vZCgwNzU1KSBpZiBpbnB1dEZp
bGUuZXhlY3V0YWJsZT8KKyAgICB9Cit9CisKK3JhaXNlIHVubGVzcyAkPyA9PSAwCisKKwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5yYgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9leHBvcnQuc2gK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5zaAkocmV2aXNpb24g
MjgzMDExKQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL2V4cG9ydC5zaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDM5ICswLDAgQEAKLSMhL2Jpbi9zaAotIyBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotc2V0IC1lCi1zZXQgLXgKLQotcm0gLXJmIGxpYnBhcy1leHBvcnQKLWdpdCBjbG9u
ZSAuIGxpYnBhcy1leHBvcnQKLXJtIC1yZiBsaWJwYXMtZXhwb3J0Ly5naXQKLQotd2hlcmU9JDEK
LQotaWYgWyAieCR3aGVyZSIgIT0gIngiIF0KLXRoZW4KLSAgICBkaXR0byBsaWJwYXMtZXhwb3J0
ICR3aGVyZQotICAgIHJtIC1yZiBsaWJwYXMtZXhwb3J0Ci1maQotCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvZXhwb3J0LnNoCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfYml0Zml0
X2RpcmVjdG9yeS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGli
cGFzL3Bhc19iaXRmaXRfZGlyZWN0b3J5LmMJKHJldmlzaW9uIDI4MzAxMSkKKysrIFNvdXJjZS9i
bWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19iaXRmaXRfZGlyZWN0b3J5LmMJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDEwIEBAIHZvaWQgcGFzX2JpdGZpdF9kaXJlY3RvcnlfY29uc3Ry
dWN0KHBhc18KIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKKyAg
ICAvKiBOT1RFIC0gdGhpcyB3b3JrcyBldmVuIGlmIHRoZSBjb25maWcgaXMgZGlzYWJsZWQsIGFu
ZCBwcm9kdWNlcyBhIGRpcmVjdG9yeSB0aGF0IGlzIGVtcHR5IGFuZAorICAgICAgIGRvZXMgbm90
aGluZy4gVGhpcyBtYWtlcyBzZW5zZSBiZWNhdXNlIGl0IG1ha2VzIGl0IGVhc3kgdG8gaXRlcmF0
ZSBvdmVyIHRoZSBkaXJlY3RvcmllcyBpbiBhIGhlYXAKKyAgICAgICB3aXRob3V0IGtub3dpbmcg
d2hhdCB5b3VyIGNvbmZpZyBpcy4gKi8KKwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBwYXNf
bG9nKCJDcmVhdGluZyBkaXJlY3RvcnkgJXBcbiIsIGRpcmVjdG9yeSk7CiAgICAgCkBAIC01NCw3
ICs1OCw3IEBAIHZvaWQgcGFzX2JpdGZpdF9kaXJlY3RvcnlfY29uc3RydWN0KHBhc18KICAgICBw
YXNfYml0Zml0X2RpcmVjdG9yeV9tYXhfZnJlZV92ZWN0b3JfY29uc3RydWN0KCZkaXJlY3Rvcnkt
Pm1heF9mcmVlcyk7CiAgICAgcGFzX2JpdGZpdF9kaXJlY3Rvcnlfdmlld192ZWN0b3JfY29uc3Ry
dWN0KCZkaXJlY3RvcnktPnZpZXdzKTsKICAgICBwYXNfY29tcGFjdF9hdG9taWNfYml0Zml0X3Np
emVfY2xhc3NfcHRyX3N0b3JlKCZkaXJlY3RvcnktPmxhcmdlc3Rfc2l6ZV9jbGFzcywgTlVMTCk7
Ci0gICAgZGlyZWN0b3J5LT5jb25maWdfa2luZCA9IGNvbmZpZy0+a2luZDsKKyAgICBkaXJlY3Rv
cnktPmNvbmZpZ19raW5kID0gY29uZmlnLT5iYXNlLmlzX2VuYWJsZWQgPyBjb25maWctPmtpbmQg
OiBwYXNfYml0Zml0X3BhZ2VfY29uZmlnX2tpbmRfbnVsbDsKIAogICAgIGRpcmVjdG9yeS0+aGVh
cCA9IGhlYXA7CiAgICAgcGFzX2JpdGZpdF9kaXJlY3Rvcnlfc2VnbWVudGVkX2JpdHZlY3RvcnNf
Y29uc3RydWN0KCZkaXJlY3RvcnktPmJpdHZlY3RvcnMpOwpAQCAtNjIsNyArNjYsNyBAQCB2b2lk
IHBhc19iaXRmaXRfZGlyZWN0b3J5X2NvbnN0cnVjdChwYXNfCiAKICAgICAvKiBXZSBjb3VsZCBo
YXZlIGJlZW4gbGF6eSBhYm91dCB0aGlzIC0gYnV0IGl0J3MgcHJvYmFibHkgbm90IHN1cGVyIG5l
Y2Vzc2FyeSBzaW5jZSB0aGUgcG9pbnQKICAgICAgICBvZiBiaXRmaXQgZ2xvYmFsIGRpcmVjdG9y
aWVzIGlzIHRoYXQgdGhlcmUgd29uJ3QgYmUgdG9vIG1hbnkgb2YgdGhlbS4gKi8KLSAgICBpZiAo
cGFzX2JpdGZpdF9kaXJlY3RvcnlfZG9lc19zaGFyaW5nKGRpcmVjdG9yeSkpIHsKKyAgICBpZiAo
Y29uZmlnLT5iYXNlLmlzX2VuYWJsZWQgJiYgcGFzX2JpdGZpdF9kaXJlY3RvcnlfZG9lc19zaGFy
aW5nKGRpcmVjdG9yeSkpIHsKICAgICAgICAgcGFzX3BhZ2Vfc2hhcmluZ19wb29sX2FkZCgKICAg
ICAgICAgICAgICZwYXNfcGh5c2ljYWxfcGFnZV9zaGFyaW5nX3Bvb2wsCiAgICAgICAgICAgICBw
YXNfcGFnZV9zaGFyaW5nX3BhcnRpY2lwYW50X2NyZWF0ZSgKQEAgLTEwMiw2ICsxMDYsOCBAQCBw
YXNfYml0Zml0X2RpcmVjdG9yeV9nZXRfZmlyc3RfZnJlZV92aWV3CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhc19iaXRmaXRfcGFnZV9jb25maWcqIHBhZ2VfY29u
ZmlnKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworICAgIFBB
U19BU1NFUlQocGFnZV9jb25maWctPmJhc2UuaXNfZW5hYmxlZCk7CiAgICAgCiAgICAgZm9yICg7
OykgewogICAgICAgICBwYXNfZm91bmRfaW5kZXggZm91bmRfaW5kZXg7CkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2xhcmdlX3NoYXJp
bmdfcG9vbC5jCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3Jj
L2xpYnBhcy9wYXNfbGFyZ2Vfc2hhcmluZ19wb29sLmMJKHdvcmtpbmcgY29weSkKQEAgLTI4Nywx
MyArMjg3LDM5IEBAIHN1Y2Nlc3NvcihwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlKQogc3Rh
dGljIGJvb2wgc3RhdGVzX21hdGNoKHBhc19sYXJnZV9zaGFyaW5nX25vZGUqIGxlZnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFzX2xhcmdlX3NoYXJpbmdfbm9kZSogcmlnaHQpCiB7Ci0g
ICAgcmV0dXJuIGxlZnQtPmlzX2NvbW1pdHRlZCA9PSByaWdodC0+aXNfY29tbWl0dGVkCi0gICAg
ICAgICYmIGxlZnQtPnN5bmNocm9uaXphdGlvbl9zdHlsZSA9PSByaWdodC0+c3luY2hyb25pemF0
aW9uX3N0eWxlCi0gICAgICAgICYmICgoIWxlZnQtPm51bV9saXZlX2J5dGVzICYmICFyaWdodC0+
bnVtX2xpdmVfYnl0ZXMpIHx8Ci0gICAgICAgICAgICAocGFzX3JhbmdlX3NpemUobGVmdC0+cmFu
Z2UpID09IGxlZnQtPm51bV9saXZlX2J5dGVzICYmCi0gICAgICAgICAgICAgcGFzX3JhbmdlX3Np
emUocmlnaHQtPnJhbmdlKSA9PSByaWdodC0+bnVtX2xpdmVfYnl0ZXMpKQotICAgICAgICAmJiAo
bGVmdC0+dXNlX2Vwb2NoID09IHJpZ2h0LT51c2VfZXBvY2gKLSAgICAgICAgICAgIHx8ICghbGVm
dC0+aXNfY29tbWl0dGVkICYmICFsZWZ0LT5udW1fbGl2ZV9ieXRlcykpOworICAgIGJvb2wgYm90
aF9lbXB0eTsKKyAgICBib29sIGJvdGhfZnVsbDsKKyAgICAKKyAgICBpZiAobGVmdC0+aXNfY29t
bWl0dGVkICE9IHJpZ2h0LT5pc19jb21taXR0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChsZWZ0LT5zeW5jaHJvbml6YXRpb25fc3R5bGUgIT0gcmlnaHQtPnN5bmNocm9uaXph
dGlvbl9zdHlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm90aF9lbXB0eSA9Cisg
ICAgICAgICFsZWZ0LT5udW1fbGl2ZV9ieXRlcyAmJgorICAgICAgICAhcmlnaHQtPm51bV9saXZl
X2J5dGVzOworICAgIAorICAgIGJvdGhfZnVsbCA9CisgICAgICAgIHBhc19yYW5nZV9zaXplKGxl
ZnQtPnJhbmdlKSA9PSBsZWZ0LT5udW1fbGl2ZV9ieXRlcyAmJgorICAgICAgICBwYXNfcmFuZ2Vf
c2l6ZShyaWdodC0+cmFuZ2UpID09IHJpZ2h0LT5udW1fbGl2ZV9ieXRlczsKKworICAgIGlmICgh
Ym90aF9lbXB0eSAmJiAhYm90aF9mdWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
KiBSaWdodCBub3c6IGJvdGggc2lkZXMgaGF2ZSBpZGVudGljYWwgY29tbWl0IHN0YXRlcyBhbmQg
aWRlbnRpY2FsIHN5bmNocm9uaXphdGlvbiBzdHllcy4gQW5kCisgICAgICAgZWl0aGVyIGJvdGgg
c2lkZXMgYXJlIGVtcHR5IG9yIGJvdGggc2lkZXMgYXJlIGZ1bGwuCisgICAgCisgICAgICAgVGhl
IG9ubHkgcmVhc29uIHdoeSB3ZSB3b3VsZG4ndCB3YW50IHRvIGNvYWxlc2NlIGlzIGlmIGVwb2No
cyBkaWRuJ3QgbWF0Y2guIEJ1dCB0aGF0IG9ubHkKKyAgICAgICBtYXR0ZXJzIHdoZW4gdGhlIG1l
bW9yeSBpcyBmcmVlIGFuZCBjb21taXR0ZWQuICovCisKKyAgICBpZiAoIWxlZnQtPmlzX2NvbW1p
dHRlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYm90aF9mdWxsKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBsZWZ0LT51c2VfZXBvY2ggPT0gcmlnaHQtPnVz
ZV9lcG9jaDsKIH0KIAogc3RhdGljIGJvb2wgaXNfZWxpZ2libGUocGFzX2xhcmdlX3NoYXJpbmdf
bm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19z
dGF0dXNfcmVwb3J0ZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3Jj
L2xpYnBhcy9wYXNfc3RhdHVzX3JlcG9ydGVyLmMJKHJldmlzaW9uIDI4MzAxMSkKKysrIFNvdXJj
ZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNfcmVwb3J0ZXIuYwkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgInBhc19oZWFwX3RhYmxlLmgiCiAj
aW5jbHVkZSAicGFzX2xhcmdlX2hlYXAuaCIKICNpbmNsdWRlICJwYXNfbGFyZ2VfbWFwLmgiCisj
aW5jbHVkZSAicGFzX2xhcmdlX3NoYXJpbmdfcG9vbC5oIgogI2luY2x1ZGUgInBhc19sYXJnZV91
dGlsaXR5X2ZyZWVfaGVhcC5oIgogI2luY2x1ZGUgInBhc19sb2cuaCIKICNpbmNsdWRlICJwYXNf
cGFnZV9zaGFyaW5nX3Bvb2wuaCIKQEAgLTE5Niw2ICsxOTcsOSBAQCBzdGF0aWMgdm9pZCByZXBv
cnRfYml0Zml0X2RpcmVjdG9yeV9jb250CiB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9i
aXRmaXRfZGlyZWN0b3J5KAogICAgIHBhc19zdHJlYW0qIHN0cmVhbSwgcGFzX2JpdGZpdF9kaXJl
Y3RvcnkqIGRpcmVjdG9yeSkKIHsKKyAgICBpZiAoZGlyZWN0b3J5LT5jb25maWdfa2luZCA9PSBw
YXNfYml0Zml0X3BhZ2VfY29uZmlnX2tpbmRfbnVsbCkKKyAgICAgICAgcmV0dXJuOworICAgIAog
ICAgIHBhc19zdHJlYW1fcHJpbnRmKHN0cmVhbSwgIiAgICAgICAgICAgICVzIEdsb2JhbCBEaXIg
KCVwKTogIiwKICAgICAgICAgICAgICAgICAgICAgICBwYXNfYml0Zml0X3BhZ2VfY29uZmlnX3Zh
cmlhbnRfZ2V0X2NhcGl0YWxpemVkX3N0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzX2JpdGZpdF9wYWdlX2NvbmZpZ19raW5kX2dldF9jb25maWcoZGlyZWN0b3J5LT5jb25maWdf
a2luZCktPnZhcmlhbnQpLApAQCAtNjQ0LDYgKzY0OCwzOSBAQCB2b2lkIHBhc19zdGF0dXNfcmVw
b3J0ZXJfZHVtcF9hbGxfaGVhcHNfCiAgICAgcGFzX3N0cmVhbV9wcmludGYoc3RyZWFtLCAiXG4i
KTsKIH0KIAorc3RhdGljIGJvb2wgZHVtcF9sYXJnZV9zaGFyaW5nX3Bvb2xfbm9kZV9jYWxsYmFj
ayhwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhcmcpCit7CisgICAgcGFzX3N0cmVhbSog
c3RyZWFtOworCisgICAgc3RyZWFtID0gYXJnOworCisgICAgcGFzX3N0cmVhbV9wcmludGYoc3Ry
ZWFtLCAiICAgICAgICAlcC4uLiVwOiAlcywgJXp1LyV6dSBsaXZlICglLjBsZiUlKSwgJWxsdSIs
CisgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKW5vZGUtPnJhbmdlLmJlZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICh2b2lkKilub2RlLT5yYW5nZS5lbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgcGFzX2NvbW1pdF9tb2RlX2dldF9zdHJpbmcobm9kZS0+aXNfY29tbWl0dGVkKSwKKyAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5udW1fbGl2ZV9ieXRlcywKKyAgICAgICAgICAgICAg
ICAgICAgICBwYXNfcmFuZ2Vfc2l6ZShub2RlLT5yYW5nZSksCisgICAgICAgICAgICAgICAgICAg
ICAgMTAwLiAqIChkb3VibGUpbm9kZS0+bnVtX2xpdmVfYnl0ZXMgLyAoZG91YmxlKXBhc19yYW5n
ZV9zaXplKG5vZGUtPnJhbmdlKSwKKyAgICAgICAgICAgICAgICAgICAgICBub2RlLT51c2VfZXBv
Y2gpOworCisgICAgaWYgKG5vZGUtPnN5bmNocm9uaXphdGlvbl9zdHlsZSAhPSBwYXNfcGh5c2lj
YWxfbWVtb3J5X2lzX2xvY2tlZF9ieV92aXJ0dWFsX3JhbmdlX2NvbW1vbl9sb2NrKSB7CisgICAg
ICAgIHBhc19zdHJlYW1fcHJpbnRmKAorICAgICAgICAgICAgc3RyZWFtLCAiLCAlcyIsCisgICAg
ICAgICAgICBwYXNfcGh5c2ljYWxfbWVtb3J5X3N5bmNocm9uaXphdGlvbl9zdHlsZV9nZXRfc3Ry
aW5nKG5vZGUtPnN5bmNocm9uaXphdGlvbl9zdHlsZSkpOworICAgIH0KKworICAgIHBhc19zdHJl
YW1fcHJpbnRmKHN0cmVhbSwgIlxuIik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBw
YXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfbGFyZ2Vfc2hhcmluZ19wb29sKHBhc19zdHJlYW0qIHN0
cmVhbSkKK3sKKyAgICBwYXNfc3RyZWFtX3ByaW50ZihzdHJlYW0sICIgICAgTGFyZ2Ugc2hhcmlu
ZyBwb29sIGNvbnRlbnRzOlxuIik7CisgICAgcGFzX2xhcmdlX3NoYXJpbmdfcG9vbF9mb3JfZWFj
aChkdW1wX2xhcmdlX3NoYXJpbmdfcG9vbF9ub2RlX2NhbGxiYWNrLCBzdHJlYW0sIHBhc19sb2Nr
X2lzX2hlbGQpOworfQorCiB2b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF91dGlsaXR5X2hl
YXAocGFzX3N0cmVhbSogc3RyZWFtKQogewogICAgIHBhc19zdHJlYW1fcHJpbnRmKHN0cmVhbSwg
IiAgICBVdGlsaXR5IEhlYXA6XG4iKTsKQEAgLTk1OCw2ICs5OTUsMTAgQEAgdm9pZCBwYXNfc3Rh
dHVzX3JlcG9ydGVyX2R1bXBfZXZlcnl0aGluZwogICAgIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVt
cF9hbGxfaGVhcHMoc3RyZWFtKTsKICAgICBwYXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfYWxsX3No
YXJlZF9wYWdlX2RpcmVjdG9yaWVzKHN0cmVhbSk7CiAgICAgcGFzX3N0YXR1c19yZXBvcnRlcl9k
dW1wX2FsbF9oZWFwc19ub25fdXRpbGl0eV9zdW1tYXJpZXMoc3RyZWFtKTsKKyAgICAKKyAgICBp
ZiAocGFzX3N0YXR1c19yZXBvcnRlcl9lbmFibGVkID49IDMpCisgICAgICAgIHBhc19zdGF0dXNf
cmVwb3J0ZXJfZHVtcF9sYXJnZV9zaGFyaW5nX3Bvb2woc3RyZWFtKTsKKyAgICAKICAgICBwYXNf
c3RhdHVzX3JlcG9ydGVyX2R1bXBfdXRpbGl0eV9oZWFwKHN0cmVhbSk7CiAKICAgICBpZiAocGFz
X3N0YXR1c19yZXBvcnRlcl9lbmFibGVkID49IDMpIHsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0dXNfcmVwb3J0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfc3RhdHVzX3JlcG9ydGVyLmgJKHJldmlz
aW9uIDI4MzAxMSkKKysrIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zdGF0
dXNfcmVwb3J0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY4LDYgKzY4LDcgQEAgUEFTX0FQSSB2
b2lkIHBhc19zdGF0dXNfcmVwb3J0ZXJfZHVtcF9oZQogUEFTX0FQSSB2b2lkIHBhc19zdGF0dXNf
cmVwb3J0ZXJfZHVtcF9hbGxfaGVhcHMocGFzX3N0cmVhbSogc3RyZWFtKTsKIFBBU19BUEkgdm9p
ZCBwYXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfYWxsX3NoYXJlZF9wYWdlX2RpcmVjdG9yaWVzKHBh
c19zdHJlYW0qIHN0cmVhbSk7CiBQQVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1w
X2FsbF9oZWFwc19ub25fdXRpbGl0eV9zdW1tYXJpZXMocGFzX3N0cmVhbSogc3RyZWFtKTsKK1BB
U19BUEkgdm9pZCBwYXNfc3RhdHVzX3JlcG9ydGVyX2R1bXBfbGFyZ2Vfc2hhcmluZ19wb29sKHBh
c19zdHJlYW0qIHN0cmVhbSk7CiBQQVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1w
X3V0aWxpdHlfaGVhcChwYXNfc3RyZWFtKiBzdHJlYW0pOwogUEFTX0FQSSB2b2lkIHBhc19zdGF0
dXNfcmVwb3J0ZXJfZHVtcF90b3RhbF9mcmFnbWVudGF0aW9uKHBhc19zdHJlYW0qIHN0cmVhbSk7
CiBQQVNfQVBJIHZvaWQgcGFzX3N0YXR1c19yZXBvcnRlcl9kdW1wX3RpZXJfdXBfcmF0ZXMocGFz
X3N0cmVhbSogc3RyZWFtKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9M
YXJnZVNoYXJpbmdQb29sRHVtcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmNwcAkocmV2aXNpb24gMjgzMDExKQor
KysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy90ZXN0L0xhcmdlU2hhcmluZ1Bvb2xEdW1wLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTYgQEAgdm9pZCBmb3JFYWNoTGFyZ2VTaGFy
aW5nUG9vbE5vZGUoZnVuY3RpbwogICAgIHBhc19sYXJnZV9zaGFyaW5nX3Bvb2xfZm9yX2VhY2go
Zm9yRWFjaEFkYXB0ZXIsICZ2aXNpdG9yLCBwYXNfbG9ja19pc19ub3RfaGVsZCk7CiB9CiAKK3Zl
Y3RvcjxwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKj4gbGFyZ2VTaGFyaW5nUG9vbEFzVmVjdG9yKCkK
K3sKKyAgICB2ZWN0b3I8cGFzX2xhcmdlX3NoYXJpbmdfbm9kZSo+IHJlc3VsdDsKKyAgICBmb3JF
YWNoTGFyZ2VTaGFyaW5nUG9vbE5vZGUoWyZdIChwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2Rl
KSAtPiBib29sIHsKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhub2RlKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBkdW1wTGFy
Z2VTaGFyaW5nUG9vbCgpCiB7CiAgICAgY291dCA8PCAiTGFyZ2Ugc2hhcmluZyBwb29sOlxuIjsK
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sRHVt
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNo
YXJpbmdQb29sRHVtcC5oCShyZXZpc2lvbiAyODMwMTEpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJw
YXMvc3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9vbER1bXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsMTAgQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSAicGFzX2xhcmdl
X3NoYXJpbmdfcG9vbC5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogdm9pZCBmb3JFYWNoTGFyZ2VT
aGFyaW5nUG9vbE5vZGUoc3RkOjpmdW5jdGlvbjxib29sKHBhc19sYXJnZV9zaGFyaW5nX25vZGUq
KT4gdmlzaXRvcik7CitzdGQ6OnZlY3RvcjxwYXNfbGFyZ2Vfc2hhcmluZ19ub2RlKj4gbGFyZ2VT
aGFyaW5nUG9vbEFzVmVjdG9yKCk7CiB2b2lkIGR1bXBMYXJnZVNoYXJpbmdQb29sKCk7CiAKICNl
bmRpZiAvLyBUTEMKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9MYXJnZVNo
YXJpbmdQb29sVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9z
cmMvdGVzdC9MYXJnZVNoYXJpbmdQb29sVGVzdHMuY3BwCShyZXZpc2lvbiAyODMwMTEpCisrKyBT
b3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL3Rlc3QvTGFyZ2VTaGFyaW5nUG9vbFRlc3RzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTgt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDYgKzU2LDI2IEBAIHN0cnVjdCBSYW5nZSB7CiAgICAgICAg
ICwgZXBvY2goZXBvY2gpCiAgICAgewogICAgIH0KKworICAgIGV4cGxpY2l0IFJhbmdlKHBhc19s
YXJnZV9zaGFyaW5nX25vZGUqIG5vZGUpCisgICAgICAgIDogYmVnaW4obm9kZS0+cmFuZ2UuYmVn
aW4pCisgICAgICAgICwgZW5kKG5vZGUtPnJhbmdlLmVuZCkKKyAgICAgICAgLCBpc0NvbW1pdHRl
ZChub2RlLT5pc19jb21taXR0ZWQpCisgICAgICAgICwgbnVtTGl2ZUJ5dGVzKG5vZGUtPm51bV9s
aXZlX2J5dGVzKQorICAgICAgICAsIGVwb2NoKG5vZGUtPnVzZV9lcG9jaCkKKyAgICB7CisgICAg
fQorCisgICAgYm9vbCBvcGVyYXRvcj09KFJhbmdlIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJlZ2luID09IG90aGVyLmJlZ2luCisgICAgICAgICAgICAmJiBlbmQgPT0gb3Ro
ZXIuZW5kCisgICAgICAgICAgICAmJiBpc0NvbW1pdHRlZCA9PSBvdGhlci5pc0NvbW1pdHRlZAor
ICAgICAgICAgICAgJiYgbnVtTGl2ZUJ5dGVzID09IG90aGVyLm51bUxpdmVCeXRlcworICAgICAg
ICAgICAgJiYgZXBvY2ggPT0gb3RoZXIuZXBvY2g7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRv
ciE9KFJhbmdlIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAg
IAogICAgIHVpbnRwdHJfdCBiZWdpbjsKICAgICB1aW50cHRyX3QgZW5kOwpAQCAtNjQsMjQgKzg0
LDUxIEBAIHN0cnVjdCBSYW5nZSB7CiAgICAgdWludDY0X3QgZXBvY2g7CiB9OwogCitvc3RyZWFt
JiBvcGVyYXRvcjw8KG9zdHJlYW0mIG91dCwgUmFuZ2UgcmFuZ2UpCit7CisgICAgb3V0IDw8IHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJhbmdlLmJlZ2luKSA8PCAiLi4uIiA8PCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihyYW5nZS5lbmQpCisgICAgICAgIDw8ICIsICIgPDwgKHJhbmdlLmlzQ29t
bWl0dGVkID8gImNvbW1pdHRlZCIgOiAiZGVjb21taXR0ZWQiKSA8PCAiLCAiCisgICAgICAgIDw8
IHJhbmdlLm51bUxpdmVCeXRlcyA8PCAiLyIgPDwgKHJhbmdlLmVuZCAtIHJhbmdlLmJlZ2luKSA8
PCAiLCAiIDw8IHJhbmdlLmVwb2NoOworICAgIHJldHVybiBvdXQ7Cit9CisKIHZvaWQgYXNzZXJ0
U3RhdGUoY29uc3QgdmVjdG9yPFJhbmdlPiYgcmFuZ2VzKQogewotICAgIHNpemVfdCBpbmRleCA9
IDA7Ci0gICAgZm9yRWFjaExhcmdlU2hhcmluZ1Bvb2xOb2RlKAotICAgICAgICBbJl0gKHBhc19s
YXJnZV9zaGFyaW5nX25vZGUqIG5vZGUpIC0+IGJvb2wgewotICAgICAgICAgICAgQ0hFQ0tfTEVT
UyhpbmRleCwgcmFuZ2VzLnNpemUoKSk7Ci0gICAgICAgICAgICBSYW5nZSBleHBlY3RlZFJhbmdl
ID0gcmFuZ2VzW2luZGV4KytdOwotICAgICAgICAgICAgQ0hFQ0tfRVFVQUwobm9kZS0+cmFuZ2Uu
YmVnaW4sIGV4cGVjdGVkUmFuZ2UuYmVnaW4pOwotICAgICAgICAgICAgQ0hFQ0tfRVFVQUwobm9k
ZS0+cmFuZ2UuZW5kLCBleHBlY3RlZFJhbmdlLmVuZCk7Ci0gICAgICAgICAgICBDSEVDS19FUVVB
TChub2RlLT5pc19jb21taXR0ZWQsIGV4cGVjdGVkUmFuZ2UuaXNDb21taXR0ZWQpOwotICAgICAg
ICAgICAgQ0hFQ0tfRVFVQUwobm9kZS0+bnVtX2xpdmVfYnl0ZXMsIGV4cGVjdGVkUmFuZ2UubnVt
TGl2ZUJ5dGVzKTsKLSAgICAgICAgICAgIENIRUNLX0VRVUFMKG5vZGUtPnVzZV9lcG9jaCwgZXhw
ZWN0ZWRSYW5nZS5lcG9jaCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7
Ci0gICAgQ0hFQ0tfRVFVQUwoaW5kZXgsIHJhbmdlcy5zaXplKCkpOworICAgIHZlY3RvcjxwYXNf
bGFyZ2Vfc2hhcmluZ19ub2RlKj4gbm9kZXMgPSBsYXJnZVNoYXJpbmdQb29sQXNWZWN0b3IoKTsK
KyAgICAKKyAgICBib29sIGFsbEdvb2QgPSB0cnVlOworCisgICAgaWYgKG5vZGVzLnNpemUoKSAh
PSByYW5nZXMuc2l6ZSgpKSB7CisgICAgICAgIGNvdXQgPDwgIlN0YXRlIGRvZXMgbm90IG1hdGNo
IGJlY2F1c2Ugd2UgZXhwZWN0ZWQgIiA8PCByYW5nZXMuc2l6ZSgpIDw8ICIgcmFuZ2VzIGJ1dCBn
b3QgIgorICAgICAgICAgICAgIDw8IG5vZGVzLnNpemUoKSA8PCAiIHJhbmdlcy5cbiI7CisgICAg
ICAgIGFsbEdvb2QgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbm9kZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBw
YXNfbGFyZ2Vfc2hhcmluZ19ub2RlKiBub2RlID0gbm9kZXNbaW5kZXhdOworICAgICAgICAgICAg
UmFuZ2UgYWN0dWFsUmFuZ2Uobm9kZSk7CisgICAgICAgICAgICBSYW5nZSBleHBlY3RlZFJhbmdl
ID0gcmFuZ2VzW2luZGV4XTsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZFJhbmdlICE9IGFjdHVh
bFJhbmdlKSB7CisgICAgICAgICAgICAgICAgY291dCA8PCAiU3RhdGUgZG9lcyBub3QgbWF0Y2gg
YXQgaW5kZXggIiA8PCBpbmRleCA8PCAiOiBleHBlY3RlZDpcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIDw8ICIgICAgIiA8PCBleHBlY3RlZFJhbmdlIDw8ICIsIGJ1dCBnb3Q6XG4iCisgICAgICAg
ICAgICAgICAgICAgICA8PCAiICAgICIgPDwgYWN0dWFsUmFuZ2UgPDwgIlxuIjsKKyAgICAgICAg
ICAgICAgICBhbGxHb29kID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoIWFsbEdvb2QpIHsKKyAgICAgICAgY291dCA8PCAiR290IG1pc21hdGNoIGlu
IHN0YXRlcy4gRXhwZWN0ZWQgdGhlIHN0YXRlIHRvIGJlOlxuIjsKKyAgICAgICAgZm9yIChSYW5n
ZSByYW5nZSA6IHJhbmdlcykKKyAgICAgICAgICAgIGNvdXQgPDwgIiAgICAiIDw8IHJhbmdlIDw8
ICJcbiI7CisgICAgICAgIGNvdXQgPDwgIkJ1dCBnb3Q6XG4iOworICAgICAgICBmb3IgKHBhc19s
YXJnZV9zaGFyaW5nX25vZGUqIG5vZGUgOiBub2RlcykKKyAgICAgICAgICAgIGNvdXQgPDwgIiAg
ICAiIDw8IFJhbmdlKG5vZGUpIDw8ICJcbiI7CisgICAgfQorCisgICAgQ0hFQ0soYWxsR29vZCk7
CiB9CiAKLXZvaWQgdGVzdEJhZENvYWxlc2NlRXBvY2hVcGRhdGUoKQordm9pZCB0ZXN0R29vZENv
YWxlc2NlRXBvY2hVcGRhdGUoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CiAgICAgCkBAIC0xMjMsMTAgKzE3MCw3IEBAIHZvaWQgdGVzdEJhZENvYWxlc2Nl
RXBvY2hVcGRhdGUoKQogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkdW1wTGFyZ2VTaGFyaW5n
UG9vbCgpOwogCi0gICAgYXNzZXJ0U3RhdGUoeyBSYW5nZSgwLCAxMCAqIFBHLCBwYXNfY29tbWl0
dGVkLCAxMCAqIFBHLCAwKSwKLSAgICAgICAgICAgICAgICAgIFJhbmdlKDEwICogUEcsIDMwICog
UEcsIHBhc19jb21taXR0ZWQsIDIwICogUEcsIDMpLAotICAgICAgICAgICAgICAgICAgUmFuZ2Uo
MzAgKiBQRywgRU5ELCBwYXNfY29tbWl0dGVkLCBFTkQgLSAzMCAqIFBHLCAwKSB9KTsKLSAgICAK
KyAgICBhc3NlcnRTdGF0ZSh7IFJhbmdlKDAsIEVORCwgcGFzX2NvbW1pdHRlZCwgRU5ELCAzKSB9
KTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBAIC0xMzgsNyArMTgyLDcgQEAgdm9p
ZCBhZGRMYXJnZVNoYXJpbmdQb29sVGVzdHMoKQogI2lmIFRMQwogICAgIEVwb2NoSXNDb3VudGVy
IGVwb2NoSXNDb3VudGVyOwogICAgIAotICAgIEFERF9URVNUKHRlc3RCYWRDb2FsZXNjZUVwb2No
VXBkYXRlKCkpOworICAgIEFERF9URVNUKHRlc3RHb29kQ29hbGVzY2VFcG9jaFVwZGF0ZSgpKTsK
ICNlbmRpZiAvLyBUTEMKIH0KIAo=
</data>
<flag name="review"
          id="463045"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>