<?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>154480</bug_id>
          
          <creation_ts>2016-02-19 16:56:50 -0800</creation_ts>
          <short_desc>bmalloc: Chunk, Page, and Line don&apos;t need to be class templates</short_desc>
          <delta_ts>2016-03-01 10:49:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166615</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-02-19 16:56:50 -0800</bug_when>
    <thetext>bmalloc: Chunk, Page, and Line don&apos;t need to be class templates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166619</commentid>
    <comment_count>1</comment_count>
      <attachid>271824</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-02-19 16:58:36 -0800</bug_when>
    <thetext>Created attachment 271824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166625</commentid>
    <comment_count>2</comment_count>
      <attachid>271824</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-02-19 17:05:42 -0800</bug_when>
    <thetext>Comment on attachment 271824
Patch

Gavin reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166627</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-02-19 17:06:44 -0800</bug_when>
    <thetext>Committed r196847: &lt;http://trac.webkit.org/changeset/196847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169491</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-01 10:49:04 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r196847: &lt;http://trac.webkit.org/changeset/196847&gt;

Just to document, trivial buildfix landed in http://trac.webkit.org/changeset/196856</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271824</attachid>
            <date>2016-02-19 16:58:36 -0800</date>
            <delta_ts>2016-02-19 17:05:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154480-20160219165818.patch</filename>
            <type>text/plain</type>
            <size>49283</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Njg0NikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAyLTE5ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogQ2h1bmssIFBh
