<?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>219486</bug_id>
          
          <creation_ts>2020-12-03 03:47:26 -0800</creation_ts>
          <short_desc>GraphicsContextGL has a couple non-robust getters and other small API problems preventing GPU process implementation</short_desc>
          <delta_ts>2020-12-03 11:30:33 -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>WebGL</component>
          <version>WebKit Local 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>
          
          <blocked>217211</blocked>
    
    <blocked>217216</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711646</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 03:47:26 -0800</bug_when>
    <thetext>GraphicsContextGL has a couple non-robust getters
We should replace them with robust versions in order to support GPUP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711648</commentid>
    <comment_count>1</comment_count>
      <attachid>415290</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 03:59:49 -0800</bug_when>
    <thetext>Created attachment 415290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711649</commentid>
    <comment_count>2</comment_count>
      <attachid>415291</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 04:17:10 -0800</bug_when>
    <thetext>Created attachment 415291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711650</commentid>
    <comment_count>3</comment_count>
      <attachid>415292</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-03 04:27:24 -0800</bug_when>
    <thetext>Created attachment 415292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711735</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-03 11:30:00 -0800</bug_when>
    <thetext>Committed r270400: &lt;https://trac.webkit.org/changeset/270400&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415292.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711736</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-03 11:30:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/71945669&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415290</attachid>
            <date>2020-12-03 03:59:49 -0800</date>
            <delta_ts>2020-12-03 04:17:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219486-20201203135946.patch</filename>
            <type>text/plain</type>
            <size>96118</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiNzZlMTlhYjVmZTc4
NTczZTc5Yjg3NTE5Y2FmZjcwYWE4YjM2OS4uY2JhYzA4MDg5M2I5YzZhNmE1MWJhMGU3ZTU2YjNm
NGRiYTUxNWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAyMC0xMi0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIGhhcyBhIGNvdXBsZSBub24tcm9idXN0IGdldHRlcnMgYW5kIG90aGVyIHNtYWxsIEFQ
SSBwcm9ibGVtcyBwcmV2ZW50aW5nIEdQVSBwcm9jZXNzIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wgdG8gbm90IGhhdmUgZHVwbGljYXRlIG5hbWVzCisg
ICAgICAgIGFuZCBoYXZlIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKKyAgICAg
ICAgQ2hhbmdlcyBmZXcgcmVtYWluaW5nIEdyYXBoaWNzQ29udGV4dEdMIGdldHRlcnMgdG8gdXNl
IHJvYnVzdCBHQ0dMU3BhbgorICAgICAgICBmb3JtLgorCisgICAgICAgIENoYW5nZXMgZmV3IHJv
YnVzdCBnZXR0ZXJzIHRvIEdDR0xTcGFuIGZvcm0gYW5kIG1vdmVzIHRoZW0gZnJvbQorICAgICAg
ICBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wuCisKKyAgICAgICAgQ2hhbmdlcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMgdG8gcmV0dXJuIHRoZSBy
ZXN1bHQKKyAgICAgICAgdmVjdG9yIGluc3RlYWQgb2YgdGFraW5nIGl0IGFzIG5vbi1jb25zdCBy
ZWZlcmVuY2UuIFRoaXMgd2F5IHRoZSBvdXQKKyAgICAgICAgdmVjdG9yIGRvZXMgbm90IG5lZWQg
dG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHJlbW90ZSBzaWRlLiBUaGUgY2FsbCBzaXRlCisgICAg
ICAgIGlzIGFsc28gbW9yZSBuYXR1cmFsLgorCisgICAgICAgIFJlcXVlc3RzIEdMX0VYVF9vY2Ns
dXNpb25fcXVlcnlfYm9vbGVhbiBzbyB0aGF0IFdlYkdMIDIuMCBvY2NsdXNpb24KKyAgICAgICAg
cXVlcmllcyB3b3JrIHdoZW4gY2FsbGVkIHdpdGggZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0
QU5HTEUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJp
Ykk0dWl2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1
ZXJ5UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldFNhbXBsZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6Z2V0SW50ZXJuYWxmb3JtYXRpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
RXh0ZW5zaW9uc0dMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
c0dMQU5HTEU6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TEFOR0xFOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OmdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6
OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVy
bmFsZm9ybWF0aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6Ymxp
dEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6
OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4
ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlQXR0cmliSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVW
ZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0Tm9uQnVpbHRJbkFjdGl2ZVN5bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5mb0xvZyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJy
YXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJh
bWV0ZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRT
YW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0U3luY2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkblBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZUZCT3MpOgorCiAyMDIwLTEyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIERldGVybWluZSB0aGUgV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGUgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBwYXNzaW5nIGl0IHRvIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDFkYmQwNTVkNzgxNTNjZmQ1YzcxNzQ1OTdmMDZlMGU1MDll
NzhmYWEuLjhlZGMyOGIwYThkMzZlNDI0NTkxYjUyNjRhZjY5YWZmODg4ZjYwYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC02ODEsMTcgKzY4MSw4IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzcmNCeXRlCiAgICAgaWYg
KCFjb3B5TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJ
WE1FOiBDb2FsZXNjZSBtdWx0aXBsZSBnZXRCdWZmZXJTdWJEYXRhKCkgY2FsbHMgdG8gdXNlIGEg
c2luZ2xlIG1hcCgpIGNhbGwKLSAgICB2b2lkKiBwdHIgPSBtX2NvbnRleHQtPm1hcEJ1ZmZlclJh
bmdlKHRhcmdldCwgY2hlY2tlZFNyY0J5dGVPZmZzZXQudW5zYWZlR2V0KCksIHN0YXRpY19jYXN0
PEdDR0xzaXplaXB0cj4oY2hlY2tlZENvcHlMZW5ndGhQdHIudW5zYWZlR2V0KCkgKiBjaGVja2Vk
RWxlbWVudFNpemUudW5zYWZlR2V0KCkpLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklU
KTsKLSAgICBpZiAocHRyKQotICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERh
dGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0RGF0YS0+Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICog
ZWxlbWVudFNpemUsIHB0ciwgY29weUxlbmd0aCAqIGVsZW1lbnRTaXplKTsKLQotICAgIGlmICgh
bV9jb250ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXQpKQotICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJnZXRCdWZmZXJTdWJEYXRh
IiwgIkZhaWxlZCB3aGlsZSB1bm1hcHBpbmcgYnVmZmVyIik7Ci0jZW5kaWYKLSAgICBtX2NvbnRl
eHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOworICAgIG1fY29udGV4dC0+Z2V0
QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHNyY0J5dGVPZmZzZXQsIG1ha2VHQ0dMU3BhbihzdGF0aWNf
Y2FzdDxjaGFyKj4oZHN0RGF0YS0+YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0
KCkgKyBkc3RPZmZzZXQgKiBlbGVtZW50U2l6ZSwgY29weUxlbmd0aCAqIGVsZW1lbnRTaXplKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQpAQCAtODMyLDI1ICs4MjMsMTkg
QEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJh
bWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0cKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgaW50IG51bVZhbHVlcyA9IC0xOwogI2lmIFVTRShPUEVOR0xfRVMpIHx8IFVTRShB
TkdMRSkKLSAgICBtX2NvbnRleHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0R0w6Ok5VTV9TQU1QTEVfQ09VTlRTLCAxLCAmbnVtVmFs
dWVzKTsKLSAgICBpZiAobnVtVmFsdWVzIDwgMCkgewotICAgICAgICAvLyBBc3N1bWUgdGhlIGdl
dEludGVybmFsZm9ybWF0aXYgY2FsbCBmYWlsZWQ7IHJldHVybiBudWxsIGZyb20gdGhlIFNBTVBM
RVMgcXVlcnkuCisgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KTsKKyAgICBHQ0dMaW50IG51bVZhbHVlcyA9IG1fY29udGV4dC0+Z2V0SW50ZXJuYWxmb3JtYXRp
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIEdyYXBoaWNzQ29udGV4dEdMOjpOVU1fU0FNUExFX0NP
VU5UUyk7CisgICAgaWYgKG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCkgfHwgbnVtVmFsdWVzIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCiAg
ICAgLy8gSW50ZWdlciBmb3JtYXRzIGRvIG5vdCBzdXBwb3J0IG11bHRpc2FtcGxpbmcsIHNvIG51
bVZhbHVlcyA9PSAwIG1heSBvY2N1ci4KIAogICAgIFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMobnVt
VmFsdWVzKTsKICAgICBpZiAobnVtVmFsdWVzID4gMCkgewotICAgICAgICAvLyBBZGQgYSBzZW50
aW5lbCB0byBrbm93IHdoZXRoZXIgdGhlIGNhbGwgc3VjY2VlZGVkIHdpdGhvdXQgYWRkaXRpb25h
bGx5IGNoZWNraW5nIE9wZW5HTCBlcnJvcnMuCi0gICAgICAgIHBhcmFtc1swXSA9IC0xOwotICAg
ICAgICBtX2NvbnRleHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgcG5hbWUsIG51bVZhbHVlcywgcGFyYW1zLmRhdGEoKSk7Ci0gICAgICAgIGlmIChwYXJhbXNb
MF0gPT0gLTEpIHsKLSAgICAgICAgICAgIC8vIFRoZSBnZXRJbnRlcm5hbGZvcm1hdGl2IGNhbGwg
ZmFpbGVkOyByZXR1cm4gbnVsbCBmcm9tIHRoZSBTQU1QTEVTIHF1ZXJ5LgorICAgICAgICBtX2Nv
bnRleHQtPmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUs
IHBhcmFtcyk7CisgICAgICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vy
cm9yTGlzdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KICAgICB9
CiAjZWxzZQogICAgIC8vIE9uIGRlc2t0b3AgT3BlbkdMIDQuMSBvciBiZWxvdyB3ZSBtdXN0IGVt
dWxhdGUgZ2xHZXRJbnRlcm5hbGZvcm1hdGl2LgpAQCAtODc5LDEzICs4NjQsMTMgQEAgV2ViR0xB
bnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0cKIAogICAgIC8vIFNpbmNlIG11bHRpc2FtcGxpbmcgaXMgbm90IHN1
cHBvcnRlZCBmb3Igc2lnbmVkIGFuZCB1bnNpZ25lZCBpbnRlZ2VyIGludGVybmFsIGZvcm1hdHMs
CiAgICAgLy8gdGhlIHZhbHVlIG9mIEdMX05VTV9TQU1QTEVfQ09VTlRTIHdpbGwgYmUgemVybyBm
b3Igc3VjaCBmb3JtYXRzLgotICAgIG51bVZhbHVlcyA9IGlzSW50ZWdlckZvcm1hdChpbnRlcm5h
bGZvcm1hdCkgPyAwIDogc2FtcGxlcy5zaXplKCk7CisgICAgR0NHTGludCBudW1WYWx1ZXMgPSBp
c0ludGVnZXJGb3JtYXQoaW50ZXJuYWxmb3JtYXQpID8gMCA6IHNhbXBsZXMuc2l6ZSgpOwogICAg
IFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMobnVtVmFsdWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRpY19jYXN0PHNpemVfdD4obnVtVmFsdWVzKTsgKytpKQogICAgICAgICBwYXJh
bXNbaV0gPSBzYW1wbGVzW2ldOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5
Q3JlYXRlKHBhcmFtcy5kYXRhKCksIG51bVZhbHVlcyk7CisgICAgcmV0dXJuIEludDMyQXJyYXk6
OnRyeUNyZWF0ZShwYXJhbXMuZGF0YSgpLCBwYXJhbXMuc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBjb25zdCBWZWN0b3I8R0NHTGVudW0+JiBhdHRhY2htZW50cykKQEAgLTE5NjcsOSArMTk1Miw3
IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdl
YkdMUXVlcnkmIHF1ZXJ5LCBHQ0dMZW51bSBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRRdWVyeU9i
amVjdHVpdihxdWVyeS5vYmplY3QoKSwgcG5hbWUsICZyZXN1bHQpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFF1ZXJ5
T2JqZWN0dWkocXVlcnkub2JqZWN0KCksIHBuYW1lKSk7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBs
ZXI+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjA1OSwxNyAr
MjA0MiwxMSBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFy
YW1ldGVyKFdlYkdMU2FtcGxlciYgc2FtcGxlciwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBf
UzoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDogewotICAgICAg
ICBpbnQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJp
dihzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVl
OwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKKyAg
ICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlci5vYmpl
Y3QoKSwgcG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xP
RDoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6IHsKLSAgICAg
ICAgZmxvYXQgdmFsdWUgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0
ZXJmdihzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZh
bHVlOwotICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6
CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIu
b2JqZWN0KCksIHBuYW1lKTsKICAgICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9FTlVNLCAiZ2V0U2FtcGxlclBhcmFtZXRlciIs
ICJJbnZhbGlkIHBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ4NSwyNCAr
MjQ2MiwyNCBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlm
b3JtcyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5p
Zm9ybXMiLCAmcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9y
PEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3
aXRjaCAocG5hbWUpIHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwg
dW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fVFlQRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMZW51bT4oeCk7IH0pOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
U0laRToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVj
dCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMdWludD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpVTklGT1JNX0JMT0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fT0ZGU0VUOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1f
QVJSQVlfU1RSSURFOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklY
X1NUUklERToKLSAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9i
amVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBX
VEZNb3ZlKHJlc3VsdCk7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19S
T1dfTUFKT1I6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5v
YmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
bV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5k
aWNlcywgcG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9X
X01BSk9SOiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlm
b3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0Lm1hcChbXShhdXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgp
OyB9KTsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFs
aWQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDgg
KzM1NDksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0
ZWQoQ2xlYXJDYWxsZXJPdGhlcik7CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCBy
b3dzOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5H
TEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1u
cywgJnJvd3MsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAg
IG1fY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBvZmZzZXQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEs
IEdDR0x1aW50IGRzdE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNDAwNzFjYTIzYjJjMzU1
ZTFlODEwNjQ2MTdkNTJiOWQyZmI4N2FjNi4uNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5
M2NiODBiNmJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTQzOTUsMTUgKzQzOTUsMTIgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNz
KCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NH
THNpemVpIGNvbHVtbnMgPSAwOwotICAgIEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVt
bnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMu
Ynl0ZUxlbmd0aCgpKSk7CiAjZWxzZQogICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRl
ZCkKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRh
KTsKICAgICBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEs
IHBpeGVscy5ieXRlTGVuZ3RoKCkpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTeW5jLmNwcAppbmRleCA0YTQyMGJmMGExMTZjY2NhYjVkYjg3YTI2ZDhiYTI0
MjgyOGYyZDU1Li44OWE2M2UzNjIxNzEyMjRiNDEzYTQ5NTQyMzEyZTM4MzZiNmViYzA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
dm9pZCBXZWJHTFN5bmM6OnVwZGF0ZUNhY2hlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWxsb3dDYWNoZVVwZGF0ZSA9IGZhbHNl
OwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0U3luY2l2KG1fc3luYywgR3Jh
cGhpY3NDb250ZXh0R0w6OlNZTkNfU1RBVFVTLCBzaXplb2YobV9zeW5jU3RhdHVzKSwgJm1fc3lu
Y1N0YXR1cyk7CisgICAgbV9zeW5jU3RhdHVzID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRTeW5jaShtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX1NUQVRVUyk7CiAgICAg
aWYgKG1fc3luY1N0YXR1cyA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdOQUxFRCkKICAgICAg
ICAgc2NoZWR1bGVBbGxvd0NhY2hlVXBkYXRlKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1
MTBjZGMwMzQxZGI4NjczNDQ3NDk1MTQ3Yjg4Li5jNGU3Nzc4ZGI2YTQ0OGZkMGE1ZTY1MTU5MWZl
ZWExNDUzODYzODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbnNpb25zR0wuaApAQCAtMjc5LDEwICsyNzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
R0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwogCiAgICAgLy8gR0xfQU5H
TEVfZnJhbWVidWZmZXJfYmxpdAotICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIobG9u
ZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwg
bG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1
bnNpZ25lZCBsb25nIGZpbHRlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZm
ZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAK
ICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9v
YmplY3QKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMo
KSA9IDA7CkBAIC0yOTYsMTUgKzI5NiwxNSBAQCBwdWJsaWM6CiAgICAgLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXJFWFQoKSA9IDA7CiAKICAgICAvLyBHTF9B
UkJfZHJhd19idWZmZXJzIC8gR0xfRVhUX2RyYXdfYnVmZmVycwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCiAgICAg
Ly8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwg
R0NHTHNpemVpIHByaW1jb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBs
b25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3Vu
dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsK
IAogICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lk
IHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBH
Q0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpID0gMDsKQEAgLTMxNCw3ICszMTQsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1h
dGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NH
TGludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWlu
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTMzMiw3ICszMzEs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x2b2lkKiogcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0
QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1
aW50KiBwYXJhbXMpID0gMDsKQEAgLTM1NSw3ICszNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlYWRuUGl4ZWxzRVhUKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0x2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwotI2VuZGlmCiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNOVklESUEoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQU1EKCkgPSAwOwpAQCAt
MzY3LDYgKzM2NCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IG11c3QgYmUgYXZvaWRlZC4gUG9y
dHMgc2hvdWxkIGltcGxlbWVudCB0aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZpZ3VyYXRpb25zLgog
ICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkg
PSAwOworI2VuZGlmCiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDRiMzY1Nzk1Y2FmNGNjODRlOGVlNjM5
NTZiY2U4ZjVhNmYwNzg3OTIuLmYyNzVmMzgzZTM2ODI3M2Y3YzlmYmM4OGNiZTIwOGRiNGYyZmMw
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaApAQCAtOTc4LDcgKzk3OCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAt
MTAyMywxMCArMTAyMiw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlm
b3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAK
LSAgICAvLyBnZXRWZXJ0ZXhBdHRyaWIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKLQogICAg
IHZpcnR1YWwgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gbW9kZSkgPSAwOwpAQCAtMTA5OCw3ICsxMDkzLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsICBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRy
IG9mZnNldCkgPSAwOwpAQCAtMTEyMiw4ICsxMTE4LDcgQEAgcHVibGljOgogICAgIC8vID09PT09
PT09PT0gV2ViR0wgMiBlbnRyeSBwb2ludHMuCiAKICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xp
bnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNp
emUpID0gMDsKLSAgICB2aXJ0dWFsIEdDR0x2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0Zmll
bGQgYWNjZXNzKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7
CkBAIC0xMTMyLDcgKzExMjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZm
ZXIoR0NHTGVudW0gc3JjKSA9IDA7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRl
cgotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCogcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVybmFsZm9y
bWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNh
bXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CkBAIC0xMTg1LDcgKzExODAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgPSAwOwog
ICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSA9IDA7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVl
cnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwog
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7
CkBAIC0xMTk0LDggKzExODksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xp
bnQgcGFyYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZv
cm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7
CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVy
UGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVy
aXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAgdmlydHVhbCBH
Q0dMaW50IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xl
bnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCBHQ0dM
Ym9vbGVhbiBpc1N5bmMoR0NHTHN5bmMpID0gMDsKQEAgLTEyMDMsNyArMTE5OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEdDR0xlbnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0
ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGltZW91dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkg
PSAwOwogICAgIC8vIGdldFN5bmNQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2
KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZh
bHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51
bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVk
YmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSA9IDA7CkBAIC0xMjIwLDcgKzEyMTUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQs
IEdDR0xzaXplaXB0ciBzaXplKSA9IDA7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1
c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAgIHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50
PiBnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZl
VW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+
JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1z
KSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5k
aWNlcywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5p
Zm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVu
aWZvcm1CbG9ja05hbWUpID0gMDsKICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0
ZXIKQEAgLTEyMzQsNiArMTIyOSw3IEBAIHB1YmxpYzoKICAgICBHQ0dMYm9vbGVhbiBnZXRCb29s
ZWFuKEdDR0xlbnVtIHBuYW1lKTsKICAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5h
bWUpOwogICAgIEdDR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFt
LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOworICAgIEdDR0xp
bnQgZ2V0SW50ZXJuYWxmb3JtYXRpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIHBuYW1lKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBjb250ZXh0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lk
IHNldENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpIHsgbV9hdHRycyA9IGF0dHJzOyB9CkBAIC0xMzkyLDYgKzEzODgsMTMgQEAgaW5saW5l
IEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTHUKICAgICByZXR1cm4gdmFsdWVbMF07CiB9CiAKK2lubGluZSBHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRJbnRlcm5hbGZvcm1hdGkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGlu
dCB2YWx1ZVsxXSB7IH07CisgICAgZ2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFs
Zm9ybWF0LCBwbmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMz
OTg3YzM0MDM3NWRmMS4uMjE2YmQzNjY4ZjEwN2E4NzkxNGRlNGY2MGJiZTUyNjMxMTVkZmZmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBl
c0dMLmgKQEAgLTUxLDYgKzUxLDggQEAgdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgR0NHTHVpbnQ2NDsKIHR5cGVkZWYgc3RydWN0IF9fR0xz
eW5jKiBHQ0dMc3luYzsKIHR5cGVkZWYgdm9pZCBHQ0dMdm9pZDsKK3R5cGVkZWYgaW50cHRyX3Qg
R0NHTHZvaWRwdHI7CisKIAogdHlwZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNp
b25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9F
eHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIz
ZDA4MWM1NWU0YS4uYjdkYjRmZDIwNDFiM2JiYzhiYjlhNzczM2U4OWJlZWFhZWI2Zjc4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtNDYsMjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogRXh0ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2lu
aXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250
ZXh0KQotICAgICwgbV9pc05WSURJQShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAg
LCBtX2lzSW50ZWwoZmFsc2UpCi0gICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBt
X3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRH
ZXRTdHJpbmcodXNlSW5kZXhlZEdldFN0cmluZykKIHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwg
cmVtb3ZlIHRoaXMgaW5pdGlhbGl6YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJz
dW1lcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4K
LSAgICBtX3ZlbmRvciA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6
R2V0U3RyaW5nKEdMX1ZFTkRPUikpKTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAg
ICBWZWN0b3I8U3RyaW5nPiB2ZW5kb3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKS5zcGxpdCgnICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRh
aW5zKCJudmlkaWEiKSkKLSAgICAgICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRv
ckNvbXBvbmVudHMuY29udGFpbnMoImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMo
ImFtZCIpKQotICAgICAgICBtX2lzQU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50
cy5jb250YWlucygiaW50ZWwiKSkKLSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAo
dmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0lt
YWdpbmF0aW9uID0gdHJ1ZTsKIH0KIAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xB
TkdMRSgpID0gZGVmYXVsdDsKQEAgLTEwMyw3ICs4Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5H
TEU6OmlzRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5z
KG5hbWUpOwogfQogCi1pbnQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKQorR0xpbnQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKQogewogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0x
MTQsMTAgKzk0LDExIEBAIFN0cmluZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIGludCBzb3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmko
c2hhZGVyLCBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAg
IGlmICghc291cmNlTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBW
ZWN0b3I8R0xjaGFyPiBuYW1lKHNvdXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVS
X1NPVVJDRV9MRU5HVEhfQU5HTEUgaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQg
cmV0dXJuZWRMZW5ndGggPSAwOworICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAg
IGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgs
ICZyZXR1cm5lZExlbmd0aCwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBt
X2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwg
R0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RY
MCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZp
ZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRk
aW5nIHN1cHBvcnQgZm9yIEFQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZ
MCwgbG9uZyBzcmNYMSwgbG9uZwogICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwg
c3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZp
bHRlcik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzUsNyArMjE2LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1
ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZm
ZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwgYnVmcy5kYXRhKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFO
R0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1
ICsyMjQsMTUgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVp
IHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NH
THZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9j
YXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsK
KyAgICBnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBF
eHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMyNiwx
NCArMzA3LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6R2V0QnVmZmVyUG9p
bnRlcnZSb2J1c3RBTkdMRSh0YXJnZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0K
IHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQpAQCAtMzUwLDcgKzMyMyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVu
dW0KICAgICBnbDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2
b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQwNCw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBw
bmFtZSwgR0NHTHVpbnQgaW5kCiAgICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShw
bmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRU
ZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC00MzksNyArNDEyLDcgQEAgdm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgaW50IGwKICAgICBnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRh
cmdldCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dM
ZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDI5LDcg
QEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFO
R0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdM
RVJvYnVzdEFOR0xFKHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxw
aGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIq
IHBpeGVscykKLXsKLSAgICAvLyBXZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBi
ZWNhdXNlIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0
aWMuCi0gICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10g
PSAyNTU7Ci19Ci0jZW5kaWYKLQotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNS
b2J1c3RBTkdMRShpbnQgeCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lk
ICpkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
RklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBp
cyBmaXhlZCwgaS5lLiwKLSAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3Vs
ZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBh
dXRvIGF0dHJzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVt
IGZyYW1lYnVmZmVyVGFyZ2V0ID0gbV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3ND
b250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZG
RVI7Ci0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
U3RhdGUmIHN0YXRlID0gbV9jb250ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxp
YXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykg
ewotICAgICAgICBtX2NvbnRleHQtPnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIo
ZnJhbWVidWZmZXJUYXJnZXQsIG1fY29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2go
KTsKLSAgICB9Ci0gICAgKHZvaWQpIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCk7Ci0gICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEp
OwotICAgIEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRp
YWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZC
TykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250
ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBB
TkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xF
IG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJy
b3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlm
ICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdM
OjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYg
KHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxp
YXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykp
KQotICAgICAgICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0
ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUs
IEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0
MzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUo
R0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEUocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0K
IAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC01MjAsNyArNDQ1LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNH
TEFOR0xFOjpnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYw
M2EzMzU5MDNmYWE2ZTM4ZmY3MmY0YjIzMjMuLmIyZDI3N2I5YWM5ZDI3ODYwZjU1YWJhYmY4Y2Zl
NTVlODRiNWY1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNy
Y1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25n
IGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2ln
bmVkIGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1
bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShH
Q0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kx
LCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRz
dFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5z
dGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NH
THNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRl
eEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRl
OwotCi0gICAgYm9vbCBpc05WSURJQSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0K
LSAgICBib29sIGlzQU1EKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wg
aXNJbnRlbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFn
aW5hdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmlu
ZyB2ZW5kb3IoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWly
ZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3Rl
ZE1heGltdW1UZXh0dXJlU2l6ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmlj
dGVkTWF4aW11bVRleHR1cmVTaXplOyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZv
aWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
b3ZlcnJpZGU7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZv
aWQgcmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTc5LDcgKzcwLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMp
IG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZS
b2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAq
cGFyYW1zKSBvdmVycmlkZTsKQEAgLTk3LDcgKzg3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJv
YnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFk
blBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xz
aXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVu
Z3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1
aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpAQCAtMTMwLDE4ICsxMTksOCBAQCBwcml2YXRlOgogICAg
IC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1faXNOVklESUE7
Ci0gICAgYm9vbCBtX2lzQU1EOwotICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0lt
YWdpbmF0aW9uOwotICAgIGJvb2wgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsK
LSAgICBib29sIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCiAgICAg
Ym9vbCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcgeyBmYWxzZSB9OwogCi0gICAgU3RyaW5nIG1fdmVu
ZG9yOwotICAgIFN0cmluZyBtX3JlbmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wg
MS4wLXJlbGF0ZWQgZmxvYXRpbmctcG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUg
YmVlbiBlbmFibGVkLgogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjM2Y0NGNkNzY1
ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4uMmM2NGExMGNiOTkzMzAzYjNlMDA0N2M5ZWZhZTA1NmUyODg5
NTMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTQ0MywzMiArNDQz
LDUzIEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lv
bnMoKQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9p
ZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7Cisg
ICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0
YS5idWZTaXplLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICByZWFkblBp
eGVsc0ltcGwoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEdDR0x2b2lkKj4ob2Zmc2V0KSwgdHJ1
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lk
KiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KQogewotICAgIC8vIEZJWE1F
OiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4
ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUg
ZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1
c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKKyAgICAvLyBhbGwg
cHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBp
eGVscy4KICAgICBnbDo6Rmx1c2goKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0
ZXMoKTsKICAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIgPyBH
cmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpG
UkFNRUJVRkZFUjsKLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOworICAgIGlmIChh
dHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8p
IHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZl
clRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsKICAgICB9Ci0gICAgZ2w6OlJl
YWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICBp
ZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1w
bGVGQk8pCisgICAgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgZ2w6OlJl
YWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBi
dWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAgIEdMZW51bSBlcnJvciA9
IGdsOjpHZXRFcnJvcigpOworICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRS
ZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIo
ZnJhbWVidWZmZXJUYXJnZXQsIG1fbXVsdGlzYW1wbGVGQk8pOwogCisgICAgaWYgKGVycm9yKSB7
CisgICAgICAgIC8vIEFOR0xFIGRldGVjdGVkIGEgZmFpbHVyZSBkdXJpbmcgdGhlIFJlYWRuUGl4
ZWxzUm9idXN0QU5HTEUgb3BlcmF0aW9uLiBTdXJmYWNlIHRoaXMgaW4gdGhlCisgICAgICAgIC8v
IHN5bnRoZXRpYyBlcnJvciBsaXN0LCBhbmQgc2tpcCB0aGUgYWxwaGEgY2hhbm5lbCBmaXh1cCBi
ZWxvdy4KKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8
fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNz
Q29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9m
Ym8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRp
c2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCAmJiAhYXR0
cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNzQ29udGV4dEdM
OjpVTlNJR05FRF9CWVRFKSAmJiAoc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRy
cy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFkRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pKSkK
ICAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJl
YWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKICNlbmRpZgogfQogCi0KIC8vIFRoZSBjb250ZW50
cyBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2Ug
QU5HTEUuCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKQEAgLTg5OCwyMCAr
OTE5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwKICAgICBnbDo6QnVmZmVyU3ViRGF0YSh0
YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBkYXRhLmRhdGEpOwogfQogCi12b2lkKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFj
Y2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIGdsOjpVbm1hcEJ1ZmZlcih0
YXJnZXQpOworICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IGdsOjpNYXBCdWZm
ZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRHTDo6
TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNw
eShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoIWdsOjpVbm1hcEJ1ZmZl
cih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgc2l6ZSkKQEAgLTkyMiwxMiArOTM5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdy
CiAgICAgZ2w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCByZWFk
T2Zmc2V0LCB3cml0ZU9mZnNldCwgc2l6ZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBw
YXJhbXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMaW50PiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOworICAgIGdsOjpHZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUs
IGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgZGF0YS5kYXRhKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRh
cmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCkBAIC0xMDA4LDE0ICsxMDI0LDE1IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsCiAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgaW1hZ2VTaXplLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dM
dm9pZCo+KG9mZnNldCksIDApKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50
PiYgcGFyYW1zKQorVmVjdG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dM
dWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBWZWN0b3I8R0NH
TGludD4gcmVzdWx0KHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CiAgICAgQVNTRVJUKHByb2dy
YW0pOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAotCi0gICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1zaXYocHJv
Z3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1l
LCBwYXJhbXMuZGF0YSgpKTsKKyAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHJlc3Vs
dC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0xlbnVtIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKQEAg
LTIxMDEsMjIgKzIxMTgsNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRV
bmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJldHVybiBn
bDo6R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKLXsKLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUs
IG51bGxwdHIsIHZhbHVlLmRhdGEpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGlu
ZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUuZGF0YSk7Ci19Ci0KIEdD
R0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQpAQCAtMjM5MiwxMiArMjM5MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiAgICAgZ2w6OkVuZFF1ZXJ5KHRhcmdl
dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWl2
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQqIHBhcmFtcykKK0dDR0x1aW50
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKEdDR0x1aW50IGlkLCBH
Q0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMdWludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldFF1ZXJ5T2Jq
ZWN0dWl2KGlkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGds
OjpHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGlkLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIC8vIFRyYW5zZm9ybSBGZWVkYmFjayBGdW5j
dGlvbnMKQEAgLTI4MzksMjAgKzI4NDEsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW4KICAg
ICBnbDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitHQ0dM
ZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGZsb2F0IHZh
bHVlID0gMC5mOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJm
dihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
aW50KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7Cisg
ICAgR0NHTGludCB2YWx1ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxl
clBhcmFtZXRlcml2KHNhbXBsZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZTsKIH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAg
LTI4OTUsMTIgKzI5MDEsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5
bmMoR0NHTHN5bmMgc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBnbDo6V2Fp
dFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTeW5jaXYoR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFN5bmNpKEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIEdDR0xp
bnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgZ2w6OkdldFN5bmNpdihzeW5jLCBw
bmFtZSwgYnVmU2l6ZSwgbnVsbHB0ciwgdmFsdWUpOworICAgIGdsOjpHZXRTeW5jaXYoc3luYywg
cG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDJlMWM3OTllODI4NTNi
MzIwYjhjZWRkZDRhNmZlNWU1MDRhOWQ4OWMuLjQxNWM0NzAyOGM5ZDljY2EzNTZlYWI4MGU3NzJl
ZmVjZjgxOTY5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQpAQCAtMjkzLDI2ICsyOTMsMjggQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBpZiAo
bV9pc0ZvcldlYkdMMikKICAgICAgICAgZ2w6OkVuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJ
TUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgpOwogCisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbCwg
ND4gcmVxdWlyZWRFeHRlbnNpb25zOworICAgIGlmIChtX2lzRm9yV2ViR0wyKSB7CisgICAgICAg
IC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMgdG8gd29yay4KKyAgICAgICAgcmVx
dWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl9z
KTsKKyAgICB9CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAg
ICBFeHRlbnNpb25zR0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7Ci0KICAgICBpZiAo
IW5lZWRzRUFHTE9uTWFjKCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiByZXF1aXJlZEV4dGVuc2lvbnNbXSA9IHsKLSAgICAgICAgICAgICJHTF9BTkdMRV90ZXh0dXJl
X3JlY3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzLgotICAgICAgICAg
ICAgIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIsIC8vIEZvciBjcmVhdGluZyB0aGUg
RUdMIHN1cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCi0gICAgICAgIH07Ci0KLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHJlcXVpcmVkRXh0ZW5zaW9ucyk7
ICsraSkgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKHJlcXVpcmVkRXh0
ZW5zaW9uc1tpXSkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJNaXNzaW5nIHJlcXVp
cmVkIGV4dGVuc2lvbi4gJXMiLCByZXF1aXJlZEV4dGVuc2lvbnNbaV0pOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCisg
ICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFu
Z2xlIl9zKTsKKyAgICAgICAgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3VyZmFjZSBmcm9tIGFu
IElPU3VyZmFjZS4KKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX3Rl
eHR1cmVfZm9ybWF0X0JHUkE4ODg4Il9zKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7CisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBFeHRlbnNpb25z
R0wmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgZm9yIChhdXRvJiBleHRlbnNp
b24gOiByZXF1aXJlZEV4dGVuc2lvbnMpIHsKKyAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBv
cnRzKGV4dGVuc2lvbikpIHsKKyAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWly
ZWQgZXh0ZW5zaW9uLiAlcyIsIGV4dGVuc2lvbi5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChleHRl
bnNpb24pOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIg
aWYgTUFDQ0FUQUxZU1Qgc2hvdWxkIHRha2UgdGhlc2Ugc3RlcHMgYXMgd2VsbCwgYnV0IHRoYXQK
ICAgICAvLyB3b3VsZCByZXF1aXJlIHRoZSBQbGF0Zm9ybVNjcmVlbk1hYyBjb2RlIHRvIGJlIGV4
cG9zZWQgdG8gQ2F0YWx5c3QgdG9vLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3
ZWM4MWNmNGFlNTc3MmNhZTk3Mjg4YmM4MGUzNjU2NDZkNjI3YzdiLi5hZGQ1ZjM1MmFlNGRlNmI2
ZDVkYzE5MWU2NzNiNWFhZmE1NmRlOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApA
QCAtNDgsNyArNDgsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6OkV4dGVuc2lvbnNHTE9wZW5HTChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1cwogRXh0ZW5zaW9uc0dMT3Bl
bkdMOjp+RXh0ZW5zaW9uc0dMT3BlbkdMKCkgPSBkZWZhdWx0OwogCiAKLXZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBz
cmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9u
ZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAs
IGxvbmcgc3JjWDEsIGxvbgogICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
OwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2ln
bmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQog
ewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJy
YXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAjZW5kaWYK
IH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICNlbmRpZgogfQog
Ci12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKaW5kZXggNDk2Mjg5Y2VhMGU2YTA5ZDZkYjczMWY4Njhi
NTQ5OTNhNDQ0NDlhOC4uNDc1MDIyNmVjZWNlZjQ0Mzk2ZTk5Mzg2NzZjYjYzOWJlODM0MzdiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RXh0ZW5zaW9uc0dMT3BlbkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zR0wgbWV0
aG9kcy4KLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBs
b25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgx
LCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBv
dmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dM
aW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBH
Q0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQg
bWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpIG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVWZXJ0ZXhBcnJheU9F
UygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9i
amVjdCkgb3ZlcnJpZGU7CkBAIC01Miw5ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcEdy
b3VwTWFya2VyRVhUKHZvaWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0FycmF5c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBs
b25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRl
OworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXpl
aSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVk
OgogICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDNiNTE2MWZi
YTc3OGY4ZmI0Mzg0YjFiYzJkYjM4ZWNmNmM0ODNlYi4uNjkzZmI5M2E2N2ZiYzg0MDcwODA0ODJj
OGVlYmUxNjgxNzEyNzNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTI4NCwxMSArMjg0LDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Omdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0sIEdDR0xlbnVtLAogICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lk
IEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xF
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdD
R0xpbnQgKikKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dM
c2l6ZWkgKiwgR0NHTGludCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMzY2LDExICszNjEsNiBAQCB2b2lkIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbjo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xl
bnVtLCBHQ0dMcwogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6cmVhZG5QaXhl
bHNSb2J1c3RBTkdMRShpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6ZWksIEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIEdDR0xzaXplaSAq
LCB2b2lkICosIGJvb2wpCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQsIGludCwgR0NHTHNpemVpLCBHQ0dMc2l6
ZWkgKiwgR0NHTGZsb2F0ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgK
aW5kZXggYmZlNDUyMTU0M2ZmNGIyNzIxMzdmMzQ0Y2VlNGEyMmQ4ZmIyOGM2NC4uM2YxMDQwMTYy
ZmZhMDdhMmRjMTMwYWJiMjJmYjFiMWZmYzNmZGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaApAQCAtNzUsNyArNzUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVy
eWl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQg
KnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRJbnRl
cm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJp
YklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC05Myw3ICs5Miw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKGludCB4LCBpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVpICpj
b2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRu
VW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmlu
ZGV4IDM2YzNlZjM4Zjk4Yjk5YWYwMTE1MDY5OTE0MjdiYWNlZmNiYjhhYzMuLmUxZTQzYmY1Mzky
ODg1YTI0ZmJiMzNjYjI2YjVmNmU0OTFmYmUwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcApAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HKHVuc2lnbmVkIGxvbmcgdGFyZ2UKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIC8q
IHNyY1gwICovLCBsb25nIC8qIHNyY1kwICovLCBsb25nIC8qIHNyY1gxICovLCBsb25nIC8qIHNy
Y1kxICovLCBsb25nIC8qIGRzdFgwICovLCBsb25nIC8qIGRzdFkwICovLCBsb25nIC8qIGRzdFgx
ICovLCBsb25nIC8qIGRzdFkxICovLCB1bnNpZ25lZCBsb25nIC8qIG1hc2sgKi8sIHVuc2lnbmVk
IGxvbmcgLyogZmlsdGVyICovKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwg
R0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGJpdGZpZWxkLCBHQ0dMZW51bSkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0cKICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRy
YXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsCiAgICAg
bV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNv
dW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNv
cihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMRVM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQg
ZGl2aXNvcikKIHsKICAgICBpZiAoIW1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCmluZGV4IDAxN2E0NWI3Mzk4ZDA5OTJlZDE0NzY3
ZjA3NjdlMDRiNDY0MTYyODMuLjVjNzYwMzdmYTdiYzZlOGVlZTNlNjczZjk5YTdkZmMyZjc4ZmI0
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oCkBAIC03NSw4ICs3NSw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEV4dGVuc2lvbjNEIG1ldGhvZHMKICAgICBib29sIGlzRW5hYmxlZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRz
dFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVk
IGxvbmcgZmlsdGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNp
Z25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCkgb3ZlcnJpZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
THNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lk
KSBvdmVycmlkZTsKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJh
d0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgdmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAog
ICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gcmVzZXQKICAgICBpbnQgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRl
eCAyNzZmMTM1YTc4ZjRiZGNlYzU4N2Q4ODAzNWNlYTM2NmEyZTZlYjc4Li5kM2JkODYyNDdlM2E3
NWUxNWUxZjY4MWEyY2QyNzUwMWEwOGM4YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEFjdGl2ZUF0
dHJpYkltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZl
SW5mbyYpOwogICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgZmluYWw7CiAgICAgYm9vbCBnZXRBY3Rp
dmVVbmlmb3JtSW1wbChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJik7Ci0gICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3Jt
R0xPYmplY3QqIHNoYWRlcnMpIGZpbmFsOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNv
dW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKTsKICAgICBHQ0dMaW50IGdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAg
dm9pZCBnZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZh
bHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CkBAIC0yMTUsOCArMjE1LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPEdDR0x1aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKLSAgICB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihH
Q0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBm
aW5hbDsKICAgICBHQ0dMc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICB2b2lkIGhpbnQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBtb2RlKSBmaW5hbDsKQEAgLTIzMiw3ICsyMzAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7
CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0
cykgZmluYWw7CiAKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCB2b2lkKiBkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkgZmluYWw7CiAKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKICAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDR0xjbGFt
cGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkgZmluYWw7CkBAIC0zMTMsMTIgKzMxMiwxMCBA
QCBwdWJsaWM6CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBjb25zdCB2b2lkKiBkYXRhLCBHQ0dMZW51bSB1c2FnZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpOwogICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgZHN0Qnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogc3JjRGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwotICAgIHZvaWQgZ2V0QnVmZmVyU3Vi
RGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9p
ZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0LCBHQ0dMdWludCBsZW5ndGgpOwogI2VuZGlm
CiAgICAgdm9pZCBjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51
bSB3cml0ZVRhcmdldCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7CiAKLSAgICB2b2lkKiBtYXBCdWZmZXJSYW5n
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3Ro
LCBHQ0dMYml0ZmllbGQgYWNjZXNzKSBmaW5hbDsKLSAgICBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOworICAgIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkg
ZmluYWw7CiAKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50
IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dM
aW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFz
aywgR0NHTGVudW0gZmlsdGVyKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVj
dCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSBmaW5hbDsKQEAgLTMyNyw3
ICszMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgZmlu
YWw7CiAKICAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRlcgotICAgIHZvaWQgZ2V0SW50
ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7
CisgICAgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBkYXRhKSBm
aW5hbDsKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKIAogICAgIHZvaWQgdGV4U3RvcmFn
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CkBAIC0zODAs
NyArMzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KSBm
aW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpIGZpbmFsOwogICAgIC8vIGdldFF1ZXJ5UGFyYW1ldGVyCi0gICAgdm9pZCBn
ZXRRdWVyeU9iamVjdHVpdihQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMdWludCBnZXRRdWVyeU9iamVjdHVpKFBs
YXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRm
b3JtR0xPYmplY3QgY3JlYXRlU2FtcGxlcigpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlU2FtcGxl
cihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpIGZpbmFsOwpAQCAtMzg5LDggKzM4Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgc2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NH
TGZsb2F0IHBhcmFtKSBmaW5hbDsKICAgICAvLyBnZXRTYW1wbGVyUGFyYW1ldGVyCi0gICAgdm9p
ZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7Ci0gICAgdm9pZCBnZXRTYW1wbGVyUGFy
YW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGlu
dCogdmFsdWUpIGZpbmFsOworICAgIEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0
Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKKyAgICBHQ0dMaW50
IGdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUpIGZpbmFsOwogCiAgICAgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlv
biwgR0NHTGJpdGZpZWxkIGZsYWdzKSBmaW5hbDsKICAgICBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NH
THN5bmMpIGZpbmFsOwpAQCAtMzk5LDcgKzM5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRT
eW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1lb3V0KSBmaW5h
bDsKICAgICAvLyBnZXRTeW5jUGFyYW1ldGVyCiAgICAgLy8gRklYTUUgLSB0aGlzIGNhbiBiZSBp
bXBsZW1lbnRlZCBhdCB0aGUgV2ViR0wgbGV2ZWwgaWYgd2Ugc2lnbmFsIHRoZSBXZWJHTFN5bmMg
b2JqZWN0LgotICAgIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMaW50IGdldFN5
bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybUdMT2Jq
ZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKSBmaW5hbDsKQEAgLTQxNiw3ICs0MTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0
LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgZmluYWw7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAt
PiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxzIGFib3ZlLgogICAgIFZlY3RvcjxHQ0dMdWludD4gZ2V0
VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdW5pZm9ybU5hbWVzKSBmaW5hbDsKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUlu
ZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NHTGludD4mIHBhcmFtcykgZmluYWw7Cisg
ICAgVmVjdG9yPEdDR0xpbnQ+IGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBu
YW1lKSBmaW5hbDsKIAogICAgIEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSBmaW5hbDsK
ICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTQyNSwxMSArNDIyLDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBw
cm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIHZvaWQg
cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KTsKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpOwotI2VuZGlmCi0KICAg
ICAvLyBIZWxwZXIgbWV0aG9kcy4KIAogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNp
Z25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJ
bnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsKQEAgLTUyNCw2ICs1MTYsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygp
OwogICAgIAorICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkq
IGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOworCiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5n
IG9wZXJhdGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9p
ZCBjaGVja0dQVVN0YXR1cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwCmluZGV4IDYzNTZmODFmNDgyMWI2YTFlYTZjMzU1N2VkZjFmNGU2ODgxM2Y2Yjku
LjYyOTgwMzg4YjY1MjQ3OWNjYjQzMzFjMjVmZmVlYmI2NmM2Y2I1NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgRXh0
ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB9CiAj
ZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50
IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOwogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
UiwgbV9mYm8pOwogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9Ci0gICAgOjpnbFJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICA6OmdsUmVh
ZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuZGF0YSk7CiAg
ICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRp
c2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4
dEdMOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiYzQ0Y2Q1Nzc4ODY3MjAzOWFl
YTRmNTk5OTZlNGQ5NGUxYzFhMGZlLi43MjVlNDRhYmE4MmRhZGFkMjE4MzE0MDczZTYzZjZjMzdj
NTk2Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTIwMjksMjIgKzIwMjksNiBAQCBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjbwogICAgIHJl
dHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG1hcHBlZE5hbWUudXRmOCgpLmRh
dGEoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJp
YmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2
YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsK
LX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsK
LSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICA6
OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NH
THNpemVpcHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCkBAIC0yMjc4LDE5ICsyMjYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUs
IGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKICAgICBjaGVj
a0dQVVN0YXR1cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRF
eHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZz
ZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiAgICAgY2hlY2tH
UFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmVydGV4QXR0
cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBnZXRF
eHRlbnNpb25zKCkudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0
RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2aXNvcik7CiB9
CiAKICNpZiBIQVZFKE9QRU5HTF80KSAmJiBFTkFCTEUoV0VCR0wyKQpAQCAtMjMzNSw0MiArMjMx
OSwyNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xpbnRwdHIsCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnRwdHIgc3JjQnl0ZU9mZnNldCwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zm
c2V0LCBHQ0dMdWludCBsZW5ndGgpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRC
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFu
PEdDR0x2b2lkPiBkYXRhKQogewotICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNCeXRlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRzdE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7Ci19Ci0K
ICNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCogR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRmaWVsZCBhY2Nlc3MpCi17CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gOjpnbE1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFj
Y2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bm1hcEJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
LSAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwotCi0gICAgcmV0dXJuIDo6Z2xVbm1hcEJ1ZmZlcih0
YXJnZXQpOwotfQorICAgICAgICByZXR1cm47CisgICAgR0NHTHZvaWQqIHB0ciA9IDo6Z2xNYXBC
dWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgZGF0YS5idWZTaXplLCBHcmFwaGljc0NvbnRleHRH
TDo6TUFQX1JFQURfQklUKTsKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworICAgIG1l
bWNweShkYXRhLmRhdGEsIHB0ciwgZGF0YS5idWZTaXplKTsKKyAgICBpZiAoITo6Z2xVbm1hcEJ1
ZmZlcih0YXJnZXQpKQorICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04pOwogI2Vsc2UKLXZvaWQqIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVpcHRyLCBH
Q0dMYml0ZmllbGQpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVU5VU0VEX1BBUkFNKHRh
cmdldCk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEp
OworICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJB
VElPTik7CisjZW5kaWYKIH0KIAotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVubWFwQnVmZmVyKEdDR0xlbnVtKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKQEAgLTI0MTcsMTMgKzIzODQsMTMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMp
CiB9CiAKICNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9QRU5HTF9FU18zKQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xpbnQqIHBhcmFtcykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldElu
dGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IGRhdGEpCiB7CiAjaWYgVVNFKE9QRU5H
TF9FUykKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICA6OmdsR2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFt
ZSwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICA6OmdsR2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQs
IGludGVybmFsZm9ybWF0LCBwbmFtZSwgZGF0YS5idWZTaXplLCBkYXRhLnBhcmFtcyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOwogICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZv
cm1hdCk7CkBAIC0yNzEyLDExICsyNjc5LDExIEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5
T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCogdmFsdWUpCitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmpl
Y3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVT
RURfUEFSQU0ocXVlcnkpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0yNzU2LDE4ICsyNzIzLDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpCitH
Q0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHZhbHVlKTsKKyAgICByZXR1cm4gMC5mOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lKQorCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9Q
QVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0K
IAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51bSBj
b25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAgLTI4MDYsMTIgKzI3NzQsMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NHTGJp
dGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBVTlVTRURfUEFSQU0odGltZW91dCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN5bmMpOwogICAgIFVOVVNFRF9QQVJBTShwbmFt
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKQEAgLTI4OTEsMjEgKzI4NTgsMjMgQEAg
VmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUluZGlj
ZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgSEFWRShP
UEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVj
dG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8R0NH
TGludD4mIHBhcmFtcykKK1ZlY3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8
R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVjdG9y
PEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOworI2lmIEhBVkUoT1BF
TkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1J
bmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEo
KSk7CisgICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMu
c2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsKKyNl
bmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja05hbWUpOwotCiAgICAgcmV0dXJuIDA7
CiB9CiAKQEAgLTI5MTMsNyArMjg4Miw2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tJ
bmRleCk7Ci0KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIApAQCAtMjkyMywyNyArMjg5
MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMCiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1C
bG9ja0luZGV4KTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrQmluZGluZyk7CiB9Ci0j
ZWxzZQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYsIEdDR0xlbnVtLCBWZWN0b3I8
R0NHTGludD4mKQotewotfQotCi1HQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICByZXR1cm4gMDsKLX0KLQotU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQotewotICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBHQ0dMdWludCkK
LXsKLX0KLSNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewogICAgIFVOVVNFRF9QQVJBTSh4KTsK
ICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0yOTU0LDE4ICsyOTAzLDYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQotewotICAgIFVOVVNF
RF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRo
KTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsK
LSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggNTNiMWE3N2M2MDcwZjhlNDI0YzhjODhkNTA0MTIyNDlj
N2I2NzZmNy4uYjgyZDE2NDE3YzJmNTE5MWQwNDQyNDg3NDZlNzgzOGE4NjdhZTUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNDAsNyArNDAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQogCi0gICAgOjpn
bFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEu
ZGF0YSk7CiAKICAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERy
YXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25v
dyB3ZSBoYXZlIGl0LgogICAgICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxC
dWZmZXIpIHsKICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJC
VUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRlbnNpb25z
LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNv
dW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9S
RU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgs
IGhlaWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkKICAgICAg
ICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAtMTM4LDEy
ICsxMzgsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmluZFJl
bmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JF
TkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lMX0lO
REVYOCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9S
RU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9E
RVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNI
TUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415291</attachid>
            <date>2020-12-03 04:17:10 -0800</date>
            <delta_ts>2020-12-03 04:59:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219486-20201203141708.patch</filename>
            <type>text/plain</type>
            <size>97261</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiNzZlMTlhYjVmZTc4
NTczZTc5Yjg3NTE5Y2FmZjcwYWE4YjM2OS4uNDQ1NTNkZDZmOGVlMDA2N2IwMzU1YmYwMWZmMzZi
NGZlMWI5MDk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAyMC0xMi0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIGhhcyBhIGNvdXBsZSBub24tcm9idXN0IGdldHRlcnMgYW5kIG90aGVyIHNtYWxsIEFQ
SSBwcm9ibGVtcyBwcmV2ZW50aW5nIEdQVSBwcm9jZXNzIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wgdG8gbm90IGhhdmUgZHVwbGljYXRlIG5hbWVzCisg
ICAgICAgIGFuZCBoYXZlIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKKyAgICAg
ICAgQ2hhbmdlcyBmZXcgcmVtYWluaW5nIEdyYXBoaWNzQ29udGV4dEdMIGdldHRlcnMgdG8gdXNl
IHJvYnVzdCBHQ0dMU3BhbgorICAgICAgICBmb3JtLgorCisgICAgICAgIENoYW5nZXMgZmV3IHJv
YnVzdCBnZXR0ZXJzIHRvIEdDR0xTcGFuIGZvcm0gYW5kIG1vdmVzIHRoZW0gZnJvbQorICAgICAg
ICBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wuCisKKyAgICAgICAgQ2hhbmdlcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMgdG8gcmV0dXJuIHRoZSBy
ZXN1bHQKKyAgICAgICAgdmVjdG9yIGluc3RlYWQgb2YgdGFraW5nIGl0IGFzIG5vbi1jb25zdCBy
ZWZlcmVuY2UuIFRoaXMgd2F5IHRoZSBvdXQKKyAgICAgICAgdmVjdG9yIGRvZXMgbm90IG5lZWQg
dG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIEdQVSBwcm9jZXNzLCB3aGVuIHRoZQorICAgICAgICBj
b2RlIGlzIGltcGxlbWVudGVkLiBUaGUgY2FsbCBzaXRlIGlzIGFsc28gbW9yZSBuYXR1cmFsLgor
CisgICAgICAgIFJlcXVlc3RzIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBzbyB0aGF0
IFdlYkdMIDIuMCBvY2NsdXNpb24KKyAgICAgICAgcXVlcmllcyB3b3JrIHdoZW4gY2FsbGVkIHdp
dGggZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUuCisKKyAgICAgICAgUmVtb3ZlcyB1
c2Ugb2YgbWFwQnVmZmVyUmFuZ2UgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBjaGFuZ2VzIHRoZW0g
dG8gYSBzaW5nbGUKKyAgICAgICAgZ2V0QnVmZmVyU3ViRGF0YS4gSWYgdGhlIG1hcHBpbmcgZXZl
ciBpcyB1c2VmdWwsIHRoZSBtb3JlIGNvbXBsZXgKKyAgICAgICAgZm9ybSBvZiBBUEkgY2FuIGJl
IGFkZGVkIGJhY2suCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgZ2V0SW50ZXJuYWxmb3JtYXRpdiBj
YWxsIHNpdGUgdG8gY2hlY2sgZXJyb3Mgc2ltaWxhciB0byBvdGhlcgorICAgICAgICBnZW5lcmlj
IGVycm9yIGNoZWNraW5nOiBmaXJzdCBjbGVhcmluZyB0aGUgZXJyb3JzIGFuZCB0aGVuIGFmdGVy
IHRoZSBjYWxsCisgICAgICAgIGNoZWNraW5nIGlmIHRoZXJlIGlzIG5ldyBlcnJvcnMuIFRoaXMg
aXMgc2xpZ2h0bHkgbGVzcyBlZmZpY2llbnQgdGhhbgorICAgICAgICB1c2luZyB0aGUgZG9tYWlu
IGtub3dsZWRnZSB0aGF0IHRoZSBmdW5jdGlvbiBuZXZlciByZXR1cm5zIC0xIGluIHRoZSBzbG90
LgorICAgICAgICBDdXJyZW50IHNpbmdsZS12YWx1ZS1hcy1yZXR1cm4tdmFsdWUgcGF0dGVybiBj
YW5ub3QgZXhwcmVzcyB0aGlzLiBJbiB0aGUKKyAgICAgICAgZnV0dXJlLCBHUFUgcHJvY2VzcyBj
b250ZXh0IGNhbm5vdCAvIHdpbGwgbm90IHN1cHBvcnQgcGFzc2luZyBub24tZGVmYXVsdAorICAg
ICAgICBpbi1hcnJheXMuIEluIHRoZSBmdXR1cmUsIHRoZSBnZW5lcmljIGVycm9yIGNoZWNraW5n
IHBhdHRlcm4gd2lsbCBwb3NzaWJseQorICAgICAgICBiZSBpbXByb3ZlZCwgY2lyY3VtdmVudGlu
ZyB0aGUgbmVlZCBmb3IgdGhlIC0xIGRvbWFpbiBrbm93bGVkZ2UgY2FzZS4KKworICAgICAgICBS
ZW1vdmVzIGdldFZlcnRleEF0dHJpYip2LCB0aGV5IGFyZSBub3QgdXNlZC4KKworICAgICAgICBS
ZW1vdmVzIGdldEF0dGFjaGVkU2hhZGVycywgaXQgaXMgbm90IHVzZWQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFNhbXBsZXJQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xpZW50V2FpdFN5
bmMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZvcm1zKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMU3luYzo6dXBkYXRlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
c2lvbnNHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZXJuYWxmb3Jt
YXRpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6RXh0ZW5zaW9uc0dMQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
QU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjp2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFVu
aWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdM
RTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtZnZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsc0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVj
dHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1w
bGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6
OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
R0xPcGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuc2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6Ymxp
dEZyYW1lYnVmZmVyQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdFbGVtZW50c0luc3RhbmNl
ZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsZW5kRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlQXR0cmli
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0
aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0Tm9uQnVpbHRJbkFjdGl2
ZVN5bWJvbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbm1hbmdsZWRJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZlcnRleEF0
dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2kpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3Jt
QmxvY2tJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorCiAyMDIw
LTEyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IERldGVybWluZSB0aGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgb24gdGhlIG1haW4gdGhyZWFk
IGJlZm9yZSBwYXNzaW5nIGl0IHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDFkYmQwNTVkNzgxNTNjZmQ1YzcxNzQ1OTdmMDZlMGU1MDllNzhmYWEuLjhlZGMyOGIwYThkMzZl
NDI0NTkxYjUyNjRhZjY5YWZmODg4ZjYwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02ODEsMTcgKzY4MSw4
IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51
bSB0YXJnZXQsIGxvbmcgbG9uZyBzcmNCeXRlCiAgICAgaWYgKCFjb3B5TGVuZ3RoKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpOwotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiBDb2FsZXNjZSBtdWx0aXBs
ZSBnZXRCdWZmZXJTdWJEYXRhKCkgY2FsbHMgdG8gdXNlIGEgc2luZ2xlIG1hcCgpIGNhbGwKLSAg
ICB2b2lkKiBwdHIgPSBtX2NvbnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgY2hlY2tlZFNy
Y0J5dGVPZmZzZXQudW5zYWZlR2V0KCksIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4oY2hlY2tl
ZENvcHlMZW5ndGhQdHIudW5zYWZlR2V0KCkgKiBjaGVja2VkRWxlbWVudFNpemUudW5zYWZlR2V0
KCkpLCBHcmFwaGljc0NvbnRleHRHTDo6TUFQX1JFQURfQklUKTsKLSAgICBpZiAocHRyKQotICAg
ICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsg
ZHN0RGF0YS0+Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIHB0ciwgY29w
eUxlbmd0aCAqIGVsZW1lbnRTaXplKTsKLQotICAgIGlmICghbV9jb250ZXh0LT51bm1hcEJ1ZmZl
cih0YXJnZXQpKQotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9PUEVSQVRJT04sICJnZXRCdWZmZXJTdWJEYXRhIiwgIkZhaWxlZCB3aGlsZSB1bm1h
cHBpbmcgYnVmZmVyIik7Ci0jZW5kaWYKLSAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdCgpOworICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQs
IHNyY0J5dGVPZmZzZXQsIG1ha2VHQ0dMU3BhbihzdGF0aWNfY2FzdDxjaGFyKj4oZHN0RGF0YS0+
YmFzZUFkZHJlc3MoKSkgKyBkc3REYXRhLT5ieXRlT2Zmc2V0KCkgKyBkc3RPZmZzZXQgKiBlbGVt
ZW50U2l6ZSwgY29weUxlbmd0aCAqIGVsZW1lbnRTaXplKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFt
ZWJ1ZmZlciogYnVmZmVyKQpAQCAtODMyLDI1ICs4MjMsMTkgQEAgV2ViR0xBbnkgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0cKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaW50IG51bVZhbHVl
cyA9IC0xOwogI2lmIFVTRShPUEVOR0xfRVMpIHx8IFVTRShBTkdMRSkKLSAgICBtX2NvbnRleHQt
PmdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0R0w6Ok5VTV9TQU1QTEVfQ09VTlRTLCAxLCAmbnVtVmFsdWVzKTsKLSAgICBpZiAobnVtVmFs
dWVzIDwgMCkgewotICAgICAgICAvLyBBc3N1bWUgdGhlIGdldEludGVybmFsZm9ybWF0aXYgY2Fs
bCBmYWlsZWQ7IHJldHVybiBudWxsIGZyb20gdGhlIFNBTVBMRVMgcXVlcnkuCisgICAgbV9jb250
ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBHQ0dMaW50IG51bVZh
bHVlcyA9IG1fY29udGV4dC0+Z2V0SW50ZXJuYWxmb3JtYXRpKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dEdMOjpOVU1fU0FNUExFX0NPVU5UUyk7CisgICAgaWYgKG1fY29u
dGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgfHwgbnVtVmFsdWVzIDwgMCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gSW50ZWdlciBmb3JtYXRz
IGRvIG5vdCBzdXBwb3J0IG11bHRpc2FtcGxpbmcsIHNvIG51bVZhbHVlcyA9PSAwIG1heSBvY2N1
ci4KIAogICAgIFZlY3RvcjxHQ0dMaW50PiBwYXJhbXMobnVtVmFsdWVzKTsKICAgICBpZiAobnVt
VmFsdWVzID4gMCkgewotICAgICAgICAvLyBBZGQgYSBzZW50aW5lbCB0byBrbm93IHdoZXRoZXIg
dGhlIGNhbGwgc3VjY2VlZGVkIHdpdGhvdXQgYWRkaXRpb25hbGx5IGNoZWNraW5nIE9wZW5HTCBl
cnJvcnMuCi0gICAgICAgIHBhcmFtc1swXSA9IC0xOwotICAgICAgICBtX2NvbnRleHQtPmdldElu
dGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIG51bVZhbHVlcywg
cGFyYW1zLmRhdGEoKSk7Ci0gICAgICAgIGlmIChwYXJhbXNbMF0gPT0gLTEpIHsKLSAgICAgICAg
ICAgIC8vIFRoZSBnZXRJbnRlcm5hbGZvcm1hdGl2IGNhbGwgZmFpbGVkOyByZXR1cm4gbnVsbCBm
cm9tIHRoZSBTQU1QTEVTIHF1ZXJ5LgorICAgICAgICBtX2NvbnRleHQtPmdldEludGVybmFsZm9y
bWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGlm
IChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIC8vIE9uIGRl
c2t0b3AgT3BlbkdMIDQuMSBvciBiZWxvdyB3ZSBtdXN0IGVtdWxhdGUgZ2xHZXRJbnRlcm5hbGZv
cm1hdGl2LgpAQCAtODc5LDEzICs4NjQsMTMgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0cKIAog
ICAgIC8vIFNpbmNlIG11bHRpc2FtcGxpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3Igc2lnbmVkIGFu
ZCB1bnNpZ25lZCBpbnRlZ2VyIGludGVybmFsIGZvcm1hdHMsCiAgICAgLy8gdGhlIHZhbHVlIG9m
IEdMX05VTV9TQU1QTEVfQ09VTlRTIHdpbGwgYmUgemVybyBmb3Igc3VjaCBmb3JtYXRzLgotICAg
IG51bVZhbHVlcyA9IGlzSW50ZWdlckZvcm1hdChpbnRlcm5hbGZvcm1hdCkgPyAwIDogc2FtcGxl
cy5zaXplKCk7CisgICAgR0NHTGludCBudW1WYWx1ZXMgPSBpc0ludGVnZXJGb3JtYXQoaW50ZXJu
YWxmb3JtYXQpID8gMCA6IHNhbXBsZXMuc2l6ZSgpOwogICAgIFZlY3RvcjxHQ0dMaW50PiBwYXJh
bXMobnVtVmFsdWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHNp
emVfdD4obnVtVmFsdWVzKTsgKytpKQogICAgICAgICBwYXJhbXNbaV0gPSBzYW1wbGVzW2ldOwog
I2VuZGlmCiAKLSAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3JlYXRlKHBhcmFtcy5kYXRhKCks
IG51bVZhbHVlcyk7CisgICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZShwYXJhbXMuZGF0
YSgpLCBwYXJhbXMuc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpp
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBjb25zdCBWZWN0b3I8R0NHTGVu
dW0+JiBhdHRhY2htZW50cykKQEAgLTE5NjcsOSArMTk1Miw3IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVyKFdlYkdMUXVlcnkmIHF1ZXJ5LCBHQ0dM
ZW51bSBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihxdWVyeS5vYmplY3Qo
KSwgcG5hbWUsICZyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2NvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWkocXVlcnkub2JqZWN0
KCksIHBuYW1lKSk7CiB9CiAKIFJlZlB0cjxXZWJHTFNhbXBsZXI+IFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQpAQCAtMjA1OSwxNyArMjA0MiwxMSBAQCBXZWJHTEFueSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKFdlYkdMU2FtcGxlciYg
c2FtcGxlciwgR0NHTAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJ
TFRFUjoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUjoKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfUzoKLSAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDogewotICAgICAgICBpbnQgdmFsdWUgPSAwOwotICAg
ICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLm9iamVjdCgpLCBw
bmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVDoKKyAgICAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUpOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUFYX0xPRDoKLSAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6IHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwot
ICAgICAgICBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyLm9iamVjdCgp
LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9MT0Q6CisgICAgICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9FTlVNLCAiZ2V0U2FtcGxlclBhcmFtZXRlciIsICJJbnZhbGlkIHBuYW1lIik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ4NSwyNCArMjQ2MiwyNCBAQCBXZWJHTEFueSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3JtcyhXZWJHTFByb2dyYW0mIHBy
b2dyYW0sIGNvbnN0CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QWN0aXZlVW5pZm9ybXMiLCAmcHJvZ3JhbSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlm
b3JtSW5kaWNlcy5zaXplKCksIDApOwotICAgIAogICAgIHN3aXRjaCAocG5hbWUpIHsKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6Ci0gICAgICAgIG1fY29udGV4dC0+
Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1l
LCByZXN1bHQpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fVFlQRTogewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3Jh
bS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oeCk7IH0pOwot
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fU0laRToKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywg
cG5hbWUsIHJlc3VsdCk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZP
Uk1fU0laRTogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QWN0aXZlVW5p
Zm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMdWlu
dD4oeCk7IH0pOworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX0JM
T0NLX0lOREVYOgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fT0ZGU0VUOgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fQVJSQVlfU1RSSURFOgogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fTUFUUklYX1NUUklERToKLSAgICAgICAgbV9j
b250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNl
cywgcG5hbWUsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9JU19ST1dfTUFKT1I6Ci0gICAgICAgIG1f
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGlj
ZXMsIHBuYW1lLCByZXN1bHQpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRBY3RpdmVV
bmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgpLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOiB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLm9iamVjdCgp
LCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChbXShh
dXRvIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHgpOyB9KTsKKyAgICB9CiAgICAgZGVm
YXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfRU5VTSwgImdldEFjdGl2ZVVuaWZvcm1zIiwgImludmFsaWQgcGFyYW1ldGVyIG5hbWUiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcyLDggKzM1NDksNyBAQCB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgRwogCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoQ2xlYXJDYWxsZXJPdGhlcik7
CiAKLSAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwotICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCAwLCAmbGVuZ3RoLCAmY29sdW1ucywgJnJvd3MsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KG9mZnNldCksIHRydWUpOworICAgIG1fY29udGV4dC0+cmVhZG5QaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBvZmZzZXQpOwogfQogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggNDAwNzFjYTIzYjJjMzU1ZTFlODEwNjQ2MTdkNTJiOWQyZmI4
N2FjNi4uNzJjMjY0NDY2NmNmMDNhMmY1OWYxZTA5ZmU5MzI5M2NiODBiNmJhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTQzOTUsMTUgKzQzOTUsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgK
ICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUp
Ci0gICAgR0NHTHNpemVpIGxlbmd0aCA9IDA7Ci0gICAgR0NHTHNpemVpIGNvbHVtbnMgPSAwOwot
ICAgIEdDR0xzaXplaSByb3dzID0gMDsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5y
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxz
ZSk7CisgICAgbV9jb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIG1ha2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZWxz
ZQogICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMuYnl0ZUxlbmd0aCgpLCBkYXRhKTsKICAgICBlbHNlCi0gICAgICAg
IG1fY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEpOworICAgICAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgbWFrZUdDR0xTcGFuKGRhdGEsIHBpeGVscy5ieXRlTGVuZ3RoKCkp
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcApp
bmRleCA0YTQyMGJmMGExMTZjY2NhYjVkYjg3YTI2ZDhiYTI0MjgyOGYyZDU1Li44OWE2M2UzNjIx
NzEyMjRiNDEzYTQ5NTQyMzEyZTM4MzZiNmViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU3luYy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJHTFN5bmM6OnVwZGF0
ZUNhY2hlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fYWxsb3dDYWNoZVVwZGF0ZSA9IGZhbHNlOwotICAgIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0U3luY2l2KG1fc3luYywgR3JhcGhpY3NDb250ZXh0R0w6OlNZTkNf
U1RBVFVTLCBzaXplb2YobV9zeW5jU3RhdHVzKSwgJm1fc3luY1N0YXR1cyk7CisgICAgbV9zeW5j
U3RhdHVzID0gY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRTeW5jaShtX3N5bmMsIEdy
YXBoaWNzQ29udGV4dEdMOjpTWU5DX1NUQVRVUyk7CiAgICAgaWYgKG1fc3luY1N0YXR1cyA9PSBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdOQUxFRCkKICAgICAgICAgc2NoZWR1bGVBbGxvd0NhY2hl
VXBkYXRlKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zR0wuaAppbmRleCAyNjI3YTliN2Y0NDY1MTBjZGMwMzQxZGI4NjczNDQ3NDk1
MTQ3Yjg4Li5jNGU3Nzc4ZGI2YTQ0OGZkMGE1ZTY1MTU5MWZlZWExNDUzODYzODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaApAQCAtMjc5
LDEwICsyNzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR0NHTGludCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdAot
ICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwg
bG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RY
MSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gw
LCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRz
dFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0
ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9tdWx0aXNhbXBsZQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywg
dW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkg
PSAwOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICB2aXJ0dWFsIFBs
YXRmb3JtR0xPYmplY3QgY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9IDA7CkBAIC0yOTYsMTUgKzI5
NiwxNSBAQCBwdWJsaWM6CiAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgogICAgIHZpcnR1YWwg
dm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9w
R3JvdXBNYXJrZXJFWFQoKSA9IDA7CiAKICAgICAvLyBHTF9BUkJfZHJhd19idWZmZXJzIC8gR0xf
RVhUX2RyYXdfYnVmZmVycwogICAgIHZpcnR1YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfaW5zdGFuY2Vk
X2FycmF5cwotICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3Qs
IEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX3Jv
YnVzdF9jbGllbnRfbWVtb3J5CiAgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdM
RShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBwaXhlbHMpID0gMDsKQEAgLTMxNCw3ICszMTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdD
R0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEJ1ZmZl
clBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0x1aW50KiBwYXJhbXMpID0gMDsKQEAgLTMzMiw3ICszMzEsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xmbG9hdCogcGFyYW1zKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x2b2lkKiogcGFyYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCBy
ZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5p
Zm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVu
Z3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0x1aW50KiBwYXJhbXMpID0gMDsKQEAg
LTM1NSw3ICszNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhU
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0x2
b2lkKiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xmbG9h
dCogcGFyYW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQq
IHBhcmFtcykgPSAwOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNOVklESUEoKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzQU1EKCkgPSAwOwpAQCAtMzY3LDYgKzM2NCw3IEBAIHB1Ymxp
YzoKICAgICAvLyB0aGF0IG11c3QgYmUgYXZvaWRlZC4gUG9ydHMgc2hvdWxkIGltcGxlbWVudCB0
aGVzZSBmbGFncyBvbiBzdWNoIGNvbmZpZ3VyYXRpb25zLgogICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkgPSAwOworI2VuZGlmCiAKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCmluZGV4IDRiMzY1Nzk1Y2FmNGNjODRlOGVlNjM5NTZiY2U4ZjVhNmYwNzg3OTIuLmYy
NzVmMzgzZTM2ODI3M2Y3YzlmYmM4OGNiZTIwOGRiNGYyZmMwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTc4
LDcgKzk3OCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRBY3RpdmVBdHRyaWIo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkg
bWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBsYXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpID0g
MDsKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKIApAQCAtMTAyMywxMCArMTAyMiw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKLSAgICAvLyBnZXRWZXJ0ZXhBdHRy
aWIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gdmFsdWUpID0gMDsKLQogICAgIHZpcnR1YWwgR0NHTHNpemVpcHRy
IGdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9k
ZSkgPSAwOwpAQCAtMTA5OCw3ICsxMDkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEs
IEdDR0xlbnVtIHVzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IGRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWQqIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dM
dm9pZD4gZGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgdGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsICBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwpAQCAtMTEy
Miw4ICsxMTE4LDcgQEAgcHVibGljOgogICAgIC8vID09PT09PT09PT0gV2ViR0wgMiBlbnRyeSBw
b2ludHMuCiAKICAgICB2aXJ0dWFsIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVh
ZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NH
TGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpID0gMDsKLSAgICB2aXJ0dWFs
IEdDR0x2b2lkKiBtYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKSA9IDA7Ci0gICAg
dmlydHVhbCBHQ0dMYm9vbGVhbiB1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50
IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dM
aW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmls
dGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKSA9IDA7CkBAIC0xMTMyLDcgKzExMjcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSA9IDA7
CiAKICAgICAvLyBnZXRJbnRlcm5hbEZvcm1hdFBhcmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xp
bnQ+IGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2
ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KSA9IDA7CkBAIC0xMTg1LDcgKzExODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1H
TE9iamVjdCBnZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAg
ICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdM
T2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBQbGF0Zm9y
bUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVNh
bXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSA9IDA7CkBAIC0xMTk0LDggKzExODksOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKSA9IDA7CiAgICAgLy8gZ2V0U2FtcGxlclBh
cmFtZXRlcgotICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1H
TE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBz
YW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFs
IEdDR0xmbG9hdCBnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIs
IEdDR0xlbnVtIHBuYW1lKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMaW50IGdldFNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpID0gMDsKIAog
ICAgIHZpcnR1YWwgR0NHTHN5bmMgZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJp
dGZpZWxkIGZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCBHQ0dMYm9vbGVhbiBpc1N5bmMoR0NHTHN5
bmMpID0gMDsKQEAgLTEyMDMsNyArMTE5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDR0xl
bnVtIGNsaWVudFdhaXRTeW5jKEdDR0xzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50
NjQgdGltZW91dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NH
TGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkgPSAwOwogICAgIC8vIGdldFN5bmNQ
YXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3luY2l2KEdDR0xzeW5jLCBHQ0dMZW51bSBw
bmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBHQ0dMaW50IGdldFN5bmNpKEdDR0xzeW5jLCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogCiAgICAg
dmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0
IGlkKSA9IDA7CkBAIC0xMjIwLDcgKzEyMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9y
bUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBzaXplKSA9
IDA7CiAgICAgLy8gZ2V0SW5kZXhlZFBhcmFtZXRlciAtPiB1c2UgZ2V0UGFyYW1ldGVyIGNhbGxz
IGFib3ZlLgogICAgIHZpcnR1YWwgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3JtSW5kaWNlcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFt
ZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NH
TGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFt
LCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUp
ID0gMDsKIAogICAgIHZpcnR1YWwgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpID0gMDsK
ICAgICAvLyBnZXRBY3RpdmVVbmlmb3JtQmxvY2tQYXJhbWV0ZXIKQEAgLTEyMzQsNiArMTIyOSw3
IEBAIHB1YmxpYzoKICAgICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKTsK
ICAgICBHQ0dMaW50IGdldEludGVnZXIoR0NHTGVudW0gcG5hbWUpOwogICAgIEdDR0xpbnQgZ2V0
QWN0aXZlVW5pZm9ybUJsb2NraShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0NHTGVudW0gcG5hbWUpOworICAgIEdDR0xpbnQgZ2V0SW50ZXJuYWxmb3JtYXRp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lkIHNldENvbnRleHRBdHRyaWJ1dGVz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRycyA9IGF0
dHJzOyB9CkBAIC0xMzkyLDYgKzEzODgsMTMgQEAgaW5saW5lIEdDR0xpbnQgR3JhcGhpY3NDb250
ZXh0R0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2koR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHUKICAg
ICByZXR1cm4gdmFsdWVbMF07CiB9CiAKK2lubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
OjpnZXRJbnRlcm5hbGZvcm1hdGkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUpCit7CisgICAgR0NHTGludCB2YWx1ZVsxXSB7IH07CisgICAg
Z2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZVswXTsKK30KKwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmgKaW5kZXggODVjMjlhNGI2ZTU2MTEwZGM3YmQ3NDdhZTMzOTg3YzM0MDM3NWRmMS4uMjE2YmQz
NjY4ZjEwN2E4NzkxNGRlNGY2MGJiZTUyNjMxMTVkZmZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTUxLDYgKzUxLDgg
QEAgdHlwZWRlZiBsb25nIGxvbmcgR0NHTGludDY0OwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgR0NHTHVpbnQ2NDsKIHR5cGVkZWYgc3RydWN0IF9fR0xzeW5jKiBHQ0dMc3luYzsKIHR5cGVk
ZWYgdm9pZCBHQ0dMdm9pZDsKK3R5cGVkZWYgaW50cHRyX3QgR0NHTHZvaWRwdHI7CisKIAogdHlw
ZWRlZiBHQ0dMdWludCBQbGF0Zm9ybUdMT2JqZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
aW5kZXggMjgzZGE4MmM2YTYwMmVhNGI1NTdjNjg2Y2ZkODIzZDA4MWM1NWU0YS4uYjdkYjRmZDIw
NDFiM2JiYzhiYjlhNzczM2U4OWJlZWFhZWI2Zjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cApAQCAtNDYsMjggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRXh0ZW5zaW9uc0dMQU5H
TEU6OkV4dGVuc2lvbnNHTEFOR0xFKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBi
b29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpCiAgICAgOiBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9pc05WSURJ
QShmYWxzZSkKLSAgICAsIG1faXNBTUQoZmFsc2UpCi0gICAgLCBtX2lzSW50ZWwoZmFsc2UpCi0g
ICAgLCBtX2lzSW1hZ2luYXRpb24oZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4
dHVyZVNpemUoZmFsc2UpCiAgICAgLCBtX3VzZUluZGV4ZWRHZXRTdHJpbmcodXNlSW5kZXhlZEdl
dFN0cmluZykKIHsKLSAgICAvLyBGSVhNRTogaWRlYWxseSwgcmVtb3ZlIHRoaXMgaW5pdGlhbGl6
YXRpb24gYWx0b2dldGhlci4gQU5HTEUKLSAgICAvLyBzdWJzdW1lcyB0aGUgcmVzcG9uc2liaWxp
dHkgZm9yIGdyYXBoaWNzIGRyaXZlciB3b3JrYXJvdW5kcy4KLSAgICBtX3ZlbmRvciA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1ZFTkRPUikp
KTsKLSAgICBtX3JlbmRlcmVyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsOjpHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiB2ZW5k
b3JDb21wb25lbnRzID0gbV92ZW5kb3IuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgn
ICcpOwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJudmlkaWEiKSkKLSAgICAg
ICAgbV9pc05WSURJQSA9IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMo
ImF0aSIpIHx8IHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImFtZCIpKQotICAgICAgICBtX2lz
QU1EID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygiaW50ZWwiKSkK
LSAgICAgICAgbV9pc0ludGVsID0gdHJ1ZTsKLSAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250
YWlucygiaW1hZ2luYXRpb24iKSkKLSAgICAgICAgbV9pc0ltYWdpbmF0aW9uID0gdHJ1ZTsKIH0K
IAogRXh0ZW5zaW9uc0dMQU5HTEU6On5FeHRlbnNpb25zR0xBTkdMRSgpID0gZGVmYXVsdDsKQEAg
LTEwMyw3ICs4Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMQU5HTEU6OmlzRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1pbnQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQorR0xpbnQgRXh0ZW5z
aW9uc0dMQU5HTEU6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7CiB9CkBAIC0xMTQsMTAgKzk0LDExIEBAIFN0cmlu
ZyBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGludCBz
b3VyY2VMZW5ndGggPSBtX2NvbnRleHQtPmdldFNoYWRlcmkoc2hhZGVyLCBHTF9UUkFOU0xBVEVE
X1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFKTsKKwogICAgIGlmICghc291cmNlTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKHNv
dXJjZUxlbmd0aCk7IC8vIEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUg
aW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KLSAgICBpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwor
ICAgIEdDR0xpbnQgcmV0dXJuZWRMZW5ndGggPSAwOwogICAgIGdsOjpHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEUoc2hhZGVyLCBzb3VyY2VMZW5ndGgsICZyZXR1cm5lZExlbmd0aCwgbmFt
ZS5kYXRhKCkpOwogICAgIGlmICghcmV0dXJuZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwpAQCAtMTQ3LDcgKzEyOCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omlu
aXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxl
RXh0ZW5zaW9ucyA9IHRydWU7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFt
ZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb25nIHNyY1kxLCBs
b25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkxLCB1bnNpZ25lZCBs
b25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6
YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGlu
dCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NH
TGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZp
bHRlcikKIHsKICAgICAvLyBGSVhNRTogY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIEFQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKSkKQEAgLTE1Niw3ICsxMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpi
bGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZwog
ICAgIGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwg
ZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAKLXZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjE2
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGJ1ZnMpCiAgICAgZ2w6OkRyYXdCdWZmZXJzRVhUKGJ1ZnMuYnVmU2l6ZSwg
YnVmcy5kYXRhKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3Rh
bmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xz
aXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQzLDE1ICsyMjQsMTUgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2kKICAgICBnbDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0
ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUs
IEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dM
c2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKKyAgICBnbDo6RHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4ob2Zmc2V0KSwgcHJpbWNvdW50KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6dmVy
dGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKK3ZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRl
eCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMyNiwxNCArMzA3LDYgQEAgdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHAKICAgICBnbDo6R2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSh0YXJn
ZXQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCi17Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6
R2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAt
MzUwLDcgKzMyMyw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFZlcnRleEF0dHJpYkl1
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0KICAgICBnbDo6R2V0VmVydGV4
QXR0cmliSXVpdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFy
YW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQwNCw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kCiAg
ICAgZ2w6OkdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShwbmFtZSwgaW5kZXgsIGJ1ZlNpemUs
IGxlbmd0aCwgdmFsKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC00MzksNyArNDEyLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgaW50IGwKICAgICBnbDo6
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Omdl
dFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZl
bCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwg
R0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ1Niw1NSArNDI5LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2kKICAgICBnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKHBuYW1lLCBi
dWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhp
bnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKLXsKLSAgICAvLyBX
ZSBjYW4gYXNzdW1lIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBiZWNhdXNlIHRoZSBjYWxsaW5nIGZ1
bmN0aW9ucwotICAgIC8vIHVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgaW50IHRvdGFsQnl0
ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5
dGVzOyBpICs9IDQpCi0gICAgICAgIHBpeGVsc1tpICsgM10gPSAyNTU7Ci19Ci0jZW5kaWYKLQot
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6cmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQgeCwgaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xz
aXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJlYWRpbmdU
b1BpeGVsQnVmZmVyT2JqZWN0KQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdv
IGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJpdmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKLSAgICAv
LyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFk
aW5nIHBpeGVscy4KLSAgICBnbDo6Rmx1c2goKTsKLSAgICBhdXRvIGF0dHJzID0gbV9jb250ZXh0
LT5jb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdDR0xlbnVtIGZyYW1lYnVmZmVyVGFyZ2V0ID0g
bV9jb250ZXh0LT5tX2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVC
VUZGRVIgOiBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7Ci0gICAgY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGUmIHN0YXRlID0gbV9jb250
ZXh0LT5tX3N0YXRlOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQt
PnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KSk7Ci0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJUYXJnZXQsIG1f
Y29udGV4dC0+bV9mYm8pOwotICAgICAgICBnbDo6Rmx1c2goKTsKLSAgICB9Ci0gICAgKHZvaWQp
IG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7Ci0gICAgZ2w6OlJl
YWRuUGl4ZWxzUm9idXN0QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBi
dWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwotICAgIEdMZW51bSBlcnJvciA9
IGdsOjpHZXRFcnJvcigpOwotICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRS
ZWFkRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgZ2w6OkJpbmRG
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJP
KTsKLQotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1
cmUgZHVyaW5nIHRoZSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0
aGlzIGluIHRoZQotICAgICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhl
IGFscGhhIGNoYW5uZWwgZml4dXAgYmVsb3cuCi0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZm
ZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6
OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSkgJiYgKHN0YXRlLmJvdW5kUmVhZEZCTyA9
PSBtX2NvbnRleHQtPm1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgc3RhdGUuYm91bmRSZWFk
RkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykpKQotICAgICAgICB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oZGF0YSkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1RvUGl4ZWxCdWZmZXJP
YmplY3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEV4dGVu
c2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs0MzcsNyBAQCB2b2lkIEV4dGVuc2lv
bnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLAogICAgIGdsOjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUocHJvZ3JhbSwgbG9j
YXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xB
TkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJh
bXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01MjAsNyArNDQ1LDcgQEAg
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xF
KHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJv
Z3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0x1aW50ICpwYXJhbXMpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybXVp
dlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lv
bnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oCmluZGV4IGE3NzMxZGZkMjBjNWYwM2EzMzU5MDNmYWE2ZTM4ZmY3MmY0
YjIzMjMuLmIyZDI3N2I5YWM5ZDI3ODYwZjU1YWJhYmY4Y2ZlNTVlODRiNWY1N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5z
aW9uc0dMQU5HTEUuaApAQCAtNTYsMjEgKzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25n
IHNyY1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBs
b25nIGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBHQ0dMaW50
IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dM
aW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFz
aywgR0NHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc05WSURJ
QSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNOVklESUE7IH0KLSAgICBib29sIGlzQU1EKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pc0FNRDsgfQotICAgIGJvb2wgaXNJbnRlbCgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNJbnRlbDsgfQotICAgIGJvb2wgaXNJbWFnaW5hdGlvbigpIG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNJbWFnaW5hdGlvbjsgfQotICAgIFN0cmluZyB2ZW5kb3IoKSBvdmVycmlkZSB7
IHJldHVybiBtX3ZlbmRvcjsgfQotCi0gICAgYm9vbCByZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVt
dWxhdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVs
YXRpb247IH0KLSAgICBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXpl
OyB9CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
TGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CiAKICAgICAvLyBH
TF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQogICAgIHZvaWQgcmVhZFBpeGVsc1JvYnVzdEFO
R0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9p
ZCAqcGl4ZWxzKSBvdmVycmlkZTsKQEAgLTc5LDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdD
R0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRlcnZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAg
LTk3LDcgKzg3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUo
R0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgdm9p
ZCAqKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0
YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFt
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoR0NHTHVpbnQg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRl
OwpAQCAtMTMwLDE4ICsxMTksOCBAQCBwcml2YXRlOgogICAgIC8vIFdlYWsgcG9pbnRlciBiYWNr
IHRvIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLgogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiBtX2NvbnRleHQ7CiAKLSAgICBib29sIG1faXNOVklESUE7Ci0gICAgYm9vbCBtX2lzQU1EOwot
ICAgIGJvb2wgbV9pc0ludGVsOwotICAgIGJvb2wgbV9pc0ltYWdpbmF0aW9uOwotICAgIGJvb2wg
bV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNS
ZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplOwotCiAgICAgYm9vbCBtX3VzZUluZGV4ZWRHZXRT
dHJpbmcgeyBmYWxzZSB9OwogCi0gICAgU3RyaW5nIG1fdmVuZG9yOwotICAgIFN0cmluZyBtX3Jl
bmRlcmVyOwotCiAgICAgLy8gV2hldGhlciB0aGUgV2ViR0wgMS4wLXJlbGF0ZWQgZmxvYXRpbmct
cG9pbnQgcmVuZGVyYWJpbGl0eSBleHRlbnNpb25zIGhhdmUgYmVlbiBlbmFibGVkLgogICAgIGJv
b2wgbV93ZWJnbENvbG9yQnVmZmVyRmxvYXRSR0IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93ZWJn
bENvbG9yQnVmZmVyRmxvYXRSR0JBIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjM2Y0NGNkNzY1ZGQ4ZmM3MTFjZGQ4NzhkZTlhNC4u
MWUzN2UwZWY2YjIwMzZkMGJmOGUxMzQzM2U1MmY0OTZmYWYwYmY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTQ0MywxMyArNDQzLDIzIEBAIEV4dGVuc2lvbnNHTCYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiAqbV9l
eHRlbnNpb25zOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBkYXRhLmRhdGEsIGZhbHNlKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKK3sKKyAgICByZWFkblBpeGVsc0ltcGwoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCByZWlu
dGVycHJldF9jYXN0PEdDR0x2b2lkKj4ob2Zmc2V0KSwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVp
KiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdU
b1BpeGVsQnVmZmVyT2JqZWN0KQogewotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZs
dXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxs
IHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBw
aXhlbHMuCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgdHdvIGdsRmx1c2ggY2FsbHMgd2hlbiB0aGUgZHJp
dmVyIGJ1ZyBpcyBmaXhlZCwgaS5lLiwKKyAgICAvLyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNh
bGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5nIHBpeGVscy4KICAgICBnbDo6Rmx1c2go
KTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBHQ0dMZW51bSBm
cmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIgPyBHcmFwaGljc0NvbnRleHRHTDo6UkVB
RF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUjsKQEAgLTQ1OCwx
NyArNDY4LDI4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgZ2w6OkJpbmRGcmFt
ZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8pOwogICAgICAgICBnbDo6Rmx1c2goKTsK
ICAgICB9Ci0gICAgZ2w6OlJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBkYXRhKTsKKyAgICBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAgICBn
bDo6UmVhZG5QaXhlbHNSb2J1c3RBTkdMRSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93cywgZGF0YSk7CisgICAgR0xlbnVtIGVy
cm9yID0gZ2w6OkdldEVycm9yKCk7CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRl
LmJvdW5kUmVhZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX211bHRpc2FtcGxlRkJPKTsKIAorICAgIGlmIChl
cnJvcikgeworICAgICAgICAvLyBBTkdMRSBkZXRlY3RlZCBhIGZhaWx1cmUgZHVyaW5nIHRoZSBS
ZWFkblBpeGVsc1JvYnVzdEFOR0xFIG9wZXJhdGlvbi4gU3VyZmFjZSB0aGlzIGluIHRoZQorICAg
ICAgICAvLyBzeW50aGV0aWMgZXJyb3IgbGlzdCwgYW5kIHNraXAgdGhlIGFscGhhIGNoYW5uZWwg
Zml4dXAgYmVsb3cuCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRH
TDo6UkdCQSB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09
IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRG
Qk8gPT0gbV9mYm8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKSkpCisgICAgaWYgKCFyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVj
dCAmJiAhYXR0cnMuYWxwaGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8
fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkJHUkEpICYmICh0eXBlID09IEdyYXBoaWNz
Q29udGV4dEdMOjpVTlNJR05FRF9CWVRFKSAmJiAobV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9m
Ym8gfHwgKGF0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX211bHRp
c2FtcGxlRkJPKSkpCiAgICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKHdpZHRoLCBo
ZWlnaHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihkYXRhKSk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShyZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CiAjZW5kaWYKIH0KIAotCiAv
LyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24gZm9sbG93LCBw
b3J0ZWQgdG8gdXNlIEFOR0xFLgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxp
ZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24p
CkBAIC04OTgsMjAgKzkxOSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpidWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsCiAgICAgZ2w6OkJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKIH0K
IAotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xiaXRm
aWVsZCBhY2Nlc3MpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZ2w6Ok1hcEJ1ZmZlclJhbmdlKHRhcmdldCwg
b2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7Ci19Ci0KLUdDR0xib29sZWFuIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0
ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAgIHJldHVybiBnbDo6
VW5tYXBCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIEdDR0x2b2lkKiBwdHIg
PSBnbDo6TWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisgICAgICAgIHJldHVy
bjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7CisgICAgaWYgKCFn
bDo6VW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVu
dW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9m
ZnNldCwgR0NHTHNpemVpcHRyIHNpemUpCkBAIC05MjIsMTIgKzkzOSwxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0
LCBHQ0dMZW51bSB3cgogICAgIGdsOjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0
ZVRhcmdldCwgcmVhZE9mZnNldCwgd3JpdGVPZmZzZXQsIHNpemUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTGludCogcGFyYW1zKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50
ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0SW50ZXJuYWxm
b3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsK
KyAgICBnbDo6R2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKHRhcmdldCwgaW50ZXJuYWxm
b3JtYXQsIHBuYW1lLCBkYXRhLmJ1ZlNpemUsIG51bGxwdHIsIGRhdGEuZGF0YSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQpAQCAtMTAwOCwxNCArMTAy
NCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbAogICAgIGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0NHTHZvaWQqPihvZmZzZXQpLCAwKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBW
ZWN0b3I8R0NHTGludD4mIHBhcmFtcykKK1ZlY3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7Cisg
ICAgVmVjdG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOwogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGdsOjpHZXRBY3RpdmVV
bmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMu
ZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRhdGEoKSk7CisgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1z
aXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCks
IHBuYW1lLCByZXN1bHQuZGF0YSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBHQ0dMZW51
bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51
bSB0YXJnZXQpCkBAIC0yMTAxLDIyICsyMTE4LDYgQEAgR0NHTGludCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY28K
ICAgICByZXR1cm4gZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRy
aWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoaW5kZXgsIHBuYW1lLCB2
YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0VmVydGV4QXR0cmliaXZS
b2J1c3RBTkdMRShpbmRleCwgcG5hbWUsIHZhbHVlLmJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlLmRh
dGEpOwotfQotCiBHQ0dMc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTIzOTIsMTIgKzIzOTMsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogICAgIGdsOjpF
bmRRdWVyeSh0YXJnZXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRR
dWVyeU9iamVjdHVpdihHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiBwYXJh
bXMpCitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aShH
Q0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTHVpbnQgdmFsdWUgPSAwOwog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGds
OjpHZXRRdWVyeU9iamVjdHVpdihpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShpZCwgcG5hbWUsIDEs
IG51bGxwdHIsICZ2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiAvLyBUcmFuc2Zvcm0g
RmVlZGJhY2sgRnVuY3Rpb25zCkBAIC0yODM5LDIwICsyODQxLDI0IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxl
ciwgR0NHTGVuCiAgICAgZ2w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJh
bSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQq
IHZhbHVlKQorR0NHTGZsb2F0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFy
YW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogeworICAg
IEdDR0xmbG9hdCB2YWx1ZSA9IDAuZjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1w
bGVyUGFyYW1ldGVyZnYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1
ZSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVt
IHBuYW1lKQogeworICAgIEdDR0xpbnQgdmFsdWUgPSAwOwogICAgIGlmICghbWFrZUNvbnRleHRD
dXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAg
Z2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyLCBwbmFtZSwgdmFsdWUpOworICAgIGds
OjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShzYW1wbGVyLCBwbmFtZSwgMSwgbnVs
bHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIEdDR0xzeW5jIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0Zmll
bGQgZmxhZ3MpCkBAIC0yODk1LDEyICsyOTAxLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OndhaXRTeW5jKEdDR0xzeW5jIHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGlu
CiAgICAgZ2w6OldhaXRTeW5jKHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkK
IHsKKyAgICBHQ0dMaW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRT
eW5jaXYoc3luYywgcG5hbWUsIGJ1ZlNpemUsIG51bGxwdHIsIHZhbHVlKTsKKyAgICBnbDo6R2V0
U3luY2l2KHN5bmMsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1
ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGF1c2VUcmFuc2Zvcm1GZWVk
YmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAy
ZTFjNzk5ZTgyODUzYjMyMGI4Y2VkZGQ0YTZmZTVlNTA0YTlkODljLi40MTVjNDcwMjhjOWQ5Y2Nh
MzU2ZWFiODBlNzcyZWZlY2Y4MTk2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KQEAgLTI5MywyNiArMjkzLDI4IEBAIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0CiAgICAgaWYgKG1faXNGb3JXZWJHTDIpCiAgICAgICAgIGdsOjpFbmFibGUoR3JhcGhpY3ND
b250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAorICAgIFZlY3RvcjxB
U0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBpZiAobV9pc0ZvcldlYkdM
MikgeworICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdvcmsu
CisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25fcXVl
cnlfYm9vbGVhbiJfcyk7CisgICAgfQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCi0gICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygp
OwotCiAgICAgaWYgKCFuZWVkc0VBR0xPbk1hYygpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7Ci0gICAgICAgICAgICAiR0xf
QU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiLCAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJl
cy4KLSAgICAgICAgICAgICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBGb3Ig
Y3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJmYWNlLgotICAgICAgICB9Owot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChyZXF1aXJl
ZEV4dGVuc2lvbnMpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5zdXBwb3J0
cyhyZXF1aXJlZEV4dGVuc2lvbnNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgTE9HKFdlYkdMLCAi
TWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uICVzIiwgcmVxdWlyZWRFeHRlbnNpb25zW2ldKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZvciBJT1N1cmZhY2UtYmFja2Vk
IHRleHR1cmVzLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9BTkdMRV90
ZXh0dXJlX3JlY3RhbmdsZSJfcyk7CisgICAgICAgIC8vIEZvciBjcmVhdGluZyB0aGUgRUdMIHN1
cmZhY2UgZnJvbSBhbiBJT1N1cmZhY2UuCisgICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBl
bmQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCJfcyk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZChyZXF1aXJlZEV4dGVuc2lvbnNb
aV0pOworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisg
ICAgRXh0ZW5zaW9uc0dMJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgIGZvciAo
YXV0byYgZXh0ZW5zaW9uIDogcmVxdWlyZWRFeHRlbnNpb25zKSB7CisgICAgICAgIGlmICghZXh0
ZW5zaW9ucy5zdXBwb3J0cyhleHRlbnNpb24pKSB7CisgICAgICAgICAgICBMT0coV2ViR0wsICJN
aXNzaW5nIHJlcXVpcmVkIGV4dGVuc2lvbi4gJXMiLCBleHRlbnNpb24uY2hhcmFjdGVycygpKTsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBleHRlbnNpb25zLmVuc3Vy
ZUVuYWJsZWQoZXh0ZW5zaW9uKTsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShNQUNDQVRBTFlTVCkKLQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTog
SXQncyB1bmNsZWFyIGlmIE1BQ0NBVEFMWVNUIHNob3VsZCB0YWtlIHRoZXNlIHN0ZXBzIGFzIHdl
bGwsIGJ1dCB0aGF0CiAgICAgLy8gd291bGQgcmVxdWlyZSB0aGUgUGxhdGZvcm1TY3JlZW5NYWMg
Y29kZSB0byBiZSBleHBvc2VkIHRvIENhdGFseXN0IHRvby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKaW5kZXggN2VjODFjZjRhZTU3NzJjYWU5NzI4OGJjODBlMzY1NjQ2ZDYyN2M3Yi4uYWRk
NWYzNTJhZTRkZTZiNmQ1ZGMxOTFlNjczYjVhYWZhNTZkZTk1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRXh0ZW5zaW9uc0dMT3BlbkdMOjpFeHRlbnNp
b25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJvb2wgdXMKIEV4
dGVuc2lvbnNHTE9wZW5HTDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcg
c3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxv
bmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBm
aWx0ZXIpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6YmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NH
TGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwg
R0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZ
MSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKICAgICBpZiAoIW1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2LDcgKzU2
LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gw
LCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBsb24KICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhU
KHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwg
bWFzaywgZmlsdGVyKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBz
YW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKICNlbmRp
ZgogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMcwogI2VuZGlmCiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBs
b25nIGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xP
cGVuR0w6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
CiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRpdmlz
b3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDQ5NjI4OWNlYTBlNmEw
OWQ2ZGI3MzFmODY4YjU0OTkzYTQ0NDQ5YTguLjQ3NTAyMjZlY2VjZWY0NDM5NmU5OTM4Njc2Y2I2
MzliZTgzNDM3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTQwLDggKzQwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnNHTE9wZW5HTCgpOwogCiAgICAgLy8gRXh0
ZW5zaW9uc0dMIG1ldGhvZHMuCi0gICAgdm9pZCBibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWdu
ZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGlu
dCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NH
TGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwg
R0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3JlYXRl
VmVydGV4QXJyYXlPRVMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VT
KFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwpAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwb3BHcm91cE1hcmtlckVYVCh2b2lkKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdC
dWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdF
bGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVt
IHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2
aXNvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3Ry
aW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmlu
ZGV4IDQzYjUxNjFmYmE3NzhmOGZiNDM4NGIxYmMyZGIzOGVjZjZjNDgzZWIuLjY5M2ZiOTNhNjdm
YmM4NDA3MDgwNDgyYzhlZWJlMTY4MTcxMjczYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uY3BwCkBAIC0yODQsMTEgKzI4NCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKEdDR0xlbnVtLCBHQ0dMZW51
bSwKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEludGVybmFsZm9ybWF0
aXZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdD
R0xzaXplaSAqLCBHQ0dMaW50ICopCi17Ci0gICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCwgR0NHTGVudW0sIEdD
R0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xpbnQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTM2NiwxMSArMzYxLDYgQEAg
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1
c3RBTkdMRShHQ0dMZW51bSwgR0NHTHMKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50LCBpbnQsIEdDR0xzaXplaSwgR0NHTHNpemVp
LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xzaXplaSwgR0NHTHNpemVpICosIEdDR0xzaXplaSAq
LCBHQ0dMc2l6ZWkgKiwgdm9pZCAqLCBib29sKQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50LCBpbnQsIEdDR0xz
aXplaSwgR0NHTHNpemVpICosIEdDR0xmbG9hdCAqKQogewogICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5oCmluZGV4IGJmZTQ1MjE1NDNmZjRiMjcyMTM3ZjM0NGNlZTRhMjJkOGZiMjhj
NjQuLjNmMTA0MDE2MmZmYTA3YTJkYzEzMGFiYjIyZmIxYjFmZmMzZmRmMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKQEAgLTc1LDcgKzc1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5n
dGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QnVmZmVyUG9pbnRl
cnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5h
bWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpIG92ZXJyaWRlOwpA
QCAtOTMsNyArOTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdD
R0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShpbnQg
eCwgaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgs
IEdDR0xzaXplaSAqY29sdW1ucywgR0NHTHNpemVpICpyb3dzLCB2b2lkICpkYXRhLCBib29sIHJl
YWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkg
Kmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmNwcAppbmRleCAzNmMzZWYzOGY5OGI5OWFmMDExNTA2OTkxNDI3YmFjZWZjYmI4YWMz
Li5lMWU0M2JmNTM5Mjg4NWEyNGZiYjMzY2IyNmI1ZjZlNDkxZmJlMDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyh1bnNpZ25lZCBs
b25nIHRhcmdlCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVi
dWZmZXIobG9uZyAvKiBzcmNYMCAqLywgbG9uZyAvKiBzcmNZMCAqLywgbG9uZyAvKiBzcmNYMSAq
LywgbG9uZyAvKiBzcmNZMSAqLywgbG9uZyAvKiBkc3RYMCAqLywgbG9uZyAvKiBkc3RZMCAqLywg
bG9uZyAvKiBkc3RYMSAqLywgbG9uZyAvKiBkc3RZMSAqLywgdW5zaWduZWQgbG9uZyAvKiBtYXNr
ICovLCB1bnNpZ25lZCBsb25nIC8qIGZpbHRlciAqLykKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xp
bnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xiaXRmaWVsZCwgR0NH
TGVudW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0xFUzo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBpZiAoIW1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTAogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFtX2ds
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHCiAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
RVM6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dM
ZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAoIW1fZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LAogICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwg
dHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zm
c2V0KSksIHByaW1jb3VudCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnZlcnRl
eEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5k
ZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFtX2dsVmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCAwMTdhNDViNzM5
OGQwOTkyZWQxNDc2N2YwNzY3ZTA0YjQ2NDE2MjgzLi41Yzc2MDM3ZmE3YmM2ZThlZWUzZTY3M2Y5
OWE3ZGZjMmY3OGZiNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApAQCAtNzUsOCAr
NzUsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBFeHRlbnNpb24zRCBtZXRob2RzCiAgICAgYm9vbCBp
c0VuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBibGl0RnJhbWVidWZm
ZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBk
c3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBt
YXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
c2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0
aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZyYW1lYnVm
ZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NH
TGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwg
R0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKICAgICB2b2lkIGluc2Vy
dEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVzaEdy
b3VwTWFya2VyRVhUKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXJFWFQodm9pZCkgb3ZlcnJpZGU7CkBAIC04Nyw5ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJz
dCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NH
THVpbnQgZGl2aXNvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZv
aWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikg
b3ZlcnJpZGU7CiAKICAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHJlc2V0CiAgICAgaW50IGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggMjc2ZjEzNWE3OGY0YmRjZWM1ODdkODgwMzVjZWEzNjZhMmU2ZWI3OC4u
ZDNiZDg2MjQ3ZTNhNzVlMTVlMWY2ODFhMmNkMjc1MDFhMDhjOGM1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mKTsKICAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIGZpbmFsOwogICAg
IGJvb2wgZ2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYpOwotICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkqIGNv
dW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSBmaW5hbDsKKyAgICB2b2lkIGdldEF0dGFj
aGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xzaXplaSBtYXhDb3VudCwg
R0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVjdCogc2hhZGVycyk7CiAgICAgR0NHTGlu
dCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUp
IGZpbmFsOwogICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xib29sZWFuPiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTGludCBnZXRCdWZmZXJQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwpAQCAtMjE1LDggKzIxNSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKSBmaW5hbDsKICAg
ICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmlu
YWw7Ci0gICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliaXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
aW50PiB2YWx1ZSkgZmluYWw7CiAgICAgR0NHTHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNl
dChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgdm9pZCBoaW50
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkgZmluYWw7CkBAIC0yMzIsNyArMjMwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQg
cGFyYW0pIGZpbmFsOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBH
Q0dMZmxvYXQgdW5pdHMpIGZpbmFsOwogCi0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkgZmluYWw7CisgICAgdm9pZCByZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBk
YXRhKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpIGZpbmFsOwogCiAgICAgdm9pZCByZW5kZXJidWZm
ZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVDb3Zl
cmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpIGZpbmFsOwpAQCAtMzEz
LDEyICszMTIsMTAgQEAgcHVibGljOgogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCBidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCogZGF0YSwgR0NHTGVudW0gdXNhZ2UsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGJ1ZmZlclN1YkRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIGRzdEJ5dGVPZmZzZXQsIGNvbnN0IHZvaWQq
IHNyY0RhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKTsKLSAgICB2b2lk
IGdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZz
ZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVu
Z3RoKTsKICNlbmRpZgogICAgIHZvaWQgY29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRh
cmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogCi0gICAgdm9pZCog
bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNp
emVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgZmluYWw7Ci0gICAgR0NHTGJvb2xl
YW4gdW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGdldEJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NH
THZvaWQ+IGRhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgZmluYWw7CiAgICAgdm9pZCBmcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikgZmlu
YWw7CkBAIC0zMjcsNyArMzI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZEJ1ZmZlcihHQ0dM
ZW51bSBzcmMpIGZpbmFsOwogCiAgICAgLy8gZ2V0SW50ZXJuYWxGb3JtYXRQYXJhbWV0ZXIKLSAg
ICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBw
YXJhbXMpIGZpbmFsOworICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gZGF0YSkgZmluYWw7CiAgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgZmluYWw7CiAKICAgICB2
b2lkIHRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpIGZp
bmFsOwpAQCAtMzgwLDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCkgZmluYWw7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBnZXRRdWVyeShHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKICAgICAvLyBnZXRRdWVyeVBhcmFtZXRl
cgotICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NH
TGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkgZmluYWw7CisgICAgR0NHTHVpbnQgZ2V0UXVl
cnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVNhbXBsZXIoKSBmaW5hbDsKICAgICB2b2lk
IGRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKSBmaW5hbDsKQEAgLTM4OSw4
ICszODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAg
ICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkgZmluYWw7CiAgICAgLy8gZ2V0U2FtcGxlclBhcmFt
ZXRlcgotICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2Ft
cGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpIGZpbmFsOwotICAgIHZvaWQg
Z2V0U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0g
cG5hbWUsIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAgICBHQ0dMZmxvYXQgZ2V0U2FtcGxlclBh
cmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7
CisgICAgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBs
ZXIsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIEdDR0xzeW5jIGZlbmNlU3luYyhHQ0dM
ZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgZmluYWw7CiAgICAgR0NHTGJvb2xl
YW4gaXNTeW5jKEdDR0xzeW5jKSBmaW5hbDsKQEAgLTM5OSw3ICszOTYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3YWl0U3luYyhHQ0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQg
dGltZW91dCkgZmluYWw7CiAgICAgLy8gZ2V0U3luY1BhcmFtZXRlcgogICAgIC8vIEZJWE1FIC0g
dGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXQgdGhlIFdlYkdMIGxldmVsIGlmIHdlIHNpZ25hbCB0
aGUgV2ViR0xTeW5jIG9iamVjdC4KLSAgICB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVu
dW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50ICp2YWx1ZSkgZmluYWw7CisgICAg
R0NHTGludCBnZXRTeW5jaShHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAg
UGxhdGZvcm1HTE9iamVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpIGZpbmFsOwogICAgIHZv
aWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgZmluYWw7CkBA
IC00MTYsNyArNDEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYmluZEJ1ZmZlclJhbmdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dM
aW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIHNpemUpIGZpbmFsOwogICAgIC8vIGdldEluZGV4
ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICBWZWN0b3I8
R0NHTHVpbnQ+IGdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykgZmluYWw7Ci0gICAgdm9pZCBnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWlu
dD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJh
bXMpIGZpbmFsOworICAgIFZlY3RvcjxHQ0dMaW50PiBnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2Vz
LCBHQ0dMZW51bSBwbmFtZSkgZmluYWw7CiAKICAgICBHQ0dMdWludCBnZXRVbmlmb3JtQmxvY2tJ
bmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2Nr
TmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyCkBAIC00
MjUsMTEgKzQyMiw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCi0jaWYgIVVTRShBTkdM
RSkKLSAgICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KTsK
LSNlbmRpZgotCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAKICAgICB2b2lkIHBhaW50VG9DYW52
YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01
MjQsNiArNTE2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0
ZUF0dHJpYnV0ZXMoKTsKICAgICAKKyAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKKwogICAgIC8vIERpZCB0aGUgbW9zdCBy
ZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0
YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCA2MzU2ZjgxZjQ4MjFiNmExZWE2YzM1NTdlZGYx
ZjRlNjg4MTNmNmI5Li42Mjk4MDM4OGI2NTI0NzljY2I0MzMxYzI1ZmZlZWJiNjZjNmNiNTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtNDMxLDcg
KzQzMSw3IEBAIEV4dGVuc2lvbnNHTCYgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMoKQogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRH
TDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQotICAg
IDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7
CisgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhLmRhdGEpOwogICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdG
Qk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYmM0NGNk
NTc3ODg2NzIwMzlhZWE0ZjU5OTk2ZTRkOTRlMWMxYTBmZS4uNzE4ZDIxNjU4ZTg3ZDEzOWQwYjE4
MTlmZmFmNzcyOGZiZDUzZTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCkBAIC0yMDI5LDIyICsyMDI5LDYgQEAgR0NHTGludCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY28KICAgICByZXR1cm4gOjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBtYXBwZWRO
YW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpn
ZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwg
dmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRl
eEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGlu
dD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUuZGF0
YSk7Ci19Ci0KIEdDR0xzaXplaXB0ciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMjI3OCwxOSArMjI2MiwxOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJERGlyZWN0KEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgRwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwg
R0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0lu
c3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9u
cygpLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3Vu
dCk7CiAgICAgY2hlY2tHUFVTdGF0dXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3Vu
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3Vu
dCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQp
OwogICAgIGNoZWNrR1BVU3RhdHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
CiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlz
b3IpOworICAgIGdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgs
IGRpdmlzb3IpOwogfQogCiAjaWYgSEFWRShPUEVOR0xfNCkgJiYgRU5BQkxFKFdFQkdMMikKQEAg
LTIzMzUsNDIgKzIzMTksMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29weUJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRyLAogfQogI2VuZGlmCiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50cHRyIHNyY0J5dGVPZmZzZXQsIGNvbnN0IHZvaWQqIGRzdERhdGEsIEdD
R0x1aW50IGRzdE9mZnNldCwgR0NHTHVpbnQgbGVuZ3RoKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjQnl0ZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRz
dERhdGEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShs
ZW5ndGgpOwotfQotCiAjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKLXZv
aWQqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQg
YWNjZXNzKQotewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIDo6Z2xNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNl
dCwgbGVuZ3RoLCBhY2Nlc3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KQotewotICAgIGlmICghbWFrZUNvbnRl
eHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBHTF9GQUxTRTsKLQotICAgIHJldHVybiA6Omds
VW5tYXBCdWZmZXIodGFyZ2V0KTsKLX0KKyAgICAgICAgcmV0dXJuOworICAgIEdDR0x2b2lkKiBw
dHIgPSA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGRhdGEuYnVmU2l6ZSwgR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BUF9SRUFEX0JJVCk7CisgICAgaWYgKCFwdHIpCisgICAgICAgIHJl
dHVybjsKKyAgICBtZW1jcHkoZGF0YS5kYXRhLCBwdHIsIGRhdGEuYnVmU2l6ZSk7CisgICAgaWYg
KCE6OmdsVW5tYXBCdWZmZXIodGFyZ2V0KSkKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsKICNlbHNlCi12b2lkKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0sIEdDR0xpbnRwdHIsIEdD
R0xzaXplaXB0ciwgR0NHTGJpdGZpZWxkKQotewotICAgIHJldHVybiBudWxscHRyOworICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXQpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKKyAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9PUEVSQVRJT04pOworI2VuZGlmCiB9CiAKLUdDR0xib29sZWFuIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bm1hcEJ1ZmZlcihHQ0dMZW51bSkKLXsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0jZW5kaWYKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmxpdEZyYW1lYnVm
ZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQg
c3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xp
bnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CkBAIC0yNDE3
LDEzICsyMzg0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRCdWZmZXIo
R0NHTGVudW0gc3JjKQogfQogCiAjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNf
MykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBkYXRhKQogewog
I2lmIFVTRShPUEVOR0xfRVMpCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgOjpnbEdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgOjpnbEdldEludGVybmFsZm9y
bWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5w
YXJhbXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKICAgICBVTlVTRURfUEFS
QU0oaW50ZXJuYWxmb3JtYXQpOwpAQCAtMjQ1OSw3ICsyNDI2LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxl
dmVscywgR0MKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVu
dEJvdW5kVGV4dHVyZSgpKTsKIH0KICNlbHNlCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xz
aXplaSwgR0NHTGludCopCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5h
bGZvcm1hdGl2KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFuPEdDR0xpbnQ+
KQogewogfQogCkBAIC0yNzEyLDExICsyNjc5LDExIEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5h
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFF1
ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
dWludCogdmFsdWUpCitHQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlP
YmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBV
TlVTRURfUEFSQU0ocXVlcnkpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2FtcGxlcigpCkBAIC0yNzU2LDE4ICsyNzIzLDE5
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVuCiAgICAgVU5VU0VEX1BBUkFNKHBhcmFtKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUp
CitHQ0dMZmxvYXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0ZXJm
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNFRF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMC5mOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaXYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdD
R0xlbnVtIHBuYW1lKQorCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOwogICAgIFVOVVNF
RF9QQVJBTShwbmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsK
IH0KIAogR0NHTHN5bmMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZlbmNlU3luYyhHQ0dMZW51
bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykKQEAgLTI4MDYsMTIgKzI3NzQsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6d2FpdFN5bmMoR0NHTHN5bmMgc3luYywgR0NH
TGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW4KICAgICBVTlVTRURfUEFSQU0odGltZW91dCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGlu
dCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN5bmMpOwogICAgIFVOVVNFRF9QQVJBTShw
bmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZlNpemUpOwotICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkKQEAgLTI4OTEsMjEgKzI4NTgsMjMg
QEAgVmVjdG9yPEdDR0x1aW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUlu
ZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm8KICAgICByZXR1cm4geyB9OwogfQogCi0jaWYgSEFW
RShPUEVOR0xfNCkgfHwgSEFWRShPUEVOR0xfRVNfMykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8
R0NHTGludD4mIHBhcmFtcykKK1ZlY3RvcjxHQ0dMaW50PiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0
b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgVmVj
dG9yPEdDR0xpbnQ+IHJlc3VsdCh1bmlmb3JtSW5kaWNlcy5zaXplKCksIDApOworI2lmIEhBVkUo
T1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZv
cm1JbmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcGFyYW1zLmRh
dGEoKSk7CisgICAgOjpnbEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGlj
ZXMuc2l6ZSgpLCB1bmlmb3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCByZXN1bHQuZGF0YSgpKTsK
KyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEdDR0x1aW50IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IGNvbnN0IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJv
Z3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja05hbWUpOwotCiAgICAgcmV0dXJu
IDA7CiB9CiAKQEAgLTI5MTMsNyArMjg4Miw2IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxv
Y2tJbmRleCk7Ci0KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIApAQCAtMjkyMywyNyAr
Mjg5MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRp
bmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMCiAgICAgVU5VU0VEX1BBUkFNKHVuaWZv
cm1CbG9ja0luZGV4KTsKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrQmluZGluZyk7CiB9
Ci0jZWxzZQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMo
UGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYsIEdDR0xlbnVtLCBWZWN0
b3I8R0NHTGludD4mKQotewotfQotCi1HQ0dMdWludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJikKLXsK
LSAgICByZXR1cm4gMDsKLX0KLQotU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50KQotewotICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50LCBHQ0dMdWlu
dCkKLXsKLX0KLSNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewogICAgIFVOVVNFRF9QQVJBTSh4
KTsKICAgICBVTlVTRURfUEFSQU0oeSk7CkBAIC0yOTU0LDE4ICsyOTAzLDYgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCogZHN0RGF0YSwgR0NHTHVpbnQgZHN0T2Zmc2V0KQotewotICAgIFVO
VVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdp
ZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0
KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdERhdGEpOwot
ICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBh
cmFtcykKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggNTNiMWE3N2M2MDcwZjhlNDI0YzhjODhkNTA0MTIy
NDljN2I2NzZmNy4uYjgyZDE2NDE3YzJmNTE5MWQwNDQyNDg3NDZlNzgzOGE4NjdhZTUwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNDAsNyArNDAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCB2b2lkKiBkYXRhKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQogCi0gICAg
OjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsK
KyAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEuZGF0YSk7CiAKICAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3Vu
ZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CkBAIC0xMzAsNyArMTMwLDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Ug
a25vdyB3ZSBoYXZlIGl0LgogICAgICAgICAgICAgaWYgKHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5j
aWxCdWZmZXIpIHsKICAgICAgICAgICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5E
RVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBleHRlbnNp
b25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZGRVIsIHNhbXBs
ZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lkdGgsIGhlaWdodCk7CisgICAgICAg
ICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
TF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgd2lk
dGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkKICAg
ICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKQpAQCAtMTM4
LDEyICsxMzgsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3Mo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkgewogICAgICAgICAgICAgICAgICAgICA6OmdsQmlu
ZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdM
X1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHTF9TVEVOQ0lM
X0lOREVYOCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBH
TF9SRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CiAgICAgICAgICAgICAgICAgICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3
aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5yZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIHNhbXBsZUNvdW50LCBH
TF9ERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRU
QUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="432475"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415292</attachid>
            <date>2020-12-03 04:27:24 -0800</date>
            <delta_ts>2020-12-03 11:30:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219486-20201203142722.patch</filename>
            <type>text/plain</type>
            <size>97353</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiNzZlMTlhYjVmZTc4
