<?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>205037</bug_id>
          
          <creation_ts>2019-12-09 16:52:52 -0800</creation_ts>
          <short_desc>[WebAssembly] Remove WasmValidate</short_desc>
          <delta_ts>2019-12-09 17:55:45 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597017</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-12-09 16:52:52 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597020</commentid>
    <comment_count>1</comment_count>
      <attachid>385209</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-12-09 16:54:16 -0800</bug_when>
    <thetext>Created attachment 385209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597038</commentid>
    <comment_count>2</comment_count>
      <attachid>385214</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-12-09 17:15:16 -0800</bug_when>
    <thetext>Created attachment 385214
Patch

Remove one last call to validateFunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597054</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-09 17:53:17 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 385214:

fetch/fetch-worker-crash.html bug 187257 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597055</commentid>
    <comment_count>4</comment_count>
      <attachid>385214</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-09 17:54:14 -0800</bug_when>
    <thetext>Comment on attachment 385214
Patch

Clearing flags on attachment: 385214

Committed r253314: &lt;https://trac.webkit.org/changeset/253314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597056</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-09 17:54:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597058</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-09 17:55:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/57777895&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385209</attachid>
            <date>2019-12-09 16:54:16 -0800</date>
            <delta_ts>2019-12-09 17:15:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205037-20191209165415.patch</filename>
            <type>text/plain</type>
            <size>32294</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjYxYjAyMGQ4YWUzMDQ1NTdkOWMxMjViMjY4MmI5M2VjMjNmZDczLi4yM2YwODRmN2VjOTVjZTY3