Z2UsIGFuZCBMaW5lIGRvbid0IG5lZWQgdG8gYmUgY2xhc3MgdGVtcGxhdGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0ODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBuZWVkZWQgY2xhc3MgdGVt
cGxhdGVzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gc21hbGwgYW5kIG1lZGl1bSwKKyAgICAgICAg
YnV0IG1lZGl1bSBpcyBnb25lIG5vdy4KKworICAgICAgICAqIGJtYWxsb2MueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBibWFsbG9jL0NodW5rLmg6IFJlbW92ZWQuCisgICAg
ICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmluaXRpYWxp
emVMaW5lTWV0YWRhdGEpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbEJ1
bXBSYW5nZXMpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2Mv
TGluZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJtYWxsb2MvUGFnZS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGJtYWxsb2MvU2l6ZXMuaDoKKyAgICAgICAgKiBibWFsbG9jL1NtYWxsQ2h1bmsuaDog
UmVwbGFjZWQgd2l0aCBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NodW5rLmguCisgICAgICAgIChi
bWFsbG9jOjpTbWFsbENodW5rOjpiZWdpbik6CisgICAgICAgIChibWFsbG9jOjpTbWFsbENodW5r
OjplbmQpOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxDaHVuazo6bGluZXMpOgorICAgICAgICAo
Ym1hbGxvYzo6U21hbGxDaHVuazo6cGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxDaHVu
azo6Z2V0KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsTGluZTo6Z2V0KToKKyAgICAgICAgKGJt
YWxsb2M6OlNtYWxsTGluZTo6YmVnaW4pOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpl
bmQpOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxQYWdlOjpnZXQpOgorICAgICAgICAoYm1hbGxv
Yzo6U21hbGxQYWdlOjpiZWdpbik6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OmVuZCk6
CisgICAgICAgIChibWFsbG9jOjpDaHVuazo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoYm1h
bGxvYzo6Q2h1bms6OmVuZCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpDaHVuazo6bGlu
ZXMpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6Q2h1bms6OnBhZ2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBibWFsbG9jL1NtYWxsTGluZS5oOiBSZXBsYWNlZCB3aXRoIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTGluZS5oLgorICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpyZWYpOgor
ICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpkZXJlZik6CisgICAgICAgIChibWFsbG9jOjpM
aW5lPFRyYWl0cz46OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkxpbmU8VHJh
aXRzPjo6ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkxpbmU8VHJhaXRzPjo6cmVm
KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkxpbmU8VHJhaXRzPjo6ZGVyZWYpOiBEZWxl
dGVkLgorICAgICAgICAqIGJtYWxsb2MvU21hbGxQYWdlLmg6IFJlcGxhY2VkIHdpdGggU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9QYWdlLmguCisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6Omhh
c0ZyZWVMaW5lcyk6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OnNldEhhc0ZyZWVMaW5l
cyk6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OnJlZik6CisgICAgICAgIChibWFsbG9j
OjpTbWFsbFBhZ2U6OmRlcmVmKToKKyAgICAgICAgKGJtYWxsb2M6OlBhZ2U6Omhhc0ZyZWVMaW5l
cyk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpQYWdlOjpzZXRIYXNGcmVlTGluZXMpOiBE
ZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6UGFnZTxUcmFpdHM+OjpyZWYpOiBEZWxldGVkLgor
ICAgICAgICAoYm1hbGxvYzo6UGFnZTxUcmFpdHM+OjpkZXJlZik6IERlbGV0ZWQuCisgICAgICAg
ICogYm1hbGxvYy9TbWFsbFRyYWl0cy5oOiBSZW1vdmVkLgorCiAyMDE2LTAyLTE4ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYzogUmVtb3ZlIHRo
ZSBjb25jZXB0IG9mIG1lZGl1bSBvYmplY3RzCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTY4NDUpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDEzICszNyw5IEBACiAJCTE0REQ3ODk5MThGNDhENEEwMDk1MDcwMiAvKiBD
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0
NDY5RTUxN0E0NkJGRTAwRjlFQTFEIC8qIENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4OUExOEY0OEQ0QTAwOTUwNzAyIC8qIERl
YWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDVGNjg1QTE3OURDOTAyMDBENjU1OTggLyogRGVhbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNERENzg5QzE4RjQ4RDRBMDA5
NTA3MDIgLyogQnVtcEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIEJ1bXBBbGxvY2F0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNERE
NzhCNDE4RjQ4RDZCMDA5NTA3MDIgLyogQ2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0FBQTk0MThDRTVDQTYwMDIyMDFFNCAvKiBDaHVuay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0REQ3
OEI1MThGNDhENkIwMDk1MDcwMiAvKiBMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBMzIwNzE4ODVGOUU2MDA3MjY5RTAgLyogTGluZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0REQ3OEJB
MThGNDhENkIwMDk1MDcwMiAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDZCRUUyMzE4Qzk4MEQ2MDAwMkQ1QTIgLyogUGFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEJCMThG
NDhENkIwMDk1MDcwMiAvKiBTbWFsbENodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDdBQUE4QzE4Q0QzNkE3MDAyMjAxRTQgLyogU21hbGxDaHVu
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0
REQ3OEJDMThGNDhENkIwMDk1MDcwMiAvKiBTbWFsbExpbmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NTI0Nzg2MThCQzc1N0MwMEY4MDA5OCAvKiBT
bWFsbExpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxNERENzhCRDE4RjQ4RDZCMDA5NTA3MDIgLyogU21hbGxQYWdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNFMjlFRDE4Q0FFOTA1MDBGRThB
MEYgLyogU21hbGxQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMTRERDc4QkUxOEY0OEQ2QjAwOTUwNzAyIC8qIFNtYWxsVHJhaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDdBQUE5NzE4Q0U1
RkI2MDAyMjAxRTQgLyogU21hbGxUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNERENzhDNTE4RjQ4RDc1MDA5NTA3MDIgLyogQWxnb3Jp
dGhtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDIx
QTg3NzE4RUU0NjJBMDBCNERENjggLyogQWxnb3JpdGhtLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4QzYxOEY0OEQ3NTAwOTUwNzAyIC8q
IEFzeW5jVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQxN0Y2NTIxOEJBODhBMDAwNzZGQTNGIC8qIEFzeW5jVGFzay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEM3MThGNDhENzUwMDk1
MDcwMiAvKiBCQXNzZXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDEzRTQ2ODE4OUVFREU0MDA1NDZENjggLyogQkFzc2VydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTMsMTMgKzEwOSwxMCBA
QAogCQkxNDVGNjg3ODE3OUUzQTQ0MDBENjU1OTggLyogUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IFJhbmdlLmg7IHBhdGggPSBibWFsbG9j
L1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9u
SWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQkxNDZCRUUxRTE4Qzg0MUM1MDAw
MkQ1QTIgLyogU2VncmVnYXRlZEZyZWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFNlZ3JlZ2F0ZWRGcmVlTGlzdC5oOyBwYXRoID0gYm1hbGxvYy9TZWdyZWdhdGVkRnJl
ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QkVFMjExOEM4NDVBRTAw
MDJENUEyIC8qIFNlZ3JlZ2F0ZWRGcmVlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTZWdyZWdhdGVkRnJlZUxpc3QuY3BwOyBwYXRoID0gYm1hbGxvYy9TZWdy
ZWdhdGVkRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDZCRUUy
MzE4Qzk4MEQ2MDAwMkQ1QTIgLyogUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQYWdlLmg7IHBhdGggPSBibWFsbG9jL1BhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQ3OUUyMTIxN0ExQTI1NTAwNkQ0RTlEIC8qIFZlY3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gVmVjdG9yLmg7IHBhdGggPSBi
bWFsbG9jL1ZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lm
aWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJMTQ3OUUyMTQxN0Ex
QTYzRTAwNkQ0RTlEIC8qIFZNQWxsb2NhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBs
aW5lRW5kaW5nID0gMDsgbmFtZSA9IFZNQWxsb2NhdGUuaDsgcGF0aCA9IGJtYWxsb2MvVk1BbGxv
Y2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklk
ZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJMTQ3QUFBODgxOENEMTdDRTAwMjIw
MUU0IC8qIExhcmdlQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGFy
Z2VDaHVuay5oOyBwYXRoID0gYm1hbGxvYy9MYXJnZUNodW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0N0FBQThDMThDRDM2QTcwMDIyMDFFNCAvKiBTbWFsbENodW5rLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYWxsQ2h1bmsuaDsgcGF0aCA9IGJtYWxs
b2MvU21hbGxDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDdBQUE5NDE4
Q0U1Q0E2MDAyMjAxRTQgLyogQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQ2h1bmsuaDsgcGF0aCA9IGJtYWxsb2MvQ2h1bmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMTQ3QUFBOTcxOENFNUZCNjAwMjIwMUU0IC8qIFNtYWxsVHJhaXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYWxsVHJhaXRzLmg7IHBhdGggPSBibWFsbG9j
L1NtYWxsVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0ODU2NTVFMThB
NDNBRjkwMEVENjk0MiAvKiBCb3VuZGFyeVRhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCb3VuZGFyeVRhZy5oOyBwYXRoID0gYm1hbGxvYy9Cb3VuZGFyeVRhZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDg1NjU2MDE4QTQzREJBMDBFRDY5NDIgLyogT2Jq
ZWN0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPYmplY3RUeXBlLmg7
IHBhdGggPSBibWFsbG9jL09iamVjdFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQ4OTVEOEYxQTNBMzE5QzAwMDYyMzVEIC8qIEVudmlyb25tZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudmlyb25tZW50LmNwcDsgcGF0aCA9IGJtYWxs
b2MvRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzLDcg
KzEyNiw2IEBACiAJCTE0Q0MzOTQ0MThFQTg3NDMwMDRBRkUzNCAvKiBsaWJtYm1hbGxvYy5keWxp
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYm1ibWFsbG9j
LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxNEQyQ0Q5QTFB
QTEyQ0ZCMDA3NzA0NDAgLyogVk1TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBWTVN0YXRlLmg7IHBhdGggPSBibWFsbG9jL1ZNU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTREOURCNDUxN0YyNDQ3MTAwRUFBQjc5IC8qIEZpeGVkVmVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBGaXhlZFZl
Y3Rvci5oOyBwYXRoID0gYm1hbGxvYy9GaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNw
cDsgfTsKLQkJMTREQTMyMDcxODg1RjlFNjAwNzI2OUUwIC8qIExpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpbmUuaDsgcGF0aCA9IGJtYWxs
b2MvTGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlv
bklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJMTREQTMyMEMxODg3NUIwOTAw
NzI2OUUwIC8qIEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGVhcC5o
OyBwYXRoID0gYm1hbGxvYy9IZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
REEzMjBFMTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEhlYXAuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGMjcxQkUxOEVBMzk2MzAwOEMxNTJGIC8qIGxpYmJt
YWxsb2MuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
YXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliYm1hbGxvYy5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTkzLDEzICsxODUsOSBAQAogCQkx
NDdBQUE5QTE4Q0U1RkQzMDAyMjAxRTQgLyogaGVhcDogc21hbGwgfCBtZWRpdW0gKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTE0N0FBQTk0MThDRTVDQTYw
MDIyMDFFNCAvKiBDaHVuay5oICovLAotCQkJCTE0REEzMjA3MTg4NUY5RTYwMDcyNjlFMCAvKiBM
aW5lLmggKi8sCi0JCQkJMTQ2QkVFMjMxOEM5ODBENjAwMDJENUEyIC8qIFBhZ2UuaCAqLywKIAkJ
CQkxNDdBQUE4QzE4Q0QzNkE3MDAyMjAxRTQgLyogU21hbGxDaHVuay5oICovLAogCQkJCTE0NTI0
Nzg2MThCQzc1N0MwMEY4MDA5OCAvKiBTbWFsbExpbmUuaCAqLywKIAkJCQkxNDNFMjlFRDE4Q0FF
OTA1MDBGRThBMEYgLyogU21hbGxQYWdlLmggKi8sCi0JCQkJMTQ3QUFBOTcxOENFNUZCNjAwMjIw
MUU0IC8qIFNtYWxsVHJhaXRzLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJoZWFwOiBzbWFsbCB8
IG1lZGl1bSI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzAzLDcgKzI5MSw2IEBA
CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkxNERENzhCNTE4RjQ4RDZCMDA5NTA3MDIgLyog
TGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0YxOEY0OEQ3NTAwOTUwNzAyIC8qIFZl
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDOTE5QzkxOEZDQzU5RjAwMjhEQjQzIC8qIEJQ
bGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OEMxOEY0OENBRTAwOTUwNzAyIC8q
IExhcmdlQ2h1bmsuaCBpbiBIZWFkZXJzICovLApAQCAtMzExLDcgKzI5OCw2IEBACiAJCQkJMTQ0
MEFGQ0IxQTk1MjYxMTAwODM3RkFBIC8qIFpvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MEZB
MDA1MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTE0REQ3OEI0MThGNDhENkIwMDk1MDcwMiAvKiBDaHVuay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRERDc4Q0ExOEY0OEQ3NTAwOTUwNzAyIC8qIE11dGV4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDNDQjgxRDE5MDIyQkM5MDBCMTZBNDUgLyogU3RhdGljTXV0ZXguaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NDhDMzAxMThGMzc1NEMwMDUwMjgzOSAvKiBibWFsbG9jLmggaW4gSGVhZGVycyAq
LywKQEAgLTMyMiw3ICszMDgsNiBAQAogCQkJCTE0REQ3OENEMThGNDhENzUwMDk1MDcwMiAvKiBS
YW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OUMxOEY0OEQ0QTAwOTUwNzAyIC8qIEJ1
bXBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODk5MThGNDhENEEwMDk1MDcw
MiAvKiBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTRERDc4QkUxOEY0OEQ2QjAwOTUwNzAy
IC8qIFNtYWxsVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MDE4RjQ4Q0VCMDA5
NTA3MDIgLyogU2l6ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OEM3MThGNDhENzUwMDk1
MDcwMiAvKiBCQXNzZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhEMDE4RjQ4RDc1MDA5
NTA3MDIgLyogVk1BbGxvY2F0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzAsNyArMzE1LDYgQEAK
IAkJCQkxNDNFRjlCMDFBOUZBQkY2MDA0RjVDNzcgLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0REQ3OENFMThGNDhENzUwMDk1MDcwMiAvKiBTeXNjYWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNERENzhDNjE4RjQ4RDc1MDA5NTA3MDIgLyogQXN5bmNUYXNrLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkxNERENzhCQTE4RjQ4RDZCMDA5NTA3MDIgLyogUGFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRERDc4QkIxOEY0OEQ2QjAwOTUwNzAyIC8qIFNtYWxsQ2h1bmsuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0REQ3OEM5MThGNDhENzUwMDk1MDcwMiAvKiBJbmxpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0ODk1RDkyMUEzQTMxOUMwMDA2MjM1RCAvKiBFbnZpcm9ubWVudC5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NodW5rLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DaHVuay5oCShyZXZpc2lvbiAxOTY4NDUp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NodW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
ODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIENodW5rX2gKLSNkZWZpbmUgQ2h1bmtfaAotCi0jaW5jbHVkZSAiT2JqZWN0VHlw
ZS5oIgotI2luY2x1ZGUgIlNpemVzLmgiCi0jaW5jbHVkZSAiVk1BbGxvY2F0ZS5oIgotCi1uYW1l
c3BhY2UgYm1hbGxvYyB7Ci0KLXRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLWNsYXNzIENodW5rIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6UGFnZVR5cGUgUGFnZTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6TGluZVR5cGUgTGluZTsKLQotICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbGluZVNpemUgPSBUcmFpdHM6OmxpbmVTaXplOwotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgY2h1bmtTaXplID0gVHJhaXRzOjpjaHVua1NpemU7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjaHVua09mZnNldCA9IFRyYWl0czo6Y2h1bmtPZmZzZXQ7Ci0gICAgc3RhdGljIGNv
bnN0IHVpbnRwdHJfdCBjaHVua01hc2sgPSBUcmFpdHM6OmNodW5rTWFzazsKLQotICAgIHN0YXRp
YyBDaHVuayogZ2V0KHZvaWQqKTsKLQotICAgIFBhZ2UqIGJlZ2luKCkgeyByZXR1cm4gUGFnZTo6
Z2V0KExpbmU6OmdldChtX21lbW9yeSkpOyB9Ci0gICAgUGFnZSogZW5kKCkgeyByZXR1cm4gJm1f
cGFnZXNbcGFnZUNvdW50XTsgfQotICAgIAotICAgIExpbmUqIGxpbmVzKCkgeyByZXR1cm4gbV9s
aW5lczsgfQotICAgIFBhZ2UqIHBhZ2VzKCkgeyByZXR1cm4gbV9wYWdlczsgfQotCi1wcml2YXRl
OgotICAgIHN0YXRpY19hc3NlcnQoISh2bVBhZ2VTaXplICUgbGluZVNpemUpLCAidm1QYWdlU2l6
ZSBtdXN0IGJlIGFuIGV2ZW4gbXVsdGlwbGUgb2YgbGluZSBzaXplIik7Ci0gICAgc3RhdGljX2Fz
c2VydCghKGNodW5rU2l6ZSAlIGxpbmVTaXplKSwgImNodW5rIHNpemUgbXVzdCBiZSBhbiBldmVu
IG11bHRpcGxlIG9mIGxpbmUgc2l6ZSIpOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsaW5l
Q291bnQgPSBjaHVua1NpemUgLyBsaW5lU2l6ZTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBh
Z2VDb3VudCA9IGNodW5rU2l6ZSAvIHZtUGFnZVNpemU7Ci0KLSAgICBMaW5lIG1fbGluZXNbbGlu
ZUNvdW50XTsKLSAgICBQYWdlIG1fcGFnZXNbcGFnZUNvdW50XTsKLQotICAgIC8vIEFsaWduIHRv
IHZtUGFnZVNpemUgdG8gYXZvaWQgc2hhcmluZyBwaHlzaWNhbCBwYWdlcyB3aXRoIG1ldGFkYXRh
LgotICAgIC8vIE90aGVyd2lzZSwgd2UnbGwgY29uZnVzZSB0aGUgc2NhdmVuZ2VyIGludG8gdHJ5
aW5nIHRvIHNjYXZlbmdlIG1ldGFkYXRhLgotICAgIC8vIEZJWE1FOiBCZWxvdyAjaWZkZWYgd29y
a2Fyb3VuZCBmaXggc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgYWxsIGxpbnV4IGJhc2VkIHBvcnRz
IGJ1bXAKLSAgICAvLyBvd24gZ2NjIHZlcnNpb24uIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMTYyI2M4NwotI2lmIEJQTEFURk9STShJT1MpCi0gICAgY2hh
ciBtX21lbW9yeVtdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYzODQpKSk7Ci0gICAgc3RhdGlj
X2Fzc2VydCh2bVBhZ2VTaXplID09IDE2Mzg0LCAidm1QYWdlU2l6ZSBhbmQgYWxpZ25tZW50IG11
c3QgYmUgc2FtZSIpOwotI2Vsc2UKLSAgICBjaGFyIG1fbWVtb3J5W10gX19hdHRyaWJ1dGVfXygo
YWxpZ25lZCg0MDk2KSkpOwotICAgIHN0YXRpY19hc3NlcnQodm1QYWdlU2l6ZSA9PSA0MDk2LCAi
dm1QYWdlU2l6ZSBhbmQgYWxpZ25tZW50IG11c3QgYmUgc2FtZSIpOwotI2VuZGlmCi19OwotCi10
ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1pbmxpbmUgYXV0byBDaHVuazxUcmFpdHM+OjpnZXQodm9p
ZCogb2JqZWN0KSAtPiBDaHVuayoKLXsKLSAgICBCQVNTRVJUKGlzU21hbGwob2JqZWN0KSk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENodW5rKj4obWFzayhvYmplY3QsIGNodW5rTWFzaykpOwot
fQotCi19OyAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gQ2h1bmsKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmNwcAkocmV2aXNpb24gMTk2ODQ1KQorKysgU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5j
bHVkZSAiQnVtcEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkxhcmdlQ2h1bmsuaCIKICNpbmNsdWRl
ICJMYXJnZU9iamVjdC5oIgotI2luY2x1ZGUgIkxpbmUuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNtYWxsQ2h1bmsuaCIKKyNpbmNsdWRl
ICJTbWFsbExpbmUuaCIKKyNpbmNsdWRlICJTbWFsbFBhZ2UuaCIKICNpbmNsdWRlIDx0aHJlYWQ+
CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTU0LDEyICs1NCwxMiBAQCB2b2lkIEhlYXA6Omlu
aXRpYWxpemVMaW5lTWV0YWRhdGEoKQogICAgICAgICBzaXplX3Qgb2JqZWN0ID0gMDsKICAgICAg
ICAgc2l6ZV90IGxpbmUgPSAwOwogICAgICAgICB3aGlsZSAob2JqZWN0IDwgdm1QYWdlU2l6ZSkg
ewotICAgICAgICAgICAgbGluZSA9IG9iamVjdCAvIFNtYWxsUGFnZTo6bGluZVNpemU7Ci0gICAg
ICAgICAgICBzaXplX3QgbGVmdG92ZXIgPSBvYmplY3QgJSBTbWFsbFBhZ2U6OmxpbmVTaXplOwor
ICAgICAgICAgICAgbGluZSA9IG9iamVjdCAvIHNtYWxsTGluZVNpemU7CisgICAgICAgICAgICBz
aXplX3QgbGVmdG92ZXIgPSBvYmplY3QgJSBzbWFsbExpbmVTaXplOwogCiAgICAgICAgICAgICBz
aXplX3Qgb2JqZWN0Q291bnQ7CiAgICAgICAgICAgICBzaXplX3QgcmVtYWluZGVyOwotICAgICAg
ICAgICAgZGl2aWRlUm91bmRpbmdVcChTbWFsbFBhZ2U6OmxpbmVTaXplIC0gbGVmdG92ZXIsIHNp
emUsIG9iamVjdENvdW50LCByZW1haW5kZXIpOworICAgICAgICAgICAgZGl2aWRlUm91bmRpbmdV
cChzbWFsbExpbmVTaXplIC0gbGVmdG92ZXIsIHNpemUsIG9iamVjdENvdW50LCByZW1haW5kZXIp
OwogCiAgICAgICAgICAgICBtZXRhZGF0YVtsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
c2hvcnQ+KGxlZnRvdmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KG9iamVjdENvdW50
KSB9OwogCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJh
bmdlcyhzdGQ6OgogICAgIEJBU1NFUlQocGFnZS0+aGFzRnJlZUxpbmVzKGxvY2spKTsKIAogICAg
IC8vIEZpbmQgYSBmcmVlIGxpbmUuCi0gICAgZm9yIChzaXplX3QgbGluZU51bWJlciA9IDA7IGxp
bmVOdW1iZXIgPCBTbWFsbFBhZ2U6OmxpbmVDb3VudDsgKytsaW5lTnVtYmVyKSB7CisgICAgZm9y
IChzaXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBzbWFsbExpbmVDb3VudDsgKyts
aW5lTnVtYmVyKSB7CiAgICAgICAgIGlmIChsaW5lc1tsaW5lTnVtYmVyXS5yZWZDb3VudChsb2Nr
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBIZWFw
OjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlcyhzdGQ6OgogICAgICAgICBwYWdlLT5yZWYobG9jayk7
CiAKICAgICAgICAgLy8gTWVyZ2Ugd2l0aCBzdWJzZXF1ZW50IGZyZWUgbGluZXMuCi0gICAgICAg
IHdoaWxlICgrK2xpbmVOdW1iZXIgPCBTbWFsbFBhZ2U6OmxpbmVDb3VudCkgeworICAgICAgICB3
aGlsZSAoKytsaW5lTnVtYmVyIDwgc21hbGxMaW5lQ291bnQpIHsKICAgICAgICAgICAgIGlmIChs
aW5lc1tsaW5lTnVtYmVyXS5yZWZDb3VudChsb2NrKSkKICAgICAgICAgICAgICAgICBicmVhazsK
IApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgJKHJldmlzaW9uIDE5Njg0NSkKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzY2F2ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0
aWNNdXRleD4mLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKICAgICB2b2lkIHNjYXZlbmdl
TGFyZ2VPYmplY3RzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwgc3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kcyk7CiAKLSAgICBzdGQ6OmFycmF5PHN0ZDo6YXJyYXk8TGluZU1ldGFkYXRh
LCBTbWFsbFBhZ2U6OmxpbmVDb3VudD4sIHNtYWxsTWF4IC8gYWxpZ25tZW50PiBtX3NtYWxsTGlu
ZU1ldGFkYXRhOworICAgIHN0ZDo6YXJyYXk8c3RkOjphcnJheTxMaW5lTWV0YWRhdGEsIHNtYWxs
TGluZUNvdW50Piwgc21hbGxNYXggLyBhbGlnbm1lbnQ+IG1fc21hbGxMaW5lTWV0YWRhdGE7CiAK
ICAgICBzdGQ6OmFycmF5PFZlY3RvcjxTbWFsbFBhZ2UqPiwgc21hbGxNYXggLyBhbGlnbm1lbnQ+
IG1fc21hbGxQYWdlc1dpdGhGcmVlTGluZXM7CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvTGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZS5oCShy
ZXZpc2lvbiAxOTY4NDUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIExpbmVfaAotI2RlZmluZSBMaW5lX2gKLQotI2luY2x1
ZGUgIkJBc3NlcnQuaCIKLSNpbmNsdWRlICJNdXRleC5oIgotI2luY2x1ZGUgIk9iamVjdFR5cGUu
aCIKLSNpbmNsdWRlIDxtdXRleD4KLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi10ZW1wbGF0ZTxj
bGFzcyBUcmFpdHM+Ci1jbGFzcyBMaW5lIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1l
IFRyYWl0czo6Q2h1bmtUeXBlIENodW5rOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5p
bXVtT2JqZWN0U2l6ZSA9IFRyYWl0czo6bWluaW11bU9iamVjdFNpemU7Ci0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBsaW5lU2l6ZSA9IFRyYWl0czo6bGluZVNpemU7Ci0gICAgCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIgbWF4UmVmQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkIGNoYXI+OjptYXgoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGxpbmVTaXplIC8gbWluaW11
bU9iamVjdFNpemUgPCBtYXhSZWZDb3VudCwgIm1heGltdW0gb2JqZWN0IGNvdW50IG11c3QgZml0
IGluIExpbmUiKTsKLQotICAgIHN0YXRpYyBMaW5lKiBnZXQodm9pZCopOwotCi0gICAgdm9pZCBy
ZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHVuc2lnbmVkIGNoYXIpOwotICAgIGJv
b2wgZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwotICAgIHVuc2lnbmVkIHJl
ZkNvdW50KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKSB7IHJldHVybiBtX3JlZkNvdW50
OyB9Ci0gICAgCi0gICAgY2hhciogYmVnaW4oKTsKLSAgICBjaGFyKiBlbmQoKTsKLQotcHJpdmF0
ZToKLSAgICB1bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBU
cmFpdHM+Ci1pbmxpbmUgYXV0byBMaW5lPFRyYWl0cz46OmdldCh2b2lkKiBvYmplY3QpIC0+IExp
bmUqCi17Ci0gICAgQkFTU0VSVChpc1NtYWxsKG9iamVjdCkpOwotICAgIENodW5rKiBjaHVuayA9
IENodW5rOjpnZXQob2JqZWN0KTsKLSAgICBzaXplX3QgbGluZU51bWJlciA9IChyZWludGVycHJl
dF9jYXN0PGNoYXIqPihvYmplY3QpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2h1bmspKSAv
IGxpbmVTaXplOwotICAgIHJldHVybiAmY2h1bmstPmxpbmVzKClbbGluZU51bWJlcl07Ci19Ci0K
LXRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLWlubGluZSBjaGFyKiBMaW5lPFRyYWl0cz46OmJlZ2lu
KCkKLXsKLSAgICBDaHVuayogY2h1bmsgPSBDaHVuazo6Z2V0KHRoaXMpOwotICAgIHNpemVfdCBs
aW5lTnVtYmVyID0gdGhpcyAtIGNodW5rLT5saW5lcygpOwotICAgIHNpemVfdCBvZmZzZXQgPSBs
aW5lTnVtYmVyICogbGluZVNpemU7Ci0gICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0PGNoYXIq
PihjaHVuaylbb2Zmc2V0XTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotaW5saW5lIGNo
YXIqIExpbmU8VHJhaXRzPjo6ZW5kKCkKLXsKLSAgICByZXR1cm4gYmVnaW4oKSArIGxpbmVTaXpl
OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1pbmxpbmUgdm9pZCBMaW5lPFRyYWl0cz46
OnJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgdW5zaWduZWQgY2hhciByZWZDb3Vu
dCkKLXsKLSAgICBCQVNTRVJUKCFtX3JlZkNvdW50KTsKLSAgICBCQVNTRVJUKHJlZkNvdW50IDw9
IG1heFJlZkNvdW50KTsKLSAgICBtX3JlZkNvdW50ID0gcmVmQ291bnQ7Ci19Ci0KLXRlbXBsYXRl
PGNsYXNzIFRyYWl0cz4KLWlubGluZSBib29sIExpbmU8VHJhaXRzPjo6ZGVyZWYoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYpCi17Ci0gICAgQkFTU0VSVChtX3JlZkNvdW50KTsKLSAgICAt
LW1fcmVmQ291bnQ7Ci0gICAgcmV0dXJuICFtX3JlZkNvdW50OwotfQotCi19IC8vIG5hbWVzcGFj
ZSBibWFsbG9jCi0KLSNlbmRpZiAvLyBMaW5lX2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGFnZS5oCShy
ZXZpc2lvbiAxOTY4NDUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBhZ2VfaAotI2RlZmluZSBQYWdlX2gKLQotI2luY2x1
ZGUgIkJBc3NlcnQuaCIKLSNpbmNsdWRlICJNdXRleC5oIgotI2luY2x1ZGUgIlZNQWxsb2NhdGUu
aCIKLSNpbmNsdWRlIDxtdXRleD4KLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHM+Ci1jbGFzcyBQYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVu
YW1lIFRyYWl0czo6Q2h1bmtUeXBlIENodW5rOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRz
OjpMaW5lVHlwZSBMaW5lOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsaW5lU2l6ZSA9IFRy
YWl0czo6bGluZVNpemU7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsaW5lQ291bnQgPSB2bVBh
Z2VTaXplIC8gbGluZVNpemU7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtYXhS
ZWZDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46Om1heCgpOwotICAg
IHN0YXRpY19hc3NlcnQobGluZUNvdW50IDwgbWF4UmVmQ291bnQsICJtYXhpbXVtIGxpbmUgY291
bnQgbXVzdCBmaXQgaW4gUGFnZSIpOwotICAgIAotICAgIHN0YXRpYyBQYWdlKiBnZXQoTGluZSop
OwotCi0gICAgdm9pZCByZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwotICAgIGJv
b2wgZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwotICAgIHVuc2lnbmVkIHJl
ZkNvdW50KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKSB7IHJldHVybiBtX3JlZkNvdW50
OyB9Ci0gICAgCi0gICAgc2l6ZV90IHNpemVDbGFzcygpIHsgcmV0dXJuIG1fc2l6ZUNsYXNzOyB9
Ci0gICAgdm9pZCBzZXRTaXplQ2xhc3Moc2l6ZV90IHNpemVDbGFzcykgeyBtX3NpemVDbGFzcyA9
IHNpemVDbGFzczsgfQotICAgIAotICAgIGJvb2wgaGFzRnJlZUxpbmVzKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mKSBjb25zdCB7IHJldHVybiBtX2hhc0ZyZWVMaW5lczsgfQotICAgIHZv
aWQgc2V0SGFzRnJlZUxpbmVzKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBib29sIGhh
c0ZyZWVMaW5lcykgeyBtX2hhc0ZyZWVMaW5lcyA9IGhhc0ZyZWVMaW5lczsgfQotICAgIAotICAg
IExpbmUqIGJlZ2luKCk7Ci0gICAgTGluZSogZW5kKCk7Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWdu
ZWQgY2hhciBtX2hhc0ZyZWVMaW5lczogMTsKLSAgICB1bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ6
IDc7Ci0gICAgdW5zaWduZWQgY2hhciBtX3NpemVDbGFzczsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cz4KLWlubGluZSB2b2lkIFBhZ2U8VHJhaXRzPjo6cmVmKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mKQotewotICAgIEJBU1NFUlQobV9yZWZDb3VudCA8IG1heFJlZkNvdW50
KTsKLSAgICArK21fcmVmQ291bnQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlu
bGluZSBib29sIFBhZ2U8VHJhaXRzPjo6ZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4
PiYpCi17Ci0gICAgQkFTU0VSVChtX3JlZkNvdW50KTsKLSAgICAtLW1fcmVmQ291bnQ7Ci0gICAg
cmV0dXJuICFtX3JlZkNvdW50OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci1pbmxp
bmUgYXV0byBQYWdlPFRyYWl0cz46OmdldChMaW5lKiBsaW5lKSAtPiBQYWdlKgotewotICAgIENo
dW5rKiBjaHVuayA9IENodW5rOjpnZXQobGluZSk7Ci0gICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBs
aW5lIC0gY2h1bmstPmxpbmVzKCk7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSBsaW5lTnVtYmVy
ICogbGluZVNpemUgLyB2bVBhZ2VTaXplOwotICAgIHJldHVybiAmY2h1bmstPnBhZ2VzKClbcGFn
ZU51bWJlcl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlubGluZSBhdXRvIFBh
Z2U8VHJhaXRzPjo6YmVnaW4oKSAtPiBMaW5lKgotewotICAgIENodW5rKiBjaHVuayA9IENodW5r
OjpnZXQodGhpcyk7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSB0aGlzIC0gY2h1bmstPnBhZ2Vz
KCk7Ci0gICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBwYWdlTnVtYmVyICogbGluZUNvdW50OwotICAg
IHJldHVybiAmY2h1bmstPmxpbmVzKClbbGluZU51bWJlcl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFRyYWl0cz4KLWlubGluZSBhdXRvIFBhZ2U8VHJhaXRzPjo6ZW5kKCkgLT4gTGluZSoKLXsK
LSAgICByZXR1cm4gYmVnaW4oKSArIGxpbmVDb3VudDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgYm1h
bGxvYwotCi0jZW5kaWYgLy8gUGFnZV9oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Np
emVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCShyZXZp
c2lvbiAxOTY4NDUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFNpemVzIHsKIAogICAgIHN0YXRpYyBj
b25zdCBzaXplX3Qgc21hbGxNYXggPSAxMDI0OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21h
bGxMaW5lU2l6ZSA9IDI1NjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTGluZUNvdW50
ID0gdm1QYWdlU2l6ZSAvIHNtYWxsTGluZVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
bWFsbExpbmVNYXNrID0gfihzbWFsbExpbmVTaXplIC0gMXVsKTsKIAogICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc21hbGxDaHVua1NpemUgPSBzdXBlckNodW5rU2l6ZSAvIDI7CkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsQ2h1bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1NtYWxsQ2h1bmsuaAkocmV2aXNpb24gMTk2ODQ1KQkoZnJvbSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0NodW5rLmg6MTk2ODQ1KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TbWFsbENodW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENodW5rX2gKKyNk
ZWZpbmUgQ2h1bmtfaAorCisjaW5jbHVkZSAiT2JqZWN0VHlwZS5oIgorI2luY2x1ZGUgIlNpemVz
LmgiCisjaW5jbHVkZSAiVk1BbGxvY2F0ZS5oIgorCituYW1lc3BhY2UgYm1hbGxvYyB7CisKK3Rl
bXBsYXRlPGNsYXNzIFRyYWl0cz4KK2NsYXNzIENodW5rIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIFRyYWl0czo6UGFnZVR5cGUgUGFnZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
YWl0czo6TGluZVR5cGUgTGluZTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGluZVNpemUg
PSBUcmFpdHM6OmxpbmVTaXplOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2h1bmtTaXplID0g
VHJhaXRzOjpjaHVua1NpemU7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjaHVua09mZnNldCA9
IFRyYWl0czo6Y2h1bmtPZmZzZXQ7CisgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBjaHVua01h
c2sgPSBUcmFpdHM6OmNodW5rTWFzazsKKworICAgIHN0YXRpYyBDaHVuayogZ2V0KHZvaWQqKTsK
KworICAgIFBhZ2UqIGJlZ2luKCkgeyByZXR1cm4gUGFnZTo6Z2V0KExpbmU6OmdldChtX21lbW9y
eSkpOyB9CisgICAgUGFnZSogZW5kKCkgeyByZXR1cm4gJm1fcGFnZXNbcGFnZUNvdW50XTsgfQor
ICAgIAorICAgIExpbmUqIGxpbmVzKCkgeyByZXR1cm4gbV9saW5lczsgfQorICAgIFBhZ2UqIHBh
Z2VzKCkgeyByZXR1cm4gbV9wYWdlczsgfQorCitwcml2YXRlOgorICAgIHN0YXRpY19hc3NlcnQo
ISh2bVBhZ2VTaXplICUgbGluZVNpemUpLCAidm1QYWdlU2l6ZSBtdXN0IGJlIGFuIGV2ZW4gbXVs
dGlwbGUgb2YgbGluZSBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydCghKGNodW5rU2l6ZSAlIGxp
bmVTaXplKSwgImNodW5rIHNpemUgbXVzdCBiZSBhbiBldmVuIG11bHRpcGxlIG9mIGxpbmUgc2l6
ZSIpOworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsaW5lQ291bnQgPSBjaHVua1NpemUgLyBs
aW5lU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZ2VDb3VudCA9IGNodW5rU2l6ZSAv
IHZtUGFnZVNpemU7CisKKyAgICBMaW5lIG1fbGluZXNbbGluZUNvdW50XTsKKyAgICBQYWdlIG1f
cGFnZXNbcGFnZUNvdW50XTsKKworICAgIC8vIEFsaWduIHRvIHZtUGFnZVNpemUgdG8gYXZvaWQg
c2hhcmluZyBwaHlzaWNhbCBwYWdlcyB3aXRoIG1ldGFkYXRhLgorICAgIC8vIE90aGVyd2lzZSwg
d2UnbGwgY29uZnVzZSB0aGUgc2NhdmVuZ2VyIGludG8gdHJ5aW5nIHRvIHNjYXZlbmdlIG1ldGFk
YXRhLgorICAgIC8vIEZJWE1FOiBCZWxvdyAjaWZkZWYgd29ya2Fyb3VuZCBmaXggc2hvdWxkIGJl
IHJlbW92ZWQgYWZ0ZXIgYWxsIGxpbnV4IGJhc2VkIHBvcnRzIGJ1bXAKKyAgICAvLyBvd24gZ2Nj
IHZlcnNpb24uIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQw
MTYyI2M4NworI2lmIEJQTEFURk9STShJT1MpCisgICAgY2hhciBtX21lbW9yeVtdIF9fYXR0cmli
dXRlX18oKGFsaWduZWQoMTYzODQpKSk7CisgICAgc3RhdGljX2Fzc2VydCh2bVBhZ2VTaXplID09
IDE2Mzg0LCAidm1QYWdlU2l6ZSBhbmQgYWxpZ25tZW50IG11c3QgYmUgc2FtZSIpOworI2Vsc2UK
KyAgICBjaGFyIG1fbWVtb3J5W10gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0MDk2KSkpOworICAg
IHN0YXRpY19hc3NlcnQodm1QYWdlU2l6ZSA9PSA0MDk2LCAidm1QYWdlU2l6ZSBhbmQgYWxpZ25t
ZW50IG11c3QgYmUgc2FtZSIpOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+
CitpbmxpbmUgYXV0byBDaHVuazxUcmFpdHM+OjpnZXQodm9pZCogb2JqZWN0KSAtPiBDaHVuayoK
K3sKKyAgICBCQVNTRVJUKGlzU21hbGwob2JqZWN0KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PENodW5rKj4obWFzayhvYmplY3QsIGNodW5rTWFzaykpOworfQorCit9OyAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYworCisjZW5kaWYgLy8gQ2h1bmsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U21hbGxDaHVuay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxD
aHVuay5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsQ2h1
bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw0MyArMjMsMzUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgQ2h1bmtfaAotI2RlZmluZSBDaHVua19oCisjaWZuZGVmIFNtYWxsQ2h1bmtf
aAorI2RlZmluZSBTbWFsbENodW5rX2gKIAotI2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKICNpbmNs
dWRlICJTaXplcy5oIgorI2luY2x1ZGUgIlNtYWxsTGluZS5oIgorI2luY2x1ZGUgIlNtYWxsUGFn
ZS5oIgogI2luY2x1ZGUgIlZNQWxsb2NhdGUuaCIKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCi10
ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1jbGFzcyBDaHVuayB7CitjbGFzcyBTbWFsbENodW5rIHsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6UGFnZVR5cGUgUGFnZTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6TGluZVR5cGUgTGluZTsKKyAgICBzdGF0aWMgU21h
bGxDaHVuayogZ2V0KHZvaWQqKTsKIAotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGluZVNpemUg
PSBUcmFpdHM6OmxpbmVTaXplOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2h1bmtTaXplID0g
VHJhaXRzOjpjaHVua1NpemU7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBjaHVua09mZnNldCA9
IFRyYWl0czo6Y2h1bmtPZmZzZXQ7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBjaHVua01h
c2sgPSBUcmFpdHM6OmNodW5rTWFzazsKLQotICAgIHN0YXRpYyBDaHVuayogZ2V0KHZvaWQqKTsK
LQotICAgIFBhZ2UqIGJlZ2luKCkgeyByZXR1cm4gUGFnZTo6Z2V0KExpbmU6OmdldChtX21lbW9y
eSkpOyB9Ci0gICAgUGFnZSogZW5kKCkgeyByZXR1cm4gJm1fcGFnZXNbcGFnZUNvdW50XTsgfQor
ICAgIFNtYWxsUGFnZSogYmVnaW4oKSB7IHJldHVybiBTbWFsbFBhZ2U6OmdldChTbWFsbExpbmU6
OmdldChtX21lbW9yeSkpOyB9CisgICAgU21hbGxQYWdlKiBlbmQoKSB7IHJldHVybiAmbV9wYWdl
c1twYWdlQ291bnRdOyB9CiAgICAgCi0gICAgTGluZSogbGluZXMoKSB7IHJldHVybiBtX2xpbmVz
OyB9Ci0gICAgUGFnZSogcGFnZXMoKSB7IHJldHVybiBtX3BhZ2VzOyB9CisgICAgU21hbGxMaW5l
KiBsaW5lcygpIHsgcmV0dXJuIG1fbGluZXM7IH0KKyAgICBTbWFsbFBhZ2UqIHBhZ2VzKCkgeyBy
ZXR1cm4gbV9wYWdlczsgfQogCiBwcml2YXRlOgotICAgIHN0YXRpY19hc3NlcnQoISh2bVBhZ2VT
aXplICUgbGluZVNpemUpLCAidm1QYWdlU2l6ZSBtdXN0IGJlIGFuIGV2ZW4gbXVsdGlwbGUgb2Yg
bGluZSBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydCghKGNodW5rU2l6ZSAlIGxpbmVTaXplKSwg
ImNodW5rIHNpemUgbXVzdCBiZSBhbiBldmVuIG11bHRpcGxlIG9mIGxpbmUgc2l6ZSIpOworICAg
IHN0YXRpY19hc3NlcnQoISh2bVBhZ2VTaXplICUgc21hbGxMaW5lU2l6ZSksICJ2bVBhZ2VTaXpl
IG11c3QgYmUgYW4gZXZlbiBtdWx0aXBsZSBvZiBsaW5lIHNpemUiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KCEoc21hbGxDaHVua1NpemUgJSBzbWFsbExpbmVTaXplKSwgImNodW5rIHNpemUgbXVzdCBi
ZSBhbiBldmVuIG11bHRpcGxlIG9mIGxpbmUgc2l6ZSIpOwogCi0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBsaW5lQ291bnQgPSBjaHVua1NpemUgLyBsaW5lU2l6ZTsKLSAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHBhZ2VDb3VudCA9IGNodW5rU2l6ZSAvIHZtUGFnZVNpemU7CisgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBsaW5lQ291bnQgPSBzbWFsbENodW5rU2l6ZSAvIHNtYWxsTGluZVNpemU7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWdlQ291bnQgPSBzbWFsbENodW5rU2l6ZSAvIHZtUGFn
ZVNpemU7CiAKLSAgICBMaW5lIG1fbGluZXNbbGluZUNvdW50XTsKLSAgICBQYWdlIG1fcGFnZXNb
cGFnZUNvdW50XTsKKyAgICBTbWFsbExpbmUgbV9saW5lc1tsaW5lQ291bnRdOworICAgIFNtYWxs
UGFnZSBtX3BhZ2VzW3BhZ2VDb3VudF07CiAKICAgICAvLyBBbGlnbiB0byB2bVBhZ2VTaXplIHRv
IGF2b2lkIHNoYXJpbmcgcGh5c2ljYWwgcGFnZXMgd2l0aCBtZXRhZGF0YS4KICAgICAvLyBPdGhl
cndpc2UsIHdlJ2xsIGNvbmZ1c2UgdGhlIHNjYXZlbmdlciBpbnRvIHRyeWluZyB0byBzY2F2ZW5n
ZSBtZXRhZGF0YS4KQEAgLTc0LDExICs2Niw1MiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi10
ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1pbmxpbmUgYXV0byBDaHVuazxUcmFpdHM+OjpnZXQodm9p
ZCogb2JqZWN0KSAtPiBDaHVuayoKK2lubGluZSBTbWFsbENodW5rKiBTbWFsbENodW5rOjpnZXQo
dm9pZCogb2JqZWN0KQoreworICAgIEJBU1NFUlQoaXNTbWFsbChvYmplY3QpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U21hbGxDaHVuayo+KG1hc2sob2JqZWN0LCBzbWFsbENodW5rTWFzaykp
OworfQorCitpbmxpbmUgU21hbGxMaW5lKiBTbWFsbExpbmU6OmdldCh2b2lkKiBvYmplY3QpCiB7
CiAgICAgQkFTU0VSVChpc1NtYWxsKG9iamVjdCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
aHVuayo+KG1hc2sob2JqZWN0LCBjaHVua01hc2spKTsKKyAgICBTbWFsbENodW5rKiBjaHVuayA9
IFNtYWxsQ2h1bms6OmdldChvYmplY3QpOworICAgIHNpemVfdCBsaW5lTnVtYmVyID0gKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG9iamVjdCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVu
aykpIC8gc21hbGxMaW5lU2l6ZTsKKyAgICByZXR1cm4gJmNodW5rLT5saW5lcygpW2xpbmVOdW1i
ZXJdOworfQorCitpbmxpbmUgY2hhciogU21hbGxMaW5lOjpiZWdpbigpCit7CisgICAgU21hbGxD
aHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpnZXQodGhpcyk7CisgICAgc2l6ZV90IGxpbmVOdW1i
ZXIgPSB0aGlzIC0gY2h1bmstPmxpbmVzKCk7CisgICAgc2l6ZV90IG9mZnNldCA9IGxpbmVOdW1i
ZXIgKiBzbWFsbExpbmVTaXplOworICAgIHJldHVybiAmcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y2h1bmspW29mZnNldF07Cit9CisKK2lubGluZSBjaGFyKiBTbWFsbExpbmU6OmVuZCgpCit7Cisg
ICAgcmV0dXJuIGJlZ2luKCkgKyBzbWFsbExpbmVTaXplOworfQorCitpbmxpbmUgU21hbGxQYWdl
KiBTbWFsbFBhZ2U6OmdldChTbWFsbExpbmUqIGxpbmUpCit7CisgICAgU21hbGxDaHVuayogY2h1
bmsgPSBTbWFsbENodW5rOjpnZXQobGluZSk7CisgICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBsaW5l
IC0gY2h1bmstPmxpbmVzKCk7CisgICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSBsaW5lTnVtYmVyICog
c21hbGxMaW5lU2l6ZSAvIHZtUGFnZVNpemU7CisgICAgcmV0dXJuICZjaHVuay0+cGFnZXMoKVtw
YWdlTnVtYmVyXTsKK30KKworaW5saW5lIFNtYWxsTGluZSogU21hbGxQYWdlOjpiZWdpbigpCit7
CisgICAgU21hbGxDaHVuayogY2h1bmsgPSBTbWFsbENodW5rOjpnZXQodGhpcyk7CisgICAgc2l6
ZV90IHBhZ2VOdW1iZXIgPSB0aGlzIC0gY2h1bmstPnBhZ2VzKCk7CisgICAgc2l6ZV90IGxpbmVO
dW1iZXIgPSBwYWdlTnVtYmVyICogc21hbGxMaW5lQ291bnQ7CisgICAgcmV0dXJuICZjaHVuay0+
bGluZXMoKVtsaW5lTnVtYmVyXTsKK30KKworaW5saW5lIFNtYWxsTGluZSogU21hbGxQYWdlOjpl
bmQoKQoreworICAgIHJldHVybiBiZWdpbigpICsgc21hbGxMaW5lQ291bnQ7CiB9CiAKIH07IC8v
IG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsTGlu
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxMaW5lLmgJKHJl
dmlzaW9uIDE5Njg0NSkJKGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lLmg6MTk2ODQ1
KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExpbmVfaAorI2RlZmluZSBMaW5lX2gKKworI2luY2x1ZGUgIkJBc3Nl
cnQuaCIKKyNpbmNsdWRlICJNdXRleC5oIgorI2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKKyNpbmNs
dWRlIDxtdXRleD4KKworbmFtZXNwYWNlIGJtYWxsb2MgeworCit0ZW1wbGF0ZTxjbGFzcyBUcmFp
dHM+CitjbGFzcyBMaW5lIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6
Q2h1bmtUeXBlIENodW5rOworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5pbXVtT2JqZWN0
U2l6ZSA9IFRyYWl0czo6bWluaW11bU9iamVjdFNpemU7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBsaW5lU2l6ZSA9IFRyYWl0czo6bGluZVNpemU7CisgICAgCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIgbWF4UmVmQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNo
YXI+OjptYXgoKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGxpbmVTaXplIC8gbWluaW11bU9iamVjdFNp
emUgPCBtYXhSZWZDb3VudCwgIm1heGltdW0gb2JqZWN0IGNvdW50IG11c3QgZml0IGluIExpbmUi
KTsKKworICAgIHN0YXRpYyBMaW5lKiBnZXQodm9pZCopOworCisgICAgdm9pZCByZWYoc3RkOjps
b2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHVuc2lnbmVkIGNoYXIpOworICAgIGJvb2wgZGVyZWYo
c3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOworICAgIHVuc2lnbmVkIHJlZkNvdW50KHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKSB7IHJldHVybiBtX3JlZkNvdW50OyB9CisgICAg
CisgICAgY2hhciogYmVnaW4oKTsKKyAgICBjaGFyKiBlbmQoKTsKKworcHJpdmF0ZToKKyAgICB1
bnNpZ25lZCBjaGFyIG1fcmVmQ291bnQ7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Citp
bmxpbmUgYXV0byBMaW5lPFRyYWl0cz46OmdldCh2b2lkKiBvYmplY3QpIC0+IExpbmUqCit7Cisg
ICAgQkFTU0VSVChpc1NtYWxsKG9iamVjdCkpOworICAgIENodW5rKiBjaHVuayA9IENodW5rOjpn
ZXQob2JqZWN0KTsKKyAgICBzaXplX3QgbGluZU51bWJlciA9IChyZWludGVycHJldF9jYXN0PGNo
YXIqPihvYmplY3QpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2h1bmspKSAvIGxpbmVTaXpl
OworICAgIHJldHVybiAmY2h1bmstPmxpbmVzKClbbGluZU51bWJlcl07Cit9CisKK3RlbXBsYXRl
PGNsYXNzIFRyYWl0cz4KK2lubGluZSBjaGFyKiBMaW5lPFRyYWl0cz46OmJlZ2luKCkKK3sKKyAg
ICBDaHVuayogY2h1bmsgPSBDaHVuazo6Z2V0KHRoaXMpOworICAgIHNpemVfdCBsaW5lTnVtYmVy
ID0gdGhpcyAtIGNodW5rLT5saW5lcygpOworICAgIHNpemVfdCBvZmZzZXQgPSBsaW5lTnVtYmVy
ICogbGluZVNpemU7CisgICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVuaylb
b2Zmc2V0XTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgoraW5saW5lIGNoYXIqIExpbmU8
VHJhaXRzPjo6ZW5kKCkKK3sKKyAgICByZXR1cm4gYmVnaW4oKSArIGxpbmVTaXplOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+CitpbmxpbmUgdm9pZCBMaW5lPFRyYWl0cz46OnJlZihzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgdW5zaWduZWQgY2hhciByZWZDb3VudCkKK3sKKyAg
ICBCQVNTRVJUKCFtX3JlZkNvdW50KTsKKyAgICBCQVNTRVJUKHJlZkNvdW50IDw9IG1heFJlZkNv
dW50KTsKKyAgICBtX3JlZkNvdW50ID0gcmVmQ291bnQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFRy
YWl0cz4KK2lubGluZSBib29sIExpbmU8VHJhaXRzPjo6ZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYpCit7CisgICAgQkFTU0VSVChtX3JlZkNvdW50KTsKKyAgICAtLW1fcmVmQ291
bnQ7CisgICAgcmV0dXJuICFtX3JlZkNvdW50OworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9j
CisKKyNlbmRpZiAvLyBMaW5lX2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxM
aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUuaAko
d29ya2luZyBjb3B5KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IExpbmVfaAotI2RlZmluZSBMaW5lX2gKKyNpZm5kZWYgU21hbGxMaW5lX2gKKyNkZWZpbmUgU21h
bGxMaW5lX2gKIAogI2luY2x1ZGUgIkJBc3NlcnQuaCIKICNpbmNsdWRlICJNdXRleC5oIgpAQCAt
MzMsMTggKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotdGVtcGxhdGU8Y2xhc3Mg
VHJhaXRzPgotY2xhc3MgTGluZSB7CitjbGFzcyBTbWFsbExpbmUgewogcHVibGljOgotICAgIHR5
cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpDaHVua1R5cGUgQ2h1bms7Ci0KLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1pbmltdW1PYmplY3RTaXplID0gVHJhaXRzOjptaW5pbXVtT2JqZWN0U2l6ZTsK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxpbmVTaXplID0gVHJhaXRzOjpsaW5lU2l6ZTsKLSAg
ICAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtYXhSZWZDb3VudCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46Om1heCgpOwotICAgIHN0YXRpY19hc3NlcnQobGlu
ZVNpemUgLyBtaW5pbXVtT2JqZWN0U2l6ZSA8IG1heFJlZkNvdW50LCAibWF4aW11bSBvYmplY3Qg
Y291bnQgbXVzdCBmaXQgaW4gTGluZSIpOworICAgIHN0YXRpY19hc3NlcnQoc21hbGxMaW5lU2l6
ZSAvIGFsaWdubWVudCA8IG1heFJlZkNvdW50LCAibWF4aW11bSBvYmplY3QgY291bnQgbXVzdCBm
aXQgaW4gTGluZSIpOwogCi0gICAgc3RhdGljIExpbmUqIGdldCh2b2lkKik7CisgICAgc3RhdGlj
IFNtYWxsTGluZSogZ2V0KHZvaWQqKTsKIAogICAgIHZvaWQgcmVmKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mLCB1bnNpZ25lZCBjaGFyKTsKICAgICBib29sIGRlcmVmKHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNNdXRleD4mKTsKQEAgLTU3LDQwICs1MSwxNCBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIGNoYXIgbV9yZWZDb3VudDsKIH07CiAKLXRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLWlu
bGluZSBhdXRvIExpbmU8VHJhaXRzPjo6Z2V0KHZvaWQqIG9iamVjdCkgLT4gTGluZSoKLXsKLSAg
ICBCQVNTRVJUKGlzU21hbGwob2JqZWN0KSk7Ci0gICAgQ2h1bmsqIGNodW5rID0gQ2h1bms6Omdl
dChvYmplY3QpOwotICAgIHNpemVfdCBsaW5lTnVtYmVyID0gKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KG9iamVjdCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVuaykpIC8gbGluZVNpemU7
Ci0gICAgcmV0dXJuICZjaHVuay0+bGluZXMoKVtsaW5lTnVtYmVyXTsKLX0KLQotdGVtcGxhdGU8
Y2xhc3MgVHJhaXRzPgotaW5saW5lIGNoYXIqIExpbmU8VHJhaXRzPjo6YmVnaW4oKQotewotICAg
IENodW5rKiBjaHVuayA9IENodW5rOjpnZXQodGhpcyk7Ci0gICAgc2l6ZV90IGxpbmVOdW1iZXIg
PSB0aGlzIC0gY2h1bmstPmxpbmVzKCk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IGxpbmVOdW1iZXIg
KiBsaW5lU2l6ZTsKLSAgICByZXR1cm4gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNodW5rKVtv
ZmZzZXRdOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1pbmxpbmUgY2hhciogTGluZTxU
cmFpdHM+OjplbmQoKQotewotICAgIHJldHVybiBiZWdpbigpICsgbGluZVNpemU7Ci19Ci0KLXRl
bXBsYXRlPGNsYXNzIFRyYWl0cz4KLWlubGluZSB2b2lkIExpbmU8VHJhaXRzPjo6cmVmKHN0ZDo6
bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCB1bnNpZ25lZCBjaGFyIHJlZkNvdW50KQoraW5saW5l
IHZvaWQgU21hbGxMaW5lOjpyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHVuc2ln
bmVkIGNoYXIgcmVmQ291bnQpCiB7CiAgICAgQkFTU0VSVCghbV9yZWZDb3VudCk7CiAgICAgQkFT
U0VSVChyZWZDb3VudCA8PSBtYXhSZWZDb3VudCk7CiAgICAgbV9yZWZDb3VudCA9IHJlZkNvdW50
OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1pbmxpbmUgYm9vbCBMaW5lPFRyYWl0cz46
OmRlcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKQoraW5saW5lIGJvb2wgU21hbGxM
aW5lOjpkZXJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikKIHsKICAgICBCQVNTRVJU
KG1fcmVmQ291bnQpOwogICAgIC0tbV9yZWZDb3VudDsKQEAgLTk5LDQgKzY3LDQgQEAgaW5saW5l
IGJvb2wgTGluZTxUcmFpdHM+OjpkZXJlZihzdGQ6OmxvYwogCiB9IC8vIG5hbWVzcGFjZSBibWFs
bG9jCiAKLSNlbmRpZiAvLyBMaW5lX2gKKyNlbmRpZiAvLyBTbWFsbExpbmVfaApJbmRleDogU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5oCShyZXZpc2lvbiAxOTY4NDUpCShmcm9tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvUGFnZS5oOjE5Njg0NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U21hbGxQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQYWdlX2gKKyNkZWZp
bmUgUGFnZV9oCisKKyNpbmNsdWRlICJCQXNzZXJ0LmgiCisjaW5jbHVkZSAiTXV0ZXguaCIKKyNp
bmNsdWRlICJWTUFsbG9jYXRlLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisKK25hbWVzcGFjZSBibWFs
bG9jIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgorY2xhc3MgUGFnZSB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OkNodW5rVHlwZSBDaHVuazsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIFRyYWl0czo6TGluZVR5cGUgTGluZTsKKworICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgbGluZVNpemUgPSBUcmFpdHM6OmxpbmVTaXplOworICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbGluZUNvdW50ID0gdm1QYWdlU2l6ZSAvIGxpbmVTaXplOworCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgbWF4UmVmQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
IGNoYXI+OjptYXgoKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGxpbmVDb3VudCA8IG1heFJlZkNvdW50
LCAibWF4aW11bSBsaW5lIGNvdW50IG11c3QgZml0IGluIFBhZ2UiKTsKKyAgICAKKyAgICBzdGF0
aWMgUGFnZSogZ2V0KExpbmUqKTsKKworICAgIHZvaWQgcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4mKTsKKyAgICBib29sIGRlcmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4m
KTsKKyAgICB1bnNpZ25lZCByZWZDb3VudChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jikg
eyByZXR1cm4gbV9yZWZDb3VudDsgfQorICAgIAorICAgIHNpemVfdCBzaXplQ2xhc3MoKSB7IHJl
dHVybiBtX3NpemVDbGFzczsgfQorICAgIHZvaWQgc2V0U2l6ZUNsYXNzKHNpemVfdCBzaXplQ2xh
c3MpIHsgbV9zaXplQ2xhc3MgPSBzaXplQ2xhc3M7IH0KKyAgICAKKyAgICBib29sIGhhc0ZyZWVM
aW5lcyhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikgY29uc3QgeyByZXR1cm4gbV9oYXNG
cmVlTGluZXM7IH0KKyAgICB2b2lkIHNldEhhc0ZyZWVMaW5lcyhzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTXV0ZXg+JiwgYm9vbCBoYXNGcmVlTGluZXMpIHsgbV9oYXNGcmVlTGluZXMgPSBoYXNGcmVl
TGluZXM7IH0KKyAgICAKKyAgICBMaW5lKiBiZWdpbigpOworICAgIExpbmUqIGVuZCgpOworCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIGNoYXIgbV9oYXNGcmVlTGluZXM6IDE7CisgICAgdW5zaWdu
ZWQgY2hhciBtX3JlZkNvdW50OiA3OworICAgIHVuc2lnbmVkIGNoYXIgbV9zaXplQ2xhc3M7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitpbmxpbmUgdm9pZCBQYWdlPFRyYWl0cz46
OnJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikKK3sKKyAgICBCQVNTRVJUKG1fcmVm
Q291bnQgPCBtYXhSZWZDb3VudCk7CisgICAgKyttX3JlZkNvdW50OworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHM+CitpbmxpbmUgYm9vbCBQYWdlPFRyYWl0cz46OmRlcmVmKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mKQoreworICAgIEJBU1NFUlQobV9yZWZDb3VudCk7CisgICAg
LS1tX3JlZkNvdW50OworICAgIHJldHVybiAhbV9yZWZDb3VudDsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzPgoraW5saW5lIGF1dG8gUGFnZTxUcmFpdHM+OjpnZXQoTGluZSogbGluZSkg
LT4gUGFnZSoKK3sKKyAgICBDaHVuayogY2h1bmsgPSBDaHVuazo6Z2V0KGxpbmUpOworICAgIHNp
emVfdCBsaW5lTnVtYmVyID0gbGluZSAtIGNodW5rLT5saW5lcygpOworICAgIHNpemVfdCBwYWdl
TnVtYmVyID0gbGluZU51bWJlciAqIGxpbmVTaXplIC8gdm1QYWdlU2l6ZTsKKyAgICByZXR1cm4g
JmNodW5rLT5wYWdlcygpW3BhZ2VOdW1iZXJdOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHM+CitpbmxpbmUgYXV0byBQYWdlPFRyYWl0cz46OmJlZ2luKCkgLT4gTGluZSoKK3sKKyAgICBD
aHVuayogY2h1bmsgPSBDaHVuazo6Z2V0KHRoaXMpOworICAgIHNpemVfdCBwYWdlTnVtYmVyID0g
dGhpcyAtIGNodW5rLT5wYWdlcygpOworICAgIHNpemVfdCBsaW5lTnVtYmVyID0gcGFnZU51bWJl
ciAqIGxpbmVDb3VudDsKKyAgICByZXR1cm4gJmNodW5rLT5saW5lcygpW2xpbmVOdW1iZXJdOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+CitpbmxpbmUgYXV0byBQYWdlPFRyYWl0cz46
OmVuZCgpIC0+IExpbmUqCit7CisgICAgcmV0dXJuIGJlZ2luKCkgKyBsaW5lQ291bnQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKKworI2VuZGlmIC8vIFBhZ2VfaApJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1NtYWxsUGFnZS5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1NtYWxsUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDggQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFnZV9oCi0jZGVmaW5lIFBhZ2VfaAorI2lmbmRlZiBT
bWFsbFBhZ2VfaAorI2RlZmluZSBTbWFsbFBhZ2VfaAogCiAjaW5jbHVkZSAiQkFzc2VydC5oIgog
I2luY2x1ZGUgIk11dGV4LmgiCkBAIC0zMywxOSArMzMsMTIgQEAKIAogbmFtZXNwYWNlIGJtYWxs
b2MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci1jbGFzcyBQYWdlIHsKK2NsYXNzIFNt
YWxsUGFnZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OkNodW5rVHlw
ZSBDaHVuazsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6TGluZVR5cGUgTGluZTsKLQot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGluZVNpemUgPSBUcmFpdHM6OmxpbmVTaXplOwotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgbGluZUNvdW50ID0gdm1QYWdlU2l6ZSAvIGxpbmVTaXplOwot
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWF4UmVmQ291bnQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+OjptYXgoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGxpbmVD
b3VudCA8IG1heFJlZkNvdW50LCAibWF4aW11bSBsaW5lIGNvdW50IG11c3QgZml0IGluIFBhZ2Ui
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNtYWxsTGluZUNvdW50IDwgbWF4UmVmQ291bnQsICJtYXhp
bXVtIGxpbmUgY291bnQgbXVzdCBmaXQgaW4gU21hbGxQYWdlIik7CiAgICAgCi0gICAgc3RhdGlj
IFBhZ2UqIGdldChMaW5lKik7CisgICAgc3RhdGljIFNtYWxsUGFnZSogZ2V0KFNtYWxsTGluZSop
OwogCiAgICAgdm9pZCByZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwogICAgIGJv
b2wgZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOwpAQCAtNTcsOCArNTAsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGcmVlTGluZXMoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011
dGV4PiYpIGNvbnN0IHsgcmV0dXJuIG1faGFzRnJlZUxpbmVzOyB9CiAgICAgdm9pZCBzZXRIYXNG
cmVlTGluZXMoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIGJvb2wgaGFzRnJlZUxpbmVz
KSB7IG1faGFzRnJlZUxpbmVzID0gaGFzRnJlZUxpbmVzOyB9CiAgICAgCi0gICAgTGluZSogYmVn
aW4oKTsKLSAgICBMaW5lKiBlbmQoKTsKKyAgICBTbWFsbExpbmUqIGJlZ2luKCk7CisgICAgU21h
bGxMaW5lKiBlbmQoKTsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBjaGFyIG1faGFzRnJlZUxp
bmVzOiAxOwpAQCAtNjYsNDUgKzU5LDE5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgY2hhciBt
X3NpemVDbGFzczsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlubGluZSB2b2lk
IFBhZ2U8VHJhaXRzPjo6cmVmKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKQoraW5saW5l
IHZvaWQgU21hbGxQYWdlOjpyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpCiB7CiAg
ICAgQkFTU0VSVChtX3JlZkNvdW50IDwgbWF4UmVmQ291bnQpOwogICAgICsrbV9yZWZDb3VudDsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPgotaW5saW5lIGJvb2wgUGFnZTxUcmFpdHM+
OjpkZXJlZihzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JikKK2lubGluZSBib29sIFNtYWxs
UGFnZTo6ZGVyZWYoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpCiB7CiAgICAgQkFTU0VS
VChtX3JlZkNvdW50KTsKICAgICAtLW1fcmVmQ291bnQ7CiAgICAgcmV0dXJuICFtX3JlZkNvdW50
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHM+Ci1pbmxpbmUgYXV0byBQYWdlPFRyYWl0
cz46OmdldChMaW5lKiBsaW5lKSAtPiBQYWdlKgotewotICAgIENodW5rKiBjaHVuayA9IENodW5r
OjpnZXQobGluZSk7Ci0gICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBsaW5lIC0gY2h1bmstPmxpbmVz
KCk7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSBsaW5lTnVtYmVyICogbGluZVNpemUgLyB2bVBh
Z2VTaXplOwotICAgIHJldHVybiAmY2h1bmstPnBhZ2VzKClbcGFnZU51bWJlcl07Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlubGluZSBhdXRvIFBhZ2U8VHJhaXRzPjo6YmVnaW4o
KSAtPiBMaW5lKgotewotICAgIENodW5rKiBjaHVuayA9IENodW5rOjpnZXQodGhpcyk7Ci0gICAg
c2l6ZV90IHBhZ2VOdW1iZXIgPSB0aGlzIC0gY2h1bmstPnBhZ2VzKCk7Ci0gICAgc2l6ZV90IGxp
bmVOdW1iZXIgPSBwYWdlTnVtYmVyICogbGluZUNvdW50OwotICAgIHJldHVybiAmY2h1bmstPmxp
bmVzKClbbGluZU51bWJlcl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4KLWlubGlu
ZSBhdXRvIFBhZ2U8VHJhaXRzPjo6ZW5kKCkgLT4gTGluZSoKLXsKLSAgICByZXR1cm4gYmVnaW4o
KSArIGxpbmVDb3VudDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwogCi0jZW5kaWYgLy8g
UGFnZV9oCisjZW5kaWYgLy8gU21hbGxQYWdlX2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvU21hbGxUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nt
YWxsVHJhaXRzLmgJKHJldmlzaW9uIDE5Njg0MikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U21hbGxUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgU21hbGxUcmFpdHNf
aAotI2RlZmluZSBTbWFsbFRyYWl0c19oCi0KLSNpbmNsdWRlICJTaXplcy5oIgotCi1uYW1lc3Bh
Y2UgYm1hbGxvYyB7Ci0KLXRlbXBsYXRlPGNsYXNzIFRyYWl0cz4gY2xhc3MgQ2h1bms7Ci10ZW1w
bGF0ZTxjbGFzcyBUcmFpdHM+IGNsYXNzIExpbmU7Ci10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+IGNs
YXNzIFBhZ2U7Ci0KLXN0cnVjdCBTbWFsbFRyYWl0cyB7Ci0gICAgdHlwZWRlZiBDaHVuazxTbWFs
bFRyYWl0cz4gQ2h1bmtUeXBlOwotICAgIHR5cGVkZWYgTGluZTxTbWFsbFRyYWl0cz4gTGluZVR5
cGU7Ci0gICAgdHlwZWRlZiBQYWdlPFNtYWxsVHJhaXRzPiBQYWdlVHlwZTsKLQotICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbGluZVNpemUgPSBzbWFsbExpbmVTaXplOwotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWluaW11bU9iamVjdFNpemUgPSBhbGlnbm1lbnQ7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjaHVua1NpemUgPSBzbWFsbENodW5rU2l6ZTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGNodW5rT2Zmc2V0ID0gc21hbGxDaHVua09mZnNldDsKLSAgICBzdGF0aWMgY29uc3QgdWlu
dHB0cl90IGNodW5rTWFzayA9IHNtYWxsQ2h1bmtNYXNrOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYwotCi0jZW5kaWYgLy8gU21hbGxUcmFpdHNfaAo=
</data>
<flag name="review"
          id="296643"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>