NTczZTc5Yjg3NTE5Y2FmZjcwYWE4YjM2OS4uNjgzYzFjOWU2YTc2MGYyY2ExOTkyZTk4ZWQwOTZk
Y2ZlYzYwYTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NCBAQAorMjAyMC0xMi0wMyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dEdMIGhhcyBhIGNvdXBsZSBub24tcm9idXN0IGdldHRlcnMgYW5kIG90aGVyIHNtYWxsIEFQ
SSBwcm9ibGVtcyBwcmV2ZW50aW5nIEdQVSBwcm9jZXNzIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0ODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIEdyYXBoaWNz
Q29udGV4dEdMIGFuZCBFeHRlbnNpb25zR0wgdG8gbm90IGhhdmUgZHVwbGljYXRlIG5hbWVzCisg
ICAgICAgIGFuZCBoYXZlIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKKyAgICAg
ICAgQ2hhbmdlcyBmZXcgcmVtYWluaW5nIEdyYXBoaWNzQ29udGV4dEdMIGdldHRlcnMgdG8gdXNl
IHJvYnVzdCBHQ0dMU3BhbgorICAgICAgICBmb3JtLgorCisgICAgICAgIENoYW5nZXMgZmV3IHJv
YnVzdCBnZXR0ZXJzIHRvIEdDR0xTcGFuIGZvcm0gYW5kIG1vdmVzIHRoZW0gZnJvbQorICAgICAg
ICBFeHRlbnNpb25zR0wgdG8gR3JhcGhpY3NDb250ZXh0R0wuCisKKyAgICAgICAgQ2hhbmdlcyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybXMgdG8gcmV0dXJuIHRoZSBy
ZXN1bHQKKyAgICAgICAgdmVjdG9yIGluc3RlYWQgb2YgdGFraW5nIGl0IGFzIG5vbi1jb25zdCBy
ZWZlcmVuY2UuIFRoaXMgd2F5IHRoZSBvdXQKKyAgICAgICAgdmVjdG9yIGRvZXMgbm90IG5lZWQg
dG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIEdQVSBwcm9jZXNzLCB3aGVuIHRoZQorICAgICAgICBj
b2RlIGlzIGltcGxlbWVudGVkLiBUaGUgY2FsbCBzaXRlIGlzIGFsc28gbW9yZSBuYXR1cmFsLgor
CisgICAgICAgIFJlcXVlc3RzIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBzbyB0aGF0
IFdlYkdMIDIuMCBvY2NsdXNpb24KKyAgICAgICAgcXVlcmllcyB3b3JrIHdoZW4gY2FsbGVkIHdp
dGggZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUuCisKKyAgICAgICAgUmVtb3ZlcyB1
c2Ugb2YgbWFwQnVmZmVyUmFuZ2UgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBjaGFuZ2VzIHRoZW0g
dG8gYSBzaW5nbGUKKyAgICAgICAgZ2V0QnVmZmVyU3ViRGF0YS4gSWYgdGhlIG1hcHBpbmcgZXZl
ciBpcyB1c2VmdWwsIHRoZSBtb3JlIGNvbXBsZXgKKyAgICAgICAgZm9ybSBvZiBBUEkgY2FuIGJl
IGFkZGVkIGJhY2suCisKKyAgICAgICAgQ2hhbmdlcyB0aGUgZ2V0SW50ZXJuYWxmb3JtYXRpdiBj
YWxsIHNpdGUgdG8gY2hlY2sgZXJyb3Mgc2ltaWxhciB0byBvdGhlcgorICAgICAgICBnZW5lcmlj
IGVycm9yIGNoZWNraW5nOiBmaXJzdCBjbGVhciB0aGUgZXJyb3JzIGFuZCB0aGVuIGFmdGVyIHRo
ZSBjYWxsCisgICAgICAgIGNoZWNrIGlmIHRoZXJlIGFyZSBuZXcgZXJyb3JzLiBUaGlzIGlzIHNs
aWdodGx5IGxlc3MgZWZmaWNpZW50IHRoYW4KKyAgICAgICAgdXNpbmcgdGhlIGRvbWFpbiBrbm93
bGVkZ2UgdGhhdCB0aGUgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucyAtMSBpbiB0aGUgc2xvdC4KKyAg
ICAgICAgQ3VycmVudCBzaW5nbGUtdmFsdWUtYXMtcmV0dXJuLXZhbHVlIHBhdHRlcm4gY2Fubm90
IGV4cHJlc3MgdGhpcy4gSW4gdGhlCisgICAgICAgIGZ1dHVyZSwgR1BVIHByb2Nlc3MgY29udGV4
dCBjYW5ub3QgLyB3aWxsIG5vdCBzdXBwb3J0IHBhc3Npbmcgbm9uLWRlZmF1bHQKKyAgICAgICAg
aW4tYXJyYXlzLiBJbiB0aGUgZnV0dXJlLCB0aGUgZ2VuZXJpYyBlcnJvciBjaGVja2luZyBwYXR0
ZXJuIHdpbGwgcG9zc2libHkKKyAgICAgICAgYmUgaW1wcm92ZWQsIGNpcmN1bXZlbnRpbmcgdGhl
IG5lZWQgZm9yIHRoZSAtMSBkb21haW4ga25vd2xlZGdlIGNhc2UuCisKKyAgICAgICAgUmVtb3Zl
cyBnZXRWZXJ0ZXhBdHRyaWIqdiwgdGhleSBhcmUgbm90IHVzZWQuCisKKyAgICAgICAgUmVtb3Zl
cyBnZXRBdHRhY2hlZFNoYWRlcnMsIGl0IGlzIG5vdCB1c2VkLgorCisgICAgICAgIFJlbW92ZXMg
dGhlIHZlbmRvci1iYXNlZCB3b3JrYXJvdW5kcyBmcm9tIEFOR0xFIEV4dGVuc2lvbnNHTCwgaXQg
d2FzIG5vdAorICAgICAgICB1c2VkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRlcm5h
bGZvcm1hdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRTYW1wbGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZW5kVHJh
bnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFN5bmM6OnVwZGF0ZUNhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OmdldEludGVybmFsZm9ybWF0aSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMQU5HTEU6OkV4dGVuc2lvbnNHTEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFO
R0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xB
TkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTEFOR0xFOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTEFOR0xFOjpnZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6
Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
blBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZG5QaXhlbHNJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJhbWV0
ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTeW5j
aSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNp
b25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6
OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xFUzo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9yaWdp
bmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xv
Zyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UHJvZ3Jh
bUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZv
cm1hdGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRR
dWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRTYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFN5bmNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1CbG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKwogMjAyMC0xMi0wMiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBEZXRlcm1pbmUgdGhlIFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgcGFzc2luZyBpdCB0
byBTY3JvbGxpbmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAxZGJkMDU1ZDc4MTUzY2ZkNWM3
MTc0NTk3ZjA2ZTBlNTA5ZTc4ZmFhLi44ZWRjMjhiMGE4ZDM2ZTQyNDU5MWI1MjY0YWY2OWFmZjg4
OGY2MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjgxLDE3ICs2ODEsOCBAQCB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBsb25nIGxvbmcg
c3JjQnl0ZQogICAgIGlmICghY29weUxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKLSNpZiBQTEFURk9STShD
T0NPQSkKICAgICAvLyBGSVhNRTogQ29hbGVzY2UgbXVsdGlwbGUgZ2V0QnVmZmVyU3ViRGF0YSgp
IGNhbGxzIHRvIHVzZSBhIHNpbmdsZSBtYXAoKSBjYWxsCi0gICAgdm9pZCogcHRyID0gbV9jb250
ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXQsIGNoZWNrZWRTcmNCeXRlT2Zmc2V0LnVuc2FmZUdl
dCgpLCBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KGNoZWNrZWRDb3B5TGVuZ3RoUHRyLnVuc2Fm
ZUdldCgpICogY2hlY2tlZEVsZW1lbnRTaXplLnVuc2FmZUdldCgpKSwgR3JhcGhpY3NDb250ZXh0
R0w6Ok1BUF9SRUFEX0JJVCk7Ci0gICAgaWYgKHB0cikKLSAgICAgICAgbWVtY3B5KHN0YXRpY19j
YXN0PGNoYXIqPihkc3REYXRhLT5iYXNlQWRkcmVzcygpKSArIGRzdERhdGEtPmJ5dGVPZmZzZXQo
KSArIGRzdE9mZnNldCAqIGVsZW1lbnRTaXplLCBwdHIsIGNvcHlMZW5ndGggKiBlbGVtZW50U2l6
ZSk7Ci0KLSAgICBpZiAoIW1fY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0KSkKLSAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAi
Z2V0QnVmZmVyU3ViRGF0YSIsICJGYWlsZWQgd2hpbGUgdW5tYXBwaW5nIGJ1ZmZlciIpOwotI2Vu
ZGlmCi0gICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKKyAg
ICBtX2NvbnRleHQtPmdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzcmNCeXRlT2Zmc2V0LCBtYWtl
R0NHTFNwYW4oc3RhdGljX2Nhc3Q8Y2hhcio+KGRzdERhdGEtPmJhc2VBZGRyZXNzKCkpICsgZHN0
RGF0YS0+Ynl0ZU9mZnNldCgpICsgZHN0T2Zmc2V0ICogZWxlbWVudFNpemUsIGNvcHlMZW5ndGgg
KiBlbGVtZW50U2l6ZSkpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRG
cmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKQEAg
LTgzMiwyNSArODIzLDE5IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldElu
dGVybmFsZm9ybWF0UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGludCBudW1WYWx1ZXMgPSAtMTsKICNpZiBVU0UoT1BF
TkdMX0VTKSB8fCBVU0UoQU5HTEUpCi0gICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIEdyYXBoaWNzQ29udGV4dEdMOjpOVU1fU0FNUExFX0NP
VU5UUywgMSwgJm51bVZhbHVlcyk7Ci0gICAgaWYgKG51bVZhbHVlcyA8IDApIHsKLSAgICAgICAg
Ly8gQXNzdW1lIHRoZSBnZXRJbnRlcm5hbGZvcm1hdGl2IGNhbGwgZmFpbGVkOyByZXR1cm4gbnVs
bCBmcm9tIHRoZSBTQU1QTEVTIHF1ZXJ5LgorICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCk7CisgICAgR0NHTGludCBudW1WYWx1ZXMgPSBtX2NvbnRleHQtPmdl
dEludGVybmFsZm9ybWF0aSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCBHcmFwaGljc0NvbnRleHRH
TDo6TlVNX1NBTVBMRV9DT1VOVFMpOworICAgIGlmIChtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpIHx8IG51bVZhbHVlcyA8IDApCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KIAogICAgIC8vIEludGVnZXIgZm9ybWF0cyBkbyBub3Qgc3VwcG9ydCBtdWx0
aXNhbXBsaW5nLCBzbyBudW1WYWx1ZXMgPT0gMCBtYXkgb2NjdXIuCiAKICAgICBWZWN0b3I8R0NH
TGludD4gcGFyYW1zKG51bVZhbHVlcyk7CiAgICAgaWYgKG51bVZhbHVlcyA+IDApIHsKLSAgICAg
ICAgLy8gQWRkIGEgc2VudGluZWwgdG8ga25vdyB3aGV0aGVyIHRoZSBjYWxsIHN1Y2NlZWRlZCB3
aXRob3V0IGFkZGl0aW9uYWxseSBjaGVja2luZyBPcGVuR0wgZXJyb3JzLgotICAgICAgICBwYXJh
bXNbMF0gPSAtMTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBudW1WYWx1ZXMsIHBhcmFtcy5kYXRhKCkpOwotICAg
ICAgICBpZiAocGFyYW1zWzBdID09IC0xKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZ2V0SW50ZXJu
YWxmb3JtYXRpdiBjYWxsIGZhaWxlZDsgcmV0dXJuIG51bGwgZnJvbSB0aGUgU0FNUExFUyBxdWVy
eS4KKyAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBpZiAobV9jb250ZXh0LT5tb3ZlRXJy
b3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICAvLyBPbiBkZXNrdG9wIE9wZW5HTCA0LjEgb3Ig
YmVsb3cgd2UgbXVzdCBlbXVsYXRlIGdsR2V0SW50ZXJuYWxmb3JtYXRpdi4KQEAgLTg3OSwxMyAr
ODY0LDEzIEBAIFdlYkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVybmFsZm9y
bWF0UGFyYW1ldGVyKEdDR0xlbnVtIHRhcmdldCwgR0NHCiAKICAgICAvLyBTaW5jZSBtdWx0aXNh
bXBsaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBp
bnRlcm5hbCBmb3JtYXRzLAogICAgIC8vIHRoZSB2YWx1ZSBvZiBHTF9OVU1fU0FNUExFX0NPVU5U
UyB3aWxsIGJlIHplcm8gZm9yIHN1Y2ggZm9ybWF0cy4KLSAgICBudW1WYWx1ZXMgPSBpc0ludGVn
ZXJGb3JtYXQoaW50ZXJuYWxmb3JtYXQpID8gMCA6IHNhbXBsZXMuc2l6ZSgpOworICAgIEdDR0xp
bnQgbnVtVmFsdWVzID0gaXNJbnRlZ2VyRm9ybWF0KGludGVybmFsZm9ybWF0KSA/IDAgOiBzYW1w
bGVzLnNpemUoKTsKICAgICBWZWN0b3I8R0NHTGludD4gcGFyYW1zKG51bVZhbHVlcyk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KG51bVZhbHVlcyk7ICsr
aSkKICAgICAgICAgcGFyYW1zW2ldID0gc2FtcGxlc1tpXTsKICNlbmRpZgogCi0gICAgcmV0dXJu
IEludDMyQXJyYXk6OnRyeUNyZWF0ZShwYXJhbXMuZGF0YSgpLCBudW1WYWx1ZXMpOworICAgIHJl
dHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUocGFyYW1zLmRhdGEoKSwgcGFyYW1zLnNpemUoKSk7
CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW52YWxpZGF0ZUZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYXR0YWNobWVudHMpCkBA
IC0xOTY3LDkgKzE5NTIsNyBAQCBXZWJHTEFueSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRR
dWVyeVBhcmFtZXRlcihXZWJHTFF1ZXJ5JiBxdWVyeSwgR0NHTGVudW0gcAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIG1fY29u
dGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYocXVlcnkub2JqZWN0KCksIHBuYW1lLCAmcmVzdWx0KTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9j
b250ZXh0LT5nZXRRdWVyeU9iamVjdHVpKHF1ZXJ5Lm9iamVjdCgpLCBwbmFtZSkpOwogfQogCiBS
ZWZQdHI8V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVTYW1wbGVy
KCkKQEAgLTIwNTksMTcgKzIwNDIsMTEgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0U2FtcGxlclBhcmFtZXRlcihXZWJHTFNhbXBsZXImIHNhbXBsZXIsIEdDR0wKICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVI6CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1I6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1M6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1Q6IHsKLSAgICAgICAgaW50IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRT
YW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1Q6CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIub2JqZWN0KCksIHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpURVhUVVJFX01BWF9MT0Q6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9N
SU5fTE9EOiB7Ci0gICAgICAgIGZsb2F0IHZhbHVlID0gMDsKLSAgICAgICAgbV9jb250ZXh0LT5n
ZXRTYW1wbGVyUGFyYW1ldGVyZnYoc2FtcGxlci5vYmplY3QoKSwgcG5hbWUsICZ2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9NSU5fTE9EOgorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTYW1wbGVyUGFy
YW1ldGVyZihzYW1wbGVyLm9iamVjdCgpLCBwbmFtZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgImdldFNh
bXBsZXJQYXJhbWV0ZXIiLCAiSW52YWxpZCBwbmFtZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI0ODUsMjQgKzI0NjIsMjQgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0QWN0aXZlVW5pZm9ybXMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBjb25zdAogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFk
ZXIoImdldEFjdGl2ZVVuaWZvcm1zIiwgJnByb2dyYW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFZlY3RvcjxHQ0dMaW50PiByZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAw
KTsKLSAgICAKICAgICBzd2l0Y2ggKHBuYW1lKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VU5JRk9STV9UWVBFOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHBy
b2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1RZUEU6IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1J
bmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtdKGF1dG8geCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGVudW0+KHgpOyB9KTsKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX1NJWkU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9y
bXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOworICAg
IH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX1NJWkU6IHsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0ub2JqZWN0
KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQubWFwKFtd
KGF1dG8geCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHgpOyB9KTsKKyAgICB9CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5JRk9STV9CTE9DS19JTkRFWDoKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpVTklGT1JNX09GRlNFVDoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTklGT1JNX0FSUkFZX1NUUklERToKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX01BVFJJWF9TVFJJREU6Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5p
Zm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lLCByZXN1bHQpOwot
ICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOSUZPUk1fSVNfUk9XX01BSk9SOgotICAgICAgICBtX2NvbnRleHQtPmdldEFjdGl2ZVVu
aWZvcm1zKHByb2dyYW0ub2JqZWN0KCksIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmpl
Y3QoKSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdM
OjpVTklGT1JNX0lTX1JPV19NQUpPUjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fY29udGV4
dC0+Z2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbS5vYmplY3QoKSwgdW5pZm9ybUluZGljZXMsIHBu
YW1lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoW10oYXV0byB4KSB7IHJldHVybiBzdGF0
aWNfY2FzdDxib29sPih4KTsgfSk7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sICJnZXRBY3RpdmVV
bmlmb3JtcyIsICJpbnZhbGlkIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMzU3Miw4ICszNTQ5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEcKIAogICAg
IGNsZWFySWZDb21wb3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogCi0gICAgR0NHTHNpemVpIGxl
bmd0aCwgY29sdW1ucywgcm93czsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFk
blBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgMCwg
Jmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvZmZz
ZXQpLCB0cnVlKTsKKyAgICBtX2NvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgb2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlCdWZm
ZXJWaWV3JiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDQwMDcxY2EyM2IyYzM1NWUxZTgxMDY0NjE3ZDUyYjlkMmZiODdhYzYuLjcyYzI2NDQ2NjZjZjAz
YTJmNTlmMWUwOWZlOTMyOTNjYjgwYjZiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC00Mzk1LDE1
ICs0Mzk1LDEyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoCiAgICAgdm9pZCogZGF0YSA9IHBp
eGVscy5iYXNlQWRkcmVzcygpOwogCiAjaWYgVVNFKEFOR0xFKQotICAgIEdDR0xzaXplaSBsZW5n
dGggPSAwOwotICAgIEdDR0xzaXplaSBjb2x1bW5zID0gMDsKLSAgICBHQ0dMc2l6ZWkgcm93cyA9
IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVhZG5QaXhlbHNSb2J1c3RBTkdM
RSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCks
ICZsZW5ndGgsICZjb2x1bW5zLCAmcm93cywgZGF0YSwgZmFsc2UpOworICAgIG1fY29udGV4dC0+
cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBtYWtlR0NHTFNw
YW4oZGF0YSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSkpOwogI2Vsc2UKICAgICBpZiAobV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQpCiAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJl
YWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5
dGVMZW5ndGgoKSwgZGF0YSk7CiAgICAgZWxzZQotICAgICAgICBtX2NvbnRleHQtPnJlYWRQaXhl
bHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKKyAgICAgICAgbV9j
b250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1h
a2VHQ0dMU3BhbihkYXRhLCBwaXhlbHMuYnl0ZUxlbmd0aCgpKSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5kZXggNGE0MjBiZjBhMTE2Y2Nj
YWI1ZGI4N2EyNmQ4YmEyNDI4MjhmMmQ1NS4uODlhNjNlMzYyMTcxMjI0YjQxM2E0OTU0MjMxMmUz
ODM2YjZlYmMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViR0xTeW5jOjp1cGRhdGVDYWNoZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2FsbG93Q2Fj
aGVVcGRhdGUgPSBmYWxzZTsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldFN5
bmNpdihtX3N5bmMsIEdyYXBoaWNzQ29udGV4dEdMOjpTWU5DX1NUQVRVUywgc2l6ZW9mKG1fc3lu
Y1N0YXR1cyksICZtX3N5bmNTdGF0dXMpOworICAgIG1fc3luY1N0YXR1cyA9IGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0R0woKS0+Z2V0U3luY2kobV9zeW5jLCBHcmFwaGljc0NvbnRleHRHTDo6U1lO
Q19TVEFUVVMpOwogICAgIGlmIChtX3N5bmNTdGF0dXMgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVO
U0lHTkFMRUQpCiAgICAgICAgIHNjaGVkdWxlQWxsb3dDYWNoZVVwZGF0ZShjb250ZXh0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5k
ZXggMjYyN2E5YjdmNDQ2NTEwY2RjMDM0MWRiODY3MzQ0NzQ5NTE0N2I4OC4uYzRlNzc3OGRiNmE0
NDhmZDBhNWU2NTE1OTFmZWVhMTQ1Mzg2MzgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTI3OSwxMCArMjc5LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsK
IAogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKLSAgICB2aXJ0dWFsIHZvaWQgYmxp
dEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3Jj
WTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2ln
bmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYmxpdEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NH
TGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwg
R0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVt
IGZpbHRlcikgPSAwOwogCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUK
LSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJu
YWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpID0gMDsKIAogICAgIC8vIEdMX09F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0
ZVZlcnRleEFycmF5T0VTKCkgPSAwOwpAQCAtMjk2LDE1ICsyOTYsMTUgQEAgcHVibGljOgogICAg
IC8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtl
ckVYVCh2b2lkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKCkgPSAw
OwogCiAgICAgLy8gR0xfQVJCX2RyYXdfYnVmZmVycyAvIEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpID0gMDsKIAogICAgIC8vIEdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xzaXplaSBwcmltY291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKSA9IDA7CiAKICAgICAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeQog
ICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xz
aXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKSA9IDA7CkBA
IC0zMTQsNyArMzE0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRRdWVyeWl2Um9i
dXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHVpbnQqIHBh
cmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHZvaWQqKiBwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1zKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShHQ0dM
dWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkq
IGxlbmd0aCwgR0NHTHVpbnQqIHBhcmFtcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7
CkBAIC0zMzIsNyArMzMxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
ZmxvYXQqIHBhcmFtcykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldFBvaW50ZXJ2Um9idXN0
QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xz
aXplaSogbGVuZ3RoLCBHQ0dMdm9pZCoqIHBhcmFtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBy
ZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdD
R0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJP
YmplY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdD
R0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTGZsb2F0KiBwYXJhbXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludCogcGFyYW1z
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMdWludCogcGFyYW1zKSA9IDA7CkBAIC0zNTUsNyArMzUzLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMdm9pZCogZGF0YSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMZmxvYXQqIHBhcmFtcykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMaW50KiBwYXJhbXMpID0gMDsKLSNlbmRp
ZgogCiAgICAgdmlydHVhbCBib29sIGlzTlZJRElBKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c0FNRCgpID0gMDsKQEAgLTM2Nyw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhhdCBtdXN0
IGJlIGF2b2lkZWQuIFBvcnRzIHNob3VsZCBpbXBsZW1lbnQgdGhlc2UgZmxhZ3Mgb24gc3VjaCBj
b25maWd1cmF0aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25F
bXVsYXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzUmVzdHJpY3RlZE1heGlt
dW1UZXh0dXJlU2l6ZSgpID0gMDsKKyNlbmRpZgogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA0YjM2NTc5
NWNhZjRjYzg0ZThlZTYzOTU2YmNlOGY1YTZmMDc4NzkyLi5mMjc1ZjM4M2UzNjgyNzNmN2M5ZmJj
ODhjYmUyMDhkYjRmMmZjMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk3OCw3ICs5NzgsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJz
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHNpemVpIG1heENvdW50LCBHQ0dMc2l6ZWkq
IGNvdW50LCBQbGF0Zm9ybUdMT2JqZWN0KiBzaGFkZXJzKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBu
YW1lKSA9IDA7CiAKQEAgLTEwMjMsMTAgKzEwMjIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOwogCi0gICAgLy8gZ2V0VmVydGV4QXR0cmliCi0gICAgdmlydHVhbCB2b2lk
IGdldFZlcnRleEF0dHJpYmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNw
YW48R0NHTGZsb2F0PiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJpdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZh
bHVlKSA9IDA7Ci0KICAgICB2aXJ0dWFsIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpID0gMDsKQEAgLTEwOTgsNyAr
MTA5Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCAgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpID0gMDsKQEAgLTExMjIsOCArMTExOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyA9PT09PT09PT09IFdlYkdMIDIgZW50cnkgcG9pbnRzLgogCiAgICAgdmlydHVh
bCB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdy
aXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQs
IEdDR0xzaXplaXB0ciBzaXplKSA9IDA7Ci0gICAgdmlydHVhbCBHQ0dMdm9pZCogbWFwQnVmZmVy
UmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGxl
bmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykgPSAwOwotICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4g
dW5tYXBCdWZmZXIoR0NHTGVudW0gdGFyZ2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEJ1
ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBibGl0RnJhbWVidWZmZXIo
R0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZ
MSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBk
c3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NH
TGludCBsYXllcikgPSAwOwpAQCAtMTEzMiw3ICsxMTI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykgPSAwOwogCiAgICAgLy8gZ2V0SW50ZXJu
YWxGb3JtYXRQYXJhbWV0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBkYXRhKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdGV4U3Rv
cmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgPSAwOwpAQCAtMTE4
NSw3ICsxMTgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmRRdWVyeShHQ0dMZW51
bSB0YXJnZXQpID0gMDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkgPSAwOwogICAgIC8vIGdldFF1ZXJ5UGFyYW1l
dGVyCi0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3Qg
cXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogdmFsdWUpID0gMDsKKyAgICB2aXJ0dWFs
IEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVu
dW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBjcmVhdGVTYW1w
bGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlcikgPSAwOwpAQCAtMTE5NCw4ICsxMTg5LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNhbXBsZXJQ
YXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xm
bG9hdCBwYXJhbSkgPSAwOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlcmZ2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2FtcGxlclBhcmFtZXRlcml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQqIHZhbHVlKSA9IDA7CisgICAgdmlydHVhbCBHQ0dMZmxvYXQgZ2V0U2FtcGxl
clBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkgPSAw
OworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIEdDR0xzeW5j
IGZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBmbGFncykgPSAwOwog
ICAgIHZpcnR1YWwgR0NHTGJvb2xlYW4gaXNTeW5jKEdDR0xzeW5jKSA9IDA7CkBAIC0xMjAzLDcg
KzExOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHQ0dMZW51bSBjbGllbnRXYWl0U3luYyhH
Q0dMc3luYywgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVvdXQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2FpdFN5bmMoR0NHTHN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NH
TGludDY0IHRpbWVvdXQpID0gMDsKICAgICAvLyBnZXRTeW5jUGFyYW1ldGVyCi0gICAgdmlydHVh
bCB2b2lkIGdldFN5bmNpdihHQ0dMc3luYywgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMaW50KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgR0NHTGludCBnZXRTeW5jaShH
Q0dMc3luYywgR0NHTGVudW0gcG5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkgPSAwOwpAQCAtMTIyMCw3
ICsxMjE1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgc2l6ZSkgPSAwOwogICAgIC8vIGdldEluZGV4
ZWRQYXJhbWV0ZXIgLT4gdXNlIGdldFBhcmFtZXRlciBjYWxscyBhYm92ZS4KICAgICB2aXJ0dWFs
IFZlY3RvcjxHQ0dMdWludD4gZ2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
VmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lLCBWZWN0b3I8
R0NHTGludD4mIHBhcmFtcykgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPEdDR0xpbnQ+IGdldEFj
dGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1
aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFs
IEdDR0x1aW50IGdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKSA9IDA7CiAgICAgLy8gZ2V0QWN0aXZlVW5p
Zm9ybUJsb2NrUGFyYW1ldGVyCkBAIC0xMjM0LDYgKzEyMjksNyBAQCBwdWJsaWM6CiAgICAgR0NH
TGJvb2xlYW4gZ2V0Qm9vbGVhbihHQ0dMZW51bSBwbmFtZSk7CiAgICAgR0NHTGludCBnZXRJbnRl
Z2VyKEdDR0xlbnVtIHBuYW1lKTsKICAgICBHQ0dMaW50IGdldEFjdGl2ZVVuaWZvcm1CbG9ja2ko
R0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBu
YW1lKTsKKyAgICBHQ0dMaW50IGdldEludGVybmFsZm9ybWF0aShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgY29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0
dHJzOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0QXR0cmlidXRlcyhjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJzKSB7IG1fYXR0cnMgPSBhdHRyczsgfQpAQCAtMTM5Miw2ICsx
Mzg4LDEzIEBAIGlubGluZSBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMOjpnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpKEdDR0x1aW50IHByb2dyYW0sIEdDR0x1CiAgICAgcmV0dXJuIHZhbHVlWzBdOwog
fQogCitpbmxpbmUgR0NHTGludCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0SW50ZXJuYWxmb3JtYXRp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1l
KQoreworICAgIEdDR0xpbnQgdmFsdWVbMV0geyB9OworICAgIGdldEludGVybmFsZm9ybWF0aXYo
dGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVb
MF07Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDg1YzI5YTRiNmU1
NjExMGRjN2JkNzQ3YWUzMzk4N2MzNDAzNzVkZjEuLjIxNmJkMzY2OGYxMDdhODc5MTRkZTRmNjBi
YmU1MjYzMTE1ZGZmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC01MSw2ICs1MSw4IEBAIHR5cGVkZWYgbG9uZyBsb25n
IEdDR0xpbnQ2NDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEdDR0x1aW50NjQ7CiB0eXBl
ZGVmIHN0cnVjdCBfX0dMc3luYyogR0NHTHN5bmM7CiB0eXBlZGVmIHZvaWQgR0NHTHZvaWQ7Cit0
eXBlZGVmIGludHB0cl90IEdDR0x2b2lkcHRyOworCiAKIHR5cGVkZWYgR0NHTHVpbnQgUGxhdGZv
cm1HTE9iamVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCmluZGV4IDI4M2RhODJjNmE2MDJl
YTRiNTU3YzY4NmNmZDgyM2QwODFjNTVlNGEuLmI3ZGI0ZmQyMDQxYjNiYmM4YmI5YTc3MzNlODli
ZWVhYWViNmY3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKQEAgLTQ2LDI4ICs0Niw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIEV4dGVuc2lvbnNHTEFOR0xFOjpFeHRlbnNpb25zR0xBTkdM
RShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgYm9vbCB1c2VJbmRleGVkR2V0U3Ry
aW5nKQogICAgIDogbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMoZmFsc2UpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1faXNOVklESUEoZmFsc2UpCi0gICAgLCBtX2lz
QU1EKGZhbHNlKQotICAgICwgbV9pc0ludGVsKGZhbHNlKQotICAgICwgbV9pc0ltYWdpbmF0aW9u
KGZhbHNlKQotICAgICwgbV9yZXF1aXJlc0J1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbihmYWxzZSkK
LSAgICAsIG1fcmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKGZhbHNlKQogICAg
ICwgbV91c2VJbmRleGVkR2V0U3RyaW5nKHVzZUluZGV4ZWRHZXRTdHJpbmcpCiB7Ci0gICAgLy8g
RklYTUU6IGlkZWFsbHksIHJlbW92ZSB0aGlzIGluaXRpYWxpemF0aW9uIGFsdG9nZXRoZXIuIEFO
R0xFCi0gICAgLy8gc3Vic3VtZXMgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBncmFwaGljcyBkcml2
ZXIgd29ya2Fyb3VuZHMuCi0gICAgbV92ZW5kb3IgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZ2w6OkdldFN0cmluZyhHTF9WRU5ET1IpKSk7Ci0gICAgbV9yZW5kZXJlciA9
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbDo6R2V0U3RyaW5nKEdMX1JF
TkRFUkVSKSkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdmVuZG9yQ29tcG9uZW50cyA9IG1fdmVu
ZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAnKTsKLSAgICBpZiAodmVuZG9y
Q29tcG9uZW50cy5jb250YWlucygibnZpZGlhIikpCi0gICAgICAgIG1faXNOVklESUEgPSB0cnVl
OwotICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhdGkiKSB8fCB2ZW5kb3JDb21w
b25lbnRzLmNvbnRhaW5zKCJhbWQiKSkKLSAgICAgICAgbV9pc0FNRCA9IHRydWU7Ci0gICAgaWYg
KHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImludGVsIikpCi0gICAgICAgIG1faXNJbnRlbCA9
IHRydWU7Ci0gICAgaWYgKHZlbmRvckNvbXBvbmVudHMuY29udGFpbnMoImltYWdpbmF0aW9uIikp
Ci0gICAgICAgIG1faXNJbWFnaW5hdGlvbiA9IHRydWU7CiB9CiAKIEV4dGVuc2lvbnNHTEFOR0xF
Ojp+RXh0ZW5zaW9uc0dMQU5HTEUoKSA9IGRlZmF1bHQ7CkBAIC0xMDMsNyArODMsNyBAQCBib29s
IEV4dGVuc2lvbnNHTEFOR0xFOjppc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSkgfHwgbV9lbmFibGVkRXh0
ZW5zaW9ucy5jb250YWlucyhuYW1lKTsKIH0KIAotaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKK0dMaW50IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5P
X0VSUk9SOwogfQpAQCAtMTE0LDEwICs5NCwxMSBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMQU5HTEU6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcgog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gbV9jb250
ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdU
SF9BTkdMRSk7CisKICAgICBpZiAoIXNvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShzb3VyY2VMZW5ndGgpOyAvLyBHTF9U
UkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIGluY2x1ZGVzIG51bGwgdGVybWlu
YXRpb24uCi0gICAgaW50IHJldHVybmVkTGVuZ3RoID0gMDsKKyAgICBHQ0dMaW50IHJldHVybmVk
TGVuZ3RoID0gMDsKICAgICBnbDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRl
ciwgc291cmNlTGVuZ3RoLCAmcmV0dXJuZWRMZW5ndGgsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAo
IXJldHVybmVkTGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTE0Nyw3
ICsxMjgsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjppbml0aWFsaXplQXZhaWxhYmxlRXh0
ZW5zaW9ucygpCiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwg
bG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZ
MCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs
b25nIGZpbHRlcikKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgLy8gRklY
TUU6IGNvbnNpZGVyIGFkZGluZyBzdXBwb3J0IGZvciBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZS4KICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0xNTYs
NyArMTM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6YmxpdEZyYW1lYnVmZmVyKGxvbmcg
c3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcKICAgICBnbDo6QmxpdEZyYW1lYnVm
ZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEs
IGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpyZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xz
aXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDcgKzIxNiw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMQU5HTEU6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQog
ICAgIGdsOjpEcmF3QnVmZmVyc0VYVChidWZzLmJ1ZlNpemUsIGJ1ZnMuZGF0YSk7CiB9CiAKLXZv
aWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwg
R0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1v
ZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkK
IHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI0MywxNSArMjI0LDE1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdB
cnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpCiAgICAg
Z2w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3Vu
dCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmRyYXdFbGVtZW50c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdD
R0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlw
ZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0
KSksIHByaW1jb3VudCk7CisgICAgZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KG9mZnNldCksIHByaW1jb3Vu
dCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjp2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMjYsMTQgKzMwNyw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldEJ1
ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwCiAgICAg
Z2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUodGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludCAqcGFyYW1zKQotewotICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVybmFsZm9ybWF0aXZS
b2J1c3RBTkdMRSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJ
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKQEAgLTM1MCw3ICszMjMsNyBAQCB2b2lk
IEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtCiAgICAgZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdM
RShpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAotdm9pZCBFeHRl
bnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0s
IGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dM
dWludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIW1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3
ICs0MDQsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRNdWx0aXNhbXBsZWZ2Um9idXN0
QU5HTEUoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZAogICAgIGdsOjpHZXRNdWx0aXNhbXBs
ZWZ2Um9idXN0QU5HTEUocG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZhbCk7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNp
b25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM5LDcgKzQxMiw3
IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShHQ0dMZW51bSB0YXJnZXQsIGludCBsCiAgICAgZ2w6OkdldFRleExldmVsUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBH
Q0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC00NTYsNTUgKzQyOSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldFBvaW50ZXJ2Um9i
dXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNpCiAgICAgZ2w6OkdldFBv
aW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotc3Rh
dGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFzc3VtZSB0aGlzIGRv
ZXNuJ3Qgb3ZlcmZsb3cgYmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMKLSAgICAvLyB1c2Ug
Y2hlY2tlZCBhcml0aG1ldGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQg
KiA0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAg
ICBwaXhlbHNbaSArIDNdID0gMjU1OwotfQotI2VuZGlmCi0KLXZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OnJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMsIEdDR0xz
aXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkK
LXsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4g
dGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCi0gICAgLy8gYWxsIHByZXZpb3VzIHJlbmRl
cmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBwaXhlbHMuCi0gICAgZ2w6
OkZsdXNoKCk7Ci0gICAgYXV0byBhdHRycyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMo
KTsKLSAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1fY29udGV4dC0+bV9pc0Zvcldl
YkdMMiA/IEdyYXBoaWNzQ29udGV4dEdMOjpSRUFEX0ZSQU1FQlVGRkVSIDogR3JhcGhpY3NDb250
ZXh0R0w6OkZSQU1FQlVGRkVSOwotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTFN0YXRlJiBzdGF0ZSA9IG1fY29udGV4dC0+bV9zdGF0ZTsKLSAgICBp
ZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1f
bXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGlu
Z0lmTmVjZXNzYXJ5KEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBnbDo6
QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2NvbnRleHQtPm1fZmJvKTsKLSAg
ICAgICAgZ2w6OkZsdXNoKCk7Ci0gICAgfQotICAgICh2b2lkKSBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwotICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xF
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBjb2x1
bW5zLCByb3dzLCBkYXRhKTsKLSAgICBHTGVudW0gZXJyb3IgPSBnbDo6R2V0RXJyb3IoKTsKLSAg
ICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQt
Pm1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXJUYXJnZXQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgLy8gQU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5Q
aXhlbHNSb2J1c3RBTkdMRSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKLSAgICAgICAg
Ly8gc3ludGhldGljIGVycm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVw
IGJlbG93LgotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBpZiAoIXJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0ICYmICFhdHRycy5h
bHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVO
U0lHTkVEX0JZVEUpICYmIChzdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0LT5tX2ZibyB8
fCAoYXR0cnMuYW50aWFsaWFzICYmIHN0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQtPm1f
bXVsdGlzYW1wbGVGQk8pKSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lk
dGgsIGhlaWdodCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKLSNlbmRpZgotfQot
Ci12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC01MTIsNyArNDM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwKICAgICBnbDo6
R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6OmdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKQordm9pZCBFeHRlbnNpb25z
R0xBTkdMRTo6Z2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGlu
dCAqcGFyYW1zKQogewogICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTIwLDcgKzQ0NSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMQU5H
TEU6OmdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sCiAgICAgZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShwcm9ncmFtLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKQor
dm9pZCBFeHRlbnNpb25zR0xBTkdMRTo6Z2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
ICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRl
eCBhNzczMWRmZDIwYzVmMDNhMzM1OTAzZmFhNmUzOGZmNzJmNGIyMzIzLi5iMmQyNzdiOWFjOWQy
Nzg2MGY1NWFiYWJmOGNmZTU1ZTg0YjVmNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU2
LDIxICs1NiwxMiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBibGl0RnJh
bWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9uZyBzcmNZMSwg
bG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwgdW5zaWduZWQg
bG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgYmxpdEZy
YW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNY
MSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBk
c3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dM
c2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVu
dW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNOVklESUEoKSBvdmVycmlkZSB7IHJldHVy
biBtX2lzTlZJRElBOyB9Ci0gICAgYm9vbCBpc0FNRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNB
TUQ7IH0KLSAgICBib29sIGlzSW50ZWwoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW50ZWw7IH0K
LSAgICBib29sIGlzSW1hZ2luYXRpb24oKSBvdmVycmlkZSB7IHJldHVybiBtX2lzSW1hZ2luYXRp
b247IH0KLSAgICBTdHJpbmcgdmVuZG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZW5kb3I7IH0K
LQotICAgIGJvb2wgcmVxdWlyZXNCdWlsdEluRnVuY3Rpb25FbXVsYXRpb24oKSBvdmVycmlkZSB7
IHJldHVybiBtX3JlcXVpcmVzQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uOyB9Ci0gICAgYm9vbCBy
ZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSBvdmVycmlkZSB7IHJldHVybiBt
X3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZTsgfQorICAgIHZvaWQgZHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXpl
aSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdD
R0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVu
dF9tZW1vcnkKICAgICB2b2lkIHJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xp
bnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NH
THNpemVpICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7
CkBAIC03OSw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1c3RBTkdM
RShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRR
dWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NH
THNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3Ro
LCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXZS
b2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMaW50
ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpwYXJhbXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxl
bmd0aCwgR0NHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CkBAIC05Nyw3ICs4Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpICpsZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZ2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKEdDR0xlbnVtIHBuYW1lLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTHNpemVp
ICpjb2x1bW5zLCBHQ0dMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4
ZWxCdWZmZXJPYmplY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGZsb2F0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdDR0x1aW50IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFy
YW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTEzMCwxOCArMTE5LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTC4KICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogbV9jb250ZXh0OwogCi0gICAg
Ym9vbCBtX2lzTlZJRElBOwotICAgIGJvb2wgbV9pc0FNRDsKLSAgICBib29sIG1faXNJbnRlbDsK
LSAgICBib29sIG1faXNJbWFnaW5hdGlvbjsKLSAgICBib29sIG1fcmVxdWlyZXNCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb247Ci0gICAgYm9vbCBtX3JlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0
dXJlU2l6ZTsKLQogICAgIGJvb2wgbV91c2VJbmRleGVkR2V0U3RyaW5nIHsgZmFsc2UgfTsKIAot
ICAgIFN0cmluZyBtX3ZlbmRvcjsKLSAgICBTdHJpbmcgbV9yZW5kZXJlcjsKLQogICAgIC8vIFdo
ZXRoZXIgdGhlIFdlYkdMIDEuMC1yZWxhdGVkIGZsb2F0aW5nLXBvaW50IHJlbmRlcmFiaWxpdHkg
ZXh0ZW5zaW9ucyBoYXZlIGJlZW4gZW5hYmxlZC4KICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0UkdCIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0UkdC
QSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDEyN2Ez
YjhkYmEzYzNmNDRjZDc2NWRkOGZjNzExY2RkODc4ZGU5YTQuLjFlMzdlMGVmNmIyMDM2ZDBiZjhl
MTM0MzNlNTJmNDk2ZmFmMGJmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CkBAIC00NDMsMTMgKzQ0MywyMyBAQCBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPEdDR0x2
b2lkPiBkYXRhKQoreworICAgIHJlYWRuUGl4ZWxzSW1wbCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgZGF0
YS5kYXRhLCBmYWxzZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRu
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQp
Cit7CisgICAgcmVhZG5QaXhlbHNJbXBsKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQ0dMdm9p
ZCo+KG9mZnNldCksIHRydWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVp
KiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCkK
IHsKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xGbHVzaCBjYWxscyB3aGVuIHRoZSBk
cml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAotICAgIC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcg
Y2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiByZW1v
dmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGku
ZS4sCisgICAgLy8gYWxsIHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBi
ZWZvcmUgcmVhZGluZyBwaXhlbHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAgICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAgICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBt
X2lzRm9yV2ViR0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFw
aGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVI7CkBAIC00NTgsMTcgKzQ2OCwyOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJU
YXJnZXQsIG1fZmJvKTsKICAgICAgICAgZ2w6OkZsdXNoKCk7CiAgICAgfQotICAgIGdsOjpSZWFk
UGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgbW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0
QU5HTEUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgs
IGNvbHVtbnMsIHJvd3MsIGRhdGEpOworICAgIEdMZW51bSBlcnJvciA9IGdsOjpHZXRFcnJvcigp
OwogICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9t
dWx0aXNhbXBsZUZCTykKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRh
cmdldCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgLy8g
QU5HTEUgZGV0ZWN0ZWQgYSBmYWlsdXJlIGR1cmluZyB0aGUgUmVhZG5QaXhlbHNSb2J1c3RBTkdM
RSBvcGVyYXRpb24uIFN1cmZhY2UgdGhpcyBpbiB0aGUKKyAgICAgICAgLy8gc3ludGhldGljIGVy
cm9yIGxpc3QsIGFuZCBza2lwIHRoZSBhbHBoYSBjaGFubmVsIGZpeHVwIGJlbG93LgorICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKwog
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoIWF0dHJz
LmFscGhhICYmIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdORURfQllURSkgJiYgKG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRy
cy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykp
KQorICAgIGlmICghcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QgJiYgIWF0dHJzLmFscGhhICYm
IChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEgfHwgZm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dEdMOjpCR1JBKSAmJiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURf
QllURSkgJiYgKG1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fZmJvIHx8IChhdHRycy5hbnRpYWxp
YXMgJiYgbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykpKQogICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oZGF0YSkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVhZGluZ1Rv
UGl4ZWxCdWZmZXJPYmplY3QpOwogI2VuZGlmCiB9CiAKLQogLy8gVGhlIGNvbnRlbnRzIG9mIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uIGZvbGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQpAQCAtODk4LDIwICs5MTksMTYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LAogICAgIGdsOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwg
b2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiB9CiAKLXZvaWQqIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIg
b2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgbGVuZ3RoLCBHQ0dMYml0ZmllbGQgYWNjZXNzKQotewotICAg
IGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgcmV0dXJuIGdsOjpNYXBCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nl
c3MpOwotfQotCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZm
ZXIoR0NHTGVudW0gdGFyZ2V0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxH
Q0dMdm9pZD4gZGF0YSkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gZ2w6OlVubWFwQnVmZmVyKHRhcmdldCk7
CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCogcHRyID0gZ2w6Ok1hcEJ1ZmZlclJhbmdl
KHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBfUkVB
RF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICByZXR1cm47CisgICAgbWVtY3B5KGRhdGEu
ZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlmICghZ2w6OlVubWFwQnVmZmVyKHRhcmdl
dCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZm
ZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dM
aW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBz
aXplKQpAQCAtOTIyLDEyICs5MzksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3IKICAgICBn
bDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHJlYWRPZmZzZXQs
IHdyaXRlT2Zmc2V0LCBzaXplKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xpbnQqIHBhcmFtcykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xpbnQ+IGRhdGEpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgZ2w6OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgZ2w6OkdldEludGVybmFs
Zm9ybWF0aXZSb2J1c3RBTkdMRSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgZGF0YS5i
dWZTaXplLCBudWxscHRyLCBkYXRhLmRhdGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCkKQEAgLTEwMDgsMTQgKzEwMjQsMTUgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBpbnQgbGV2ZWwKICAgICBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBp
bWFnZVNpemUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0x2b2lkKj4o
b2Zmc2V0KSwgMCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3Rp
dmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWlu
dD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFtZSwgVmVjdG9yPEdDR0xpbnQ+JiBwYXJh
bXMpCitWZWN0b3I8R0NHTGludD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVu
aWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYg
dW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogeworICAgIFZlY3RvcjxHQ0dMaW50PiBy
ZXN1bHQodW5pZm9ybUluZGljZXMuc2l6ZSgpLCAwKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKLSAgICBnbDo6R2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1
bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRpY2VzLmRhdGEoKSwgcG5hbWUsIHBhcmFt
cy5kYXRhKCkpOworICAgIGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW0sIHVuaWZvcm1J
bmRpY2VzLnNpemUoKSwgdW5pZm9ybUluZGljZXMuZGF0YSgpLCBwbmFtZSwgcmVzdWx0LmRhdGEo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQpAQCAtMjEwMSwy
MiArMjExOCw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1M
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIGdsOjpHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQotewotICAgIGlmICgh
bWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsOjpHZXRWZXJ0
ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGluZGV4LCBwbmFtZSwgdmFsdWUuYnVmU2l6ZSwgbnVsbHB0
ciwgdmFsdWUuZGF0YSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZl
cnRleEF0dHJpYml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gdmFsdWUpCi17Ci0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoaW5kZXgsIHBu
YW1lLCB2YWx1ZS5idWZTaXplLCBudWxscHRyLCB2YWx1ZS5kYXRhKTsKLX0KLQogR0NHTHNpemVp
cHRyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCkBAIC0yMzkyLDEyICsyMzkzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKICAgICBnbDo6RW5kUXVlcnkodGFyZ2V0KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoR0NHTHVp
bnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCogcGFyYW1zKQorR0NHTHVpbnQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldFF1ZXJ5T2JqZWN0dWkoR0NHTHVpbnQgaWQsIEdDR0xlbnVt
IHBuYW1lKQogeworICAgIEdDR0x1aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0
Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbDo6R2V0UXVlcnlPYmplY3R1aXYo
aWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZ2w6OkdldFF1
ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOwor
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAogLy8gVHJhbnNmb3JtIEZlZWRiYWNrIEZ1bmN0aW9ucwpA
QCAtMjgzOSwyMCArMjg0MSwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzYW1w
bGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbgogICAgIGdsOjpT
YW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dMZmxvYXQgdmFsdWUgPSAw
LmY7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBs
ZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFKHNhbXBsZXIsIHBuYW1lLCAxLCBudWxscHRyLCAmdmFsdWUpOworICAgIHJldHVybiB2YWx1
ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRl
cml2KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQqIHZh
bHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBHQ0dM
aW50IHZhbHVlID0gMDsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIGdsOjpHZXRTYW1wbGVyUGFyYW1l
dGVyaXYoc2FtcGxlciwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbDo6R2V0U2FtcGxlclBhcmFtZXRl
cml2Um9idXN0QU5HTEUoc2FtcGxlciwgcG5hbWUsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlOwogfQogCiBHQ0dMc3luYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmVu
Y2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQpAQCAtMjg5NSwx
MiArMjkwMSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp3YWl0U3luYyhHQ0dM
c3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbgogICAgIGdsOjpXYWl0U3luYyhz
eW5jLCBmbGFncywgdGltZW91dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFN5bmNpdihHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xpbnQgKnZhbHVlKQorR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
U3luY2koR0NHTHN5bmMgc3luYywgR0NHTGVudW0gcG5hbWUpCiB7CisgICAgR0NHTGludCB2YWx1
ZSA9IDA7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBnbDo6R2V0U3luY2l2KHN5bmMsIHBuYW1lLCBi
dWZTaXplLCBudWxscHRyLCB2YWx1ZSk7CisgICAgZ2w6OkdldFN5bmNpdihzeW5jLCBwbmFtZSwg
MSwgbnVsbHB0ciwgJnZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggMmUxYzc5OWU4Mjg1M2IzMjBiOGNl
ZGRkNGE2ZmU1ZTUwNGE5ZDg5Yy4uNDE1YzQ3MDI4YzlkOWNjYTM1NmVhYjgwZTc3MmVmZWNmODE5
NjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0y
OTMsMjYgKzI5MywyOCBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGlmIChtX2lzRm9y
V2ViR0wyKQogICAgICAgICBnbDo6RW5hYmxlKEdyYXBoaWNzQ29udGV4dEdMOjpQUklNSVRJVkVf
UkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKKyAgICBWZWN0b3I8QVNDSUlMaXRlcmFsLCA0PiByZXF1
aXJlZEV4dGVuc2lvbnM7CisgICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKKyAgICAgICAgLy8gRm9y
IFdlYkdMIDIuMCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrLgorICAgICAgICByZXF1aXJlZEV4
dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iX3MpOworICAg
IH0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIEV4dGVu
c2lvbnNHTCYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKLQogICAgIGlmICghbmVlZHNF
QUdMT25NYWMoKSkgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHJlcXVp
cmVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICAgICAgIkdMX0FOR0xFX3RleHR1cmVfcmVjdGFu
Z2xlIiwgLy8gRm9yIElPU3VyZmFjZS1iYWNrZWQgdGV4dHVyZXMuCi0gICAgICAgICAgICAiR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiwgLy8gRm9yIGNyZWF0aW5nIHRoZSBFR0wgc3Vy
ZmFjZSBmcm9tIGFuIElPU3VyZmFjZS4KLSAgICAgICAgfTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocmVxdWlyZWRFeHRlbnNpb25zKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMocmVxdWlyZWRFeHRlbnNpb25z
W2ldKSkgewotICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0
ZW5zaW9uLiAlcyIsIHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAvLyBGb3IgSU9TdXJmYWNlLWJhY2tlZCB0ZXh0dXJlcy4KKyAgICAgICAg
cmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfQU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUiX3Mp
OworICAgICAgICAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJmYWNlIGZyb20gYW4gSU9TdXJm
YWNlLgorICAgICAgICByZXF1aXJlZEV4dGVuc2lvbnMuYXBwZW5kKCJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiX3MpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBleHRlbnNp
b25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRFeHRlbnNpb25zW2ldKTsKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIEV4dGVuc2lvbnNHTCYgZXh0
ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJl
cXVpcmVkRXh0ZW5zaW9ucykgeworICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoZXh0
ZW5zaW9uKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAiTWlzc2luZyByZXF1aXJlZCBleHRl
bnNpb24uICVzIiwgZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKyAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKGV4dGVuc2lvbik7
CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBNQUND
QVRBTFlTVCBzaG91bGQgdGFrZSB0aGVzZSBzdGVwcyBhcyB3ZWxsLCBidXQgdGhhdAogICAgIC8v
IHdvdWxkIHJlcXVpcmUgdGhlIFBsYXRmb3JtU2NyZWVuTWFjIGNvZGUgdG8gYmUgZXhwb3NlZCB0
byBDYXRhbHlzdCB0b28uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDdlYzgxY2Y0
YWU1NzcyY2FlOTcyODhiYzgwZTM2NTY0NmQ2MjdjN2IuLmFkZDVmMzUyYWU0ZGU2YjZkNWRjMTkx
ZTY3M2I1YWFmYTU2ZGU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5zaW9uc0dMT3BlbkdMKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzCiBFeHRlbnNpb25zR0xPcGVuR0w6On5F
eHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKIAotdm9pZCBFeHRlbnNpb25zR0xPcGVu
R0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNyY1gxLCBs
b25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25nIGRzdFkx
LCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQg
c3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xp
bnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNr
LCBHQ0dMZW51bSBmaWx0ZXIpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBz
cmNYMSwgbG9uCiAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gx
LCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7CiB9CiAK
LXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9u
ZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWln
aHQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQo
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiAjZW5kaWYKIH0KIAotdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBm
aXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
aW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC0yMzcsNyArMjM3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHMKICNlbmRpZgogfQogCi12
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1v
ZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NH
THNpemVpIHByaW1jb3VudCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
Myw3ICsyNTMsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgRwogI2VuZGlmCiB9CiAKLXZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAo
IW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuaAppbmRleCA0OTYyODljZWEwZTZhMDlkNmRiNzMxZjg2OGI1NDk5M2E0
NDQ0OWE4Li40NzUwMjI2ZWNlY2VmNDQzOTZlOTkzODY3NmNiNjM5YmU4MzQzN2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5FeHRlbnNpb25zR0xPcGVuR0woKTsKIAogICAgIC8vIEV4dGVuc2lvbnNHTCBtZXRob2RzLgot
ICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcgc3JjWTAsIGxvbmcgc3Jj
WDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxvbmcgZHN0WDEsIGxvbmcg
ZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBmaWx0ZXIpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3Jt
YXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSBvdmVycmlkZTsK
KyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3Jj
WTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQg
ZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBH
Q0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkgb3Zl
cnJpZGU7CiAKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGNyZWF0ZVZlcnRleEFycmF5T0VTKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9wR3JvdXBNYXJr
ZXJFWFQodm9pZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxj
b25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVp
IHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NH
TGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcnRleEF0dHJp
YkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkg
Y291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0M2I1MTYxZmJhNzc4Zjhm
YjQzODRiMWJjMmRiMzhlY2Y2YzQ4M2ViLi42OTNmYjkzYTY3ZmJjODQwNzA4MDQ4MmM4ZWViZTE2
ODE3MTI3M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAt
Mjg0LDExICsyODQsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0QnVmZmVy
UG9pbnRlcnZSb2J1c3RBTkdMRShHQ0dMZW51bSwgR0NHTGVudW0sCiAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLXZvaWQgRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgKiwgR0NHTGludCAq
KQotewotICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VmVydGV4QXR0cmli
SWl2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAq
LCBHQ0dMaW50ICopCiB7CiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CkBAIC0zNjYsMTEgKzM2MSw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0NHTGVudW0sIEdD
R0xzCiAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc1JvYnVz
dEFOR0xFKGludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBHQ0dMc2l6ZWkgKiwgR0NHTHNpemVpICosIHZvaWQg
KiwgYm9vbCkKLXsKLSAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRShHQ0dMdWludCwgaW50LCBHQ0dMc2l6ZWksIEdDR0xzaXplaSAqLCBH
Q0dMZmxvYXQgKikKIHsKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCBi
ZmU0NTIxNTQzZmY0YjI3MjEzN2YzNDRjZWU0YTIyZDhmYjI4YzY0Li4zZjEwNDAxNjJmZmEwN2Ey
ZGMxMzBhYmIyMmZiMWIxZmZjM2ZkZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5oCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFF1ZXJ5aXZSb2J1
c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1z
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEludGVybmFsZm9y
bWF0aXZSb2J1c3RBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBH
Q0dMaW50ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdDR0x1
aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAq
bGVuZ3RoLCBHQ0dMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKQEAgLTkzLDcgKzkyLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdDR0xlbnVt
IHRhcmdldCwgaW50IGxldmVsLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdD
R0xzaXplaSAqbGVuZ3RoLCBHQ0dMZmxvYXQgKnBhcmFtcykgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShHQ0dMZW51bSBwbmFtZSwgR0NHTHNp
emVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMc2l6ZWkgKmNvbHVtbnMs
IEdDR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0NHTHVp
bnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICps
ZW5ndGgsIEdDR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICB2b2lkIGdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRShHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0NHTHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpICpsZW5ndGgsIEdDR0x1aW50ICpw
YXJhbXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggMzZj
M2VmMzhmOThiOTlhZjAxMTUwNjk5MTQyN2JhY2VmY2JiOGFjMy4uZTFlNDNiZjUzOTI4ODVhMjRm
YmIzM2NiMjZiNWY2ZTQ5MWZiZTA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
CkBAIC0xMDAsMTIgKzEwMCwxMiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcodW5zaWduZWQgbG9uZyB0YXJnZQogICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
dm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6YmxpdEZyYW1lYnVmZmVyKGxvbmcgLyogc3JjWDAg
Ki8sIGxvbmcgLyogc3JjWTAgKi8sIGxvbmcgLyogc3JjWDEgKi8sIGxvbmcgLyogc3JjWTEgKi8s
IGxvbmcgLyogZHN0WDAgKi8sIGxvbmcgLyogZHN0WTAgKi8sIGxvbmcgLyogZHN0WDEgKi8sIGxv
bmcgLyogZHN0WTEgKi8sIHVuc2lnbmVkIGxvbmcgLyogbWFzayAqLywgdW5zaWduZWQgbG9uZyAv
KiBmaWx0ZXIgKi8pCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpibGl0RnJhbWVidWZmZXJB
TkdMRShHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50
LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMYml0ZmllbGQsIEdDR0xlbnVtKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBz
YW1wbGVzLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRo
LCB1bnNpZ25lZCBsb25nIGhlaWdodCkKK3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24s
IEdDR0wKICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKIH0KIAotdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0FycmF5c0luc3RhbmNl
ZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXpl
aSBwcmltY291bnQpCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghbV9nbERyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDRwog
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOwogfQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25n
IGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBFeHRlbnNpb25zR0xPcGVu
R0xFUzo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCiB7CiAgICAgaWYgKCFtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwKICAgICBtX2dsRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwog
fQogCi12b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6
dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29y
KQogewogICAgIGlmICghbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSkgewogICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmgKaW5kZXggMDE3YTQ1YjczOThkMDk5MmVkMTQ3NjdmMDc2N2Uw
NGI0NjQxNjI4My4uNWM3NjAzN2ZhN2JjNmU4ZWVlM2U2NzNmOTlhN2RmYzJmNzhmYjRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogCiAg
ICAgLy8gRXh0ZW5zaW9uM0QgbWV0aG9kcwogICAgIGJvb2wgaXNFbmFibGVkKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKGxvbmcgc3JjWDAsIGxvbmcg
c3JjWTAsIGxvbmcgc3JjWDEsIGxvbmcgc3JjWTEsIGxvbmcgZHN0WDAsIGxvbmcgZHN0WTAsIGxv
bmcgZHN0WDEsIGxvbmcgZHN0WTEsIHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBm
aWx0ZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMsIHVuc2lnbmVkIGxv
bmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3Jj
WDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQg
ZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xi
aXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlckVYVChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIG92ZXJy
aWRlOwpAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXlP
RVMoUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3QnVmZmVyc0VYVChH
Q0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3QXJyYXlz
SW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwg
R0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0
YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBsb25n
IGxvbmcgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KSBvdmVycmlkZTsKLSAgICB2b2lkIHZl
cnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBH
Q0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNp
emVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiAgICAgLy8g
RVhUIFJvYnVzdG5lc3MgLSByZXNldAogICAgIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDI3NmYx
MzVhNzhmNGJkY2VjNTg3ZDg4MDM1Y2VhMzY2YTJlNmViNzguLmQzYmQ4NjI0N2UzYTc1ZTE1ZTFm
NjgxYTJjZDI3NTAxYTA4YzhjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliSW1w
bChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7
CiAgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
THVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSBmaW5hbDsKICAgICBib29sIGdldEFjdGl2ZVVuaWZv
cm1JbXBsKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mKTsKLSAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xzaXplaSBtYXhDb3VudCwgR0NHTHNpemVpKiBjb3VudCwgUGxhdGZvcm1HTE9iamVj
dCogc2hhZGVycykgZmluYWw7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMc2l6ZWkgbWF4Q291bnQsIEdDR0xzaXplaSogY291bnQsIFBs
YXRmb3JtR0xPYmplY3QqIHNoYWRlcnMpOwogICAgIEdDR0xpbnQgZ2V0QXR0cmliTG9jYXRpb24o
UGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbDsKICAgICB2b2lkIGdl
dEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpIGZp
bmFsOwogICAgIEdDR0xpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKQEAgLTIxNSw4ICsyMTUsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
THVpbnQ+IHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwotICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+IHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDR0x1aW50
IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpIGZpbmFsOwog
ICAgIEdDR0xzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdD
R0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIHZvaWQgaGludChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIG1vZGUpIGZpbmFsOwpAQCAtMjMyLDcgKzIzMCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKSBmaW5hbDsKICAgICB2
b2lkIHBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKSBmaW5h
bDsKIAotICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IHZvaWQqIGRhdGEpIGZpbmFsOworICAgIHZvaWQgcmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkgZmluYWw7CisgICAgdm9p
ZCByZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIg
b2Zmc2V0KSBmaW5hbDsKIAogICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQpIGZpbmFsOwogICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1
ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KSBmaW5hbDsKQEAgLTMxMywxMiArMzEyLDEwIEBAIHB1Ymxp
YzoKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgYnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGNvbnN0IHZvaWQqIGRhdGEsIEdDR0xlbnVtIHVzYWdlLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IGxlbmd0aCk7CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBkc3RCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBzcmNEYXRhLCBHQ0dMdWludCBz
cmNPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBzcmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdDR0x1aW50IGxlbmd0aCk7CiAjZW5kaWYKICAgICB2
b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRl
VGFyZ2V0LCBHQ0dMaW50cHRyIHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdD
R0xzaXplaXB0ciBzaXplKSBmaW5hbDsKIAotICAgIHZvaWQqIG1hcEJ1ZmZlclJhbmdlKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBsZW5ndGgsIEdDR0xi
aXRmaWVsZCBhY2Nlc3MpIGZpbmFsOwotICAgIEdDR0xib29sZWFuIHVubWFwQnVmZmVyKEdDR0xl
bnVtIHRhcmdldCkgZmluYWw7CisgICAgdm9pZCBnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKSBmaW5hbDsK
IAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpIGZpbmFsOwpAQCAtMzI3LDcgKzMyNCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKSBmaW5hbDsKIAog
ICAgIC8vIGdldEludGVybmFsRm9ybWF0UGFyYW1ldGVyCi0gICAgdm9pZCBnZXRJbnRlcm5hbGZv
cm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTGludCogcGFyYW1zKSBmaW5hbDsKKyAgICB2
b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IGRhdGEpIGZpbmFsOwog
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQpIGZpbmFsOwogCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KSBmaW5hbDsKQEAgLTM4MCw3ICszNzcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwog
ICAgIFBsYXRmb3JtR0xPYmplY3QgZ2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkgZmluYWw7CiAgICAgLy8gZ2V0UXVlcnlQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWl2KFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWlu
dCogdmFsdWUpIGZpbmFsOworICAgIEdDR0x1aW50IGdldFF1ZXJ5T2JqZWN0dWkoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1HTE9i
amVjdCBjcmVhdGVTYW1wbGVyKCkgZmluYWw7CiAgICAgdm9pZCBkZWxldGVTYW1wbGVyKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlcikgZmluYWw7CkBAIC0zODksOCArMzg2LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1l
dGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQg
cGFyYW0pIGZpbmFsOwogICAgIC8vIGdldFNhbXBsZXJQYXJhbWV0ZXIKLSAgICB2b2lkIGdldFNh
bXBsZXJQYXJhbWV0ZXJmdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKLSAgICB2b2lkIGdldFNhbXBsZXJQYXJhbWV0ZXJp
dihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1
ZSkgZmluYWw7CisgICAgR0NHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U2Ft
cGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkg
ZmluYWw7CiAKICAgICBHQ0dMc3luYyBmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dM
Yml0ZmllbGQgZmxhZ3MpIGZpbmFsOwogICAgIEdDR0xib29sZWFuIGlzU3luYyhHQ0dMc3luYykg
ZmluYWw7CkBAIC0zOTksNyArMzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFN5bmMoR0NH
THN5bmMsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpIGZpbmFsOwogICAg
IC8vIGdldFN5bmNQYXJhbWV0ZXIKICAgICAvLyBGSVhNRSAtIHRoaXMgY2FuIGJlIGltcGxlbWVu
dGVkIGF0IHRoZSBXZWJHTCBsZXZlbCBpZiB3ZSBzaWduYWwgdGhlIFdlYkdMU3luYyBvYmplY3Qu
Ci0gICAgdm9pZCBnZXRTeW5jaXYoR0NHTHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkg
YnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpIGZpbmFsOworICAgIEdDR0xpbnQgZ2V0U3luY2koR0NH
THN5bmMsIEdDR0xlbnVtIHBuYW1lKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtR0xPYmplY3QgY3Jl
YXRlVHJhbnNmb3JtRmVlZGJhY2soKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpIGZpbmFsOwpAQCAtNDE2LDcgKzQxMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJpbmRCdWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xz
aXplaXB0ciBzaXplKSBmaW5hbDsKICAgICAvLyBnZXRJbmRleGVkUGFyYW1ldGVyIC0+IHVzZSBn
ZXRQYXJhbWV0ZXIgY2FsbHMgYWJvdmUuCiAgICAgVmVjdG9yPEdDR0x1aW50PiBnZXRVbmlmb3Jt
SW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1
bmlmb3JtTmFtZXMpIGZpbmFsOwotICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywg
R0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKSBmaW5hbDsKKyAgICBWZWN0
b3I8R0NHTGludD4gZ2V0QWN0aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBj
b25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpIGZp
bmFsOwogCiAgICAgR0NHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpIGZpbmFsOwogICAgIC8v
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja1BhcmFtZXRlcgpAQCAtNDI1LDExICs0MjIsNiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NH
TGludD4gcGFyYW1zKSBmaW5hbDsKIAotI2lmICFVU0UoQU5HTEUpCi0gICAgdm9pZCByZWFkUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpOwot
ICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQqIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7Ci0jZW5kaWYKLQogICAgIC8vIEhl
bHBlciBtZXRob2RzLgogCiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUm
IGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtNTI0LDYgKzUxNiw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAgICAg
CisgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCk7CisKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50IGRyYXdpbmcgb3BlcmF0
aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8KICAgICB2b2lkIGNoZWNr
R1BVU3RhdHVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKaW5kZXggNjM1NmY4MWY0ODIxYjZhMWVhNmMzNTU3ZWRmMWY0ZTY4ODEzZjZiOS4uNjI5ODAz
ODhiNjUyNDc5Y2NiNDMzMWMyNWZmZWViYjY2YzZjYjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBFeHRlbnNpb25z
R0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIH0KICNlbmRpZgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2Zi
byk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwogICAgIH0KLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5kYXRhKTsKICAgICBpZiAo
YXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVsdGlzYW1wbGVG
Qk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZS
QU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGJjNDRjZDU3Nzg4NjcyMDM5YWVhNGY1OTk5
NmU0ZDk0ZTFjMWEwZmUuLmU3OGJmNDc0M2I5Y2UzOTQzN2ZhYzE2ZGI2YmUwMDk4NWIwYTU4MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAt
MjAyOSwyMiArMjAyOSw2IEBAIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvCiAgICAgcmV0dXJuIDo6
Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbWFwcGVkTmFtZS51dGY4KCkuZGF0YSgpKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VmVydGV4QXR0cmliZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQot
ewotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwotfQotCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQ0dMdWludCBp
bmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQotewotICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIDo6Z2xHZXRW
ZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlLmRhdGEpOwotfQotCiBHQ0dMc2l6ZWlw
dHIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWlu
dCBpbmRleCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKQEAgLTIyNzgsMTkgKzIyNjIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBt
b2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQp
CiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAgIGNoZWNrR1BVU3Rh
dHVzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdFbGVtZW50c0lu
c3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lv
bnMoKS5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJp
bWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
bW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKICAgICBjaGVja0dQVVN0YXR1
cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZp
c29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIGdldEV4dGVuc2lv
bnMoKS52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRFeHRlbnNp
b25zKCkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKTsKIH0KIAogI2lm
IEhBVkUoT1BFTkdMXzQpICYmIEVOQUJMRShXRUJHTDIpCkBAIC0yMzM1LDQyICsyMzE5LDI1IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVt
LCBHQ0dMZW51bSwgR0NHTGludHB0ciwKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBz
cmNCeXRlT2Zmc2V0LCBjb25zdCB2b2lkKiBkc3REYXRhLCBHQ0dMdWludCBkc3RPZmZzZXQsIEdD
R0x1aW50IGxlbmd0aCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48R0NHTHZv
aWQ+IGRhdGEpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0J5dGVPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShkc3REYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oZHN0T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKLX0KLQogI2lmIEhB
VkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12b2lkKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6bWFwQnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTHNpemVpcHRyIGxlbmd0aCwgR0NHTGJpdGZpZWxkIGFjY2VzcykKLXsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiA6OmdsTWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsK
LX0KLQotR0NHTGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdD
R0xlbnVtIHRhcmdldCkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7Ci0KLSAgICByZXR1cm4gOjpnbFVubWFwQnVmZmVyKHRhcmdldCk7
Ci19CisgICAgICAgIHJldHVybjsKKyAgICBHQ0dMdm9pZCogcHRyID0gOjpnbE1hcEJ1ZmZlclJh
bmdlKHRhcmdldCwgb2Zmc2V0LCBkYXRhLmJ1ZlNpemUsIEdyYXBoaWNzQ29udGV4dEdMOjpNQVBf
UkVBRF9CSVQpOworICAgIGlmICghcHRyKQorICAgICAgICByZXR1cm47CisgICAgbWVtY3B5KGRh
dGEuZGF0YSwgcHRyLCBkYXRhLmJ1ZlNpemUpOworICAgIGlmICghOjpnbFVubWFwQnVmZmVyKHRh
cmdldCkpCisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZB
TElEX09QRVJBVElPTik7CiAjZWxzZQotdm9pZCogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1h
cEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBHQ0dMc2l6ZWlwdHIsIEdDR0xiaXRm
aWVsZCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
KyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OKTsK
KyNlbmRpZgogfQogCi1HQ0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBC
dWZmZXIoR0NHTGVudW0pCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewpAQCAtMjQxNywxMyArMjM4NCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKIH0KIAog
I2lmIEhBVkUoT1BFTkdMXzQpIHx8IEhBVkUoT1BFTkdMX0VTXzMpCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
TGludCogcGFyYW1zKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxm
b3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gZGF0YSkKIHsKICNpZiBVU0UoT1BFTkdMX0VTKQog
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6
Z2xHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZT
aXplLCBwYXJhbXMpOworICAgIDo6Z2xHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHBuYW1lLCBkYXRhLmJ1ZlNpemUsIGRhdGEuZGF0YSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXQpOwogICAgIFVOVVNFRF9QQVJBTShpbnRlcm5hbGZvcm1hdCk7CkBA
IC0yNDU5LDcgKzI0MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9y
YWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQwogICAgIG1fc3RhdGUu
dGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQog
I2Vsc2UKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYo
R0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTHNpemVpLCBHQ0dMaW50KikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTFNwYW48R0NHTGludD4pCiB7CiB9CiAKQEAgLTI3MTIsMTEg
KzI2NzksMTEgQEAgUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmEKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0UXVlcnlPYmplY3R1aXYoUGxhdGZvcm1H
TE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50KiB2YWx1ZSkKK0dDR0x1aW50
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmpl
Y3QgcXVlcnksIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJl
dHVybiAwOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
cmVhdGVTYW1wbGVyKCkKQEAgLTI3NTYsMTggKzI3MjMsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBH
Q0dMZW4KICAgICBVTlVTRURfUEFSQU0ocGFyYW0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpnZXRTYW1wbGVyUGFyYW1ldGVyZnYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0KiB2YWx1ZSkKK0dDR0xmbG9hdCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAg
VU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVy
biAwLmY7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJh
bWV0ZXJpdihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50
KiB2YWx1ZSkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFNhbXBsZXJQYXJh
bWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCisKIHsKICAg
ICBVTlVTRURfUEFSQU0oc2FtcGxlcik7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBV
TlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybiAwOwogfQogCiBHQ0dMc3luYyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZp
ZWxkIGZsYWdzKQpAQCAtMjgwNiwxMiArMjc3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp3YWl0U3luYyhHQ0dMc3luYyBzeW5jLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xp
bgogICAgIFVOVVNFRF9QQVJBTSh0aW1lb3V0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Z2V0U3luY2l2KEdDR0xzeW5jIHN5bmMsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTGludCAqdmFsdWUpCitHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpnZXRTeW5jaShHQ0dMc3luYyBzeW5jLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3luYyk7CiAgICAgVU5VU0VEX1BBUkFNKHBuYW1lKTsKLSAgICBVTlVTRURfUEFS
QU0oYnVmU2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0K
IAogUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2soKQpAQCAtMjg5MSwyMSArMjg1OCwyMyBAQCBWZWN0b3I8R0NHTHVpbnQ+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0
IHBybwogICAgIHJldHVybiB7IH07CiB9CiAKLSNpZiBIQVZFKE9QRU5HTF80KSB8fCBIQVZFKE9Q
RU5HTF9FU18zKQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9y
bXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlm
b3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUsIFZlY3RvcjxHQ0dMaW50PiYgcGFyYW1zKQorVmVj
dG9yPEdDR0xpbnQ+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1J
bmRpY2VzLCBHQ0dMZW51bSBwbmFtZSkKIHsKKyAgICBWZWN0b3I8R0NHTGludD4gcmVzdWx0KHVu
aWZvcm1JbmRpY2VzLnNpemUoKSwgMCk7CisjaWYgSEFWRShPUEVOR0xfNCkgfHwgSEFWRShPUEVO
R0xfRVNfMykKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgOjpn
bEdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMuc2l6ZSgpLCB1bmlm
b3JtSW5kaWNlcy5kYXRhKCksIHBuYW1lLCBwYXJhbXMuZGF0YSgpKTsKKyAgICA6OmdsR2V0QWN0
aXZlVW5pZm9ybXNpdihwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcy5zaXplKCksIHVuaWZvcm1JbmRp
Y2VzLmRhdGEoKSwgcG5hbWUsIHJlc3VsdC5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogR0NHTHVpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm1C
bG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlmb3Jt
QmxvY2tOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKICAgICBVTlVTRURfUEFS
QU0odW5pZm9ybUJsb2NrTmFtZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkxMyw3ICsy
ODgyLDYgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3IKIHsKICAgICBVTlVTRURfUEFSQU0ocHJv
Z3JhbSk7CiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKLQogICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCkBAIC0yOTIzLDI3ICsyODkxLDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0wKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5kZXgpOwogICAgIFVO
VVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tCaW5kaW5nKTsKIH0KLSNlbHNlCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0LCBjb25z
dCBWZWN0b3I8R0NHTHVpbnQ+JiwgR0NHTGVudW0sIFZlY3RvcjxHQ0dMaW50PiYpCi17Ci19Ci0K
LUdDR0x1aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtQmxvY2tJbmRleChQ
bGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiAwOwotfQotCi1T
dHJpbmcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
UGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQpCi17Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCwgR0NHTHVpbnQsIEdDR0x1aW50KQotewotfQotI2VuZGlmCiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHgpOwogICAgIFVOVVNFRF9QQVJBTSh5
KTsKQEAgLTI5NTQsMTggKzI5MDMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgVU5V
U0VEX1BBUkFNKG9mZnNldCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBkc3RE
YXRhLCBHQ0dMdWludCBkc3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVO
VVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJB
TShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0
eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0RGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdE9m
ZnNldCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBH
Q0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQogewogICAgIFVOVVNFRF9Q
QVJBTShwcm9ncmFtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApp
bmRleCA1M2IxYTc3YzYwNzBmOGU0MjRjOGM4OGQ1MDQxMjI0OWM3YjY3NmY3Li5iODJkMTY0MTdj
MmY1MTkxZDA0NDI0ODc0NmU3ODM4YTg2N2FlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAog
ICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworICAgIDo6Z2xSZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5kYXRhKTsKIAogICAgIGlmIChh
dHRyaWJ1dGVzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2Ft
cGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211
bHRpc2FtcGxlRkJPKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgLy8g
VXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCiAgICAg
ICAgICAgICBpZiAoc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlcikgewogICAgICAgICAg
ICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpOwotICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMucmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxl
Q291bnQsIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKQogICAgICAgICAgICAgICAgICAgICA6Omds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNI
TUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVu
Y2lsKSB7CiAgICAgICAgICAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRF
UkJVRkZFUiwgbV9zdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
cy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzYW1wbGVD
b3VudCwgR0xfU1RFTkNJTF9JTkRFWDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAg
ICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JF
TkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX1NURU5DSUxfSU5ERVg4LCB3aWR0aCwgaGVpZ2h0
KTsKICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbV9zdGVu
Y2lsQnVmZmVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMuZGVwdGgpIHsKICAgICAgICAgICAgICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0
ZW5zaW9ucy5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBz
YW1wbGVDb3VudCwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlQ291bnQsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZG
RVIsIG1fZGVwdGhCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>