ZDhhMDI4ODY2YjJlMDM4YzRjOGQwNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0xMi0wOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2ViQXNzZW1ibHldIFJlbW92ZSBXYXNtVmFsaWRhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3MgY3VycmVudGx5IG9u
bHkgdXNlZCB3aGVuIEpTQ191c2VXYXNtTExJbnQgaXMgZmFsc2UgYW5kIGl0IGNyZWF0ZXMgYW4g
YWRkaXRpb25hbCBpbnN0YW50aWF0aW9uCisgICAgICAgIG9mIFdhc206OkZ1bmN0aW9uUGFyc2Vy
LCB3aGljaCBhZGRzIGFib3V0IDEwMGtiIHRvIHRoZSBiaW5hcnkgc2l6ZS4gVGhpcyBkb2VzIG5v
dCBpbnRyb2R1Y2UgYW55CisgICAgICAgIGJlaGF2aW9yIGNoYW5nZXMgd2l0aCB0aGUgZGVmYXVs
dCBvcHRpb25zLCBidXQgaXQgbWVhbnMgdGhhdCB3ZSdsbCBnZW5lcmF0ZSBieXRlY29kZSB3aGVu
IGNhbGxpbmcKKyAgICAgICAgV2ViQXNzZW1ibHkudmFsaWRhdGUvbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZSBldmVuIHdoZW4gdGhlIFdhc21MTEludCBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46OmRpZFJlY2VpdmVGdW5jdGlvbkRhdGEpOgorICAgICAgICAqIHdhc20vV2Fz
bUVudHJ5UGxhbi5jcHA6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRQbGFuLmNwcDoKKyAgICAg
ICAgKiB3YXNtL1dhc21Nb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjptYWtlVmFsaWRh
dGlvblJlc3VsdCk6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VWYWxpZGF0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OnZhbGlkYXRlU3luYyk6CisgICAgICAgIChK
U0M6Oldhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYyk6CisgICAgICAgICogd2FzbS9XYXNtTW9k
dWxlLmg6CisgICAgICAgICogd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50cnlQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNt
L1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6Cisg
ICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgICogd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmg6IFJlbW92ZWQuCisK
IDIwMTktMTItMDkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjUzMTQwKTogV2ViQXNzZW1ibHkgdmFsaWRhdGlvbiBzaG91bGQgY2hl
Y2sgZm9yIHVubWF0Y2hlZCBlbHNlIGJlZm9yZSBjYWxsaW5nIGFkZEVsc2UvYWRkRWxzZVRvVW5y
ZWFjaGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTRlYTcwNjBkZDM1NzI1
NTFkZTk0OWNjODE0YmIxMjg1ZmQyZTk0YS4uZmZmYjZmZmMwOWQ0NWFkNmY2Yjc5MzExMGYwNjUy
Mjg0YzhiM2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMTUsNyArMTEx
NSw2IEBACiAJCTUzRjZCRjZEMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1M0ZBMkFFMTFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8q
IFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTUzRkY3Rjk5MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkY3Rjk4MURCRkNEOTAwMEEy
NkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLzsgfTsKIAkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5
IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5o
ICovOyB9OwogCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3
MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgfTsK
IAkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMx
REI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OwpAQCAt
MzgxOSw4ICszODE4LDYgQEAKIAkJNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDREMTFE
N0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzRkY3
Rjk4MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbVZhbGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUzRkY3RjlBMURCRkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVZhbGlkYXRlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI3MENGRDkxREI2OUU1QzAwRUMy
M0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODY4LDggKzY4NjUsNiBAQAogCQkJCTUy
NTBEMkQwMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggKi8sCiAJCQkJRTNDNjk0QjIy
MzAyNjg3NDAwNkZCRTQyIC8qIFdhc21UaWVyVXBDb3VudC5jcHAgKi8sCiAJCQkJNTNFOUUwQUUx
RUFFQzQ1NzAwRkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oICovLAotCQkJCTUzRkY3RjlBMURC
RkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuY3BwICovLAotCQkJCTUzRkY3Rjk4MURCRkNE
OTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLywKIAkJCQk1MzBGQjMwMzFFN0ExMTQ2MDAz
QzE5REQgLyogV2FzbVdvcmtsaXN0LmNwcCAqLywKIAkJCQk1MzBGQjMwMTFFN0EwQjZFMDAzQzE5
REQgLyogV2FzbVdvcmtsaXN0LmggKi8sCiAJCQkpOwpAQCAtMTAyOTgsNyArMTAyOTMsNiBAQAog
CQkJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDVDMzZFQzFGNzVBRDdDMDAwQkNBQUYgLyogV2FzbVRvSlMuaCBp
biBIZWFkZXJzICovLAotCQkJCTUzRkY3Rjk5MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzMEZCMzAyMUU3QTBCNkUwMDNDMTlERCAvKiBXYXNt
V29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdE
IC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGM0MDY5ZGI5ZjRiZTIyYTM0MjMxOTk4MmI3YjM1MTZmN2FkMDVjOTcuLmYyMTk3ZjA5
YTcwODM5NGI1MTJiZDRjMjlhZDIzZGMzZTRmYzE2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKQEAgLTEwMzgsNyArMTAzOCw2IEBAIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAK
IHdhc20vV2FzbVRhYmxlLmNwcAogd2FzbS9XYXNtVGh1bmtzLmNwcAogd2FzbS9XYXNtVGllclVw
Q291bnQuY3BwCi13YXNtL1dhc21WYWxpZGF0ZS5jcHAKIHdhc20vV2FzbVdvcmtsaXN0LmNwcAog
CiB3YXNtL2pzL0pTVG9XYXNtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwCmluZGV4IGI5NWY3ZmZhMTU2OTUwMDgzZjRiMTA4NjBjOGZlM2ExNDU4M2IyYTYu
LjVlMTMyNjEwZTc1OGQ3YzI2YzAwNzU5YWYyMDk0MjYzZDViODI5OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNs
dWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNp
bmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKLSNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMzE3LDI0ICszMTYsOSBAQCB2b2lkIEJCUVBsYW46
OmluaXRpYWxpemVDYWxsZWVzKGNvbnN0IENhbGxlZUluaXRpYWxpemVyJiBjYWxsYmFjaykKICAg
ICB9CiB9CiAKLWJvb2wgQkJRUGxhbjo6ZGlkUmVjZWl2ZUZ1bmN0aW9uRGF0YSh1bnNpZ25lZCBm
dW5jdGlvbkluZGV4LCBjb25zdCBGdW5jdGlvbkRhdGEmIGZ1bmN0aW9uKQorYm9vbCBCQlFQbGFu
OjpkaWRSZWNlaXZlRnVuY3Rpb25EYXRhKHVuc2lnbmVkLCBjb25zdCBGdW5jdGlvbkRhdGEmKQog
ewotICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNz
aW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbi5zdGFydCwgIiBhbmQgZW5kaW5n
IGF0OiAiLCBmdW5jdGlvbi5lbmQpOwotICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0
aW9uLmVuZCAtIGZ1bmN0aW9uLnN0YXJ0OwotICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA9PSBm
dW5jdGlvbi5kYXRhLnNpemUoKSk7Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4XTsKLSAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotCi0gICAgYXV0byB2YWxpZGF0aW9u
UmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvbiwgc2lnbmF0dXJlLCBtX21vZHVsZUlu
Zm9ybWF0aW9uLmdldCgpKTsKLSAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHsKLSAgICAgICAg
aWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGRh
dGFMb2coUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbi5kYXRhW2ld
KSksICIsICIpOwotICAgICAgICAgICAgZGF0YUxvZ0xuKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZmFpbChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKHZhbGlkYXRpb25SZXN1bHQuZXJyb3Io
KSwgIiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRl
eCkpKTsgLy8gRklYTUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgotICAgIH0KLSAgICByZXR1cm4g
ISF2YWxpZGF0aW9uUmVzdWx0OworICAgIHJldHVybiB0cnVlOwogfQogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFu
LmNwcAppbmRleCA3N2QwM2QzMGI2ODJjYTZiYTNkYTBmNDg1OWRhMjlmZTE2MWQ2NDRhLi5iNmZj
M2EzYTRkOGI4ZmQ1Mjg3ZTA0YjJjMGNjOTc5NzI1MWI3MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAj
aW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKLSNpbmNsdWRlICJXYXNtVmFsaWRhdGUu
aCIKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRGF0
YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggMzM3ZmVjM2U0OWY4MGFkZWFjOGIwZWQ5MDM3
OWY5NDBkYjllNDhmNS4uY2FjMThiNmJiMjMwMmRmODkyZTdlZDUxMzNmYTczZDUxYTFjMDE5MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCiAjaW5jbHVkZSAiV2FzbUxMSW50
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKLSNpbmNsdWRl
ICJXYXNtVmFsaWRhdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcAppbmRleCBkYjk0N2YzMGRk
MjkxZTJkZTAzOTU4NGQ3MmQ3MGM3ZDcyNTJkMzQ2Li40NTZkYmJkZTkxYjQ3YzMxNDk0M2EwMTZh
NWFjZjA3NTZhY2MyOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxl
LmNwcApAQCAtNDIsMTEgKzQyLDYgQEAgTW9kdWxlOjpNb2R1bGUoTExJbnRQbGFuJiBwbGFuKQog
ewogfQogCi1Nb2R1bGU6Ok1vZHVsZShCQlFQbGFuJiBwbGFuKQotICAgIDogbV9tb2R1bGVJbmZv
cm1hdGlvbihwbGFuLnRha2VNb2R1bGVJbmZvcm1hdGlvbigpKQotewotfQotCiBNb2R1bGU6On5N
b2R1bGUoKSB7IH0KIAogV2FzbTo6U2lnbmF0dXJlSW5kZXggTW9kdWxlOjpzaWduYXR1cmVJbmRl
eEZyb21GdW5jdGlvbkluZGV4U3BhY2UodW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlKSBjb25z
dApAQCAtNTQsOCArNDksNyBAQCBXYXNtOjpTaWduYXR1cmVJbmRleCBNb2R1bGU6OnNpZ25hdHVy
ZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdAogICAgIHJldHVybiBt
X21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2Uo
ZnVuY3Rpb25JbmRleFNwYWNlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUGxhbj4KLXN0YXRp
YyBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQgbWFrZVZhbGlkYXRpb25SZXN1bHQoUGxhbiYgcGxh
bikKK3N0YXRpYyBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQgbWFrZVZhbGlkYXRpb25SZXN1bHQo
TExJbnRQbGFuJiBwbGFuKQogewogICAgIEFTU0VSVCghcGxhbi5oYXNXb3JrKCkpOwogICAgIGlm
IChwbGFuLmZhaWxlZCgpKQpAQCAtNjMsMzggKzU3LDI2IEBAIHN0YXRpYyBNb2R1bGU6OlZhbGlk
YXRpb25SZXN1bHQgbWFrZVZhbGlkYXRpb25SZXN1bHQoUGxhbiYgcGxhbikKICAgICByZXR1cm4g
TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0KE1vZHVsZTo6Y3JlYXRlKHBsYW4pKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgUGxhblQ+CiBzdGF0aWMgUGxhbjo6Q29tcGxldGlvblRhc2sgbWFrZVZh
bGlkYXRpb25DYWxsYmFjayhNb2R1bGU6OkFzeW5jVmFsaWRhdGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6Q2FsbGJhY2tUeXBlPihb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFBsYW4mIHBsYW4pIHsKICAgICAgICAgQVNT
RVJUKCFwbGFuLmhhc1dvcmsoKSk7Ci0gICAgICAgIGNhbGxiYWNrLT5ydW4obWFrZVZhbGlkYXRp
b25SZXN1bHQoc3RhdGljX2Nhc3Q8UGxhblQmPihwbGFuKSkpOworICAgICAgICBjYWxsYmFjay0+
cnVuKG1ha2VWYWxpZGF0aW9uUmVzdWx0KHN0YXRpY19jYXN0PExMSW50UGxhbiY+KHBsYW4pKSk7
CiAgICAgfSk7CiB9CiAKIE1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCBNb2R1bGU6OnZhbGlkYXRl
U3luYyhDb250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UpCiB7Ci0gICAg
aWYgKE9wdGlvbnM6OnVzZVdhc21MTEludCgpKSB7Ci0gICAgICAgIFJlZjxMTEludFBsYW4+IHBs
YW4gPSBhZG9wdFJlZigqbmV3IExMSW50UGxhbihjb250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIEVu
dHJ5UGxhbjo6VmFsaWRhdGlvbiwgUGxhbjo6ZG9udEZpbmFsaXplKCkpKTsKLSAgICAgICAgV2Fz
bTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKHBsYW4uZ2V0KCkpOwotICAgICAgICBwbGFuLT53
YWl0Rm9yQ29tcGxldGlvbigpOwotICAgICAgICByZXR1cm4gbWFrZVZhbGlkYXRpb25SZXN1bHQo
cGxhbi5nZXQoKSk7Ci0gICAgfQotCi0gICAgUmVmPEJCUVBsYW4+IHBsYW4gPSBhZG9wdFJlZigq
bmV3IEJCUVBsYW4oY29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBFbnRyeVBsYW46OlZhbGlkYXRp
b24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7Ci0gICAgcGxhbi0+cGFyc2VBbmRWYWxpZGF0ZU1v
ZHVsZSgpOworICAgIFJlZjxMTEludFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IExMSW50UGxh
bihjb250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIEVudHJ5UGxhbjo6VmFsaWRhdGlvbiwgUGxhbjo6
ZG9udEZpbmFsaXplKCkpKTsKKyAgICBXYXNtOjplbnN1cmVXb3JrbGlzdCgpLmVucXVldWUocGxh
bi5nZXQoKSk7CisgICAgcGxhbi0+d2FpdEZvckNvbXBsZXRpb24oKTsKICAgICByZXR1cm4gbWFr
ZVZhbGlkYXRpb25SZXN1bHQocGxhbi5nZXQoKSk7CiB9CiAKIHZvaWQgTW9kdWxlOjp2YWxpZGF0
ZUFzeW5jKENvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIHNvdXJjZSwgTW9kdWxl
OjpBc3luY1ZhbGlkYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGlmIChPcHRpb25z
Ojp1c2VXYXNtTExJbnQoKSkgewotICAgICAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpu
ZXcgTExJbnRQbGFuKGNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgRW50cnlQbGFuOjpWYWxpZGF0
aW9uLCBtYWtlVmFsaWRhdGlvbkNhbGxiYWNrPExMSW50UGxhbj4oV1RGTW92ZShjYWxsYmFjaykp
KSk7Ci0gICAgICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4p
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcg
QkJRUGxhbihjb250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIEVudHJ5UGxhbjo6VmFsaWRhdGlvbiwg
bWFrZVZhbGlkYXRpb25DYWxsYmFjazxCQlFQbGFuPihXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKLSAg
ICAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKFdURk1vdmUocGxhbikpOwotICAg
IH0KKyAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgTExJbnRQbGFuKGNvbnRleHQs
IFdURk1vdmUoc291cmNlKSwgRW50cnlQbGFuOjpWYWxpZGF0aW9uLCBtYWtlVmFsaWRhdGlvbkNh
bGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSkpOworICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCku
ZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKIH0KIAogUmVmPENvZGVCbG9jaz4gTW9kdWxlOjpnZXRP
ckNyZWF0ZUNvZGVCbG9jayhDb250ZXh0KiBjb250ZXh0LCBNZW1vcnlNb2RlIG1vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggNGY2M2E1ZGI1ZDExZTI2MDZh
YTk5NjE1MjFjMjEwMjI5MmNlMDQ1NS4uZmFkYTRiMmNlNTUxMWMwZWU2YmU5OGVlOWUzNTZlOTRj
MDUyNGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApAQCAtMzcs
NyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1jbGFzcyBC
QlFQbGFuOwogY2xhc3MgTExJbnRQbGFuOwogc3RydWN0IENvbnRleHQ7CiBzdHJ1Y3QgTW9kdWxl
SW5mb3JtYXRpb247CkBAIC01MywxMSArNTIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFZhbGlk
YXRpb25SZXN1bHQgdmFsaWRhdGVTeW5jKENvbnRleHQqLCBWZWN0b3I8dWludDhfdD4mJiBzb3Vy
Y2UpOwogICAgIHN0YXRpYyB2b2lkIHZhbGlkYXRlQXN5bmMoQ29udGV4dCosIFZlY3Rvcjx1aW50
OF90PiYmIHNvdXJjZSwgTW9kdWxlOjpBc3luY1ZhbGlkYXRpb25DYWxsYmFjayYmKTsKIAotICAg
IHN0YXRpYyBSZWY8TW9kdWxlPiBjcmVhdGUoQkJRUGxhbiYgcGxhbikKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZShwbGFuKSk7Ci0gICAgfQotCiAgICAgc3RhdGlj
IFJlZjxNb2R1bGU+IGNyZWF0ZShMTEludFBsYW4mIHBsYW4pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGUocGxhbikpOwpAQCAtNzUsNyArNjksNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFJlZjxDb2RlQmxvY2s+IGdldE9yQ3JlYXRlQ29kZUJsb2NrKENvbnRl
eHQqLCBNZW1vcnlNb2RlKTsKIAotICAgIE1vZHVsZShCQlFQbGFuJik7CiAgICAgTW9kdWxlKExM
SW50UGxhbiYpOwogICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9tb2R1bGVJbmZvcm1hdGlv
bjsKICAgICBSZWZQdHI8Q29kZUJsb2NrPiBtX2NvZGVCbG9ja3NbV2FzbTo6TnVtYmVyT2ZNZW1v
cnlNb2Rlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdG
b3JPU1JFbnRyeVBsYW4uY3BwCmluZGV4IDhiYzdiMWYyOTcyMDY1M2JhN2Q4NmNmOTkxNWY2YTFl
NzJhNTJhZmQuLmFiY2NlY2I1YzRhYTZlZmFjNTVlZDAzYWQ0ZGE4MjYxNjFlOWQ1NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBs
YW4uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1
ZGUgIldhc21OYW1lU2VjdGlvbi5oIgogI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiV2FzbVZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CkBAIC03OSw3
ICs3OCw2IEBAIHZvaWQgT01HRm9yT1NSRW50cnlQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0
KQogCiAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0
aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOwog
ICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChzaWduYXR1cmVJbmRleCk7Ci0gICAgQVNTRVJUKHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24s
IHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSkpOwogCiAgICAgVmVjdG9yPFVu
bGlua2VkV2FzbVRvV2FzbUNhbGw+IHVubGlua2VkQ2FsbHM7CiAgICAgQ29tcGlsYXRpb25Db250
ZXh0IGNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
T01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAK
aW5kZXggNmU1Y2U3MTg2ODhkYmEyZTJlZTJmMWNkZmNiOGQ0MmE1ODM1MjM5Ni4uNzY3YzU1YmRi
ZTNlOThiNWI3NGUzMDBmZTNkMmU3MGU0M2QwYTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldhc21N
ZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtTmFtZVNlY3Rpb24uaCIKICNpbmNsdWRlICJXYXNtU2ln
bmF0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUgIldhc21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgIldh
c21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2tlci5oPgpAQCAtNzcsNyArNzYsNiBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCiAKICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF07CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKLSAgICBBU1NFUlQodmFsaWRhdGVGdW5jdGlvbihmdW5j
dGlvbiwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7CiAKICAgICBWZWN0
b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKICAgICB1bnNpZ25lZCBv
c3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBs
YW4uY3BwCmluZGV4IDVhNTNiOTU5MDgzNmY5NGJjYTRmZDEwMzdmNDQ2YTJjMWUzNWNjMmMuLjM1
NjVmNzZmNTQyMjBmYTNkY2M3ZmZjZWMwMzExNGQ5Y2EzNTg3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmgi
CiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgotI2luY2x1ZGUgIldhc21WYWxpZGF0ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZh
bGlkYXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljMGEzYWViYTU5ZjAz
YWE0NzBkMWI1OTFiYmEzOWY3ZTljZDQ4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXYXNtVmFsaWRhdGUuaCIKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgi
Ci0jaW5jbHVkZSAiV2FzbVNpZ25hdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIu
aD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKLQotY2xhc3MgVmFsaWRhdGUg
ewotcHVibGljOgotICAgIGNsYXNzIENvbnRyb2xEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IENvbnRyb2xEYXRhKCkgPSBkZWZhdWx0OwotICAgICAgICBDb250cm9sRGF0YShCbG9ja1R5cGUg
dHlwZSwgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKQotICAgICAgICAgICAgOiBtX2Jsb2NrVHlw
ZSh0eXBlKQotICAgICAgICAgICAgLCBtX3NpZ25hdHVyZShzaWduYXR1cmUpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGlzSWYoY29uc3QgQ29udHJvbERhdGEm
IGNvbnRyb2wpIHsgcmV0dXJuIGNvbnRyb2wuYmxvY2tUeXBlKCkgPT0gQmxvY2tUeXBlOjpJZjsg
fQotICAgICAgICBzdGF0aWMgYm9vbCBpc1RvcExldmVsKGNvbnN0IENvbnRyb2xEYXRhJiBjb250
cm9sKSB7IHJldHVybiBjb250cm9sLmJsb2NrVHlwZSgpID09IEJsb2NrVHlwZTo6VG9wTGV2ZWw7
IH0KLQotICAgICAgICBCbG9ja1R5cGUgYmxvY2tUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ibG9j
a1R5cGU7IH0KLSAgICAgICAgQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zaWduYXR1cmU7IH0KLQotICAgICAgICB1bnNpZ25lZCBicmFuY2hUYXJnZXRBcml0eSgp
IGNvbnN0IHsgcmV0dXJuIGJsb2NrVHlwZSgpID09IEJsb2NrVHlwZTo6TG9vcCA/IHNpZ25hdHVy
ZSgpLT5hcmd1bWVudENvdW50KCkgOiBzaWduYXR1cmUoKS0+cmV0dXJuQ291bnQoKTsgfQotICAg
ICAgICBUeXBlIGJyYW5jaFRhcmdldFR5cGUodW5zaWduZWQgaSkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKGkgPCBicmFuY2hUYXJnZXRBcml0eSgpKTsKLSAgICAgICAgICAg
IHJldHVybiBibG9ja1R5cGUoKSA9PSBCbG9ja1R5cGU6Okxvb3AgPyBzaWduYXR1cmUoKS0+YXJn
dW1lbnQoaSkgOiBzaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKGJsb2NrVHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZTo6
SWY6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJJZjogICAgICAgIik7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZTo6QmxvY2s6Ci0gICAgICAg
ICAgICAgICAgb3V0LnByaW50KCJCbG9jazogICAgIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZTo6TG9vcDoKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIkxvb3A6ICAgICAiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQmxvY2tUeXBlOjpUb3BMZXZlbDoKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlRv
cExldmVsOiAiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnID0gKnNpZ25hdHVyZSgpOwotICAgICAgICAgICAg
b3V0LnByaW50KHNpZyk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEJsb2Nr
VHlwZSBtX2Jsb2NrVHlwZTsKLSAgICAgICAgQmxvY2tTaWduYXR1cmUgbV9zaWduYXR1cmU7Ci0g
ICAgfTsKLQotICAgIGVudW0gRXhwcmVzc2lvblR5cGUgeyBFbXB0eUV4cHJlc3Npb24gfTsKLQot
ICAgIHVzaW5nIEVycm9yVHlwZSA9IFN0cmluZzsKLSAgICB1c2luZyBVbmV4cGVjdGVkUmVzdWx0
ID0gVW5leHBlY3RlZDxFcnJvclR5cGU+OwotICAgIHVzaW5nIFJlc3VsdCA9IEV4cGVjdGVkPHZv
aWQsIEVycm9yVHlwZT47Ci0gICAgdXNpbmcgQ29udHJvbFR5cGUgPSBDb250cm9sRGF0YTsKLQot
ICAgIHVzaW5nIENvbnRyb2xFbnRyeSA9IEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRlPjo6Q29udHJv
bEVudHJ5OwotICAgIHVzaW5nIENvbnRyb2xTdGFjayA9IEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRl
Pjo6Q29udHJvbFN0YWNrOwotICAgIHVzaW5nIFJlc3VsdExpc3QgPSBGdW5jdGlvblBhcnNlcjxW
YWxpZGF0ZT46OlJlc3VsdExpc3Q7Ci0gICAgdXNpbmcgU3RhY2sgPSBGdW5jdGlvblBhcnNlcjxW
YWxpZGF0ZT46OlN0YWNrOwotCi0gICAgc3RhdGljIEV4cHJlc3Npb25UeXBlIGVtcHR5RXhwcmVz
c2lvbigpIHsgcmV0dXJuIEVtcHR5RXhwcmVzc2lvbjsgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSAuLi5BcmdzPgotICAgIE5FVkVSX0lOTElORSBVbmV4cGVjdGVkUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBmYWlsKGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIGNvbnN0Ci0gICAgewotICAgICAg
ICB1c2luZyBuYW1lc3BhY2UgRmFpbHVyZUhlbHBlcjsgLy8gU2VlIEFETCBjb21tZW50IGluIFdh
c21QYXJzZXIuaC4KLSAgICAgICAgaWYgKFVOTElLRUxZKCFBU1NFUlRfRElTQUJMRUQgJiYgT3B0
aW9uczo6Y3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGUoKSkpCi0gICAgICAgICAgICBX
VEZCcmVha3BvaW50VHJhcCgpOwotCi0gICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKLSAg
ICAgICAgb3V0LnByaW50KCJXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCB2YWxpZGF0ZTogIl9z
LCBhcmdzLi4uKTsKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWRSZXN1bHQob3V0LnRvU3RyaW5n
KCkpOwotICAgIH0KLSNkZWZpbmUgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihjb25kaXRpb24sIC4u
LikgZG8geyBcCi0gICAgICAgIGlmIChVTkxJS0VMWShjb25kaXRpb24pKSAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIGZhaWwoX19WQV9BUkdTX18pOyAgICAgICAgICAg
ICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJik7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRMb2NhbChUeXBlLCB1aW50MzJfdCk7Ci0gICAgRXhwcmVzc2lvblR5cGUgYWRkQ29u
c3RhbnQoVHlwZSwgdWludDY0X3QpIHsgcmV0dXJuIEVtcHR5RXhwcmVzc2lvbjsgfQotCi0gICAg
Ly8gUmVmZXJlbmNlcwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmVmSXNOdWxs
KEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwotCi0gICAgLy8gVGFibGVzCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFi
bGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1
ZSk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRUYWJsZVNpemUodW5zaWduZWQs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkVGFibGVHcm93KHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSBmaWxsLCBFeHByZXNzaW9uVHlw
ZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRUYWJsZUZpbGwodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlIG9mZnNldCwgRXhw
cmVzc2lvblR5cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgY291bnQpOwotICAgIC8vIExvY2Fscwot
ICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZ2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0
TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKLQotICAgIC8vIEds
b2JhbHMKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGdldEdsb2JhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKLQot
ICAgIC8vIE1lbW9yeQotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gbG9hZChMb2FkT3BU
eXBlLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0LCB1aW50
MzJfdCBvZmZzZXQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RvcmUoU3RvcmVP
cFR5cGUsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpOwotCi0gICAgLy8gQmFzaWMgb3BlcmF0b3JzCi0gICAgdGVtcGxhdGU8T3BU
eXBlPgotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkT3AoRXhwcmVzc2lvblR5cGUg
YXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICB0ZW1wbGF0ZTxPcFR5cGU+Ci0gICAg
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRPcChFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHBy
ZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBFeHBy
ZXNzaW9uVHlwZSBub25aZXJvLCBFeHByZXNzaW9uVHlwZSB6ZXJvLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLQotICAgIC8vIENvbnRyb2wgZmxvdwotICAgIENvbnRyb2xEYXRhIFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRUb3BMZXZlbChCbG9ja1NpZ25hdHVyZSk7Ci0gICAgUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRCbG9jayhCbG9ja1NpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0
YWNrLCBDb250cm9sVHlwZSYgbmV3QmxvY2ssIFN0YWNrJiBuZXdTdGFjayk7Ci0gICAgUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRMb29wKEJsb2NrU2lnbmF0dXJlLCBTdGFjayYgZW5jbG9z
aW5nU3RhY2ssIENvbnRyb2xUeXBlJiBibG9jaywgU3RhY2smIG5ld1N0YWNrLCB1aW50MzJfdCBs
b29wSW5kZXgpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkSWYoRXhwcmVzc2lv
blR5cGUgY29uZGl0aW9uLCBCbG9ja1NpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBD
b250cm9sVHlwZSYgcmVzdWx0LCBTdGFjayYgbmV3U3RhY2spOwotICAgIFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkRWxzZShDb250cm9sRGF0YSYsIGNvbnN0IFN0YWNrJik7Ci0gICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9sRGF0YSYp
OwotCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm4oQ29udHJvbERhdGEm
IHRvcExldmVsLCBjb25zdCBTdGFjayYgcmV0dXJuVmFsdWVzKTsKLSAgICBSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZEJyYW5jaChDb250cm9sRGF0YSYsIEV4cHJlc3Npb25UeXBlIGNvbmRp
dGlvbiwgY29uc3QgU3RhY2smIGV4cHJlc3Npb25TdGFjayk7Ci0gICAgUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRTd2l0Y2goRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBjb25zdCBWZWN0
b3I8Q29udHJvbERhdGEqPiYgdGFyZ2V0cywgQ29udHJvbERhdGEmIGRlZmF1bHRUYXJnZXQsIGNv
bnN0IFN0YWNrJiBleHByZXNzaW9uU3RhY2spOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZW5kQmxvY2soQ29udHJvbEVudHJ5JiwgU3RhY2smIGV4cHJlc3Npb25TdGFjayk7Ci0gICAg
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRFbmRUb1VucmVhY2hhYmxlKENvbnRyb2xFbnRy
eSYpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkR3Jvd01lbW9yeShFeHByZXNz
aW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwot
Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpIHsgcmV0dXJu
IHsgfTsgfQotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW5kVG9wTGV2ZWwoQmxvY2tT
aWduYXR1cmUsIGNvbnN0IFN0YWNrJikgeyByZXR1cm4geyB9OyB9Ci0KLSAgICAvLyBDYWxscwot
ICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1bnNpZ25lZCBjYWxsZWVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
UmVzdWx0TGlzdCYpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGly
ZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKLQotICAgIFZhbGlkYXRlKCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0
YWNrKik7Ci0gICAgdm9pZCBzZXRQYXJzZXIoRnVuY3Rpb25QYXJzZXI8VmFsaWRhdGU+KikgeyB9
Ci0gICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9Ci0gICAgdm9pZCBkaWRQb3BW
YWx1ZUZyb21TdGFjaygpIHsgfQotCi1wcml2YXRlOgotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gdW5pZnkoY29uc3QgU3RhY2smLCBjb25zdCBDb250cm9sRGF0YSYpOwotfTsKLQotYXV0
byBWYWxpZGF0ZTo6YWRkQXJndW1lbnRzKGNvbnN0IFNpZ25hdHVyZSYpIC0+IFJlc3VsdAotewot
ICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFRhYmxlR2V0KHVuc2lnbmVk
LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1
cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNldCh1bnNpZ25lZCwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1cm4geyB9Owot
fQotCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZVNpemUodW5zaWduZWQsIEV4cHJlc3Npb25UeXBl
JikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6YWRk
VGFibGVHcm93KHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxp
ZGF0ZTo6YWRkVGFibGVGaWxsKHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUsIEV4cHJlc3Npb25UeXBlKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi1h
dXRvIFZhbGlkYXRlOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
JikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6YWRk
UmVmRnVuYyh1aW50MzJfdCwgRXhwcmVzc2lvblR5cGUmKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1
cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRMb2NhbChUeXBlLCB1aW50MzJfdCkgLT4g
UmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6Z2V0TG9jYWwo
dWludDMyX3QsIEV4cHJlc3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQotYXV0byBWYWxpZGF0ZTo6c2V0TG9jYWwodWludDMyX3QsIEV4cHJlc3Npb25UeXBlKSAt
PiBSZXN1bHQKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjpnZXRHbG9i
YWwodWludDMyX3QsIEV4cHJlc3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6c2V0R2xvYmFsKHVpbnQzMl90LCBFeHByZXNzaW9uVHlw
ZSkgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotVmFsaWRhdGU6OkNvbnRyb2xU
eXBlIFZhbGlkYXRlOjphZGRUb3BMZXZlbChCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUpCi17Ci0g
ICAgcmV0dXJuIENvbnRyb2xEYXRhKEJsb2NrVHlwZTo6VG9wTGV2ZWwsIHNpZ25hdHVyZSk7Ci19
Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZEJsb2NrKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgU3Rh
Y2smIGVuY2xvc2luZ1N0YWNrLCBDb250cm9sVHlwZSYgbmV3QmxvY2ssIFN0YWNrJiBuZXdTdGFj
aykgLT4gUmVzdWx0Ci17Ci0gICAgc3BsaXRTdGFjayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNr
LCBuZXdTdGFjayk7Ci0gICAgbmV3QmxvY2sgPSBDb250cm9sRGF0YShCbG9ja1R5cGU6OkJsb2Nr
LCBzaWduYXR1cmUpOwotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZExv
b3AoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvbnRy
b2xUeXBlJiBsb29wLCBTdGFjayYgbmV3U3RhY2ssIHVpbnQzMl90KSAtPiBSZXN1bHQKLXsKLSAg
ICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICBs
b29wID0gQ29udHJvbERhdGEoQmxvY2tUeXBlOjpMb29wLCBzaWduYXR1cmUpOwotICAgIHJldHVy
biB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFNlbGVjdChFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYpIC0+IFJlc3VsdAot
ewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZElmKEV4cHJlc3Npb25U
eXBlLCBCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29u
dHJvbFR5cGUmIHJlc3VsdCwgU3RhY2smIG5ld1N0YWNrKSAtPiBSZXN1bHQKLXsKLSAgICBzcGxp
dFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICByZXN1bHQg
PSBDb250cm9sRGF0YShCbG9ja1R5cGU6OklmLCBzaWduYXR1cmUpOwotICAgIHJldHVybiB7IH07
Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZEVsc2UoQ29udHJvbFR5cGUmIGN1cnJlbnQsIGNvbnN0
IFN0YWNrJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIGFkZEVsc2VUb1VucmVhY2hhYmxlKGN1
cnJlbnQpOwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRFbHNlVG9VbnJlYWNoYWJsZShDb250cm9s
VHlwZSYgY3VycmVudCkgLT4gUmVzdWx0Ci17Ci0gICAgY3VycmVudCA9IENvbnRyb2xEYXRhKEJs
b2NrVHlwZTo6QmxvY2ssIGN1cnJlbnQuc2lnbmF0dXJlKCkpOwotICAgIHJldHVybiB7IH07Ci19
Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFJldHVybihDb250cm9sVHlwZSYsIGNvbnN0IFN0YWNrJikg
LT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6YWRkQnJh
bmNoKENvbnRyb2xUeXBlJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IFN0YWNrJikgLT4gUmVzdWx0
Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6YWRkU3dpdGNoKEV4cHJl
c3Npb25UeXBlLCBjb25zdCBWZWN0b3I8Q29udHJvbERhdGEqPiYsIENvbnRyb2xEYXRhJiwgY29u
c3QgU3RhY2smKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlk
YXRlOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYpIC0+IFJl
c3VsdAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZEN1cnJlbnRN
ZW1vcnkoRXhwcmVzc2lvblR5cGUmKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1cm4geyB9OwotfQot
Ci1hdXRvIFZhbGlkYXRlOjplbmRCbG9jayhDb250cm9sRW50cnkmIGVudHJ5LCBTdGFjayYpIC0+
IFJlc3VsdAotewotICAgIHJldHVybiBhZGRFbmRUb1VucmVhY2hhYmxlKGVudHJ5KTsKLX0KLQot
YXV0byBWYWxpZGF0ZTo6YWRkRW5kVG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmIGVudHJ5KSAt
PiBSZXN1bHQKLXsKLSAgICBhdXRvIGJsb2NrID0gZW50cnkuY29udHJvbERhdGE7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLnNpZ25hdHVyZSgpLT5yZXR1cm5Db3VudCgpOyAr
K2kpCi0gICAgICAgIGVudHJ5LmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFw
cGVuZChibG9jay5zaWduYXR1cmUoKS0+cmV0dXJuVHlwZShpKSwgRW1wdHlFeHByZXNzaW9uKTsK
LSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVkLCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYs
IFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFJlc3VsdAotewotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQotICAgICAgICByZXN1bHRzLmFw
cGVuZChFbXB0eUV4cHJlc3Npb24pOwotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRh
dGU6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUs
IGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBS
ZXN1bHQKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNv
dW50KCk7ICsraSkKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoRW1wdHlFeHByZXNzaW9uKTsKLSAg
ICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjpsb2FkKExvYWRPcFR5cGUsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYsIHVpbnQzMl90KSAtPiBSZXN1bHQKLXsKLSAgICBy
ZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjpzdG9yZShTdG9yZU9wVHlwZSwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCB1aW50MzJfdCkgLT4gUmVzdWx0Ci17Ci0gICAgcmV0
dXJuIHsgfTsKLX0KLQotdGVtcGxhdGU8T3BUeXBlPgotYXV0byBWYWxpZGF0ZTo6YWRkT3AoRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotdGVtcGxhdGU8T3BUeXBlPgotYXV0byBWYWxpZGF0ZTo6YWRkT3AoRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYpIC0+IFJlc3VsdAotewotICAg
IHJldHVybiB7IH07Ci19Ci0KLXN0YXRpYyB2b2lkIGR1bXBFeHByZXNzaW9uU3RhY2soY29uc3Qg
Q29tbWFQcmludGVyJiBjb21tYSwgY29uc3QgVmFsaWRhdGU6OlN0YWNrJiBleHByZXNzaW9uU3Rh
Y2spCi17Ci0gICAgZGF0YUxvZyhjb21tYSwgIiBFeHByZXNzaW9uU3RhY2s6Iik7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBleHByZXNzaW9uIDogZXhwcmVzc2lvblN0YWNrKQotICAgICAgICBkYXRh
TG9nKGNvbW1hLCBtYWtlU3RyaW5nKGV4cHJlc3Npb24udHlwZSgpKSk7Ci19Ci0KLXZvaWQgVmFs
aWRhdGU6OmR1bXAoY29uc3QgQ29udHJvbFN0YWNrJiBjb250cm9sU3RhY2ssIGNvbnN0IFN0YWNr
KiBleHByZXNzaW9uU3RhY2spCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IGNvbnRyb2xTdGFjay5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgZGF0YUxvZygiICAiLCBjb250cm9sU3RhY2tbaV0uY29u
dHJvbERhdGEpOwotICAgICAgICBDb21tYVByaW50ZXIgY29tbWEoIiwgIiwgIiIpOwotICAgICAg
ICBkdW1wRXhwcmVzc2lvblN0YWNrKGNvbW1hLCAqZXhwcmVzc2lvblN0YWNrKTsKLSAgICAgICAg
ZXhwcmVzc2lvblN0YWNrID0gJmNvbnRyb2xTdGFja1tpXS5lbmNsb3NlZEV4cHJlc3Npb25TdGFj
azsKLSAgICAgICAgZGF0YUxvZ0xuKCk7Ci0gICAgfQotICAgIGRhdGFMb2dMbigpOwotfQotCi1F
eHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVuY3Rpb24oY29uc3QgRnVuY3Rpb25EYXRh
JiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUluZm9y
bWF0aW9uJiBtb2R1bGUpCi17Ci0gICAgVmFsaWRhdGUgY29udGV4dDsKLSAgICBGdW5jdGlvblBh
cnNlcjxWYWxpZGF0ZT4gdmFsaWRhdG9yKGNvbnRleHQsIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBm
dW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtb2R1bGUpOwotICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFModmFsaWRhdG9yLnBhcnNlKCkpOwotICAgIHJldHVybiB7IH07Ci19Ci0K
LX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhOTUyYWFjNjhhODJmODkwZmNlOTI5YjYyZTc4MDY1MzM4ZjAy
ZDI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotCi0jaW5jbHVkZSAiV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi1uYW1lc3BhY2UgV2FzbSB7Ci0KLUV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
dmFsaWRhdGVGdW5jdGlvbihjb25zdCBGdW5jdGlvbkRhdGEmLCBjb25zdCBTaWduYXR1cmUmLCBj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385214</attachid>
            <date>2019-12-09 17:15:16 -0800</date>
            <delta_ts>2019-12-09 17:54:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205037-20191209171515.patch</filename>
            <type>text/plain</type>
            <size>32910</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjYxYjAyMGQ4YWUzMDQ1NTdkOWMxMjViMjY4MmI5M2VjMjNmZDczLi4yM2YwODRmN2VjOTVjZTY3
ZDhhMDI4ODY2YjJlMDM4YzRjOGQwNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0xMi0wOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2ViQXNzZW1ibHldIFJlbW92ZSBXYXNtVmFsaWRhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3MgY3VycmVudGx5IG9u
bHkgdXNlZCB3aGVuIEpTQ191c2VXYXNtTExJbnQgaXMgZmFsc2UgYW5kIGl0IGNyZWF0ZXMgYW4g
YWRkaXRpb25hbCBpbnN0YW50aWF0aW9uCisgICAgICAgIG9mIFdhc206OkZ1bmN0aW9uUGFyc2Vy
LCB3aGljaCBhZGRzIGFib3V0IDEwMGtiIHRvIHRoZSBiaW5hcnkgc2l6ZS4gVGhpcyBkb2VzIG5v
dCBpbnRyb2R1Y2UgYW55CisgICAgICAgIGJlaGF2aW9yIGNoYW5nZXMgd2l0aCB0aGUgZGVmYXVs
dCBvcHRpb25zLCBidXQgaXQgbWVhbnMgdGhhdCB3ZSdsbCBnZW5lcmF0ZSBieXRlY29kZSB3aGVu
IGNhbGxpbmcKKyAgICAgICAgV2ViQXNzZW1ibHkudmFsaWRhdGUvbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZSBldmVuIHdoZW4gdGhlIFdhc21MTEludCBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46OmRpZFJlY2VpdmVGdW5jdGlvbkRhdGEpOgorICAgICAgICAqIHdhc20vV2Fz
bUVudHJ5UGxhbi5jcHA6CisgICAgICAgICogd2FzbS9XYXNtTExJbnRQbGFuLmNwcDoKKyAgICAg
ICAgKiB3YXNtL1dhc21Nb2R1bGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjptYWtlVmFsaWRh
dGlvblJlc3VsdCk6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VWYWxpZGF0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OnZhbGlkYXRlU3luYyk6CisgICAgICAgIChK
U0M6Oldhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYyk6CisgICAgICAgICogd2FzbS9XYXNtTW9k
dWxlLmg6CisgICAgICAgICogd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50cnlQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNt
L1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6Cisg
ICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgICogd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmg6IFJlbW92ZWQuCisK
IDIwMTktMTItMDkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjUzMTQwKTogV2ViQXNzZW1ibHkgdmFsaWRhdGlvbiBzaG91bGQgY2hl
Y2sgZm9yIHVubWF0Y2hlZCBlbHNlIGJlZm9yZSBjYWxsaW5nIGFkZEVsc2UvYWRkRWxzZVRvVW5y
ZWFjaGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTRlYTcwNjBkZDM1NzI1
NTFkZTk0OWNjODE0YmIxMjg1ZmQyZTk0YS4uZmZmYjZmZmMwOWQ0NWFkNmY2Yjc5MzExMGYwNjUy
Mjg0YzhiM2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMTUsNyArMTEx
NSw2IEBACiAJCTUzRjZCRjZEMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1M0ZBMkFFMTFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8q
IFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTUzRkY3Rjk5MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkY3Rjk4MURCRkNEOTAwMEEy
NkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLzsgfTsKIAkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5
IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5o
ICovOyB9OwogCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3
MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgfTsK
IAkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMx
REI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OwpAQCAt
MzgxOSw4ICszODE4LDYgQEAKIAkJNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDREMTFE
N0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzRkY3
Rjk4MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbVZhbGlkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUzRkY3RjlBMURCRkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVZhbGlkYXRlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI3MENGRDkxREI2OUU1QzAwRUMy
M0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODY4LDggKzY4NjUsNiBAQAogCQkJCTUy
NTBEMkQwMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggKi8sCiAJCQkJRTNDNjk0QjIy
MzAyNjg3NDAwNkZCRTQyIC8qIFdhc21UaWVyVXBDb3VudC5jcHAgKi8sCiAJCQkJNTNFOUUwQUUx
RUFFQzQ1NzAwRkVFMjUxIC8qIFdhc21UaWVyVXBDb3VudC5oICovLAotCQkJCTUzRkY3RjlBMURC
RkQyQjkwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuY3BwICovLAotCQkJCTUzRkY3Rjk4MURCRkNE
OTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRhdGUuaCAqLywKIAkJCQk1MzBGQjMwMzFFN0ExMTQ2MDAz
QzE5REQgLyogV2FzbVdvcmtsaXN0LmNwcCAqLywKIAkJCQk1MzBGQjMwMTFFN0EwQjZFMDAzQzE5
REQgLyogV2FzbVdvcmtsaXN0LmggKi8sCiAJCQkpOwpAQCAtMTAyOTgsNyArMTAyOTMsNiBAQAog
CQkJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDVDMzZFQzFGNzVBRDdDMDAwQkNBQUYgLyogV2FzbVRvSlMuaCBp
biBIZWFkZXJzICovLAotCQkJCTUzRkY3Rjk5MURCRkNEOTAwMEEyNkNDQyAvKiBXYXNtVmFsaWRh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzMEZCMzAyMUU3QTBCNkUwMDNDMTlERCAvKiBXYXNt
V29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAv
KiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMjYxNTg1M0NFMzAwNEE0RTdE
IC8qIFdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGM0MDY5ZGI5ZjRiZTIyYTM0MjMxOTk4MmI3YjM1MTZmN2FkMDVjOTcuLmYyMTk3ZjA5
YTcwODM5NGI1MTJiZDRjMjlhZDIzZGMzZTRmYzE2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKQEAgLTEwMzgsNyArMTAzOCw2IEBAIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAK
IHdhc20vV2FzbVRhYmxlLmNwcAogd2FzbS9XYXNtVGh1bmtzLmNwcAogd2FzbS9XYXNtVGllclVw
Q291bnQuY3BwCi13YXNtL1dhc21WYWxpZGF0ZS5jcHAKIHdhc20vV2FzbVdvcmtsaXN0LmNwcAog
CiB3YXNtL2pzL0pTVG9XYXNtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwCmluZGV4IGI5NWY3ZmZhMTU2OTUwMDgzZjRiMTA4NjBjOGZlM2ExNDU4M2IyYTYu
LjI2NzJlMTZiZTcyZTQxOTEzYzczNmQ2NTEzYTc4Mjg5YjYxOGEyNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNs
dWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNp
bmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKLSNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMjIyLDcgKzIyMSw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbnRlcm5hbEZ1bmN0aW9uPiBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWludDMyX3QgZnVu
Y3Rpb25JbmRlCiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4
U3BhY2UgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCkgKyBmdW5j
dGlvbkluZGV4OwogICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVs
ZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rp
b25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRleCk7Ci0gICAgQVNTRVJUKHZhbGlkYXRlRnVu
Y3Rpb24oZnVuY3Rpb24sIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSkpOwog
ICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBw
YXJzZUFuZENvbXBpbGVSZXN1bHQ7CiAgICAgdW5zaWduZWQgb3NyRW50cnlTY3JhdGNoQnVmZmVy
U2l6ZSA9IDA7CiAKQEAgLTMxNywyNCArMzE1LDkgQEAgdm9pZCBCQlFQbGFuOjppbml0aWFsaXpl
Q2FsbGVlcyhjb25zdCBDYWxsZWVJbml0aWFsaXplciYgY2FsbGJhY2spCiAgICAgfQogfQogCi1i
b29sIEJCUVBsYW46OmRpZFJlY2VpdmVGdW5jdGlvbkRhdGEodW5zaWduZWQgZnVuY3Rpb25JbmRl
eCwgY29uc3QgRnVuY3Rpb25EYXRhJiBmdW5jdGlvbikKK2Jvb2wgQkJRUGxhbjo6ZGlkUmVjZWl2
ZUZ1bmN0aW9uRGF0YSh1bnNpZ25lZCwgY29uc3QgRnVuY3Rpb25EYXRhJikKIHsKLSAgICBkYXRh
TG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlv
biBzdGFydGluZyBhdDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVu
Y3Rpb24uZW5kKTsKLSAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbi5lbmQgLSBm
dW5jdGlvbi5zdGFydDsKLSAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPT0gZnVuY3Rpb24uZGF0
YS5zaXplKCkpOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRl
eF07Ci0gICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKLQotICAgIGF1dG8gdmFsaWRhdGlvblJlc3VsdCA9IHZh
bGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24sIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSk7Ci0gICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7Ci0gICAgICAgIGlmIChXYXNtQkJR
UGxhbkludGVybmFsOjp2ZXJib3NlKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1Bv
aW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24uZGF0YVtpXSkpLCAiLCAiKTsK
LSAgICAgICAgICAgIGRhdGFMb2dMbigpOwotICAgICAgICB9Ci0gICAgICAgIGZhaWwoaG9sZExv
Y2sobV9sb2NrKSwgbWFrZVN0cmluZyh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKCksICIsIGluIGZ1
bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJ
WE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KLSAgICB9Ci0gICAgcmV0dXJuICEhdmFsaWRhdGlv
blJlc3VsdDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldh
c20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUVudHJ5UGxhbi5jcHAKaW5kZXgg
NzdkMDNkMzBiNjgyY2E2YmEzZGEwZjQ4NTlkYTI5ZmUxNjFkNjQ0YS4uYjZmYzNhM2E0ZDhiOGZk
NTI4N2UwNGIyYzBjYzk3OTcyNTFiNzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUVudHJ5UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUVudHJ5UGxhbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJXYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldh
c21TaWduYXR1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2FzbVZhbGlkYXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNp
bmNsdWRlIDx3dGYvTG9ja2VyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludFBsYW4uY3BwCmluZGV4IDMzN2ZlYzNlNDlmODBhZGVhYzhiMGVkOTAzNzlmOTQwZGI5ZTQ4
ZjUuLmNhYzE4YjZiYjIzMDJkZjg5MmU3ZWQ1MTMzZmE3M2Q1MWExYzAxOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCkBAIC0zNyw3ICszNyw2IEBA
CiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUgIldhc21MTEludEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2FzbVZhbGlk
YXRlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAKaW5kZXggZGI5NDdmMzBkZDI5MWUyZGUwMzk1
ODRkNzJkNzBjN2Q3MjUyZDM0Ni4uNDU2ZGJiZGU5MWI0N2MzMTQ5NDNhMDE2YTVhY2YwNzU2YWNj
MjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAKQEAgLTQy
LDExICs0Miw2IEBAIE1vZHVsZTo6TW9kdWxlKExMSW50UGxhbiYgcGxhbikKIHsKIH0KIAotTW9k
dWxlOjpNb2R1bGUoQkJRUGxhbiYgcGxhbikKLSAgICA6IG1fbW9kdWxlSW5mb3JtYXRpb24ocGxh
bi50YWtlTW9kdWxlSW5mb3JtYXRpb24oKSkKLXsKLX0KLQogTW9kdWxlOjp+TW9kdWxlKCkgeyB9
CiAKIFdhc206OlNpZ25hdHVyZUluZGV4IE1vZHVsZTo6c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rp
b25JbmRleFNwYWNlKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXhTcGFjZSkgY29uc3QKQEAgLTU0LDgg
KzQ5LDcgQEAgV2FzbTo6U2lnbmF0dXJlSW5kZXggTW9kdWxlOjpzaWduYXR1cmVJbmRleEZyb21G
dW5jdGlvbkluZGV4U3BhY2UodW5zaWduZWQgZnVuY3QKICAgICByZXR1cm4gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5k
ZXhTcGFjZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFBsYW4+Ci1zdGF0aWMgTW9kdWxlOjpW
YWxpZGF0aW9uUmVzdWx0IG1ha2VWYWxpZGF0aW9uUmVzdWx0KFBsYW4mIHBsYW4pCitzdGF0aWMg
TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0IG1ha2VWYWxpZGF0aW9uUmVzdWx0KExMSW50UGxhbiYg
cGxhbikKIHsKICAgICBBU1NFUlQoIXBsYW4uaGFzV29yaygpKTsKICAgICBpZiAocGxhbi5mYWls
ZWQoKSkKQEAgLTYzLDM4ICs1NywyNiBAQCBzdGF0aWMgTW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0
IG1ha2VWYWxpZGF0aW9uUmVzdWx0KFBsYW4mIHBsYW4pCiAgICAgcmV0dXJuIE1vZHVsZTo6VmFs
aWRhdGlvblJlc3VsdChNb2R1bGU6OmNyZWF0ZShwbGFuKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFBsYW5UPgogc3RhdGljIFBsYW46OkNvbXBsZXRpb25UYXNrIG1ha2VWYWxpZGF0aW9uQ2Fs
bGJhY2soTW9kdWxlOjpBc3luY1ZhbGlkYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IHJldHVybiBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldIChQbGFuJiBwbGFuKSB7CiAgICAgICAgIEFTU0VSVCghcGxhbi5o
YXNXb3JrKCkpOwotICAgICAgICBjYWxsYmFjay0+cnVuKG1ha2VWYWxpZGF0aW9uUmVzdWx0KHN0
YXRpY19jYXN0PFBsYW5UJj4ocGxhbikpKTsKKyAgICAgICAgY2FsbGJhY2stPnJ1bihtYWtlVmFs
aWRhdGlvblJlc3VsdChzdGF0aWNfY2FzdDxMTEludFBsYW4mPihwbGFuKSkpOwogICAgIH0pOwog
fQogCiBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQgTW9kdWxlOjp2YWxpZGF0ZVN5bmMoQ29udGV4
dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlKQogewotICAgIGlmIChPcHRpb25z
Ojp1c2VXYXNtTExJbnQoKSkgewotICAgICAgICBSZWY8TExJbnRQbGFuPiBwbGFuID0gYWRvcHRS
ZWYoKm5ldyBMTEludFBsYW4oY29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBFbnRyeVBsYW46OlZh
bGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7Ci0gICAgICAgIFdhc206OmVuc3VyZVdv
cmtsaXN0KCkuZW5xdWV1ZShwbGFuLmdldCgpKTsKLSAgICAgICAgcGxhbi0+d2FpdEZvckNvbXBs
ZXRpb24oKTsKLSAgICAgICAgcmV0dXJuIG1ha2VWYWxpZGF0aW9uUmVzdWx0KHBsYW4uZ2V0KCkp
OwotICAgIH0KLQotICAgIFJlZjxCQlFQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFu
KGNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgRW50cnlQbGFuOjpWYWxpZGF0aW9uLCBQbGFuOjpk
b250RmluYWxpemUoKSkpOwotICAgIHBsYW4tPnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKTsKKyAg
ICBSZWY8TExJbnRQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBMTEludFBsYW4oY29udGV4dCwg
V1RGTW92ZShzb3VyY2UpLCBFbnRyeVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6
ZSgpKSk7CisgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKHBsYW4uZ2V0KCkpOwor
ICAgIHBsYW4tPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgcmV0dXJuIG1ha2VWYWxpZGF0aW9u
UmVzdWx0KHBsYW4uZ2V0KCkpOwogfQogCiB2b2lkIE1vZHVsZTo6dmFsaWRhdGVBc3luYyhDb250
ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UsIE1vZHVsZTo6QXN5bmNWYWxp
ZGF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoT3B0aW9uczo6dXNlV2FzbUxM
SW50KCkpIHsKLSAgICAgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IExMSW50UGxh
bihjb250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIEVudHJ5UGxhbjo6VmFsaWRhdGlvbiwgbWFrZVZh
bGlkYXRpb25DYWxsYmFjazxMTEludFBsYW4+KFdURk1vdmUoY2FsbGJhY2spKSkpOwotICAgICAg
ICBXYXNtOjplbnN1cmVXb3JrbGlzdCgpLmVucXVldWUoV1RGTW92ZShwbGFuKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IEJCUVBsYW4oY29u
dGV4dCwgV1RGTW92ZShzb3VyY2UpLCBFbnRyeVBsYW46OlZhbGlkYXRpb24sIG1ha2VWYWxpZGF0
aW9uQ2FsbGJhY2s8QkJRUGxhbj4oV1RGTW92ZShjYWxsYmFjaykpKSk7Ci0gICAgICAgIFdhc206
OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKLSAgICB9CisgICAgUmVm
PFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IExMSW50UGxhbihjb250ZXh0LCBXVEZNb3ZlKHNv
dXJjZSksIEVudHJ5UGxhbjo6VmFsaWRhdGlvbiwgbWFrZVZhbGlkYXRpb25DYWxsYmFjayhXVEZN
b3ZlKGNhbGxiYWNrKSkpKTsKKyAgICBXYXNtOjplbnN1cmVXb3JrbGlzdCgpLmVucXVldWUoV1RG
TW92ZShwbGFuKSk7CiB9CiAKIFJlZjxDb2RlQmxvY2s+IE1vZHVsZTo6Z2V0T3JDcmVhdGVDb2Rl
QmxvY2soQ29udGV4dCogY29udGV4dCwgTWVtb3J5TW9kZSBtb2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZS5oCmluZGV4IDRmNjNhNWRiNWQxMWUyNjA2YWE5OTYxNTIxYzIx
MDIyOTJjZTA0NTUuLmZhZGE0YjJjZTU1MTFjMGVlNmJlOThlZTllMzU2ZTk0YzA1MjRmODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTM3LDcgKzM3LDYgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotY2xhc3MgQkJRUGxhbjsKIGNs
YXNzIExMSW50UGxhbjsKIHN0cnVjdCBDb250ZXh0Owogc3RydWN0IE1vZHVsZUluZm9ybWF0aW9u
OwpAQCAtNTMsMTEgKzUyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBWYWxpZGF0aW9uUmVzdWx0
IHZhbGlkYXRlU3luYyhDb250ZXh0KiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlKTsKICAgICBz
dGF0aWMgdm9pZCB2YWxpZGF0ZUFzeW5jKENvbnRleHQqLCBWZWN0b3I8dWludDhfdD4mJiBzb3Vy
Y2UsIE1vZHVsZTo6QXN5bmNWYWxpZGF0aW9uQ2FsbGJhY2smJik7CiAKLSAgICBzdGF0aWMgUmVm
PE1vZHVsZT4gY3JlYXRlKEJCUVBsYW4mIHBsYW4pCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNb2R1bGUocGxhbikpOwotICAgIH0KLQogICAgIHN0YXRpYyBSZWY8TW9kdWxl
PiBjcmVhdGUoTExJbnRQbGFuJiBwbGFuKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW9kdWxlKHBsYW4pKTsKQEAgLTc1LDcgKzY5LDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBSZWY8Q29kZUJsb2NrPiBnZXRPckNyZWF0ZUNvZGVCbG9jayhDb250ZXh0KiwgTWVtb3J5
TW9kZSk7CiAKLSAgICBNb2R1bGUoQkJRUGxhbiYpOwogICAgIE1vZHVsZShMTEludFBsYW4mKTsK
ICAgICBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IG1fbW9kdWxlSW5mb3JtYXRpb247CiAgICAgUmVm
UHRyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2tzW1dhc206Ok51bWJlck9mTWVtb3J5TW9kZXNdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zvck9TUkVudHJ5
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQ
bGFuLmNwcAppbmRleCA4YmM3YjFmMjk3MjA2NTNiYTdkODZjZjk5MTVmNmExZTcyYTUyYWZkLi5h
YmNjZWNiNWM0YWE2ZWZhYzU1ZWQwM2FkNGRhODI2MTYxZTlkNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcApAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtTmFt
ZVNlY3Rpb24uaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUg
Ildhc21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgpAQCAtNzksNyArNzgsNiBAQCB2
b2lkIE9NR0Zvck9TUkVudHJ5UGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKIAogICAgIFNp
Z25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJu
YWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKICAgICBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJl
SW5kZXgpOwotICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLCBzaWduYXR1cmUs
IG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKIAogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21U
b1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwogICAgIENvbXBpbGF0aW9uQ29udGV4dCBjb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDZlNWNl
NzE4Njg4ZGJhMmUyZWUyZjFjZGZjYjhkNDJhNTgzNTIzOTYuLjc2N2M1NWJkYmUzZTk4YjViNzRl
MzAwZmUzZDJlNzBlNDNkMGExOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
T01HUGxhbi5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAj
aW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKLSNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3Qu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KQEAg
LTc3LDcgKzc2LDYgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogCiAg
ICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5p
bnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOwogICAgIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWdu
YXR1cmVJbmRleCk7Ci0gICAgQVNTRVJUKHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24sIHNpZ25h
dHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSkpOwogCiAgICAgVmVjdG9yPFVubGlua2Vk
V2FzbVRvV2FzbUNhbGw+IHVubGlua2VkQ2FsbHM7CiAgICAgdW5zaWduZWQgb3NyRW50cnlTY3Jh
dGNoQnVmZmVyU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRl
eCA1YTUzYjk1OTA4MzZmOTRiY2E0ZmQxMDM3ZjQ0NmEyYzFlMzVjYzJjLi4zNTY1Zjc2ZjU0MjIw
ZmEzZGNjN2ZmY2VjMDMxMTRkOWNhMzU4N2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdDb252
ZW50aW9uLmgiCiAjaW5jbHVkZSAiV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5oIgogI2luY2x1ZGUg
Ildhc21NZW1vcnkuaCIKLSNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3Rv
bmljVGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZh
bGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YzBhM2FlYmE1OWYwM2FhNDcwZDFiNTkx
YmJhMzlmN2U5Y2Q0ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDM5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2FzbVZh
bGlkYXRlLmgiCi0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLSNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5oIgotI2luY2x1ZGUg
Ildhc21TaWduYXR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7Ci0KLWNsYXNzIFZhbGlkYXRlIHsKLXB1YmxpYzoK
LSAgICBjbGFzcyBDb250cm9sRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICBDb250cm9sRGF0
YSgpID0gZGVmYXVsdDsKLSAgICAgICAgQ29udHJvbERhdGEoQmxvY2tUeXBlIHR5cGUsIEJsb2Nr
U2lnbmF0dXJlIHNpZ25hdHVyZSkKLSAgICAgICAgICAgIDogbV9ibG9ja1R5cGUodHlwZSkKLSAg
ICAgICAgICAgICwgbV9zaWduYXR1cmUoc2lnbmF0dXJlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdGF0aWMgYm9vbCBpc0lmKGNvbnN0IENvbnRyb2xEYXRhJiBjb250cm9sKSB7
IHJldHVybiBjb250cm9sLmJsb2NrVHlwZSgpID09IEJsb2NrVHlwZTo6SWY7IH0KLSAgICAgICAg
c3RhdGljIGJvb2wgaXNUb3BMZXZlbChjb25zdCBDb250cm9sRGF0YSYgY29udHJvbCkgeyByZXR1
cm4gY29udHJvbC5ibG9ja1R5cGUoKSA9PSBCbG9ja1R5cGU6OlRvcExldmVsOyB9Ci0KLSAgICAg
ICAgQmxvY2tUeXBlIGJsb2NrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tUeXBlOyB9Ci0g
ICAgICAgIEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmF0
dXJlOyB9Ci0KLSAgICAgICAgdW5zaWduZWQgYnJhbmNoVGFyZ2V0QXJpdHkoKSBjb25zdCB7IHJl
dHVybiBibG9ja1R5cGUoKSA9PSBCbG9ja1R5cGU6Okxvb3AgPyBzaWduYXR1cmUoKS0+YXJndW1l
bnRDb3VudCgpIDogc2lnbmF0dXJlKCktPnJldHVybkNvdW50KCk7IH0KLSAgICAgICAgVHlwZSBi
cmFuY2hUYXJnZXRUeXBlKHVuc2lnbmVkIGkpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChpIDwgYnJhbmNoVGFyZ2V0QXJpdHkoKSk7Ci0gICAgICAgICAgICByZXR1cm4gYmxv
Y2tUeXBlKCkgPT0gQmxvY2tUeXBlOjpMb29wID8gc2lnbmF0dXJlKCktPmFyZ3VtZW50KGkpIDog
c2lnbmF0dXJlKCktPnJldHVyblR5cGUoaSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChibG9ja1R5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGU6OklmOgotICAgICAg
ICAgICAgICAgIG91dC5wcmludCgiSWY6ICAgICAgICIpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGU6OkJsb2NrOgotICAgICAgICAgICAgICAgIG91
dC5wcmludCgiQmxvY2s6ICAgICIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBCbG9ja1R5cGU6Okxvb3A6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJMb29w
OiAgICAgIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJsb2Nr
VHlwZTo6VG9wTGV2ZWw6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJUb3BMZXZlbDogIik7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25z
dCBTaWduYXR1cmUmIHNpZyA9ICpzaWduYXR1cmUoKTsKLSAgICAgICAgICAgIG91dC5wcmludChz
aWcpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBCbG9ja1R5cGUgbV9ibG9j
a1R5cGU7Ci0gICAgICAgIEJsb2NrU2lnbmF0dXJlIG1fc2lnbmF0dXJlOwotICAgIH07Ci0KLSAg
ICBlbnVtIEV4cHJlc3Npb25UeXBlIHsgRW1wdHlFeHByZXNzaW9uIH07Ci0KLSAgICB1c2luZyBF
cnJvclR5cGUgPSBTdHJpbmc7Ci0gICAgdXNpbmcgVW5leHBlY3RlZFJlc3VsdCA9IFVuZXhwZWN0
ZWQ8RXJyb3JUeXBlPjsKLSAgICB1c2luZyBSZXN1bHQgPSBFeHBlY3RlZDx2b2lkLCBFcnJvclR5
cGU+OwotICAgIHVzaW5nIENvbnRyb2xUeXBlID0gQ29udHJvbERhdGE7Ci0KLSAgICB1c2luZyBD
b250cm9sRW50cnkgPSBGdW5jdGlvblBhcnNlcjxWYWxpZGF0ZT46OkNvbnRyb2xFbnRyeTsKLSAg
ICB1c2luZyBDb250cm9sU3RhY2sgPSBGdW5jdGlvblBhcnNlcjxWYWxpZGF0ZT46OkNvbnRyb2xT
dGFjazsKLSAgICB1c2luZyBSZXN1bHRMaXN0ID0gRnVuY3Rpb25QYXJzZXI8VmFsaWRhdGU+OjpS
ZXN1bHRMaXN0OwotICAgIHVzaW5nIFN0YWNrID0gRnVuY3Rpb25QYXJzZXI8VmFsaWRhdGU+OjpT
dGFjazsKLQotICAgIHN0YXRpYyBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJlc3Npb24oKSB7IHJl
dHVybiBFbXB0eUV4cHJlc3Npb247IH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJn
cz4KLSAgICBORVZFUl9JTkxJTkUgVW5leHBlY3RlZFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
ZmFpbChjb25zdCBBcmdzJi4uLiBhcmdzKSBjb25zdAotICAgIHsKLSAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEZhaWx1cmVIZWxwZXI7IC8vIFNlZSBBREwgY29tbWVudCBpbiBXYXNtUGFyc2VyLmgu
Ci0gICAgICAgIGlmIChVTkxJS0VMWSghQVNTRVJUX0RJU0FCTEVEICYmIE9wdGlvbnM6OmNyYXNo
T25GYWlsZWRXZWJBc3NlbWJseVZhbGlkYXRlKCkpKQotICAgICAgICAgICAgV1RGQnJlYWtwb2lu
dFRyYXAoKTsKLQotICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7Ci0gICAgICAgIG91dC5w
cmludCgiV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgdmFsaWRhdGU6ICJfcywgYXJncy4uLik7
Ci0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkUmVzdWx0KG91dC50b1N0cmluZygpKTsKLSAgICB9
Ci0jZGVmaW5lIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoY29uZGl0aW9uLCAuLi4pIGRvIHsgXAot
ICAgICAgICBpZiAoVU5MSUtFTFkoY29uZGl0aW9uKSkgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgIHJldHVybiBmYWlsKF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICBcCi0gICAg
fSB3aGlsZSAoMCkKLQotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQXJndW1lbnRz
KGNvbnN0IFNpZ25hdHVyZSYpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9j
YWwoVHlwZSwgdWludDMyX3QpOwotICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KFR5cGUs
IHVpbnQ2NF90KSB7IHJldHVybiBFbXB0eUV4cHJlc3Npb247IH0KLQotICAgIC8vIFJlZmVyZW5j
ZXMKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFJlZklzTnVsbChFeHByZXNzaW9u
VHlwZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKLQotICAgIC8vIFRhYmxlcwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
VGFibGVHZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlU2V0KHVuc2ln
bmVkLCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpOwotICAgIFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVGFibGVTaXplKHVuc2lnbmVkLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFRhYmxlR3Jv
dyh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
VGFibGVGaWxsKHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSBvZmZzZXQsIEV4cHJlc3Npb25UeXBl
IGZpbGwsIEV4cHJlc3Npb25UeXBlIGNvdW50KTsKLSAgICAvLyBMb2NhbHMKLSAgICBSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHNldExvY2FsKHVpbnQz
Ml90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7Ci0KLSAgICAvLyBHbG9iYWxzCi0gICAg
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0R2xv
YmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSk7Ci0KLSAgICAvLyBNZW1v
cnkKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGxvYWQoTG9hZE9wVHlwZSwgRXhwcmVz
c2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3Qgb2Zmc2V0
KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHN0b3JlKFN0b3JlT3BUeXBlLCBFeHBy
ZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgdWludDMyX3Qgb2Zmc2V0
KTsKLQotICAgIC8vIEJhc2ljIG9wZXJhdG9ycwotICAgIHRlbXBsYXRlPE9wVHlwZT4KLSAgICBS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZE9wKEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgdGVtcGxhdGU8T3BUeXBlPgotICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkT3AoRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUg
cmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkU2VsZWN0KEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgRXhwcmVzc2lvblR5cGUg
bm9uWmVybywgRXhwcmVzc2lvblR5cGUgemVybywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0K
LSAgICAvLyBDb250cm9sIGZsb3cKLSAgICBDb250cm9sRGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkVG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkQmxvY2soQmxvY2tTaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJv
bFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spOwotICAgIFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkTG9vcChCbG9ja1NpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBD
b250cm9sVHlwZSYgYmxvY2ssIFN0YWNrJiBuZXdTdGFjaywgdWludDMyX3QgbG9vcEluZGV4KTsK
LSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZElmKEV4cHJlc3Npb25UeXBlIGNvbmRp
dGlvbiwgQmxvY2tTaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29udHJvbFR5cGUm
IHJlc3VsdCwgU3RhY2smIG5ld1N0YWNrKTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZEVsc2UoQ29udHJvbERhdGEmLCBjb25zdCBTdGFjayYpOwotICAgIFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkRWxzZVRvVW5yZWFjaGFibGUoQ29udHJvbERhdGEmKTsKLQotICAgIFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0dXJuKENvbnRyb2xEYXRhJiB0b3BMZXZlbCwg
Y29uc3QgU3RhY2smIHJldHVyblZhbHVlcyk7Ci0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRCcmFuY2goQ29udHJvbERhdGEmLCBFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIGNvbnN0
IFN0YWNrJiBleHByZXNzaW9uU3RhY2spOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkU3dpdGNoKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgY29uc3QgVmVjdG9yPENvbnRyb2xE
YXRhKj4mIHRhcmdldHMsIENvbnRyb2xEYXRhJiBkZWZhdWx0VGFyZ2V0LCBjb25zdCBTdGFjayYg
ZXhwcmVzc2lvblN0YWNrKTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVuZEJsb2Nr
KENvbnRyb2xFbnRyeSYsIFN0YWNrJiBleHByZXNzaW9uU3RhY2spOwotICAgIFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkRW5kVG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmKTsKLSAgICBS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVs
dGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLQotICAgIFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKSB7IHJldHVybiB7IH07IH0KLSAg
ICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVuZFRvcExldmVsKEJsb2NrU2lnbmF0dXJlLCBj
b25zdCBTdGFjayYpIHsgcmV0dXJuIHsgfTsgfQotCi0gICAgLy8gQ2FsbHMKLSAgICBSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodW5zaWduZWQgY2FsbGVlSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSYsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3Qm
KTsKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25l
ZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBSZXN1bHRMaXN0Jik7Ci0KLSAgICBWYWxpZGF0ZSgpCi0gICAgewotICAgIH0K
LQotICAgIHZvaWQgZHVtcChjb25zdCBDb250cm9sU3RhY2smLCBjb25zdCBTdGFjayopOwotICAg
IHZvaWQgc2V0UGFyc2VyKEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRlPiopIHsgfQotICAgIHZvaWQg
ZGlkRmluaXNoUGFyc2luZ0xvY2FscygpIHsgfQotICAgIHZvaWQgZGlkUG9wVmFsdWVGcm9tU3Rh
Y2soKSB7IH0KLQotcHJpdmF0ZToKLSAgICBSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHVuaWZ5
KGNvbnN0IFN0YWNrJiwgY29uc3QgQ29udHJvbERhdGEmKTsKLX07Ci0KLWF1dG8gVmFsaWRhdGU6
OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUmKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1cm4g
eyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRUYWJsZUdldCh1bnNpZ25lZCwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0K
LQotYXV0byBWYWxpZGF0ZTo6YWRkVGFibGVTZXQodW5zaWduZWQsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSkgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBW
YWxpZGF0ZTo6YWRkVGFibGVTaXplKHVuc2lnbmVkLCBFeHByZXNzaW9uVHlwZSYpIC0+IFJlc3Vs
dAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFRhYmxlR3Jvdyh1
bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYp
IC0+IFJlc3VsdAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFRh
YmxlRmlsbCh1bnNpZ25lZCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSkgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0
ZTo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSYpIC0+IFJlc3Vs
dAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFJlZkZ1bmModWlu
dDMyX3QsIEV4cHJlc3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0K
LQotYXV0byBWYWxpZGF0ZTo6YWRkTG9jYWwoVHlwZSwgdWludDMyX3QpIC0+IFJlc3VsdAotewot
ICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmdldExvY2FsKHVpbnQzMl90LCBF
eHByZXNzaW9uVHlwZSYpIC0+IFJlc3VsdAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8g
VmFsaWRhdGU6OnNldExvY2FsKHVpbnQzMl90LCBFeHByZXNzaW9uVHlwZSkgLT4gUmVzdWx0Ci17
Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6Z2V0R2xvYmFsKHVpbnQzMl90
LCBFeHByZXNzaW9uVHlwZSYpIC0+IFJlc3VsdAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1
dG8gVmFsaWRhdGU6OnNldEdsb2JhbCh1aW50MzJfdCwgRXhwcmVzc2lvblR5cGUpIC0+IFJlc3Vs
dAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLVZhbGlkYXRlOjpDb250cm9sVHlwZSBWYWxpZGF0
ZTo6YWRkVG9wTGV2ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlKQotewotICAgIHJldHVybiBD
b250cm9sRGF0YShCbG9ja1R5cGU6OlRvcExldmVsLCBzaWduYXR1cmUpOwotfQotCi1hdXRvIFZh
bGlkYXRlOjphZGRCbG9jayhCbG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3Np
bmdTdGFjaywgQ29udHJvbFR5cGUmIG5ld0Jsb2NrLCBTdGFjayYgbmV3U3RhY2spIC0+IFJlc3Vs
dAotewotICAgIHNwbGl0U3RhY2soc2lnbmF0dXJlLCBlbmNsb3NpbmdTdGFjaywgbmV3U3RhY2sp
OwotICAgIG5ld0Jsb2NrID0gQ29udHJvbERhdGEoQmxvY2tUeXBlOjpCbG9jaywgc2lnbmF0dXJl
KTsKLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRMb29wKEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBDb250cm9sVHlwZSYgbG9v
cCwgU3RhY2smIG5ld1N0YWNrLCB1aW50MzJfdCkgLT4gUmVzdWx0Ci17Ci0gICAgc3BsaXRTdGFj
ayhzaWduYXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7Ci0gICAgbG9vcCA9IENvbnRy
b2xEYXRhKEJsb2NrVHlwZTo6TG9vcCwgc2lnbmF0dXJlKTsKLSAgICByZXR1cm4geyB9OwotfQot
Ci1hdXRvIFZhbGlkYXRlOjphZGRTZWxlY3QoRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1
cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRJZihFeHByZXNzaW9uVHlwZSwgQmxvY2tT
aWduYXR1cmUgc2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvbnRyb2xUeXBlJiBy
ZXN1bHQsIFN0YWNrJiBuZXdTdGFjaykgLT4gUmVzdWx0Ci17Ci0gICAgc3BsaXRTdGFjayhzaWdu
YXR1cmUsIGVuY2xvc2luZ1N0YWNrLCBuZXdTdGFjayk7Ci0gICAgcmVzdWx0ID0gQ29udHJvbERh
dGEoQmxvY2tUeXBlOjpJZiwgc2lnbmF0dXJlKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRv
IFZhbGlkYXRlOjphZGRFbHNlKENvbnRyb2xUeXBlJiBjdXJyZW50LCBjb25zdCBTdGFjayYpIC0+
IFJlc3VsdAotewotICAgIHJldHVybiBhZGRFbHNlVG9VbnJlYWNoYWJsZShjdXJyZW50KTsKLX0K
LQotYXV0byBWYWxpZGF0ZTo6YWRkRWxzZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIGN1cnJl
bnQpIC0+IFJlc3VsdAotewotICAgIGN1cnJlbnQgPSBDb250cm9sRGF0YShCbG9ja1R5cGU6OkJs
b2NrLCBjdXJyZW50LnNpZ25hdHVyZSgpKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZh
bGlkYXRlOjphZGRSZXR1cm4oQ29udHJvbFR5cGUmLCBjb25zdCBTdGFjayYpIC0+IFJlc3VsdAot
ewotICAgIHJldHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZEJyYW5jaChDb250cm9s
VHlwZSYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBTdGFjayYpIC0+IFJlc3VsdAotewotICAgIHJl
dHVybiB7IH07Ci19Ci0KLWF1dG8gVmFsaWRhdGU6OmFkZFN3aXRjaChFeHByZXNzaW9uVHlwZSwg
Y29uc3QgVmVjdG9yPENvbnRyb2xEYXRhKj4mLCBDb250cm9sRGF0YSYsIGNvbnN0IFN0YWNrJikg
LT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKSAtPiBSZXN1bHQKLXsKLSAg
ICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRDdXJyZW50TWVtb3J5KEV4cHJl
c3Npb25UeXBlJikgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotYXV0byBWYWxp
ZGF0ZTo6ZW5kQmxvY2soQ29udHJvbEVudHJ5JiBlbnRyeSwgU3RhY2smKSAtPiBSZXN1bHQKLXsK
LSAgICByZXR1cm4gYWRkRW5kVG9VbnJlYWNoYWJsZShlbnRyeSk7Ci19Ci0KLWF1dG8gVmFsaWRh
dGU6OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5JiBlbnRyeSkgLT4gUmVzdWx0Ci17
Ci0gICAgYXV0byBibG9jayA9IGVudHJ5LmNvbnRyb2xEYXRhOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBibG9jay5zaWduYXR1cmUoKS0+cmV0dXJuQ291bnQoKTsgKytpKQotICAgICAg
ICBlbnRyeS5lbmNsb3NlZEV4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoYmxvY2su
c2lnbmF0dXJlKCktPnJldHVyblR5cGUoaSksIEVtcHR5RXhwcmVzc2lvbik7Ci0gICAgcmV0dXJu
IHsgfTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6YWRkQ2FsbCh1bnNpZ25lZCwgY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mLCBSZXN1bHRMaXN0
JiByZXN1bHRzKSAtPiBSZXN1bHQKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2ln
bmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoRW1wdHlF
eHByZXNzaW9uKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1hdXRvIFZhbGlkYXRlOjphZGRDYWxs
SW5kaXJlY3QodW5zaWduZWQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiwgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUmVzdWx0Ci17Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kp
Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKEVtcHR5RXhwcmVzc2lvbik7Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotYXV0byBWYWxpZGF0ZTo6bG9hZChMb2FkT3BUeXBlLCBFeHByZXNzaW9uVHlwZSwg
RXhwcmVzc2lvblR5cGUmLCB1aW50MzJfdCkgLT4gUmVzdWx0Ci17Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQotYXV0byBWYWxpZGF0ZTo6c3RvcmUoU3RvcmVPcFR5cGUsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgdWludDMyX3QpIC0+IFJlc3VsdAotewotICAgIHJldHVybiB7IH07Ci19
Ci0KLXRlbXBsYXRlPE9wVHlwZT4KLWF1dG8gVmFsaWRhdGU6OmFkZE9wKEV4cHJlc3Npb25UeXBl
LCBFeHByZXNzaW9uVHlwZSYpIC0+IFJlc3VsdAotewotICAgIHJldHVybiB7IH07Ci19Ci0KLXRl
bXBsYXRlPE9wVHlwZT4KLWF1dG8gVmFsaWRhdGU6OmFkZE9wKEV4cHJlc3Npb25UeXBlLCBFeHBy
ZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUmKSAtPiBSZXN1bHQKLXsKLSAgICByZXR1cm4geyB9
OwotfQotCi1zdGF0aWMgdm9pZCBkdW1wRXhwcmVzc2lvblN0YWNrKGNvbnN0IENvbW1hUHJpbnRl
ciYgY29tbWEsIGNvbnN0IFZhbGlkYXRlOjpTdGFjayYgZXhwcmVzc2lvblN0YWNrKQotewotICAg
IGRhdGFMb2coY29tbWEsICIgRXhwcmVzc2lvblN0YWNrOiIpOwotICAgIGZvciAoY29uc3QgYXV0
byYgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb25TdGFjaykKLSAgICAgICAgZGF0YUxvZyhjb21tYSwg
bWFrZVN0cmluZyhleHByZXNzaW9uLnR5cGUoKSkpOwotfQotCi12b2lkIFZhbGlkYXRlOjpkdW1w
KGNvbnN0IENvbnRyb2xTdGFjayYgY29udHJvbFN0YWNrLCBjb25zdCBTdGFjayogZXhwcmVzc2lv
blN0YWNrKQotewotICAgIGZvciAoc2l6ZV90IGkgPSBjb250cm9sU3RhY2suc2l6ZSgpOyBpLS07
KSB7Ci0gICAgICAgIGRhdGFMb2coIiAgIiwgY29udHJvbFN0YWNrW2ldLmNvbnRyb2xEYXRhKTsK
LSAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hKCIsICIsICIiKTsKLSAgICAgICAgZHVtcEV4cHJl
c3Npb25TdGFjayhjb21tYSwgKmV4cHJlc3Npb25TdGFjayk7Ci0gICAgICAgIGV4cHJlc3Npb25T
dGFjayA9ICZjb250cm9sU3RhY2tbaV0uZW5jbG9zZWRFeHByZXNzaW9uU3RhY2s7Ci0gICAgICAg
IGRhdGFMb2dMbigpOwotICAgIH0KLSAgICBkYXRhTG9nTG4oKTsKLX0KLQotRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24s
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlKQotewotICAgIFZhbGlkYXRlIGNvbnRleHQ7Ci0gICAgRnVuY3Rpb25QYXJzZXI8VmFsaWRh
dGU+IHZhbGlkYXRvcihjb250ZXh0LCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0
YS5zaXplKCksIHNpZ25hdHVyZSwgbW9kdWxlKTsKLSAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZB
SUxTKHZhbGlkYXRvci5wYXJzZSgpKTsKLSAgICByZXR1cm4geyB9OwotfQotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6V2FzbQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTk1MmFhYzY4YTgyZjg5MGZjZTkyOWI2MmU3ODA2NTMzOGYwMmQyNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2luY2x1ZGUgIldhc21Nb2R1bGVJbmZv
cm1hdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotbmFtZXNwYWNlIFdhc20gewotCi1FeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVu
Y3Rpb24oY29uc3QgRnVuY3Rpb25EYXRhJiwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgTW9kdWxl
SW5mb3JtYXRpb24mKTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>