<?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>203870</bug_id>
          
          <creation_ts>2019-11-05 16:40:33 -0800</creation_ts>
          <short_desc>Web Inspector: introduce browser inspector</short_desc>
          <delta_ts>2022-08-17 09:28:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>annulen</cc>
    
    <cc>ap</cc>
    
    <cc>bburg</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587588</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-05 16:40:33 -0800</bug_when>
    <thetext>We&apos;d like to extend the inspector protocol with capabilities to
* discover all existing targets and connect to them when the application is launched with a flag
* create/delete ephemeral browsing contexts
* create new pages in specified context

This would allow us to build rich automation tooling similar to what is available for Chrome and partially Firefox (see https://pptr.dev/).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587616</commentid>
    <comment_count>1</comment_count>
      <attachid>382871</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-05 17:31:38 -0800</bug_when>
    <thetext>Created attachment 382871
initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587798</commentid>
    <comment_count>2</comment_count>
      <attachid>382932</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-06 09:13:04 -0800</bug_when>
    <thetext>Created attachment 382932
initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587799</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-11-06 09:14:08 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API

This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587835</commentid>
    <comment_count>4</comment_count>
      <attachid>382938</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-06 10:28:37 -0800</bug_when>
    <thetext>Created attachment 382938
initial implementation, fixed mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587847</commentid>
    <comment_count>5</comment_count>
      <attachid>382943</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-06 11:29:00 -0800</bug_when>
    <thetext>Created attachment 382943
initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587976</commentid>
    <comment_count>6</comment_count>
      <attachid>382978</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-06 16:13:58 -0800</bug_when>
    <thetext>Created attachment 382978
initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687086</commentid>
    <comment_count>7</comment_count>
      <attachid>382978</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-09 11:52:25 -0700</bug_when>
    <thetext>Comment on attachment 382978
initial implementation

Clearing r? because this patch is a year old, and now conflicts with an existing Browser.json added since then. Please rebase and send again if interested in continuing this work.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382871</attachid>
            <date>2019-11-05 17:31:38 -0800</date>
            <delta_ts>2019-11-06 09:13:03 -0800</delta_ts>
            <desc>initial implementation</desc>
            <filename>bug-203870-20191105173138.patch</filename>
            <type>text/plain</type>
            <size>120477</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDgxNmRjMmExYjJkZGRlN2U4OWZlMWQ2YWQxNTRlODk4YjI2YmM1Li42NTczMmYxOGQxNjBlNGVk
YTM4NGRlMmI5NmQ4YzllNjM3ZmUwMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYnJvd3NlciBpbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IEJyb3dzZXIgZG9tYWluIHRoYXQgYWxsb3dzIGNyZWF0aW5nIGVwaGVtZXJhbCBjb250ZXh0cyBh
bmQgcGFnZXMuCisgICAgICAgIEV4dGVuZGVkIFRhcmdldEluZm8gd2l0aCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29udGV4dCBpdCBiZWxvbmdzIHRvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6YnVpbGRUYXJnZXRJbmZvT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6ZW5zdXJlQ29ubmVjdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246CisKIDIwMTktMTEtMDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFN1cnByZXNzIEFTQU4gaW4gU2FtcGxpbmdQcm9maWxlcidzIEZyYW1l
V2Fsa2VyOjpyZXNldEF0TWFjaGluZUZyYW1lKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiZTU3Mjk0OTBlZTdj
NzUyNzZkNzY1NjBhMGYwMjUxNGM0MTNlYzguLjE0ZmE4MDgzNjIzYWFkMWYyNzhmYjZjNjJjMDEz
MzY3ZTRhOWI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI5IEBACisyMDE5LTExLTA1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGludHJvZHVjZSBicm93c2VyIGluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQnJvd3NlciBpbnNwZWN0b3IgaXMgaW50cm9kdWNlZCB0
byBlbmFibGUgaW5zcGVjdGluZyBlbnRpcmUgYnJvd3NlciBvdmVyIHRoZQorICAgICAgICBpbnNw
ZWN0b3IgcHJvdG9jb2wuIEl0IGlzIGNvbXByaXNlZCBvZiB0aGUgZm9sbG93aW5nIGNoYW5nZXM6
CisKKyAgICAgICAgTmV3IEJyb3dzZXIgZG9tYWluIGluIHRoZSBwcm90b2NvbCBhbGxvd3MgdG8g
Y3JlYXRlL2RlbGV0ZSBlcGhlbWVyYWwgYnJvd3NpbmcKKyAgICAgICAgY29udGV4dHMgYW5kIGNy
ZWF0ZSBwYWdlcyBpbiB0aG9zZSBjb250ZXh0cy4gVGhpcyBhbGxvd3MgdG8gcnVuIG11bHRpcGxl
IHRlc3QKKyAgICAgICAgcGFnZXMgaW4gdGhlIHNhbWUgaW5zdGFuY2Ugd2hpbGUgaXNvbGF0aW5n
IHRoZWlyIHN0YXRlLgorCisgICAgICAgIEFmb3JlbWVudGlvbmVkIGRvbWFpbiBpcyBpbXBsZW1l
bnRlZCBieSBJbnNwZWN0b3JCcm93c2VyQWdlbnQgdGhhdCBkZWxlZ2F0ZXMgbW9zdAorICAgICAg
ICBvZiBpdHMgd29yayB0byB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gKEdU
SyBhbmQgV1BFIHNvIGZhcikuCisgICAgICAgIEJyb3dzZXIuY3JlYXRlUGFnZSByZXF1aXJlcyBl
bWJlZGRlciBzdXBwb3J0IHNvIHRoYXQgbmV3IHBhZ2UgaXMgY3JlYXRlZCBpbiBhCisgICAgICAg
IHdpbmRvdy4KKworICAgICAgICBCcm93c2VyIGluc3BlY3RvciBzdGF0ZSBpcyBtYW5hZ2VkIGJ5
IEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyIHdoaWNoIG93bnMgdHdvCisgICAgICAgIGFnZW50
cyBCcm93c2VyIGFuZCBUYXJnZXQuIEJyb3dzZXIgdGFyZ2V0IGFnZW50IGRpc3BhdGNoZXMgbWVz
c2FnZXMgdG8gdGhlIHRhcmdldHMKKyAgICAgICAgd2l0aGluIHBhZ2Ugc3BlY2lmaWMgdGFyZ2V0
IGFnZW50cy4gQ3VycmVudGx5IHdoZW5ldmVyIG5ldyBwYWdlIGlzIGNyZWF0ZWQgaW5zcGVjdG9y
CisgICAgICAgIHdpbGwgYXV0b2Nvbm5lY3QgdG8gaXQuCisKKyAgICAgICAgSW4gdGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gY29ubmVjdGlvbiB0byB0aGUgbmV3IGluc3BlY3RvciBjYW4gb25s
eSBiZSBlc3RhYmxpc2hlZAorICAgICAgICB2aWEgYSBwaXBlLiBJdCByZXF1aXJlcyByZW1vdGUg
aW5zcGVjdG9yIHRvIGJlIHRoZSBsYXVuY2hlciBvZiB0aGUgYnJvd3NlciBwcm9jZXNzLiBPdGhl
cgorICAgICAgICB0cmFuc3BvcnRzIGNhbiBiZSBhZGRlZCBsYXRlci4KKworICAgICAgICBCcm9z
d2VyIGluc3BlY3RvciBpcyBvbmx5IGluc3RhbnRpYXRlZCBpZiBleHBsaWNpdGx5IG9wdGVkLWlu
IGJ5IHRoZSBlbWJlZGRlciBhbmQgbXVzdAorICAgICAgICBiZSBjb25maWd1cmVkIGJlZm9yZSBm
aXJzdCBwYWdlIGlzIGNyZWF0ZWQuIEluIHRoZSBNaW5pQnJvd3NlciBpdCBpcyBndWFyZGVkIGJ5
IGEgY29tbWFuZAorICAgICAgICBsaW5lIGZsYWcuCisKKyAgICAgICAgRW1iZWRkZXIgaW50ZXJm
YWNlIGlzIHByb3ZpZGVkIGluIHRoZSBmb3JtIG9mIFdlYktpdEJyb3dzZXJJbnNwZWN0b3Igb24g
R1RLIGFuZCBXUEUuCisgICAgICAgIFRoZSBuZXcgQVBJIGFsbG93cyB0byBzZXR1cCBpbnNwZWN0
b3IgcGlwZSB0byB0aGUgcGFyZW50IHByb2Nlc3MgYW5kIHByb3ZpZGVzIGEKKyAgICAgICAgcGxh
dGZvcm0gaG9vayBmb3IgY3JlYXRpbmcgbmV3IHBhZ2UgaW4gYSBjb250ZXh0LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNl
c1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0b3IuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tCcm93c2VySW5zcGVjdG9yLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclBpcGU6OkJyb3dzZXJJbnNw
ZWN0b3JQaXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlcklu
c3BlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0QnJvd3Nlckluc3BlY3RvckNyZWF0
ZU5ld1BhZ2VJbkNvbnRleHQpOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnJvd3Nlckluc3BlY3Rv
cik6CisgICAgICAgICh3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQpOgorICAg
ICAgICAod2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJyb3dzZXJJbnNwZWN0b3Iu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJv
bnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvckNvbnRy
b2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OkJy
b3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0VG9BbGxQYWdlcyk6CisgICAgICAgIChX
ZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbUFsbFBhZ2Vz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVCcm93c2VySW5zcGVjdG9yUGlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpCcm93c2VySW5zcGVjdG9y
VGFyZ2V0QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkJyb3dz
ZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRNZXNzYWdl
VG9UYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Q
b3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
U09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6SW5zcGVjdG9yQnJvd3NlckFnZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJv
d3NlckFnZW50OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6ZGVsZXRlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6
dG9Ccm93c2VyQ29udGV4dElEUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3JCcm93c2VyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3RvckJyb3dzZXJBZ2VudENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlSW5zcGVjdG9yUGlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNw
ZWN0b3JQaXBlOjpSZW1vdGVGcm9udGVuZENoYW5uZWw6OlJlbW90ZUZyb250ZW5kQ2hhbm5lbCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OlJlbW90ZUluc3BlY3RvclBp
cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjp+UmVtb3RlSW5zcGVj
dG9yUGlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OnN0YXJ0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlwZTo6c3RvcCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OndvcmtlclJ1bik6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXI6OnNldENyZWF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5pdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hBdHRhY2hpbmdUb1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6cGFn
ZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpm
aW5kVGFyZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Y2xvc2VBbGxQYWdlcyk6CisgICAgICAgIChXZWJLaXQ6
Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50R2xpYik6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEds
aWI6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRHbGliOjpjbG9zZUFsbFdpbmRvd3MpOgorICAgICAgICAoV2ViS2l0OjpzZXNzaW9uSURG
cm9tQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dEdsaWI6OmNyZWF0ZUJyb3dzZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50R2xpYjo6ZGVsZXRlQnJvd3NlckNvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRN
YWM6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYyk6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYzo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYzo6Y2xvc2VBbGxXaW5kb3dzKToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpjcmVhdGVCcm93
c2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dE1hYzo6ZGVsZXRlQnJvd3NlckNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvSW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTExLTAzICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBDdGFwQXV0aGVudGljYXRv
cjo6dHJ5RG93bmdyYWRlIHNob3VsZCBkaXN0aW5ndWlzaCByZXF1ZXN0RGF0YSgpLm9wdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMjVmZjYxZGI5OTBhZDdmNjg4
YWE4ZWMxNmYxZGY5ZDhiNmVjNzYyLi5hN2I2ZDQ3NTNjZjBlMDMxNDAzYjJlMDJkMmExMWYyMTc3
N2JmNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTQyLDYgKzEx
NDIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX0RPTUFJTlMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpz
b24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0F1ZGl0Lmpz
b24KKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIu
anNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpz
b24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5q
c29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9Db25zb2xl
Lmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjU5
MjEyZmYwMWNjOWQ4MmEyMTAwNWIyMTI4NTcxZTdkMjMwM2U3NC4uZTE5MDA5ZjVmYmE3Yjc2MjI1
OWJiZWNhYzFlZjczM2FiNjFlNWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTIzOCw2ICsyMzgsNyBAQCBJTlNQRUNUT1JfRE9NQUlOUyA6PSBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNo
ZS5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXVkaXQu
anNvbiBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIu
anNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29u
IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24g
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9Db25zb2xlLmpzb24g
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDExNzcwOTBmYzE4NjIzZWY1MDFj
OWFkNGMzMzg5YmMyZGE5MTA3MWUuLjdlZjBlM2ZjZmZlMmE5YWI0YmIwMWI2ZTE3ZDczYzJhYWQ3
OGM3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRhcmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMwLDExICszMCwxMiBA
QAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3Bl
Y3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERp
c3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQorSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3Bl
Y3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERp
c3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0
SUQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKICAgICAsIG1fcm91dGVy
KGZyb250ZW5kUm91dGVyKQogICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxU
YXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCisgICAgLCBtX2Jyb3dzZXJDb250ZXh0SUQoYnJvd3NlckNvbnRleHRJRCkK
IHsKIH0KIApAQCAtODcsNyArODgsNyBAQCBzdGF0aWMgUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0
SW5mbzo6VHlwZSB0YXJnZXRUeXBlVG9Qcm90b2NvbFR5cGUoSW5zcGVjdG9yVGFyZwogICAgIHJl
dHVybiBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpUeXBlOjpQYWdlOwogfQogCi1zdGF0
aWMgUmVmPFByb3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm8+IGJ1aWxkVGFyZ2V0SW5mb09iamVj
dChjb25zdCBJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OlRh
cmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2JqZWN0KGNvbnN0IEluc3BlY3RvclRh
cmdldCYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCiB7CiAgICAgYXV0
byByZXN1bHQgPSBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0VGFyZ2V0SWQodGFyZ2V0LmlkZW50aWZpZXIoKSkKQEAgLTk1LDYgKzk2LDggQEAgc3Rh
dGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdldEluZm9PYmpl
Y3QoY29uc3QgSW5zcGVjdG9yVGEKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAodGFyZ2V0
LmlzUHJvdmlzaW9uYWwoKSkKICAgICAgICAgcmVzdWx0LT5zZXRJc1Byb3Zpc2lvbmFsKHRydWUp
OworICAgIGlmICghYnJvd3NlckNvbnRleHRJRC5pc0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC0+
c2V0QnJvd3NlckNvbnRleHRJZChicm93c2VyQ29udGV4dElEKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMDgsNyArMTExLDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFy
Z2V0Q3JlYXRlZChJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKIAogICAgIHRhcmdldC5jb25uZWN0
KGNvbm5lY3Rpb25UeXBlKCkpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdldENy
ZWF0ZWQoYnVpbGRUYXJnZXRJbmZvT2JqZWN0KHRhcmdldCkpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQsIG1fYnJv
d3NlckNvbnRleHRJRCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXRE
ZXN0cm95ZWQoSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCkBAIC0xMzUsNiArMTM4LDE4IEBAIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KGNvbnN0
IFN0cmluZyYgb2xkVGFyZ2V0SUQsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpZENvbW1p
dFByb3Zpc2lvbmFsVGFyZ2V0KG9sZFRhcmdldElELCBjb21taXR0ZWRUYXJnZXRJRCk7CiB9CiAK
K3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmVuc3VyZUNvbm5lY3RlZChjb25zdCBTdHJpbmcm
IHRhcmdldElEKQoreworICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogdGFyZ2V0ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJRCk7CisgICAgaWYgKCF0
YXJnZXQpCisgICAgICAgIHJldHVybjsKKworICAgIHRhcmdldC0+Y29ubmVjdChjb25uZWN0aW9u
VHlwZSgpKTsKK30KKwogRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBJbnNwZWN0b3JU
YXJnZXRBZ2VudDo6Y29ubmVjdGlvblR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3JvdXRl
ci5oYXNMb2NhbEZyb250ZW5kKCkgPyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVj
dGlvblR5cGU6OkxvY2FsIDogSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25U
eXBlOjpSZW1vdGU7CkBAIC0xNDQsNyArMTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6Y29ubmVjdFRvVGFyZ2V0cygpCiB7CiAgICAgZm9yIChJbnNwZWN0b3JUYXJnZXQqIHRhcmdl
dCA6IG1fdGFyZ2V0cy52YWx1ZXMoKSkgewogICAgICAgICB0YXJnZXQtPmNvbm5lY3QoY29ubmVj
dGlvblR5cGUoKSk7Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVk
KGJ1aWxkVGFyZ2V0SW5mb09iamVjdCgqdGFyZ2V0KSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCgqdGFyZ2V0LCBtX2Jy
b3dzZXJDb250ZXh0SUQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCmlu
ZGV4IDM4Y2IzMTg5ODZiMzFjNGRlZDE5YmE5YmVhZTc4NTVkMmI1NGMyM2EuLjA1NTdmODMzYzNk
NmYxZGEwOTA4NmRkNDZjZTQ1OTkzZDczMTUyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
aApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJn
ZXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3RvclRhcmdldEFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRl
ciYsIEJhY2tlbmREaXNwYXRjaGVyJik7CisgICAgSW5zcGVjdG9yVGFyZ2V0QWdlbnQoRnJvbnRl
bmRSb3V0ZXImLCBCYWNrZW5kRGlzcGF0Y2hlciYsIGNvbnN0IFN0cmluZyYgYnJvd3NlckNvbnRl
eHRJRCk7CiAgICAgfkluc3BlY3RvclRhcmdldEFnZW50KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
bnNwZWN0b3JBZ2VudEJhc2UKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFy
Z2V0Q3JlYXRlZChJbnNwZWN0b3JUYXJnZXQmKTsKICAgICB2b2lkIHRhcmdldERlc3Ryb3llZChJ
bnNwZWN0b3JUYXJnZXQmKTsKICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KGNv
bnN0IFN0cmluZyYgb2xkVGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgY29tbWl0dGVkVGFyZ2V0SUQp
OworICAgIHZvaWQgZW5zdXJlQ29ubmVjdGVkKGNvbnN0IFN0cmluZyYgdGFyZ2V0SUQpOwogCiAg
ICAgLy8gVGFyZ2V0IG1lc3NhZ2VzLgogICAgIHZvaWQgc2VuZE1lc3NhZ2VGcm9tVGFyZ2V0VG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpA
QCAtNjgsNiArNjksNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIm
IG1fcm91dGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+
IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZjxUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBjb25zdCBTdHJpbmcgbV9icm93c2VyQ29udGV4dElE
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CiAgICAg
Ym9vbCBtX2lzQ29ubmVjdGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
ZDRhM2JmZTZmM2M5NGMyOWEyNzQ5Zjg4NjkzOWYyOTFlZTlmNjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbgpA
QCAtMCwwICsxLDQwIEBACit7CisgICAgImRvbWFpbiI6ICJCcm93c2VyIiwKKyAgICAiYXZhaWxh
YmlsaXR5IjogWyJ3ZWIiXSwKKyAgICAidHlwZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJpZCI6ICJDb250ZXh0SUQiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCBvZiBCcm93c2VyIGNvbnRleHQuIgorICAgICAgICB9
CisgICAgXSwKKyAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1l
IjogImNsb3NlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDbG9zZSBicm93c2VyLiIK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY3JlYXRlQ29udGV4
dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBuZXcgZXBoZW1lcmFsIGJy
b3dzZXIgY29udGV4dC4iLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJicm93c2VyQ29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgImRl
c2NyaXB0aW9uIjogIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb250ZXh0LiIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJkZWxl
dGVDb250ZXh0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZWxldGVzIGJyb3dzZXIg
Y29udGV4dCBwcmV2aW91c2x5IGNyZWF0ZWQgd2l0aCBjcmVhdGVDb250ZWN0LiBUaGUgY29tbWFu
ZCB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgYWxsIHBhZ2VzIHRoYXQgdXNlIHRoZSBjb250ZXh0
LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJyb3dzZXJDb250ZXh0SWQiLCAiJHJlZiI6ICJDb250ZXh0SUQiLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBvZiB0aGUgY29udGV4dCB0byBkZWxldGUuIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNyZWF0ZVBhZ2Ui
LAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJicm93c2VyQ29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIkpTT04gSW5zcGVjdG9yIFByb3RvY29sIG1lc3NhZ2UgKGNvbW1h
bmQpIHRvIGJlIGRpc3BhdGNoZWQgb24gdGhlIGJhY2tlbmQuIiB9CisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJn
ZXRJZCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmll
ciBmb3IgdGhlIHBhZ2UgdGFyZ2V0LiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAg
XQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9UYXJnZXQuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
VGFyZ2V0Lmpzb24KaW5kZXggMjQwY2Q0MmU2N2UzMjUwZTQzNGMwYmY2ZjlkMTYxNjg1MDVhOGMy
Mi4uMjgxNTdhYzExMzkwNWQwYjQ3ZWYzZWNhMDI4N2I2MDJmMzJkZWVkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCkBA
IC0xMCw3ICsxMCw4IEBACiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9u
IjogIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFyZ2V0LiIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsicGFnZSIsICJz
ZXJ2aWNlLXdvcmtlciIsICJ3b3JrZXIiXSB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aXNQcm92aXNpb25hbCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgcHJvdmlzaW9u
YWwgcGFnZSB0YXJnZXQgaS5lLiBTdWNoIHRhcmdldCBtYXkgYmUgY3JlYXRlZCB3aGVuIGN1cnJl
bnQgcGFnZSBzdGFydHMgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uIEV2ZW50dWFsbHkgZWFjaCBw
cm92aXNpb25hbCB0YXJnZXQgaXMgZWl0aGVyIGNvbW1pdHRlZCBhbmQgc3dhcHMgd2l0aCB0aGUg
Y3VycmVudCB0YXJnZXQgb3IgZ2V0cyBkZXN0cm95ZWQsIGUuZy4gaW4gY2FzZSBvZiBsb2FkIHJl
cXVlc3QgZmFpbHVyZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9u
YWwiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IlRydWUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFy
Z2V0IGkuZS4gU3VjaCB0YXJnZXQgbWF5IGJlIGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3Rh
cnRzIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwg
dGFyZ2V0IGlzIGVpdGhlciBjb21taXR0ZWQgYW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFy
Z2V0IG9yIGdldHMgZGVzdHJveWVkLCBlLmcuIGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1
cmUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJZCIsICIk
cmVmIjogIkJyb3dzZXIuQ29udGV4dElEIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CiAgICAgICAgICAg
ICBdCiAgICAgICAgIH0KICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZWRiZmI1NmU0OWJjMmEwM2E4
YWJkYmY4NzE0MWRjZDA3ZTVkYTkzZi4uM2VkNWYzYzdkOGNlNWZkNDI0NzQ0YzI5ODRhOGJlYmFm
YTgwZDVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNDAsMTcgKzI0MCwyMiBAQCBTaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwCiAKIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwCiBVSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAor
VUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL0Jyb3dz
ZXJJbnNwZWN0b3JQaXBlLmNwcAorVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5jcHAKIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKIFVJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmNwcAogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAogVUlQcm9j
ZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorVUlQcm9jZXNzL0luc3Bl
Y3RvckJyb3dzZXJBZ2VudC5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAK
IFVJUHJvY2Vzcy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAKIFVJUHJvY2Vzcy9QYWdlTG9hZFN0
YXRlLmNwcAogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCiBVSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5jcHAKIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKK1VJUHJv
Y2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmNwcAogVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAogVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3Mv
U3RhdGlzdGljc1JlcXVlc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTIyYWFiYTAz
MTAxZWY3YzMwYThhMDQ0YThkY2EyOGY4MTAxZWVjMS4uMzg2ZGQ4NTg2YzQ2MTE4OTU2MzFiMDJm
ZDU5M2YxMzg3YzRmOGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjQzLDYgKzI0Myw3
IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1
dG9tYXRpb25TZXNzaW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tCcm93c2VySW5zcGVj
dG9yLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IGM5ZTE1M2Q2YTJjZDM4NmQ4Njg0MDE5NTYzNGJjZmU3MjhkZmJlZmYuLjg3
MGIyYzg1MDc3YTRiMDc3Y2JjNWVhMzVmNDMyMzVlYWNmNzRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dApAQCAtMTI5LDYgKzEyOSw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNr
Rm9yd2FyZExpc3QuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJy
b3dzZXJJbnNwZWN0b3IuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENv
bnRleHRNZW51Q2xpZW50LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRD
b29raWVNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDcmVk
ZW50aWFsLmNwcCBAbm8tdW5pZnkKQEAgLTIyNCw2ICsyMjUsNyBAQCBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvdW5peC9XZWJzaXRlRGF0YVN0b3JlVW5peC5jcHAKIAogVUlQcm9jZXNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUNhaXJvLmNwcCBAbm8tdW5pZnkKIAorVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKIFVJUHJv
Y2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA1
YjUxNGQ1MjE2ZWM1ZDk2Y2Q1ODNmNjgyN2Y0ODU4NjhjNWUyYTFlLi5mY2JiYjc4MWEzMTExMGZh
ZWRlMGEwZjMwMzVkNzQwMmQ1YWRhZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTExOCw2ICsx
MTgsNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9y
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVu
dC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgQG5v
LXVuaWZ5CkBAIC0xODcsNiArMTg4LDcgQEAgVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKIFVJUHJvY2Vzcy9nZW9j
bHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAogCitVSVByb2Nlc3MvZ2xpYi9JbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKIFVJ
UHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBmOWE0Y2FkZmFl
MTRiODBjNDBiMDhjYzg3OGZmZDVlNDEwMWMxY2ZlLi4xMzg2ZWQ2M2VjYTI3OWIwMDcwNmQxN2I5
Y2MyYmI1MWE4YTI5MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tCcm93c2VySW5zcGVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjhmZGRhNzczYzQ4YzkzOGE0NWEyMWQ3ZjUzNjkzMmFkZTkxMjE2
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tCcm93c2VySW5zcGVjdG9yLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKgorICogbWV0OgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0
aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFC
TEUobWFjb3MoMTAuMTUuMCkpCitAaW50ZXJmYWNlIF9XS0Jyb3dzZXJJbnNwZWN0b3IgOiBOU09i
amVjdAorKyAodm9pZClpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yUGlwZTsKK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tCcm93c2VySW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJkN2JiNTkw
YzZjOWRkNzkxYTJmZWI4ZmM2ZjI2NTFmOGU0NTRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tCcm93c2VySW5zcGVjdG9yLm1tCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICoKKyAqIG1ldDoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiX1dLQnJvd3Nlckluc3BlY3Rvci5oIgorCisjaW5jbHVkZSAiQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQaXBlLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tCcm93c2VySW5zcGVjdG9y
CisKKysgKHZvaWQpaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclBpcGUKK3sKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKyAgICBjbGFzcyBCcm93c2VySW5zcGVjdG9yUGlwZSB7CisgICAg
cHVibGljOgorICAgICAgICBCcm93c2VySW5zcGVjdG9yUGlwZSgpCisgICAgICAgICAgICA6IG1f
YnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKQorICAgICAgICAgICAgLCBtX3JlbW90ZUluc3Bl
Y3RvclBpcGUobV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgeworICAgICAg
ICB9CisgICAgICAgIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyIG1fYnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXI7CisgICAgICAgIFJlbW90ZUluc3BlY3RvclBpcGUgbV9yZW1vdGVJbnNwZWN0
b3JQaXBlOworICAgIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEJyb3dzZXJJbnNwZWN0
b3JQaXBlPiBwaXBlOworI2VuZGlmCit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDJlZjVkODVkYmM4ZmFmMGMzMWI0NzE2N2MxNzc4ZWY4YTgzZTAxMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dz
ZXJJbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEJyb3dzZXJJbnNwZWN0b3IuaCIKKwor
I2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JQaXBlLmgiCisjaW5jbHVkZSAiV2ViS2l0QnJvd3Nl
ckluc3BlY3RvclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlw
ZS5oPgorCisvKioKKyAqIFNFQ1RJT046IFdlYktpdEJyb3dzZXJJbnNwZWN0b3IKKyAqIEBTaG9y
dF9kZXNjcmlwdGlvbjogQWNjZXNzIHRvIHRoZSBXZWJLaXQgYnJvd3NlciBpbnNwZWN0b3IKKyAq
IEBUaXRsZTogV2ViS2l0QnJvd3Nlckluc3BlY3RvcgorICoKKyAqIFRoZSBXZWJLaXQgQnJvd3Nl
ciBJbnNwZWN0b3IgaXMgYW4gZXhwZXJpbWVudGFsIEFQSSB0aGF0IHByb3ZpZGVzCisgKiBhY2Nl
c3MgdG8gdGhlIGluc3BlY3RvciB2aWEgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgcHJvdG9jb2wuIFRo
ZSBwcm90b2NvbAorICogYWxsb3dzIHRvIGNyZWF0ZSBlcGhlbWVyYWwgY29udGV4dHMgYW5kIGNy
ZWF0ZSBwYWdlcyBpbiB0aGVtIGFuZCB0aGVuCisgKiBtYW5pcHVsYXRlIHRoZW0gdXNpbmcgdGhl
IGluc3BlY3RvciBjb21tYW5kcy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvcgorICogdGhlIGJyb3dz
ZXIgYXV0b21hdGlvbiBvciByZW1vdGUgZGVidWdnaW5nLgorICoKKyAqIEN1cnJlbnRseSB0aGUg
cHJvdG9jb2wgY2FuIGJlIGV4cG9zZWQgdG8gdGhlIHBhcmVudCBwcm9jZXNzIHZpYSBhIHVuaXgK
KyAqIHBpcGUuCisgKi8KKworZW51bSB7CisgICAgQ1JFQVRFX05FV19QQUdFLAorCisgICAgTEFT
VF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgewor
ICAgIGludCB1bnVzZWQgeyAwIH07Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0QnJv
d3Nlckluc3BlY3Rvciwgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yLCBHX1RZUEVfT0JKRUNUKQor
CitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdEJyb3dzZXJJbnNw
ZWN0b3JDbGFzcyogZmluZENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdEJy
b3dzZXJJbnNwZWN0b3I6OmNyZWF0ZS1uZXctcGFnZToKKyAgICAgKiBAaW5zcGVjdG9yOiB0aGUg
I1dlYktpdEJyb3dzZXJJbnNwZWN0b3Igb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisg
ICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3BlY3RvciBpcyByZXF1ZXN0ZWQgdG8g
Y3JlYXRlIGEgbmV3IHBhZ2UgaW4gdGhlIHByb3ZpZGVkCisgICAgICogI1dlYktpdFdlYkNvbnRl
eHQuCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gaW5zcGVjdG9y
IHJlY2VpdmVzICdCcm93c2VyLmNyZWF0ZVBhZ2UnIGNvbW1hbmQKKyAgICAgKiBmcm9tIGl0cyBy
ZW1vdGUgY2xpZW50LiBJZiB0aGUgc2lnbmxhIGlzIG5vdCBoYW5kbGVkIHRoZSBjb21tYW5kIHdp
bGwgZmFpbC4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVXZWJLaXRXZWJWaWV3IHRoYXQgY29u
dGFpbnMgY3JlYXRlZCBwYWdlLgorICAgICAqLworICAgIHNpZ25hbHNbQ1JFQVRFX05FV19QQUdF
XSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgImNyZWF0ZS1uZXctcGFnZSIsCisgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNU
LAorICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzLCBj
cmVhdGVfbmV3X3BhZ2UpLAorICAgICAgICBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIEdUS19U
WVBFX1dJREdFVCwKKyNlbHNlCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXLAorI2VuZGlm
CisgICAgICAgIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9DT05URVhUKTsKK30KKworV2Vi
S2l0OjpXZWJQYWdlUHJveHkqIHdlYmtpdEJyb3dzZXJJbnNwZWN0b3JDcmVhdGVOZXdQYWdlSW5D
b250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0V2ViVmlldyog
bmV3V2ViVmlldzsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9n
ZXRfZGVmYXVsdCgpLCBzaWduYWxzW0NSRUFURV9ORVdfUEFHRV0sIDAsIGNvbnRleHQsICZuZXdX
ZWJWaWV3KTsKKyAgICBpZiAoIW5ld1dlYlZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmd2Via2l0V2ViVmlld0dldFBhZ2UobmV3V2ViVmlldyk7Cit9CisKK3N0YXRp
YyBncG9pbnRlciBjcmVhdGVXZWJLaXRCcm93c2VySW5zcGVjdG9yKGdwb2ludGVyKQoreworICAg
IHN0YXRpYyBHUmVmUHRyPFdlYktpdEJyb3dzZXJJbnNwZWN0b3I+IGJyb3dzZXJJbnNwZWN0b3Ig
PSBhZG9wdEdSZWYoV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgbnVsbHB0cikpKTsKKyAgICByZXR1cm4gYnJvd3Nlcklu
c3BlY3Rvci5nZXQoKTsKK30KKworLyoqCisgKiB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0
X2RlZmF1bHQ6CisgKgorICogR2V0cyB0aGUgZGVmYXVsdCBpbnN0YW5jZSBvZiB0aGUgYnJvd3Nl
ciBpbnNwZWN0b3IuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRC
cm93c2VySW5zcGVjdG9yCisgKi8KK1dlYktpdEJyb3dzZXJJbnNwZWN0b3IqIHdlYmtpdF9icm93
c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCh2b2lkKQoreworICAgIHN0YXRpYyBHT25jZSBvbmNl
SW5pdCA9IEdfT05DRV9JTklUOworICAgIHJldHVybiBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1Io
Z19vbmNlKCZvbmNlSW5pdCwgY3JlYXRlV2ViS2l0QnJvd3Nlckluc3BlY3RvciwgMCkpOworfQor
CisvKioKKyAqIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGU6CisgKgor
ICogQ3JlYXRlcyBicm93c2VyIGluc3BlY3RvciBhbmQgY29uZmlndXJlcyBwaXBlIGhhbmRsZXIg
dG8gY29tbXVuaWNhdGUgd2l0aAorICogdGhlIHBhcmVudCBwcm9jZXNzLgorICovCit2b2lkIHdl
YmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUodm9pZCkKK3sKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBXZWJLaXQ6OmluaXRpYWxpemVCcm93c2VySW5zcGVj
dG9yUGlwZSgpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTlhZmVhYzk5YTYyNzdmOGIwZTA1ODMzNjdhYzMzZWYyZmU5OWY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nl
ckluc3BlY3RvclByaXZhdGUuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRCcm93c2VySW5zcGVjdG9yLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK1dlYktpdDo6V2ViUGFnZVByb3h5KiB3ZWJraXRCcm93
c2VySW5zcGVjdG9yQ3JlYXRlTmV3UGFnZUluQ29udGV4dChXZWJLaXRXZWJDb250ZXh0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJyb3dzZXJJ
bnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QnJvd3Nl
ckluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZTgyMDRhOWI4OTYxZWZmMDc1NDkwNjg0OWQ2ZWRj
MzAyOTZlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQg
Q29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChX
RUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2Fu
IGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEJyb3dzZXJJ
bnNwZWN0b3JfaAorI2RlZmluZSBXZWJLaXRCcm93c2VySW5zcGVjdG9yX2gKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiAgICAgICAgICAgICh3ZWJraXRfYnJvd3Nl
cl9pbnNwZWN0b3JfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9S
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBXZWJLaXRCcm93c2VySW5zcGVjdG9yKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX0JST1dTRVJfSU5TUEVDVE9SKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SKSkKKyNk
ZWZpbmUgV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBX
ZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQlJPV1NFUl9J
TlNQRUNUT1JfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9J
TlNQRUNUT1JfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmop
LCAgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JD
bGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICAgICBX
ZWJLaXRCcm93c2VySW5zcGVjdG9yOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNw
ZWN0b3JDbGFzcyAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzczsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZSBXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJp
dmF0ZTsKKworc3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yIHsKKyAgICBHT2JqZWN0IHBh
cmVudDsKKworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlICpwcml2OworfTsKKwor
c3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICBXZWJLaXRXZWJWaWV3ICooKiBjcmVhdGVfbmV3X3BhZ2UpICAg
ICAgICAgICAoV2ViS2l0QnJvd3Nlckluc3BlY3RvciAgICAqYnJvd3Nlcl9pbnNwZWN0b3IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgKmNvbnRleHQpOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQzKSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfYnJvd3Nlcl9p
bnNwZWN0b3JfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9B
UEkgV2ViS2l0QnJvd3Nlckluc3BlY3RvciAqCit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0
X2RlZmF1bHQgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSAgICAgICAgICAgICAgKHZvaWQp
OworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKaW5kZXggMTZlZjdlYjZkNDI3YThkMTVhNjhjNWQ0NTAyOWNjZDRlM2IyNjM3
Yy4uZWIzNzU5YjA1YmIyODE3YzQzNWI5NWFjOWNkODFjMTYyZmNiMjQ1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tG
b3J3YXJkTGlzdEl0ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdENvbnRleHRNZW51SXRlbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzVlNTE3
NTk2YjFhMzQ3OTk1YmRhZWFjMDcyMjcwNmMzMGQwNjE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmgKQEAg
LTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5
IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lm
bmRlZiBXZWJLaXRCcm93c2VySW5zcGVjdG9yX2gKKyNkZWZpbmUgV2ViS2l0QnJvd3Nlckluc3Bl
Y3Rvcl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRE
ZWZpbmVzLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXcuaD4KKworR19CRUdJTl9ERUNM
UworCisjZGVmaW5lIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SICAgICAgICAgICAgKHdl
YmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NF
Ul9JTlNQRUNUT1Iob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0
b3IpKQorI2RlZmluZSBXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQ
RUNUT1IpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1Moa2xhc3MpICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQlJPV1NFUl9J
TlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9J
U19CUk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUikpCisjZGVmaW5lIFdFQktJ
VF9CUk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nl
ckluc3BlY3RvckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IgICAgICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3I7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
QnJvd3Nlckluc3BlY3RvckNsYXNzICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlIFdlYktpdEJyb3dzZXJJ
bnNwZWN0b3JQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3IgeworICAg
IEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgKnBy
aXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcyB7CisgICAgR09i
amVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIFdlYktpdFdlYlZpZXcgKigqIGNyZWF0ZV9u
ZXdfcGFnZSkgICAgICAgICAgIChXZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICpicm93c2VyX2lu
c3BlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAqY29udGV4dCk7CisKKyAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2
b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtp
dF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsK
KworV0VCS0lUX0FQSSBXZWJLaXRCcm93c2VySW5zcGVjdG9yICoKK3dlYmtpdF9icm93c2VyX2lu
c3BlY3Rvcl9nZXRfZGVmYXVsdCAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L3dlYmtpdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAppbmRl
eCA5Y2MzMWNiNDk2OGY1NGI2ZDMxZmNlMjM5YjYyZDA5YzM3NDQ0ZWFiLi45MzA0OTllNjViNjBh
ZWNiMDdmOTY5Y2MyNzNjN2M1OWE0NTQ3NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvd2Via2l0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0QXV0
b21hdGlvblNlc3Npb24uaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmg+
CiAjaW5jbHVkZSA8d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KKyNpbmNsdWRlIDx3
cGUvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRDb250ZXh0
TWVudS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaD4KICNpbmNs
dWRlIDx3cGUvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDQyZWNjZmUxN2MwMmJhNGRjMTQ3NDAyOWQwZThiMTM3Yzc5MDM5MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclRhcmdldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdGF0aWMgVmVjdG9yPFdlYlBhZ2VQcm94eSo+IGFsbFBhZ2VzKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFZlY3RvcjxXZWJQYWdlUHJveHkqPiByZXN1bHQ7
CisgICAgZm9yIChXZWJQcm9jZXNzUG9vbCogcG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9j
ZXNzUG9vbHMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwb29sLT5wcm9jZXNz
ZXMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRSYW5nZShwcm9jZXNzLT5wYWdlcygpLmJl
Z2luKCksIHByb2Nlc3MtPnBhZ2VzKCkuZW5kKCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6QnJvd3Nlckluc3BlY3RvckNvbnRy
b2xsZXIoKQorICAgIDogbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRl
bmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigp
KSkKKyAgICAsIG1fYnJvd3NlckFnZW50Q2xpZW50KEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dDo6Y3JlYXRlKCkpCit7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
QnJvd3NlckFnZW50PihtX2JhY2tlbmREaXNwYXRjaGVyLCBtX2Jyb3dzZXJBZ2VudENsaWVudC5n
ZXQoKSkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEJyb3dzZXJJbnNwZWN0b3JU
YXJnZXRBZ2VudD4obV9iYWNrZW5kRGlzcGF0Y2hlcikpOworfQorCitCcm93c2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6fkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCit2
b2lkIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRD
aGFubmVsJiBmcm9udGVuZENoYW5uZWwpCit7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5l
bCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSAmZnJvbnRlbmRDaGFubmVsOworICAgIC8vIEF1
dG8tY29ubmVjdCB0byBhbGwgbmV3IHBhZ2VzLgorICAgIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyOjpzZXRDcmVhdGlvbkxpc3RlbmVyKFt0aGlzXShXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ciYgaW5zcGVjdG9yQ29udHJvbGxlcikgeworICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNv
bm5lY3RGcm9udGVuZCgqbV9mcm9udGVuZENoYW5uZWwpOworICAgIH0pOworCisgICAgYm9vbCBj
b25uZWN0aW5nRmlyc3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMo
KTsKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVs
KTsKKyAgICBpZiAoY29ubmVjdGluZ0ZpcnN0RnJvbnRlbmQpCisgICAgICAgIG1fYWdlbnRzLmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkpOworCisgICAgY29ubmVjdFRvQWxsUGFnZXMoKTsKK30KKwor
dm9pZCBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKK3sK
KyAgICBBU1NFUlQobV9mcm9udGVuZENoYW5uZWwpOworICAgIGRpc2Nvbm5lY3RGcm9tQWxsUGFn
ZXMoKTsKKworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZCgqbV9mcm9u
dGVuZENoYW5uZWwpOworICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkp
CisgICAgICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisKKyAgICBXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0Q3JlYXRpb25MaXN0ZW5lcihudWxscHRyKTsKKyAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7Cit9CisKK3ZvaWQgQnJvd3Nl
ckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RUb0FsbFBhZ2VzKCkKK3sKKyAgICBmb3IgKGF1
dG8qIHBhZ2UgOiBhbGxQYWdlcygpKQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuY29ubmVjdEZyb250ZW5kKCptX2Zyb250ZW5kQ2hhbm5lbCk7Cit9CisKK3ZvaWQgQnJvd3Nl
ckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9tQWxsUGFnZXMoKQoreworICAgIGZv
ciAoYXV0byogcGFnZSA6IGFsbFBhZ2VzKCkpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoKm1fZnJvbnRlbmRDaGFubmVsKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJv
bGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZWFjYzU3OThhZjVkOTI1YTk5ODY2Y2IwZjhlMmY0MDVkYmY1
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlv
biBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7
CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudDsKKworY2xhc3MgQnJvd3Nlckluc3BlY3RvckNv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJyb3dzZXJJbnNwZWN0b3JDb250
cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBCcm93
c2VySW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIH5Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxl
cigpOworCisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwmKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK3ByaXZhdGU6Cisg
ICAgY2xhc3MgVGFyZ2V0SGFuZGxlcjsKKyAgICB2b2lkIGNvbm5lY3RUb0FsbFBhZ2VzKCk7Cisg
ICAgdm9pZCBkaXNjb25uZWN0RnJvbUFsbFBhZ2VzKCk7CisKKyAgICBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWwgeyBudWxscHRyIH07CisgICAgUmVmPEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CisgICAgUmVmPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudD4gbV9icm93c2VyQWdlbnRDbGllbnQ7
CisgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMWE1ODlmZDhmN2JhZGYwNWUxYmYzNzkzZjczNjNmNDI5YTY3OTE1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3Bw
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQnJvd3Nlckluc3BlY3RvclBpcGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQaXBlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIGluaXRpYWxpemVCcm93c2VySW5z
cGVjdG9yUGlwZSgpCit7CisgICAgY2xhc3MgQnJvd3Nlckluc3BlY3RvclBpcGUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgQnJvd3Nlckluc3BlY3RvclBpcGUoKQorICAgICAgICAgICAgOiBtX2Jy
b3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKKyAgICAgICAgICAgICwgbV9yZW1vdGVJbnNwZWN0
b3JQaXBlKG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyIG1fYnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXI7CisgICAgICAgIFJlbW90ZUluc3BlY3RvclBpcGUgbV9yZW1vdGVJbnNwZWN0
b3JQaXBlOworICAgIH07CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnJvd3Nlckluc3Bl
Y3RvclBpcGU+IHBpcGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJv
d3Nlckluc3BlY3RvclBpcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmI0YmY1N2EyNjViYjgwNGVmOWU5M2Uz
MzIwY2Q2NjNiYzQzNDY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclBpcGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29y
cG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgaW5pdGlhbGl6ZUJyb3dzZXJJbnNwZWN0b3JQaXBlKCk7
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVj
dG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3Bl
Y3RvclRhcmdldEFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODA5ZTQ3Y2U1YWQ4Mjk2M2YxZGNkMjgy
ODMyOGVlMTdmNGQ0OGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNy
b3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJyb3dzZXJJbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oIgorCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yVGFyZ2V0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgeworCitJbnNwZWN0b3JUYXJnZXQqIHRhcmdldEZv
cklkKGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBmb3IgKGF1dG8qIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkpIHsKKyAgICAg
ICAgICAgICAgICBhdXRvKiByZXN1bHQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZmlu
ZFRhcmdldCh0YXJnZXRJZCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxscHRy
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZQor
CitCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2Vu
dChCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIlRhcmdldCJfcykKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCit7Cit9CisK
K0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6fkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2Vu
dCgpID0gZGVmYXVsdDsKKwordm9pZCBCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVy
KikKK3sKK30KKwordm9pZCBCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCit7Cit9CisKK3ZvaWQgQnJvd3Nl
ckluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiBl
cnJvciwgY29uc3QgU3RyaW5nJiB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIGF1dG8qIHRhcmdldCA9IHRhcmdldEZvcklkKHRhcmdldElEKTsKKyAgICBpZiAodGFyZ2V0
ID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJyb3IgPSAiQ2Fubm90IGZpbmQgdGFyZ2V0IHdpdGgg
cHJvdmlkZWQgaWQuIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0YXJnZXQtPnNlbmRN
ZXNzYWdlVG9UYXJnZXRCYWNrZW5kKG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JU
YXJnZXRBZ2VudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRh
cmdldEFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1OWE1YzNkMmY0Yzk4YWY2NTBlMTE0ZWZmZDA0NDU1
Y2M4OTA4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dz
ZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jw
b3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFn
ZW50QmFzZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBCcm93c2VySW5zcGVjdG9y
VGFyZ2V0QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6OlRhcmdldEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50KTsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBCcm93c2VySW5z
cGVjdG9yVGFyZ2V0QWdlbnQoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciYpOworICAgIH5C
cm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQoKSBvdmVycmlkZTsKKworICAgIC8vIEluc3BlY3Rv
ckFnZW50QmFzZQorICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworCisgICAgLy8gVGFyZ2V0QmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFJlZjxJbnNwZWN0b3I6OlRhcmdldEJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXgg
YjY2OTRmZTkwNmVhMGI0ZjgyYTU0MDY2MmNjODU1MGIyZmUxYTVkMi4uNTlmOTNjNzkxNjdkM2Qz
OTJiNDZmZjUyNDM0OTRiMDJhZjA3MzU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BV
cFNPQXV0aG9yaXphdGlvblNlc3Npb24uaApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEhBVkUoQVBQ
X1NTTykKIAogI2luY2x1ZGUgIlNPQXV0aG9yaXphdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBPQkpD
X0NMQVNTIFdLU09TZWNyZXREZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3OwpAQCAtMzgs
NiArNDAsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgV2ViUGFnZVByb3h5OworCiAvLyBGU006IElkbGUgPT4gQWN0aXZlID0+IENvbXBs
ZXRlZAogY2xhc3MgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIFNP
QXV0aG9yaXphdGlvblNlc3Npb24gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Q
b3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggMDc2Y2ZhYTY3NmE3NGM0ZjMzNjAx
ZmY2NjQ0ZGVjNWU1YjU2MWNhMS4uMGYxODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEz
MDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXS1VJRGVsZWdhdGUuaCIKICNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YTI5YzQ2NzI0ODgwY2IyZGIzYjVlMmQ4ZDA5MTc4OWUxMTNjNWVmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApA
QCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+
CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0lu
c3BlY3RvckJyb3dzZXJBZ2VudDo6SW5zcGVjdG9yQnJvd3NlckFnZW50KEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnQqIGNsaWVudCkKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQnJvd3NlciJfcykKKyAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQnJvd3NlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQor
CitJbnNwZWN0b3JCcm93c2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyQWdlbnQoKSA9IGRlZmF1
bHQ7CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCit7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yQnJvd3NlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNj
b25uZWN0UmVhc29uKQoreworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6Y2xvc2Uo
RXJyb3JTdHJpbmcmIGVycm9yKQoreworICAgIGlmIChtX2NsaWVudCA9PSBudWxscHRyKQorICAg
ICAgICBlcnJvciA9ICJubyBwbGF0Zm9ybSBkZWxlZ2F0ZSB0byBjbG9zZSBicm93c2VyIjsKKyAg
ICBlbHNlCisgICAgICAgIG1fY2xpZW50LT5jbG9zZUFsbFdpbmRvd3MoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0ZUNvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yLCBT
dHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgbV9jbGllbnQtPmNyZWF0ZUJyb3dzZXJD
b250ZXh0KGVycm9yLCBicm93c2VyQ29udGV4dElEKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93
c2VyQWdlbnQ6OmRlbGV0ZUNvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcm
IGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgbV9jbGllbnQtPmRlbGV0ZUJyb3dzZXJDb250ZXh0
KGVycm9yLCBicm93c2VyQ29udGV4dElEKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdl
bnQ6OmNyZWF0ZVBhZ2UoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcqIGJyb3dzZXJD
b250ZXh0SUQsIFN0cmluZyogdGFyZ2V0SUQpCit7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4g
cGFnZSA9IG1fY2xpZW50LT5jcmVhdGVQYWdlKGVycm9yLCBicm93c2VyQ29udGV4dElEKTsKKyAg
ICBpZiAocGFnZSA9PSBudWxscHRyKQorICAgICAgICByZXR1cm47CisKKyAgICAqdGFyZ2V0SUQg
PSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojp0b1RhcmdldElEKHBhZ2UtPndlYlBhZ2VJRCgpKTsK
K30KKworU3RyaW5nIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6dG9Ccm93c2VyQ29udGV4dElEUHJv
dG9jb2xTdHJpbmcoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKK3sKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShzZXNz
aW9uSUQudG9VSW50NjQoKSwgYnVpbGRlciwgMTYpOworICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JCcm93c2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJy
b3dzZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNGM2NTVhYjM5ZGFjN2MyNmEyMjM0NTVkOGNmMGI0
ODkwMjA2NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JCcm93c2VyQWdlbnQuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0
b3IgeworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7Citj
bGFzcyBGcm9udGVuZFJvdXRlcjsKK30KKworbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBTZXNzaW9u
SUQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnQ7CitjbGFzcyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjsKKworY2xhc3MgSW5z
cGVjdG9yQnJvd3NlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpCcm93c2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JCcm93c2VyQWdlbnQpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEluc3BlY3RvckJyb3dzZXJB
Z2VudChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50Kik7CisgICAgfkluc3BlY3RvckJyb3dzZXJBZ2VudCgpIG92ZXJyaWRlOworCisgICAg
Ly8gSW5zcGVjdG9yQWdlbnRCYXNlCisgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisKKyAgICAvLyBCcm93c2VyQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBjbG9zZShJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmLCBTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVs
ZXRlQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2Vy
Q29udGV4dElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVBhZ2UoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyogYnJvd3NlckNvbnRleHRJRCwgU3RyaW5nKiB0YXJnZXRJ
ZCkgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvQnJvd3NlckNvbnRleHRJRFByb3Rv
Y29sU3RyaW5nKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CisKK3ByaXZhdGU6CisgICAgUmVmPElu
c3BlY3Rvcjo6QnJvd3NlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOTkyYjgwODdhODlmY2ExMzY2OTVjYzkzZjc1ZWEzZjkwYTg1NWMw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJv
d3NlckFnZW50Q2xpZW50LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9u
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5
OworCitjbGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQgeworcHVibGljOgorI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ+IGNyZWF0ZSgpOwor
I2VuZGlmCisgICAgdmlydHVhbCB+SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KCkgPSBkZWZh
dWx0OworICAgIHZpcnR1YWwgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdl
KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3Ry
aW5nKiBicm93c2VyQ29udGV4dElEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJyb3dz
ZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJD
b250ZXh0SUQpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUluc3BlY3RvclBpcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZGQ4ODRjNDIwMjkzMmEwYjQ1YTU1
ZTliOGM1MTM0Y2NmZjg5NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0
IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQ
aXBlLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkJyb3dz
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKKyNpZiBPUyhV
TklYKQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBjb25zdCBpbnQgcmVhZEZEID0gMzsKK3N0YXRp
YyBjb25zdCBpbnQgd3JpdGVGRCA9IDQ7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvclBpcGU6OlJl
bW90ZUZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlRnJvbnRl
bmRDaGFubmVsKCkKKyAgICAgICAgOiBtX3NlbmRlclF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJJ
bnNwZWN0b3IgcGlwZSB3cml0ZXIiKSkKKyAgICB7CisgICAgfQorCisgICAgflJlbW90ZUZyb250
ZW5kQ2hhbm5lbCgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb25UeXBlIGNv
bm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBDb25u
ZWN0aW9uVHlwZTo6UmVtb3RlOworICAgIH0KKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fc2Vu
ZGVyUXVldWUtPmRpc3BhdGNoKFttZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0oKSB7
CisgICAgICAgICAgICBkcHJpbnRmKHdyaXRlRkQsICIlcyVjIiwgbWVzc2FnZS5hc2NpaSgpLmRh
dGEoKSwgJ1wwJyk7CisgICAgICAgIH0pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWY8V29y
a1F1ZXVlPiBtX3NlbmRlclF1ZXVlOworfTsKKworUmVtb3RlSW5zcGVjdG9yUGlwZTo6UmVtb3Rl
SW5zcGVjdG9yUGlwZShCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlciYgYnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIpCisgICAgOiBtX3JlbW90ZUZyb250ZW5kQ2hhbm5lbChtYWtlVW5pcXVlPFJl
bW90ZUZyb250ZW5kQ2hhbm5lbD4oKSkKKyAgICAsIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xs
ZXIoYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgc3RhcnQoKTsKK30KKworUmVt
b3RlSW5zcGVjdG9yUGlwZTo6flJlbW90ZUluc3BlY3RvclBpcGUoKQoreworICAgIHN0b3AoKTsK
K30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3JQaXBlOjpzdGFydCgpCit7CisgICAgaWYgKG1fcmVj
ZWl2ZXJUaHJlYWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgbV9icm93c2VySW5zcGVj
dG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQoKm1fcmVtb3RlRnJvbnRlbmRDaGFubmVsKTsK
KyAgICBtX3Rlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBtX3JlY2VpdmVyVGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIkluc3BlY3RvciBwaXBlIHJlYWRlciIsIFt0aGlzXSB7CisgICAgICAgIHdvcmtl
clJ1bigpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3RvclBpcGU6OnN0b3AoKQoreworICAgIGlmICghbV9yZWNlaXZlclRocmVhZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJv
bnRlbmQoKTsKKworICAgIG1fdGVybWluYXRlZCA9IHRydWU7CisgICAgbV9yZWNlaXZlclRocmVh
ZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBtX3JlY2VpdmVyVGhyZWFkID0gbnVsbHB0cjsK
K30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JQaXBlOjp3b3JrZXJSdW4oKQoreworICAgIGNvbnN0
IHNpemVfdCBidWZTaXplID0gMjU2ICogMTAyNDsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlx
dWVBcnJheTxjaGFyPihidWZTaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gbGluZTsKKyAgICB3aGls
ZSAoIW1fdGVybWluYXRlZCkgeworICAgICAgICBzc2l6ZV90IHNpemUgPSByZWFkKHJlYWRGRCwg
YnVmZmVyLmdldCgpLCBidWZTaXplKTsKKyAgICAgICAgaWYgKCFzaXplKSB7CisgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlBpcGUgY2xvc2VkIGZvciByZWFkaW5nLlxuIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgcmVhZGluZyBmcm9tIHBpcGU6ICVkXG4iLCBlcnJu
byk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzaXplX3Qgc3RhcnQg
PSAwOworICAgICAgICBzaXplX3QgZW5kID0gbGluZS5zaXplKCk7CisgICAgICAgIGxpbmUuYXBw
ZW5kKGJ1ZmZlci5nZXQoKSwgc2l6ZSk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBmb3IgKDsgZW5kIDwgbGluZS5zaXplKCk7ICsrZW5kKSB7CisgICAgICAgICAgICAgICAg
aWYgKGxpbmVbZW5kXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmQgPT0gbGluZS5zaXplKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkgeworICAgICAgICAg
ICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChsaW5lLmRhdGEoKSArIHN0
YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0aGlzLCBtZXNzYWdlXSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV90ZXJtaW5h
dGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxl
ci5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2VuZDsKKyAgICAgICAgICAgIHN0YXJ0
ID0gZW5kOworICAgICAgICB9CisgICAgICAgIGlmIChzdGFydCAmJiBzdGFydCA8IGxpbmUuc2l6
ZSgpKQorICAgICAgICAgICAgbWVtbW92ZShsaW5lLmRhdGEoKSwgbGluZS5kYXRhKCkgKyBzdGFy
dCwgbGluZS5zaXplKCkgLSBzdGFydCk7CisgICAgICAgIGxpbmUuc2hyaW5rKGxpbmUuc2l6ZSgp
IC0gc3RhcnQpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUluc3BlY3RvclBpcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2IwNjIyNTU3Y2FhODE5NTRiYTg5MTUw
MTg5N2ExOWI4NTJkYzZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jw
b3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5j
bHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgRnJvbnRlbmRDaGFu
bmVsOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQnJvd3Nlckluc3BlY3RvckNv
bnRyb2xsZXI7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvclBpcGUgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlbW90ZUluc3BlY3RvclBpcGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUluc3BlY3RvclBpcGUoQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXImKTsKKyAgICB+UmVtb3RlSW5zcGVjdG9yUGlwZSgpOworCitwcml2
YXRlOgorICAgIGNsYXNzIFJlbW90ZUZyb250ZW5kQ2hhbm5lbDsKKworICAgIGJvb2wgc3RhcnQo
KTsKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgd29ya2VyUnVuKCk7CisKKyAgICBSZWZQ
dHI8VGhyZWFkPiBtX3JlY2VpdmVyVGhyZWFkOworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fdGVy
bWluYXRlZCB7IGZhbHNlIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsPiBtX3JlbW90ZUZyb250ZW5kQ2hhbm5lbDsKKyAgICBCcm93c2VySW5zcGVjdG9y
Q29udHJvbGxlciYgbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggY2NlODM3OTZmMTM4YmJmN2NmZjMw
YmUzYWJmMmQ2MjE0ODFmZTcyMy4uZWIwMTliNzBlMGIzNmIyMmM1OGRiY2VlNDA1Y2MyY2I2NTlm
NzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIk5mY1NlcnZpY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggYjlhOTQ2OWFiNTkxMzZmOWU5YTM3MzZiZmRiMGU5ZDUyOWMwZmJjZS4uYWY5NTU5YmFiZDQ4
MzYyYjJhNzU1ZGMyZTAzYWVkN2EyY2M3YjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKICNpbmNsdWRl
ICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgiCkBAIC00NiwyNiArNDcsNjAgQEAgc3Rh
dGljIFN0cmluZyBnZXRUYXJnZXRJRChjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlz
aW9uYWxQYWdlKQogICAgIHJldHVybiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojp0b1RhcmdldElE
KHByb3Zpc2lvbmFsUGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKK3N0YXRpYyBXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlcjo6Q3JlYXRpb25MaXN0ZW5lciYgY3JlYXRpb25MaXN0ZW5lcigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpDcmVh
dGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICByZXR1cm4gbGlzdGVuZXI7Cit9CisKK3ZvaWQg
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENyZWF0aW9uTGlzdGVuZXIoQ3JlYXRpb25M
aXN0ZW5lciBsaXN0ZW5lcikKK3sKKyAgICBjcmVhdGlvbkxpc3RlbmVyKCkgPSBsaXN0ZW5lcjsK
K30KKwogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclRhcmdl
dEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgp
KTsKKyAgICBTdHJpbmcgYnJvd3NlckNvbnRleHRJRDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBicm93c2VyQ29udGV4dElEID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jy
b3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhwYWdlLnNlc3Npb25JRCgpKTsKKyNlbmRpZgor
ICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclRhcmdldEFnZW50Piht
X2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpLCBicm93c2Vy
Q29udGV4dElEKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIAog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHRhcmdldEFnZW50KSk7CisKKyAgICBpZiAoY3Jl
YXRpb25MaXN0ZW5lcigpKQorICAgICAgICBjcmVhdGlvbkxpc3RlbmVyKCkoKnRoaXMpOwogfQog
CiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjppbml0KCkKIHsKKyAgICAvLyB3aW5k
b3cub3BlbiB3aWxsIGNyZWF0ZSBwYWdlIHdpdGggYWxyZWFkeSBydW5uaW5nIHByb2Nlc3MuCisg
ICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOwogICAg
IFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojp0b1RhcmdldElE
KG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJn
ZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIAordm9pZCBX
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNz
KCkKK3sKKyAgICBTdHJpbmcgcGFnZVRhcmdldElEID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6
dG9UYXJnZXRJRChtX3BhZ2Uud2ViUGFnZUlEKCkpOworICAgIC8vIENyZWF0ZSB0YXJnZXQgb25s
eSBhZnRlciBhdHRhY2hpbmcgdG8gYSBXZWIgUHJvY2VzcyBmaXJzdCB0aW1lLiBCZWZvcmUgdGhh
dAorICAgIC8vIHdlIGNhbm5vdCBldmVudCBlc3RhYmxpc2ggZnJvbnRlbmQgY29ubmVjdGlvbi4K
KyAgICBpZiAobV90YXJnZXRzLmNvbnRhaW5zKHBhZ2VUYXJnZXRJRCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBjcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElELCBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOworfQorCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjpwYWdlQ2xvc2VkKCkKIHsKKyAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gV2ViUGFn
ZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3BhZ2Uud2ViUGFnZUlEKCkpOworICAgIGRl
c3Ryb3lJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElkKTsKKwogICAgIGRpc2Nvbm5lY3RBbGxG
cm9udGVuZHMoKTsKIAogICAgIG1fYWdlbnRzLmRpc2NhcmRWYWx1ZXMoKTsKQEAgLTEzNCw2ICsx
NjksMTEgQEAgdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2EKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAorSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQqIFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpmaW5kVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0
SWQpCit7CisgICAgcmV0dXJuIG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworfQorCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpz
ZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDgyOGJjM2NjYzdl
MDdkODEyMDMzNDMxYjI3YWU3ZjBiYzhjZjljNTQuLjIxYjI5MjBhMmFkMzE4MWRlOWFkY2M1MmMw
NzYxZDdkMGEzNWQwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgsMTEgQEAgcHVibGljOgogICAg
IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgdm9pZCBp
bml0KCk7CisgICAgdm9pZCBkaWRGaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoKTsKKworICAg
IHVzaW5nIENyZWF0aW9uTGlzdGVuZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXImKT47CisgICAgc3RhdGljIHZvaWQgc2V0Q3JlYXRpb25MaXN0ZW5lcihD
cmVhdGlvbkxpc3RlbmVyKTsKKwogICAgIHZvaWQgcGFnZUNsb3NlZCgpOwogCiAgICAgYm9vbCBo
YXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CkBAIC01Nyw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXQqIGZpbmRUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNmI2Njc0NmIxODMx
ZWZiYTE5MTc4YzE3ZGRlMGFiN2RlN2ZkYWM5Li43NzRiYjU1ODA2MjgxN2Q3MzNkY2E1NzBiNzc2
ZTAwNmI5ZTlmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTg2NSw2ICs4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9X
ZWJQcm9jZXNzKFByb2Nlc3NMYXVuY2hSZWFzb24gcmVhc29uKQogICAgIG1fcGFnZUxvYWRTdGF0
ZS5kaWRTd2FwV2ViUHJvY2Vzc2VzKCk7CiAgICAgaWYgKHJlYXNvbiAhPSBQcm9jZXNzTGF1bmNo
UmVhc29uOjpJbml0aWFsUHJvY2VzcykKICAgICAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJh
Y2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5kaWRGaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHTGliLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xp
Yi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjdmNDI5ZjU1NmNkZDUxMTUwY2U2NGQ5YjRmYTU4MjliODdjOGQz
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVj
dG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29m
dCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3Nl
ckFnZW50Q2xpZW50R0xpYi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNp
bmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRCcm93c2Vy
SW5zcGVjdG9yUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBjb2xs
ZWN0UGFnZXMoT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3sKKyAgICBWZWN0
b3I8V2ViUGFnZVByb3h5Kj4gcmVzdWx0OworICAgIGZvciAoV2ViUHJvY2Vzc1Bvb2wqIHBvb2wg
OiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byog
cGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb25J
RCB8fCBwYWdlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQocGFnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgY2xvc2VBbGxQYWdlcyhPcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQoreworICAgIFZlY3RvcjxXZWJQYWdlUHJveHkq
PiBwYWdlcyA9IGNvbGxlY3RQYWdlcyhzZXNzaW9uSUQpOworICAgIGZvciAoYXV0byogcGFnZSA6
IHBhZ2VzKQorICAgICAgICBwYWdlLT5jbG9zZVBhZ2UoZmFsc2UpOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50PiBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yQnJvd3Nl
ckFnZW50Q2xpZW50R2xpYj4oKTsKK30KKworSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xp
Yjo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYigpCit7Cit9CisKK1JlZlB0cjxXZWJQ
YWdlUHJveHk+IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWI6OmNyZWF0ZVBhZ2UoV1RG
OjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sK
KyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9k
ZWZhdWx0KCk7CisgICAgaWYgKGJyb3dzZXJDb250ZXh0SUQgIT0gbnVsbHB0cikgeworICAgICAg
ICBjb250ZXh0ID0gbV9pZFRvQ29udGV4dC5nZXQoKmJyb3dzZXJDb250ZXh0SUQpOworICAgICAg
ICBpZiAoY29udGV4dCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBlcnJvciA9ICJDb250ZXh0
IHdpdGggcHJvdmlkZWQgaWQgbm90IGZvdW5kIjsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisgICAgfQorICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSB3ZWJr
aXRCcm93c2VySW5zcGVjdG9yQ3JlYXRlTmV3UGFnZUluQ29udGV4dChjb250ZXh0KTsKKyAgICBp
ZiAocGFnZSA9PSBudWxscHRyKQorICAgICAgICBlcnJvciA9ICJGYWlsZWQgdG8gY3JlYXRlIG5l
dyBwYWdlIGluIHRoZSBjb250ZXh0IjsKKyAgICByZXR1cm4gcGFnZTsKK30KKwordm9pZCBJbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpjbG9zZUFsbFdpbmRvd3MoKQoreworICAgIGNs
b3NlQWxsUGFnZXMoT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KCkpOworICAgIG1faWRUb0NvbnRl
eHQuY2xlYXIoKTsKKyAgICAvLyBGSVhNRSh5dXJ5cyk6IGNhbGwgZ19tYWluX2xvb3BfcXVpdCgp
ID8KK30KKworc3RhdGljIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JREZyb21Db250ZXh0KFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBk
YXRhTWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIo
Y29udGV4dCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSA9IHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShkYXRhTWFuYWdlcik7CisgICAgcmV0dXJu
IHdlYnNpdGVEYXRhU3RvcmUuc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3Nl
ckFnZW50Q2xpZW50R2xpYjo6Y3JlYXRlQnJvd3NlckNvbnRleHQoV1RGOjpTdHJpbmcmIGVycm9y
LCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBHUmVmUHRyPFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlcj4gbWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfbmV3X2VwaGVtZXJhbCgpKTsKKyAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+
IGNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlci5nZXQo
KSwgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIHRydWUs
IG51bGxwdHIpKSk7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVycm9yID0gIkZhaWxl
ZCB0byBjcmVhdGUgR0xpYiBlcGhlbWVyYWwgY29udGV4dCI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gc2Vzc2lvbklERnJvbUNvbnRleHQo
Y29udGV4dC5nZXQoKSk7CisgICAgU3RyaW5nIGlkID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0
b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhzZXNzaW9uSUQpOworICAgIG1faWRUb0Nv
bnRleHQuc2V0KGlkLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICAqYnJvd3NlckNvbnRleHRJRCA9
IGlkOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWI6OmRlbGV0ZUJy
b3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dz
ZXJDb250ZXh0SUQpCit7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJDb250ZXh0PiBjb250ZXh0ID0g
bV9pZFRvQ29udGV4dC50YWtlKGJyb3dzZXJDb250ZXh0SUQpOworICAgIGlmIChjb250ZXh0ID09
IG51bGxwdHIpIHsKKyAgICAgICAgZXJyb3IgPSAiQ29udGV4dCB3aXRoIHByb3ZpZGVkIGlkIG5v
dCBmb3VuZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2xvc2VBbGxQYWdlcyhzZXNz
aW9uSURGcm9tQ29udGV4dChjb250ZXh0LmdldCgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdM
aWIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50R0xpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZWZiNGM1NWIzYzc1MjhmZWMwNTI3Y2JkZTcwN2Q3
MzZhMWNmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuaApAQCAtMCwwICsxLDYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNy
b3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKworI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oIgorI2luY2x1ZGUg
IldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIElu
c3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIgOiBwdWJsaWMgSW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJ
bnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliKCk7CisgICAgfkluc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudEdsaWIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBSZWZQdHI8V2ViUGFn
ZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcq
IGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJy
b3IsIFdURjo6U3RyaW5nKiBicm93c2VyQ29udGV4dElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGRl
bGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcm
IGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdlYktpdFdlYkNv
bnRleHQqIGZpbmRDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcm
IGJyb3dzZXJDb250ZXh0SUQpOworCisgICAgSGFzaE1hcDxTdHJpbmcsIEdSZWZQdHI8V2ViS2l0
V2ViQ29udGV4dD4+IG1faWRUb0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFj
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40OTMzYjQ0NWFhM2UzZGE3OTNhZTA5MTk1ZjI2YjI5ODg1ZTcwZWYy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0luc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENv
cnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnRNYWMuaCIKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ+
IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM+KCk7Cit9CisKK0luc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudE1hYzo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjKCkK
K3sKK30KKworUmVmUHRyPFdlYlBhZ2VQcm94eT4gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
TWFjOjpjcmVhdGVQYWdlKFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJy
b3dzZXJDb250ZXh0SUQpCit7CisgICAgZXJyb3IgPSAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFn
ZSBpbiB0aGUgY29udGV4dCI7CisgICAgZnByaW50ZihzdGRlcnIsICJJbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnRNYWM6OmNsb3NlQWxsV2luZG93cyAtIE5PVCBJTVBMRU1FTlRFRFxuIik7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
TWFjOjpjbG9zZUFsbFdpbmRvd3MoKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50TWFjOjpjbG9zZUFsbFdpbmRvd3MgLSBOT1QgSU1QTEVNRU5URURc
biIpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYzo6Y3JlYXRlQnJv
d3NlckNvbnRleHQoV1RGOjpTdHJpbmcmIGVycm9yLCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRl
eHRJRCkKK3sKKyAgICBlcnJvciA9ICJGYWlsZWQgdG8gY3JlYXRlIE1hYyBlcGhlbWVyYWwgY29u
dGV4dCI7CisgICAgZnByaW50ZihzdGRlcnIsICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRN
YWM6OmNyZWF0ZUJyb3dzZXJDb250ZXh0IC0gTk9UIElNUExFTUVOVEVEXG4iKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmRlbGV0ZUJyb3dzZXJDb250ZXh0KFdU
Rjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7
CisgICAgZXJyb3IgPSAiQ29udGV4dCB3aXRoIHByb3ZpZGVkIGlkIG5vdCBmb3VuZCI7CisgICAg
ZnByaW50ZihzdGRlcnIsICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmRlbGV0ZUJy
b3dzZXJDb250ZXh0IC0gTk9UIElNUExFTUVOVEVEXG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdiMzE3M2ZlZGQwNjc0
NTFjZjZiNzczOGExN2ExYzU5NzM3NTkwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJ
bnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
TWFjIDogcHVibGljIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
TWFjKCk7CisgICAgfkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYygpIG92ZXJyaWRlID0g
ZGVmYXVsdDsKKworICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVBhZ2UoV1RGOjpTdHJp
bmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjbG9zZUFsbFdpbmRvd3MoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZUJy
b3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250
ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlQnJvd3NlckNvbnRleHQoV1RGOjpTdHJp
bmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyYgYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7
Cit9OworCisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjFmM2Y2YWQ4Y2QwZTkxNDYwNDBjMDE3YmFk
MTIwNmI3OGI0NzYyYi4uYTEwZGU1N2M5ODk5OTdkMDdjNjZmMjJmOWNiODMzYzRjZjRjNWE1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNjYzLDYgKzE2NjMsMTIgQEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0
QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVw
TWVudS5oICovOyB9OwogCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9w
dXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
M0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJ
CUQ3MUE5NDMxMjM3MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcx
QTk0MkYyMzcwRTAyNDAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5j
cHAgKi87IH07CisJCUQ3MUE5NDMyMjM3MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnRNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQ3MUE5NDMwMjM3MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRNYWMuaCAqLzsgfTsKKwkJRDcxQTk0MzQyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRDcxQTk0MzMyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudC5oICovOyB9OworCQlENzFBOTQzODIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nl
ckluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQ3MUE5NDM3MjM3MEYwMzIwMDJDNEQ5RSAvKiBCcm93c2VySW5zcGVjdG9y
Q29udHJvbGxlci5oICovOyB9OworCQlENzFBOTQzQTIzNzBGMDYxMDAyQzREOUUgLyogUmVtb3Rl
SW5zcGVjdG9yUGlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDcxQTk0MzkyMzcwRjA2MDAwMkM0RDlFIC8qIFJlbW90ZUluc3BlY3RvclBpcGUuaCAq
LzsgfTsKKwkJRDcxQTk0NEEyMzcyMjkwQjAwMkM0RDlFIC8qIF9XS0Jyb3dzZXJJbnNwZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5NDQ5
MjM3MjI5MEIwMDJDNEQ5RSAvKiBfV0tCcm93c2VySW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1
N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTEwNUZFNTMxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICov
OyB9OwogCQlFMTFEMzVBRTE2QjYzRDFCMDA2RDIzRDcgLyogY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3
RTM3MTUwQUI1RTIwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAqLzsgfTsKIAkJ
RTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVn
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRB
OTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCAqLzsgfTsKQEAgLTQ2OTIsNiArNDY5OCwxMyBAQAogCQlEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0
QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBN
ZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3MUE5NDJDMjM3MERGODEwMDJD
NEQ5RSAvKiBXS0Jyb3dzZXJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tCcm93c2VySW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQ3MUE5NDJGMjM3MEUwMjQwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRN
YWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQnJv
d3NlckFnZW50Q2xpZW50TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcx
QTk0MzAyMzcwRTAyNTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzMyMzcwRTA3
QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzcyMzcwRjAzMjAwMkM0RDlFIC8qIEJyb3dz
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUQ3MUE5NDM5MjM3MEYwNjAwMDJDNEQ5RSAvKiBSZW1vdGVJbnNwZWN0b3JQaXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvclBpcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0NDkyMzcyMjkwQjAwMkM0RDlFIC8qIF9X
S0Jyb3dzZXJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
QnJvd3Nlckluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4QzYz
MTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCURGNThDNjM1MTM3MUFDQTAwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVl
bEV2ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0
aXZlV2ViV2hlZWxFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEw
NUZFNTMxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFZGl0aW5nUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTYyOTQsNiArNjMwNyw3IEBACiAJCTM3QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBD
b2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRDcx
QTk0NDkyMzcyMjkwQjAwMkM0RDlFIC8qIF9XS0Jyb3dzZXJJbnNwZWN0b3IuaCAqLywKIAkJCQkx
QTQzRTgyNjE4OEYzOEUyMDA5RTREMzAgLyogRGVwcmVjYXRlZCAqLywKIAkJCQkzN0E1RTAxMjE4
QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1
RTAxMTE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCkBA
IC03Nzc0LDYgKzc3ODgsOSBAQAogCQlCQzAzMkRDMzEwRjQzODI2MDA1OEMxNUEgLyogVUlQcm9j
ZXNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlENzFB
OTQzOTIzNzBGMDYwMDAyQzREOUUgLyogUmVtb3RlSW5zcGVjdG9yUGlwZS5oICovLAorCQkJCUQ3
MUE5NDM3MjM3MEYwMzIwMDJDNEQ5RSAvKiBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oICov
LAorCQkJCUQ3MUE5NDMzMjM3MEUwN0EwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnQuaCAqLywKIAkJCQlCQzAzMkRDNDEwRjQzODdDMDA1OEMxNUEgLyogQVBJICovLAogCQkJ
CTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLywKIAkJCQk5OTU1
QTZFODFDNzk4MDkwMDBFQjZBOTMgLyogQXV0b21hdGlvbiAqLywKQEAgLTgwNTEsNiArODA2OCw3
IEBACiAJCUJDMEMzNzY2MTBGODA3NjYwMDc2RDdDQiAvKiBDICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlENzFBOTQyQzIzNzBERjgxMDAyQzREOUUgLyog
V0tCcm93c2VySW5zcGVjdG9yLmggKi8sCiAJCQkJNTEyM0NGMTgxMzNEMjVFNjAwNTZGODAwIC8q
IGNnICovLAogCQkJCTZFRTg0OUM0MTM2OEQ5MDQwMDM4RDQ4MSAvKiBtYWMgKi8sCiAJCQkJQkNC
NjM0NzcxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktpdDJfQy5oICovLApAQCAtODY0Niw2ICs4NjY0
LDggQEAKIAkJQkNDRjA4NUMxMTNGM0I3NTAwQzY1MEM1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRDcxQTk0MkYyMzcwRTAyNDAwMkM0RDlF
IC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAgKi8sCisJCQkJRDcxQTk0MzAy
MzcwRTAyNTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5oICovLAog
CQkJCUI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKIAkJ
CQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJ
CUMxODE3MzYyMjA1ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8sCkBAIC05MzIz
LDYgKzkzNDMsNyBAQAogCQkJCTUxMEY1OTEwMURERTI5NjkwMDQxMkZGNSAvKiBfV0tJY29uTG9h
ZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E2NEU1NTE4RjM4RTNDMDBFQjMw
RjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDUyMTMw
ODQ2MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRDcxQTk0
NEEyMzcyMjkwQjAwMkM0RDlFIC8qIF9XS0Jyb3dzZXJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDMEYwQUIyMDAwNjU4MjAwNTM2NTM2IC8qIF9XS0luc3Bl
Y3RvcldpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFCMzYyOTUyMTQxRUJDRDAwN0JGQTUz
IC8qIF9XS0ludGVybmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKQEAgLTk0MzQsNiAr
OTQ1NSw3IEBACiAJCQkJN0M4OUQyOTgxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM2QzE4NTY1QzdBMDBGM0VDMDUgLyog
QVBJUGFnZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREQzMTUxODkxQjU0MDAwMTUz
OTcwIC8qIEFQSVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRDcxQTk0MzgyMzcw
RjAzMjAwMkM0RDlFIC8qIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0U0RDIyMDFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjM0NDQ1NjEyQTg4NUM4MDAwNjEyRDggLyog
QVBJU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjYyMTk1NEU5QjEw
MEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTU1Miw2ICs5
NTc0LDcgQEAKIAkJCQlCQzA2RjQzQTEyREJDQ0ZCMDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBNDE4ODRFNEYw
MDBFRDg2REIgLyogR2VzdHVyZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4
MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlENzFBOTQzNDIzNzBFMDdBMDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMENFNzJBRDEyNDdFNzhEMDBCQzBFQzQgLyogSGFu
ZGxlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzVBMUIxQjMzNjgyNzAwNTY3NDVC
IC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdBQzhGNTAy
MTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTY3
Nyw2ICs5NzAwLDcgQEAKIAkJCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nl
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzMjE1OTU1MURCQUU3MjkwMDU0QUEzQyAvKiBO
ZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTc5MTVCOTIyNTcwNDZG
MDBENkY5N0UgLyogTmV0d29ya1NvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUQ3
MUE5NDNBMjM3MEYwNjEwMDJDNEQ5RSAvKiBSZW1vdGVJbnNwZWN0b3JQaXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NzBEQUFDMjIzMDM3MzAzMDBFOEZDMDQgLyogTmZjQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTcwREFBQUUyMzAyNkY1QzAwRThGQzA0IC8qIE5mY1NlcnZpY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzU2MTQ4OTlDMDkwMDgxMEQ3MSAvKiBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM0Niw2ICsxMDM3
MCw3IEBACiAJCQkJMUFCOEExRjgxODQwMEJCODAwRTlBRTY5IC8qIFdLUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyREIyNTFBNjc0QzhGMDBDNjk3QzUgLyog
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjhB
MUY0MTg0MDBCOEYwMEU5QUU2OSAvKiBXS1BhZ2VGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlENzFBOTQzMjIzNzBFMDI1MDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFGNjE4NDAwQjlEMDBFOUFFNjkgLyog
V0tQYWdlRmluZE1hdGNoZXNDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjhBMUYwMTg0
MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzdCNjMzNzEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICovLApA
QCAtMTE0MzcsNiArMTE0NjIsNyBAQAogCQkJCTJEMTFCNzkzMjEyNkEyODMwMDZGODg3OCAvKiBV
bmlmaWVkU291cmNlMzQtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc5NjIxMjZBMjgz
MDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTM1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFC
Nzk1MjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzUtbW0ubW0gaW4gU291cmNlcyAq
LywKKwkJCQlENzFBOTQzMTIzNzBFMDI1MDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzk4MjEyNkEyODMwMDZGODg3
OCAvKiBVbmlmaWVkU291cmNlMzYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3OTcyMTI2
QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzNi1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMTFCNzk5MjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzctbW0ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAyMjRkNDAxNDQ4ODMxMDNkNDNjMDcxNWZlMTA1NWYzOGUwYmNkMGU0Li5hNjU2NDZkYTJl
M2M0MGNiYTU3MzFmMDIxN2FmYTNiNmExMmJhMGZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTEtMDUgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogaW50cm9kdWNlIGJyb3dzZXIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgZmxhZyBmb3IgaW50aWFsaXppbmcg
aW5zcGVjdG9yIHBpcGUuCisKKyAgICAgICAgQWRkZWQgcGxhdGZvcm0gaG9va3MgZm9yIGNyZWF0
aW5nIG5ldyBwYWdlcyBpbiByZXNwb25zZSB0byBCcm93c2VyLmNyZWF0ZVBhZ2UgaW5zcGVjdG9y
CisgICAgICAgIGNvbW1hbmQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgor
ICAgICAgICAoY3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChjb25maWd1cmVCcm93c2VySW5zcGVj
dG9yUGlwZSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFp
bi5jcHA6CisgICAgICAgIChjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKGNsb3NlQWxsKToKKyAg
ICAgICAgKGNvbmZpZ3VyZUJyb3dzZXJJbnNwZWN0b3IpOgorICAgICAgICAobWFpbik6CisKIDIw
MTktMTEtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGbGFreSBBUEkgVGVzdCBUZXN0V2ViS2l0QVBJLldlYktpdC5VcGxvYWREaXJlY3Rv
cnkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDkzZDkzNTkyYmM0ZjhlNTUxZTIyZjJlZDM1Y2Y5Y2E2
Y2I2MmJkMjUuLjBjOGY5YTlmODEzM2EwOTM4YWIwY2Y2NzhjOWRmZjFkN2NiZTlkMzcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYwpAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29va2ll
c0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciAqY29va2llc1BvbGljeTsKIHN0YXRpYyBjb25zdCBj
aGFyICpwcm94eTsKIHN0YXRpYyBnYm9vbGVhbiBkYXJrTW9kZTsKK3N0YXRpYyBnYm9vbGVhbiBp
bnNwZWN0b3JQaXBlOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIAogdHlwZWRlZiBl
bnVtIHsKQEAgLTEyMCw2ICsxMjEsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1h
bmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJpZ25vcmUtaG9zdCIsIDAsIDAsIEdfT1BUSU9OX0FS
R19TVFJJTkdfQVJSQVksICZpZ25vcmVIb3N0cywgIlNldCBwcm94eSBpZ25vcmUgaG9zdHMiLCAi
SE9TVFMiIH0sCiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAwLCAwLCBHX09QVElPTl9BUkdf
Tk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJyb3JzIiwgTlVMTCB9LAogICAg
IHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVu
dEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAor
ICAgIHsgImluc3BlY3Rvci1waXBlIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpbnNwZWN0
b3JQaXBlLCAiT3BlbiBwaXBlIGNvbm5lY3Rpb24gdG8gdGhlIHJlbW90ZSBpbnNwZWN0b3IiLCBO
VUxMIH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmlu
dFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0sCiAgICAgeyBH
X09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwgJnVy
aUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9
CkBAIC00OTIsNiArNDk0LDI5IEBAIHN0YXRpYyB2b2lkIGZpbHRlclNhdmVkQ2FsbGJhY2soV2Vi
S2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZSAqc3RvcmUsIEdBc3luY1Jlc3VsCiAgICAgZ19tYWlu
X2xvb3BfcXVpdChkYXRhLT5tYWluTG9vcCk7CiB9CiAKK3N0YXRpYyBXZWJLaXRXZWJWaWV3ICpj
cmVhdGVOZXdQYWdlKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKmJyb3dzZXJfaW5zcGVjdG9yLCBX
ZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0KQoreworICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAor
ICAgICAgICAid2ViLWNvbnRleHQiLCBjb250ZXh0LAorICAgICAgICAiaXMtZXBoZW1lcmFsIiwg
d2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSwKKyAgICAgICAgImlzLWNv
bnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCisgICAgICAgIE5VTEwpKTsKKyAgICBHdGtX
aWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhOVUxMLCBjb250ZXh0KTsKKyAg
ICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyhCUk9XU0VSX1dJTkRPVyhuZXdXaW5kb3cpLCBu
ZXdXZWJWaWV3KTsKKyAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdFVChuZXdXZWJW
aWV3KSk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobmV3V2luZG93KSk7CisgICAg
d2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKG5ld1dlYlZpZXcsICJhYm91dDpibGFuayIpOworICAg
IHJldHVybiBuZXdXZWJWaWV3OworfQorCitzdGF0aWMgdm9pZCBjb25maWd1cmVCcm93c2VySW5z
cGVjdG9yUGlwZSgpCit7CisgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvciAqYnJvd3Nlckluc3Bl
Y3RvciA9IHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCgpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QoYnJvd3Nlckluc3BlY3RvciwgImNyZWF0ZS1uZXctcGFnZSIsIEdfQ0FMTEJB
Q0soY3JlYXRlTmV3UGFnZSksIE5VTEwpOworCisgICAgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9y
X2luaXRpYWxpemVfcGlwZSgpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd
KQogewogI2lmIEVOQUJMRV9ERVZFTE9QRVJfTU9ERQpAQCAtNTM5LDYgKzU2NCw5IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29u
dGV4dCA9IGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0
YS1tYW5hZ2VyIiwgbWFuYWdlciwgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRp
b24tZW5hYmxlZCIsIFRSVUUsIE5VTEwpOwogICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIpOwog
CisgICAgaWYgKGluc3BlY3RvclBpcGUpCisgICAgICAgIGNvbmZpZ3VyZUJyb3dzZXJJbnNwZWN0
b3JQaXBlKCk7CisKICAgICBpZiAoY29va2llc1BvbGljeSkgewogICAgICAgICBXZWJLaXRDb29r
aWVNYW5hZ2VyICpjb29raWVNYW5hZ2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29raWVf
bWFuYWdlcih3ZWJDb250ZXh0KTsKICAgICAgICAgR0VudW1DbGFzcyAqZW51bUNsYXNzID0gZ190
eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQRV9DT09LSUVfQUNDRVBUX1BPTElDWSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKaW5kZXggMmQxODNkMzk0MTIzYmQ4NDU0NWRjNTFmNTNlYjliZTc5NmZiODg3
My4uN2UwMDYxODZmMjkwMDQ2ZGE4MTkwZmM2Mzg1MWE1NTg4OTBiNjY5OCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dw
ZS9tYWluLmNwcApAQCAtNDgsNiArNDgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29va2llc0Zp
bGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2llc1BvbGljeTsKIHN0YXRpYyBjb25zdCBjaGFy
KiBwcm94eTsKIGNvbnN0IGNoYXIqIGJnQ29sb3I7CitzdGF0aWMgZ2Jvb2xlYW4gaW5zcGVjdG9y
UGlwZTsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAKIHN0YXRpYyBjb25zdCBHT3B0
aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQpAQCAtNjIsNiArNjMsNyBAQCBzdGF0aWMg
Y29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJpZ25vcmUt
dGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAi
SWdub3JlIFRMUyBlcnJvcnMiLCBudWxscHRyIH0sCiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAw
LCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNv
bnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiYmctY29sb3IiLCAwLCAw
LCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9y
LiBEZWZhdWx0OiB3aGl0ZSIsICJDT0xPUiIgfSwKKyAgICB7ICJpbnNwZWN0b3ItcGlwZSIsIDAs
IDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaW5zcGVjdG9yUGlwZSwgIk9wZW4gcGlwZSBjb25uZWN0
aW9uIHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIiwgTlVMTCB9LAogICAgIHsgInZlcnNpb24iLCAn
dicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdQRSB2
ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09Q
VElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIg
fSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH0KQEAgLTE3Miw2ICsxNzQsNDMgQEAgc3RhdGljIFdlYktpdFdlYlZpZXcq
IGNyZWF0ZVdlYlZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFj
dGkKICAgICByZXR1cm4gbmV3V2ViVmlldzsKIH0KIAorc3RhdGljIFdlYktpdFdlYlZpZXcgKmNy
ZWF0ZU5ld1BhZ2UoV2ViS2l0QnJvd3Nlckluc3BlY3RvciosIFdlYktpdFdlYkNvbnRleHQgKmNv
bnRleHQpCit7CisgICAgYXV0byBiYWNrZW5kID0gY3JlYXRlVmlld0JhY2tlbmQoMTI4MCwgNzIw
KTsKKyAgICBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogd3BlQmFja2VuZCA9IGJhY2tlbmQtPmJh
Y2tlbmQoKTsKKyAgICBpZiAoIXdwZUJhY2tlbmQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byogdmlld0JhY2tlbmQgPSB3ZWJraXRfd2ViX3ZpZXdfYmFja2VuZF9uZXcod3Bl
QmFja2VuZCwKKyAgICAgICAgW10oZ3BvaW50ZXIgZGF0YSkgeworICAgICAgICAgICAgZGVsZXRl
IHN0YXRpY19jYXN0PFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQqPihkYXRhKTsKKyAg
ICAgICAgfSwgYmFja2VuZC5yZWxlYXNlKCkpOworCisgICAgYXV0byogbmV3V2ViVmlldyA9IHdl
YmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHZpZXdCYWNrZW5kLCBjb250ZXh0KTsKKwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwgR19DQUxMQkFDSyh3ZWJW
aWV3Q2xvc2UpLCBudWxscHRyKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdX
ZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKKworICAgIHJldHVybiBuZXdXZWJWaWV3OworCit9CisK
K3N0YXRpYyB2b2lkIGNsb3NlQWxsKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IqLCBHTWFpbkxvb3Aq
IG1haW5Mb29wKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQobWFpbkxvb3ApOworfQorCitzdGF0
aWMgdm9pZCBjb25maWd1cmVCcm93c2VySW5zcGVjdG9yUGlwZShHTWFpbkxvb3AqIG1haW5Mb29w
LCBXZWJLaXRXZWJWaWV3ICpmaXJzdFdlYlZpZXcpCit7CisgICAgV2ViS2l0QnJvd3Nlckluc3Bl
Y3RvciogYnJvd3Nlckluc3BlY3RvciA9IHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVm
YXVsdCgpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnJvd3Nlckluc3BlY3RvciwgImNyZWF0ZS1u
ZXctcGFnZSIsIEdfQ0FMTEJBQ0soY3JlYXRlTmV3UGFnZSksIE5VTEwpOworICAgIC8vIEZJWE1F
OiBUaGlzIHNpZ25hbCBpcyByZWNlaXZlZCBvbmx5IHdoZW4gY2xvc2VBbGwgaXMgY2FsbGVkLiBX
ZSBzaG91bGQgbm90IHJlbHkgb24gdGhhdC4KKyAgICBnX3NpZ25hbF9jb25uZWN0KGZpcnN0V2Vi
VmlldywgImNsb3NlIiwgR19DQUxMQkFDSyhjbG9zZUFsbCksIG1haW5Mb29wKTsKKworICAgIHdl
YmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUoKTsKK30KKwogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICNpZiBFTkFCTEVfREVWRUxPUEVSX01PREUKQEAg
LTMwMSw2ICszNDAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIsIEdfQ0FMTEJBQ0so
ZGVjaWRlUGVybWlzc2lvblJlcXVlc3QpLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXcpLCBudWxscHRyKTsK
IAorICAgIGlmIChpbnNwZWN0b3JQaXBlKQorICAgICAgICBjb25maWd1cmVCcm93c2VySW5zcGVj
dG9yUGlwZShsb29wLCB3ZWJWaWV3KTsKKwogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAg
ICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViQ29udGV4dCwg
V0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382932</attachid>
            <date>2019-11-06 09:13:04 -0800</date>
            <delta_ts>2019-11-06 10:28:36 -0800</delta_ts>
            <desc>initial implementation</desc>
            <filename>bug-203870-20191106091304.patch</filename>
            <type>text/plain</type>
            <size>121225</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc2MjUwZTRmY2RkZmQ5NjRkNDhhMTBlY2QxYzBiNjFjZDhiMWY3Li45MWZhZDhiZTM1Njg0NDg5
MWQyMWE1M2MxYzIxZDYwYjVjNDQyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYnJvd3NlciBpbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IEJyb3dzZXIgZG9tYWluIHRoYXQgYWxsb3dzIGNyZWF0aW5nIGVwaGVtZXJhbCBjb250ZXh0cyBh
bmQgcGFnZXMuCisgICAgICAgIEV4dGVuZGVkIFRhcmdldEluZm8gd2l0aCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29udGV4dCBpdCBiZWxvbmdzIHRvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6YnVpbGRUYXJnZXRJbmZvT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6ZW5zdXJlQ29ubmVjdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246CisKIDIwMTktMTEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURjo6UnVuTG9vcCBzaG91bGQgbm90IGRlcGVuZCBvbiBpc01haW5U
aHJlYWQoKSBpZGlvbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjNhZTRkYWI5MGEzZjNlYjhiMzExZmI5YmE0YmQ4
OTJlMzhkMTFjZi4uOTdlNmVlM2IyYjI3YTNiODA4ZDRmYzkyMzUwMDA0ZDMxMDllNGQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMTktMTEtMDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIGJy
b3dzZXIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCcm93c2VyIGluc3BlY3RvciBpcyBpbnRyb2R1Y2VkIHRvIGVuYWJsZSBpbnNwZWN0
aW5nIGVudGlyZSBicm93c2VyIG92ZXIgdGhlCisgICAgICAgIGluc3BlY3RvciBwcm90b2NvbC4g
SXQgaXMgY29tcHJpc2VkIG9mIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICBOZXcg
QnJvd3NlciBkb21haW4gaW4gdGhlIHByb3RvY29sIGFsbG93cyB0byBjcmVhdGUvZGVsZXRlIGVw
aGVtZXJhbCBicm93c2luZworICAgICAgICBjb250ZXh0cyBhbmQgY3JlYXRlIHBhZ2VzIGluIHRo
b3NlIGNvbnRleHRzLiBUaGlzIGFsbG93cyB0byBydW4gbXVsdGlwbGUgdGVzdAorICAgICAgICBw
YWdlcyBpbiB0aGUgc2FtZSBpbnN0YW5jZSB3aGlsZSBpc29sYXRpbmcgdGhlaXIgc3RhdGUuCisK
KyAgICAgICAgQWZvcmVtZW50aW9uZWQgZG9tYWluIGlzIGltcGxlbWVudGVkIGJ5IEluc3BlY3Rv
ckJyb3dzZXJBZ2VudCB0aGF0IGRlbGVnYXRlcyBtb3N0CisgICAgICAgIG9mIGl0cyB3b3JrIHRv
IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiAoR1RLIGFuZCBXUEUgc28gZmFy
KS4KKyAgICAgICAgQnJvd3Nlci5jcmVhdGVQYWdlIHJlcXVpcmVzIGVtYmVkZGVyIHN1cHBvcnQg
c28gdGhhdCBuZXcgcGFnZSBpcyBjcmVhdGVkIGluIGEKKyAgICAgICAgd2luZG93LgorCisgICAg
ICAgIEJyb3dzZXIgaW5zcGVjdG9yIHN0YXRlIGlzIG1hbmFnZWQgYnkgQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIgd2hpY2ggb3ducyB0d28KKyAgICAgICAgYWdlbnRzIEJyb3dzZXIgYW5kIFRh
cmdldC4gQnJvd3NlciB0YXJnZXQgYWdlbnQgZGlzcGF0Y2hlcyBtZXNzYWdlcyB0byB0aGUgdGFy
Z2V0cworICAgICAgICB3aXRoaW4gcGFnZSBzcGVjaWZpYyB0YXJnZXQgYWdlbnRzLiBDdXJyZW50
bHkgd2hlbmV2ZXIgbmV3IHBhZ2UgaXMgY3JlYXRlZCBpbnNwZWN0b3IKKyAgICAgICAgd2lsbCBh
dXRvY29ubmVjdCB0byBpdC4KKworICAgICAgICBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBjb25uZWN0aW9uIHRvIHRoZSBuZXcgaW5zcGVjdG9yIGNhbiBvbmx5IGJlIGVzdGFibGlzaGVk
CisgICAgICAgIHZpYSBhIHBpcGUuIEl0IHJlcXVpcmVzIHJlbW90ZSBpbnNwZWN0b3IgdG8gYmUg
dGhlIGxhdW5jaGVyIG9mIHRoZSBicm93c2VyIHByb2Nlc3MuIE90aGVyCisgICAgICAgIHRyYW5z
cG9ydHMgY2FuIGJlIGFkZGVkIGxhdGVyLgorCisgICAgICAgIEJyb3N3ZXIgaW5zcGVjdG9yIGlz
IG9ubHkgaW5zdGFudGlhdGVkIGlmIGV4cGxpY2l0bHkgb3B0ZWQtaW4gYnkgdGhlIGVtYmVkZGVy
IGFuZCBtdXN0CisgICAgICAgIGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGZpcnN0IHBhZ2UgaXMgY3Jl
YXRlZC4gSW4gdGhlIE1pbmlCcm93c2VyIGl0IGlzIGd1YXJkZWQgYnkgYSBjb21tYW5kCisgICAg
ICAgIGxpbmUgZmxhZy4KKworICAgICAgICBFbWJlZGRlciBpbnRlcmZhY2UgaXMgcHJvdmlkZWQg
aW4gdGhlIGZvcm0gb2YgV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiBHVEsgYW5kIFdQRS4KKyAg
ICAgICAgVGhlIG5ldyBBUEkgYWxsb3dzIHRvIHNldHVwIGluc3BlY3RvciBwaXBlIHRvIHRoZSBw
YXJlbnQgcHJvY2VzcyBhbmQgcHJvdmlkZXMgYQorICAgICAgICBwbGF0Zm9ybSBob29rIGZvciBj
cmVhdGluZyBuZXcgcGFnZSBpbiBhIGNvbnRleHQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQnJvd3Nlckluc3BlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0b3IubW06IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpCcm93c2VySW5zcGVjdG9yUGlwZTo6QnJvd3Nlckluc3BlY3RvclBpcGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgICh3ZWJraXRCcm93c2VySW5zcGVjdG9yQ3JlYXRlTmV3UGFnZUluQ29udGV4
dCk6CisgICAgICAgIChjcmVhdGVXZWJLaXRCcm93c2VySW5zcGVjdG9yKToKKyAgICAgICAgKHdl
YmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCk6CisgICAgICAgICh3ZWJraXRfYnJv
d3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dwZS93ZWJraXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktp
dDo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RUb0FsbFBhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9tQWxsUGFnZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6aW5pdGlhbGl6ZUJyb3dzZXJJbnNwZWN0b3JQaXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QnJvd3Nlckluc3BlY3RvclBpcGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Jyb3dz
ZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpCcm93
c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdl
dEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6
OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6c2VuZE1lc3NhZ2VUb1RhcmdldCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JCcm93c2VyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
QnJvd3NlckFnZW50OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpkZWxldGVDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpjcmVhdGVQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0
SURQcm90b2NvbFN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJB
Z2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OlJlbW90
ZUZyb250ZW5kQ2hhbm5lbDo6UmVtb3RlRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUGlwZTo6UmVtb3RlSW5zcGVjdG9yUGlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6On5SZW1vdGVJbnNwZWN0b3JQaXBlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlwZTo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpzdG9wKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5z
cGVjdG9yUGlwZTo6d29ya2VyUnVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlSW5zcGVj
dG9yUGlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0aW9uTGlzdGVuZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0Q3JlYXRp
b25MaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjppbml0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpwYWdlQ2xvc2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmZpbmRUYXJnZXQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2ds
aWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpjbG9zZUFsbFBhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3Nl
ckFnZW50Q2xpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnRHbGliOjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliKToKKyAgICAg
ICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6Y3JlYXRlUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWI6OmNsb3Nl
QWxsV2luZG93cyk6CisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25JREZyb21Db250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6Y3JlYXRlQnJv
d3NlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnRHbGliOjpkZWxldGVCcm93c2VyQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIv
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYzo6SW5zcGVjdG9yQnJv
d3NlckFnZW50Q2xpZW50TWFjKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50TWFjOjpjcmVhdGVQYWdlKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJv
d3NlckFnZW50Q2xpZW50TWFjOjpjbG9zZUFsbFdpbmRvd3MpOgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmNyZWF0ZUJyb3dzZXJDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpkZWxldGVCcm93
c2VyQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9JbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnRNYWMuaDogQWRkZWQuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTktMTEtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEltcGxlbWVudCBzdXBwb3J0IGZvciBQb2ludGVy
IExvY2sgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGU5NjY1MDM2
NDY2MGM0NWU5N2RmZWQ5YjMzZmRmOTI4ZWNjYjkwNC4uMDI4OWRhMjcxMDI0Y2Q2OGIyMzNmY2E5
MzdlNGQxNWEyZjgxMDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTE0Myw2ICsxMTQzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9ET01BSU5TCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRpb24uanNv
bgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRp
b25DYWNoZS5qc29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2Nv
bC9BdWRpdC5qc29uCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2Nv
bC9Ccm93c2VyLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3Rv
Y29sL0NTUy5qc29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2Nv
bC9DYW52YXMuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9j
b2wvQ29uc29sZS5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IGY1OTIxMmZmMDFjYzlkODJhMjEwMDViMjEyODU3MWU3ZDIzMDNlNzQuLmUxOTAwOWY1
ZmJhN2I3NjIyNTliYmVjYWMxZWY3MzNhYjYxZTVhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMzgsNiArMjM4LDcgQEAgSU5TUEVDVE9SX0RPTUFJ
TlMgOj0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRp
b24uanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0FwcGxp
Y2F0aW9uQ2FjaGUuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3Rv
Y29sL0F1ZGl0Lmpzb24gXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9Ccm93c2VyLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2Nv
bC9DU1MuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0Nh
bnZhcy5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQ29u
c29sZS5qc29uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCAxMTc3MDkwZmMx
ODYyM2VmNTAxYzlhZDRjMzM4OWJjMmRhOTEwNzFlLi43ZWYwZTNmY2ZmZTJhOWFiNGJiMDFiNmUx
N2Q3M2MyYWFkNzhjNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0zMCwx
MSArMzAsMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvclRhcmdldEFn
ZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIs
IEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKK0luc3BlY3RvclRhcmdldEFn
ZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIs
IEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgY29uc3QgU3RyaW5nJiBicm93
c2VyQ29udGV4dElEKQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQiX3MpCiAgICAg
LCBtX3JvdXRlcihmcm9udGVuZFJvdXRlcikKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1h
a2VVbmlxdWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwgbV9icm93c2VyQ29udGV4dElEKGJyb3dzZXJD
b250ZXh0SUQpCiB7CiB9CiAKQEAgLTg3LDcgKzg4LDcgQEAgc3RhdGljIFByb3RvY29sOjpUYXJn
ZXQ6OlRhcmdldEluZm86OlR5cGUgdGFyZ2V0VHlwZVRvUHJvdG9jb2xUeXBlKEluc3BlY3RvclRh
cmcKICAgICByZXR1cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlwZTo6UGFnZTsK
IH0KIAotc3RhdGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdl
dEluZm9PYmplY3QoY29uc3QgSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCitzdGF0aWMgUmVmPFBy
b3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm8+IGJ1aWxkVGFyZ2V0SW5mb09iamVjdChjb25zdCBJ
bnNwZWN0b3JUYXJnZXQmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBicm93c2VyQ29udGV4dElEKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFRhcmdldElkKHRhcmdldC5pZGVudGlmaWVyKCkpCkBAIC05NSw2ICs5
Niw4IEBAIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJn
ZXRJbmZvT2JqZWN0KGNvbnN0IEluc3BlY3RvclRhCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAg
aWYgKHRhcmdldC5pc1Byb3Zpc2lvbmFsKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0SXNQcm92aXNp
b25hbCh0cnVlKTsKKyAgICBpZiAoIWJyb3dzZXJDb250ZXh0SUQuaXNFbXB0eSgpKQorICAgICAg
ICByZXN1bHQtPnNldEJyb3dzZXJDb250ZXh0SWQoYnJvd3NlckNvbnRleHRJRCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA4LDcgKzExMSw3IEBAIHZvaWQgSW5zcGVjdG9yVGFyZ2V0
QWdlbnQ6OnRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCiAKICAgICB0YXJn
ZXQuY29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQpKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRhcmdldEluZm9PYmplY3QodGFy
Z2V0LCBtX2Jyb3dzZXJDb250ZXh0SUQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6dGFyZ2V0RGVzdHJveWVkKEluc3BlY3RvclRhcmdldCYgdGFyZ2V0KQpAQCAtMTM1LDYgKzEz
OCwxOCBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpkaWRDb21taXRQcm92aXNpb25hbFRh
cmdldChjb25zdCBTdHJpbmcmIG9sZFRhcmdldElELAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldChvbGRUYXJnZXRJRCwgY29tbWl0dGVkVGFyZ2V0
SUQpOwogfQogCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjplbnN1cmVDb25uZWN0ZWQoY29u
c3QgU3RyaW5nJiB0YXJnZXRJRCkKK3sKKyAgICBpZiAoIW1faXNDb25uZWN0ZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SUQpOwor
ICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICB0YXJnZXQtPmNvbm5lY3Qo
Y29ubmVjdGlvblR5cGUoKSk7Cit9CisKIEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUg
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3Rpb25UeXBlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9yb3V0ZXIuaGFzTG9jYWxGcm9udGVuZCgpID8gSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWw6OkNvbm5lY3Rpb25UeXBlOjpMb2NhbCA6IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsOjpD
b25uZWN0aW9uVHlwZTo6UmVtb3RlOwpAQCAtMTQ0LDcgKzE1OSw3IEBAIHZvaWQgSW5zcGVjdG9y
VGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMoKQogewogICAgIGZvciAoSW5zcGVjdG9yVGFy
Z2V0KiB0YXJnZXQgOiBtX3RhcmdldHMudmFsdWVzKCkpIHsKICAgICAgICAgdGFyZ2V0LT5jb25u
ZWN0KGNvbm5lY3Rpb25UeXBlKCkpOwotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dGFy
Z2V0Q3JlYXRlZChidWlsZFRhcmdldEluZm9PYmplY3QoKnRhcmdldCkpOworICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRhcmdldEluZm9PYmplY3QoKnRh
cmdldCwgbV9icm93c2VyQ29udGV4dElEKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuaAppbmRleCAzOGNiMzE4OTg2YjMxYzRkZWQxOWJhOWJlYWU3ODU1ZDJiNTRjMjNhLi4w
NTU3ZjgzM2MzZDZmMWRhMDkwODZkZDQ2Y2U0NTk5M2Q3MzE1MjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5z
cGVjdG9yVGFyZ2V0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUYXJnZXRBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yVGFyZ2V0QWdlbnQoRnJv
bnRlbmRSb3V0ZXImLCBCYWNrZW5kRGlzcGF0Y2hlciYpOworICAgIEluc3BlY3RvclRhcmdldEFn
ZW50KEZyb250ZW5kUm91dGVyJiwgQmFja2VuZERpc3BhdGNoZXImLCBjb25zdCBTdHJpbmcmIGJy
b3dzZXJDb250ZXh0SUQpOwogICAgIH5JbnNwZWN0b3JUYXJnZXRBZ2VudCgpIG92ZXJyaWRlOwog
CiAgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0Jik7CiAgICAgdm9pZCB0YXJnZXRE
ZXN0cm95ZWQoSW5zcGVjdG9yVGFyZ2V0Jik7CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25h
bFRhcmdldChjb25zdCBTdHJpbmcmIG9sZFRhcmdldElELCBjb25zdCBTdHJpbmcmIGNvbW1pdHRl
ZFRhcmdldElEKTsKKyAgICB2b2lkIGVuc3VyZUNvbm5lY3RlZChjb25zdCBTdHJpbmcmIHRhcmdl
dElEKTsKIAogICAgIC8vIFRhcmdldCBtZXNzYWdlcy4KICAgICB2b2lkIHNlbmRNZXNzYWdlRnJv
bVRhcmdldFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKQEAgLTY4LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyJiBtX3JvdXRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGFyZ2V0RnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8VGFyZ2V0QmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgY29uc3QgU3RyaW5nIG1fYnJvd3Nl
ckNvbnRleHRJRDsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yVGFyZ2V0Kj4gbV90YXJn
ZXRzOwogICAgIGJvb2wgbV9pc0Nvbm5lY3RlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Ccm93c2VyLmpzb24gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZWQ0YTNiZmU2ZjNjOTRjMjlhMjc0OWY4ODY5MzlmMjkxZWU5ZjY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Ccm93
c2VyLmpzb24KQEAgLTAsMCArMSw0MCBAQAoreworICAgICJkb21haW4iOiAiQnJvd3NlciIsCisg
ICAgImF2YWlsYWJpbGl0eSI6IFsid2ViIl0sCisgICAgInR5cGVzIjogWworICAgICAgICB7Cisg
ICAgICAgICAgICAiaWQiOiAiQ29udGV4dElEIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmlu
ZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWQgb2YgQnJvd3NlciBjb250ZXh0LiIK
KyAgICAgICAgfQorICAgIF0sCisgICAgImNvbW1hbmRzIjogWworICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJjbG9zZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xvc2Ug
YnJvd3Nlci4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNy
ZWF0ZUNvbnRleHQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZXMgbmV3IGVw
aGVtZXJhbCBicm93c2VyIGNvbnRleHQuIiwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJZCIsICIkcmVmIjogIkNvbnRl
eHRJRCIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29udGV4dC4i
IH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiZGVsZXRlQ29udGV4dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVsZXRl
cyBicm93c2VyIGNvbnRleHQgcHJldmlvdXNseSBjcmVhdGVkIHdpdGggY3JlYXRlQ29udGVjdC4g
VGhlIGNvbW1hbmQgd2lsbCBhdXRvbWF0aWNhbGx5IGNsb3NlIGFsbCBwYWdlcyB0aGF0IHVzZSB0
aGUgY29udGV4dC4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJicm93c2VyQ29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgImRl
c2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGNvbnRleHQgdG8gZGVsZXRlLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJj
cmVhdGVQYWdlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJZCIsICIkcmVmIjogIkNvbnRleHRJRCIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJKU09OIEluc3BlY3RvciBQcm90b2NvbCBtZXNz
YWdlIChjb21tYW5kKSB0byBiZSBkaXNwYXRjaGVkIG9uIHRoZSBiYWNrZW5kLiIgfQorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAidGFyZ2V0SWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVl
IGlkZW50aWZpZXIgZm9yIHRoZSBwYWdlIHRhcmdldC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAg
ICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL1RhcmdldC5qc29uCmluZGV4IDI0MGNkNDJlNjdlMzI1MGU0MzRjMGJmNmY5ZDE2
MTY4NTA1YThjMjIuLjI4MTU3YWMxMTM5MDVkMGI0N2VmM2VjYTAyODdiNjAyZjMyZGVlZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0
Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJn
ZXQuanNvbgpAQCAtMTAsNyArMTAsOCBAQAogICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRhcmdldC4iIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBb
InBhZ2UiLCAic2VydmljZS13b3JrZXIiLCAid29ya2VyIl0gfSwKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBh
IHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4gU3VjaCB0YXJnZXQgbWF5IGJlIGNyZWF0ZWQg
d2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLiBFdmVudHVh
bGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlzIGVpdGhlciBjb21taXR0ZWQgYW5kIHN3YXBz
IHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdldHMgZGVzdHJveWVkLCBlLmcuIGluIGNhc2Ug
b2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJp
c1Byb3Zpc2lvbmFsIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJUcnVlIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSBwcm92aXNpb25h
bCBwYWdlIHRhcmdldCBpLmUuIFN1Y2ggdGFyZ2V0IG1heSBiZSBjcmVhdGVkIHdoZW4gY3VycmVu
dCBwYWdlIHN0YXJ0cyBjcm9zcy1vcmlnaW4gbmF2aWdhdGlvbi4gRXZlbnR1YWxseSBlYWNoIHBy
b3Zpc2lvbmFsIHRhcmdldCBpcyBlaXRoZXIgY29tbWl0dGVkIGFuZCBzd2FwcyB3aXRoIHRoZSBj
dXJyZW50IHRhcmdldCBvciBnZXRzIGRlc3Ryb3llZCwgZS5nLiBpbiBjYXNlIG9mIGxvYWQgcmVx
dWVzdCBmYWlsdXJlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyb3dzZXJDb250
ZXh0SWQiLCAiJHJlZiI6ICJCcm93c2VyLkNvbnRleHRJRCIsICJvcHRpb25hbCI6IHRydWUgfQog
ICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGVkYmZiNTZl
NDliYzJhMDNhOGFiZGJmODcxNDFkY2QwN2U1ZGE5M2YuLjNlZDVmM2M3ZDhjZTVmZDQyNDc0NGMy
OTg0YThiZWJhZmE4MGQ1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjQwLDE3ICsyNDAsMjIgQEAgU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAogCiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmNwcAogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAKK1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKK1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5jcHAKK1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5j
cHAKIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAogVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKK1VJUHJv
Y2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0
UHJveHkuY3BwCiBVSVByb2Nlc3MvTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwCiBVSVByb2Nlc3Mv
UGFnZUxvYWRTdGF0ZS5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcAogVUlQcm9j
ZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCitVSVByb2Nlc3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5jcHAKIFVJUHJvY2Vzcy9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAog
VUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IGEyMmFhYmEwMzEwMWVmN2MzMGE4YTA0NGE4ZGNhMjhmODEwMWVlYzEuLjM4NmRkODU4NmM0NjEx
ODk1NjMxYjAyZmQ1OTNmMTM4N2M0ZjhjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI0
Myw2ICsyNDMsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRv
bWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQnJv
d3Nlckluc3BlY3Rvci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RB
Y3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gQG5vLXVuaWZ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzR1RLLnR4dAppbmRleCBlNzY1MDY2NmExMDY5NTE3MzlhZTNmNDhmM2M2ZmY5ZTQ5
OGY4ZDE1Li44ZDczODNiYmU3YTRlZTk2OGI5Nzc2NTU4MTk1NjUxY2UxN2YyNDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0dUSy50eHQKQEAgLTEyOSw2ICsxMjksNyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAgQG5vLXVuaWZ5CkBAIC0yMjQsNiArMjI1LDcgQEAgVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL3VuaXgvV2Vic2l0ZURhdGFTdG9yZVVuaXguY3BwCiAKIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgQG5vLXVuaWZ5CiAKK1VJUHJvY2Vzcy9nbGli
L0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JDbGllbnQuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIu
Y3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50
eHQKaW5kZXggNWI1MTRkNTIxNmVjNWQ5NmNkNTgzZjY4MjdmNDg1ODY4YzVlMmExZS4uZmNiYmI3
ODFhMzExMTBmYWVkZTBhMGYzMDM1ZDc0MDJkNWFkYWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBA
IC0xMTgsNiArMTE4LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tGb3J3
YXJkTGlzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0Zvcndh
cmRMaXN0SXRlbS5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nl
ckluc3BlY3Rvci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4
dE1lbnVDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tp
ZU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRp
YWwuY3BwIEBuby11bmlmeQpAQCAtMTg3LDYgKzE4OCw3IEBAIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiBVSVBy
b2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5jcHAKIAorVUlQcm9jZXNz
L2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQnJvd3Nl
ckluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Jyb3dz
ZXJJbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGZkZGE3NzNjNDhjOTM4YTQ1YTIxZDdmNTM2OTMy
YWRlOTEyMTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0b3IuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqCisgKiBtZXQ6CisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQg
Q29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xNS4wKSkKK0BpbnRlcmZhY2UgX1dLQnJvd3Nlckluc3BlY3Rv
ciA6IE5TT2JqZWN0CisrICh2b2lkKWluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JQaXBlOworQGVu
ZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQnJvd3Nlckluc3BlY3Rvci5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YmQ3YmI1OTBjNmM5ZGQ3OTFhMmZlYjhmYzZmMjY1MWY4ZTQ1NGQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Jyb3dzZXJJbnNwZWN0b3Iu
bW0KQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKgorICogbWV0OgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJfV0tCcm93c2VySW5zcGVjdG9yLmgiCisKKyNpbmNsdWRlICJCcm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvclBpcGUuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIF9XS0Jyb3dzZXJJ
bnNwZWN0b3IKKworKyAodm9pZClpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yUGlwZQoreworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGNsYXNzIEJyb3dzZXJJbnNwZWN0b3JQaXBl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJyb3dzZXJJbnNwZWN0b3JQaXBlKCkKKyAgICAgICAg
ICAgIDogbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcigpCisgICAgICAgICAgICAsIG1fcmVt
b3RlSW5zcGVjdG9yUGlwZShtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIgbV9icm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yUGlwZSBtX3JlbW90
ZUluc3BlY3RvclBpcGU7CisgICAgfTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnJvd3Nl
ckluc3BlY3RvclBpcGU+IHBpcGU7CisjZW5kaWYKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MmVmNWQ4NWRiYzhmYWYwYzMxYjQ3MTY3YzE3NzhlZjhhODNlMDEz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QnJvd3Nlckluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jw
b3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ci5oIgorCisjaW5jbHVkZSAiQnJvd3Nlckluc3BlY3RvclBpcGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGli
L1dURkdUeXBlLmg+CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0QnJvd3Nlckluc3BlY3Rvcgor
ICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBY2Nlc3MgdG8gdGhlIFdlYktpdCBicm93c2VyIGluc3Bl
Y3RvcgorICogQFRpdGxlOiBXZWJLaXRCcm93c2VySW5zcGVjdG9yCisgKgorICogVGhlIFdlYktp
dCBCcm93c2VyIEluc3BlY3RvciBpcyBhbiBleHBlcmltZW50YWwgQVBJIHRoYXQgcHJvdmlkZXMK
KyAqIGFjY2VzcyB0byB0aGUgaW5zcGVjdG9yIHZpYSB0aGUgcmVtb3RlIGRlYnVnZ2luZyBwcm90
b2NvbC4gVGhlIHByb3RvY29sCisgKiBhbGxvd3MgdG8gY3JlYXRlIGVwaGVtZXJhbCBjb250ZXh0
cyBhbmQgY3JlYXRlIHBhZ2VzIGluIHRoZW0gYW5kIHRoZW4KKyAqIG1hbmlwdWxhdGUgdGhlbSB1
c2luZyB0aGUgaW5zcGVjdG9yIGNvbW1hbmRzLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yCisgKiB0
aGUgYnJvd3NlciBhdXRvbWF0aW9uIG9yIHJlbW90ZSBkZWJ1Z2dpbmcuCisgKgorICogQ3VycmVu
dGx5IHRoZSBwcm90b2NvbCBjYW4gYmUgZXhwb3NlZCB0byB0aGUgcGFyZW50IHByb2Nlc3Mgdmlh
IGEgdW5peAorICogcGlwZS4KKyAqLworCitlbnVtIHsKKyAgICBDUkVBVEVfTkVXX1BBR0UsCisK
KyAgICBMQVNUX1NJR05BTAorfTsKKworc3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJp
dmF0ZSB7CisgICAgaW50IHVudXNlZCB7IDAgfTsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShX
ZWJLaXRCcm93c2VySW5zcGVjdG9yLCB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3IsIEdfVFlQRV9P
QkpFQ1QpCisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKKwor
c3RhdGljIHZvaWQgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0QnJv
d3Nlckluc3BlY3RvckNsYXNzKiBmaW5kQ2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhmaW5kQ2xhc3MpOworCisgICAgLyoqCisgICAgICog
V2ViS2l0QnJvd3Nlckluc3BlY3Rvcjo6Y3JlYXRlLW5ldy1wYWdlOgorICAgICAqIEBpbnNwZWN0
b3I6IHRoZSAjV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9yIGlzIHJlcXVl
c3RlZCB0byBjcmVhdGUgYSBuZXcgcGFnZSBpbiB0aGUgcHJvdmlkZWQKKyAgICAgKiAjV2ViS2l0
V2ViQ29udGV4dC4KKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBp
bnNwZWN0b3IgcmVjZWl2ZXMgJ0Jyb3dzZXIuY3JlYXRlUGFnZScgY29tbWFuZAorICAgICAqIGZy
b20gaXRzIHJlbW90ZSBjbGllbnQuIElmIHRoZSBzaWdubGEgaXMgbm90IGhhbmRsZWQgdGhlIGNv
bW1hbmQgd2lsbCBmYWlsLgorICAgICAqCisgICAgICogUmV0dXJuczogJVdlYktpdFdlYlZpZXcg
dGhhdCBjb250YWlucyBjcmVhdGVkIHBhZ2UuCisgICAgICovCisgICAgc2lnbmFsc1tDUkVBVEVf
TkVXX1BBR0VdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLW5ldy1wYWdlIiwKKyAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAgICAgR19TSUdOQUxf
UlVOX0xBU1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRCcm93c2VySW5zcGVjdG9y
Q2xhc3MsIGNyZWF0ZV9uZXdfcGFnZSksCisgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCisgICAg
ICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICAg
ICAgR1RLX1RZUEVfV0lER0VULAorI2Vsc2UKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcs
CisjZW5kaWYKKyAgICAgICAgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQpOwor
fQorCitXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0QnJvd3Nlckluc3BlY3RvckNyZWF0ZU5l
d1BhZ2VJbkNvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJLaXRX
ZWJWaWV3KiBuZXdXZWJWaWV3OworICAgIGdfc2lnbmFsX2VtaXQod2Via2l0X2Jyb3dzZXJfaW5z
cGVjdG9yX2dldF9kZWZhdWx0KCksIHNpZ25hbHNbQ1JFQVRFX05FV19QQUdFXSwgMCwgY29udGV4
dCwgJm5ld1dlYlZpZXcpOworICAgIGlmICghbmV3V2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuICZ3ZWJraXRXZWJWaWV3R2V0UGFnZShuZXdXZWJWaWV3KTsKK30K
Kworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVdlYktpdEJyb3dzZXJJbnNwZWN0b3IoZ3BvaW50ZXIp
Cit7CisgICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0QnJvd3Nlckluc3BlY3Rvcj4gYnJvd3Nlcklu
c3BlY3RvciA9IGFkb3B0R1JlZihXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1IoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBudWxscHRyKSkpOworICAgIHJldHVybiBi
cm93c2VySW5zcGVjdG9yLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF9icm93c2VyX2luc3Bl
Y3Rvcl9nZXRfZGVmYXVsdDoKKyAqCisgKiBHZXRzIHRoZSBkZWZhdWx0IGluc3RhbmNlIG9mIHRo
ZSBicm93c2VyIGluc3BlY3Rvci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEg
I1dlYktpdEJyb3dzZXJJbnNwZWN0b3IKKyAqLworV2ViS2l0QnJvd3Nlckluc3BlY3Rvciogd2Vi
a2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF9kZWZhdWx0KHZvaWQpCit7CisgICAgc3RhdGljIEdP
bmNlIG9uY2VJbml0ID0gR19PTkNFX0lOSVQ7CisgICAgcmV0dXJuIFdFQktJVF9CUk9XU0VSX0lO
U1BFQ1RPUihnX29uY2UoJm9uY2VJbml0LCBjcmVhdGVXZWJLaXRCcm93c2VySW5zcGVjdG9yLCAw
KSk7Cit9CisKKy8qKgorICogd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlw
ZToKKyAqCisgKiBDcmVhdGVzIGJyb3dzZXIgaW5zcGVjdG9yIGFuZCBjb25maWd1cmVzIHBpcGUg
aGFuZGxlciB0byBjb21tdW5pY2F0ZSB3aXRoCisgKiB0aGUgcGFyZW50IHByb2Nlc3MuCisgKi8K
K3ZvaWQgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSh2b2lkKQorewor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIFdlYktpdDo6aW5pdGlhbGl6ZUJyb3dz
ZXJJbnNwZWN0b3JQaXBlKCk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZlOWFmZWFjOTlhNjI3N2Y4YjBlMDU4MzM2N2FjMzNlZjJmZTk5ZjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBD
b3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYktpdEJyb3dzZXJJbnNwZWN0b3Iu
aCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdl
YmtpdEJyb3dzZXJJbnNwZWN0b3JDcmVhdGVOZXdQYWdlSW5Db250ZXh0KFdlYktpdFdlYkNvbnRl
eHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QnJvd3Nlckluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRCcm93c2VySW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlODIwNGE5Yjg5NjFlZmYwNzU0OTA2
ODQ5ZDZlZGMzMDI5NmU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCkBAIC0wLDAgKzEsODQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1p
Y3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFk
ZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0
Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0
QnJvd3Nlckluc3BlY3Rvcl9oCisjZGVmaW5lIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JfaAorCisj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMu
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXcuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SICAgICAgICAgICAgKHdlYmtp
dF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9J
TlNQRUNUT1Iob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3Ip
KQorI2RlZmluZSBXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNU
T1IpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1Moa2xhc3MpICAgIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQ
RUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19C
Uk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUikpCisjZGVmaW5lIFdFQktJVF9C
Uk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nlcklu
c3BlY3RvckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3Ig
ICAgICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3I7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QnJv
d3Nlckluc3BlY3RvckNsYXNzICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlIFdlYktpdEJyb3dzZXJJbnNw
ZWN0b3JQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3IgeworICAgIEdP
YmplY3QgcGFyZW50OworCisgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcyB7CisgICAgR09iamVj
dENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIFdlYktpdFdlYlZpZXcgKigqIGNyZWF0ZV9uZXdf
cGFnZSkgICAgICAgICAgIChXZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICpicm93c2VyX2luc3Bl
Y3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAqY29udGV4dCk7CisKKyAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lk
KTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9i
cm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRCcm93c2VySW5zcGVjdG9yICoKK3dlYmtpdF9icm93c2VyX2luc3Bl
Y3Rvcl9nZXRfZGVmYXVsdCAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBlICAgICAgICAgICAg
ICAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAxNmVmN2ViNmQ0MjdhOGQxNWE2OGM1ZDQ1MDI5Y2Nk
NGUzYjI2MzdjLi5lYjM3NTliMDViYjI4MTdjNDM1Yjk1YWM5Y2Q4MWMxNjJmY2IyNDVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QnJvd3Nl
ckluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc5ZDE1YzA4ZWRmNDIyMDMzZDU2NWEyMTNkYzliOWM4YzcyYjFlYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29m
dCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9f
V0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJy
b3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRp
ZgorCisjaWZuZGVmIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JfaAorI2RlZmluZSBXZWJLaXRCcm93
c2VySW5zcGVjdG9yX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3Bl
L1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlldy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IgICAgICAg
ICAgICAod2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJ
VF9CUk9XU0VSX0lOU1BFQ1RPUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nl
ckluc3BlY3RvcikpCisjZGVmaW5lIFdFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUihvYmopICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9CUk9X
U0VSX0lOU1BFQ1RPUikpCisjZGVmaW5lIFdFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9C
Uk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SKSkKKyNkZWZp
bmUgV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBXZWJL
aXRCcm93c2VySW5zcGVjdG9yQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nl
ckluc3BlY3RvciAgICAgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvcjsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3MgICBXZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xh
c3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgV2ViS2l0
QnJvd3Nlckluc3BlY3RvclByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ciB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJp
dmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzIHsK
KyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgV2ViS2l0V2ViVmlldyAqKCog
Y3JlYXRlX25ld19wYWdlKSAgICAgICAgICAgKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgICAgKmJy
b3dzZXJfaW5zcGVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICpjb250ZXh0KTsKKworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlw
ZQord2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAg
KHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKgord2Via2l0X2Jy
b3dzZXJfaW5zcGVjdG9yX2dldF9kZWZhdWx0ICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUg
ICAgICAgICAgICAgICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAppbmRleCA5Y2MzMWNiNDk2OGY1NGI2ZDMxZmNl
MjM5YjYyZDA5YzM3NDQ0ZWFiLi45MzA0OTllNjViNjBhZWNiMDdmOTY5Y2MyNzNjN2M1OWE0NTQ3
NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaD4KICNpbmNs
dWRlIDx3cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ci5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRDb250ZXh0TWVudS5oPgogI2luY2x1ZGUgPHdwZS9X
ZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQyZWNjZmUxN2MwMmJhNGRjMTQ3NDAy
OWQwZThiMTM3Yzc5MDM5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEyNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWlj
cm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNp
bmNsdWRlICJCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JCcm93c2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQu
aCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgVmVjdG9yPFdl
YlBhZ2VQcm94eSo+IGFsbFBhZ2VzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIFZlY3RvcjxXZWJQYWdlUHJveHkqPiByZXN1bHQ7CisgICAgZm9yIChXZWJQcm9jZXNzUG9v
bCogcG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBwb29sLT5wcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRSYW5nZShwcm9jZXNzLT5wYWdlcygpLmJlZ2luKCksIHByb2Nlc3MtPnBhZ2VzKCku
ZW5kKCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitCcm93c2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKQorICAgIDogbV9mcm9udGVu
ZENoYW5uZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6
OmNyZWF0ZSgpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKKyAgICAsIG1fYnJvd3NlckFnZW50
Q2xpZW50KEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudDo6Y3JlYXRlKCkpCit7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQnJvd3NlckFnZW50PihtX2JhY2tlbmRE
aXNwYXRjaGVyLCBtX2Jyb3dzZXJBZ2VudENsaWVudC5nZXQoKSkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPEJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9iYWNrZW5kRGlz
cGF0Y2hlcikpOworfQorCitCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fkJyb3dzZXJJbnNw
ZWN0b3JDb250cm9sbGVyKCkgPSBkZWZhdWx0OworCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsJiBmcm9udGVuZENoYW5uZWwp
Cit7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9mcm9udGVuZENoYW5u
ZWwgPSAmZnJvbnRlbmRDaGFubmVsOworICAgIC8vIEF1dG8tY29ubmVjdCB0byBhbGwgbmV3IHBh
Z2VzLgorICAgIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRDcmVhdGlvbkxpc3RlbmVy
KFt0aGlzXShXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcikg
eworICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZCgqbV9mcm9udGVu
ZENoYW5uZWwpOworICAgIH0pOworCisgICAgYm9vbCBjb25uZWN0aW5nRmlyc3RGcm9udGVuZCA9
ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMoKTsKKyAgICBtX2Zyb250ZW5kUm91dGVy
LT5jb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBpZiAoY29ubmVjdGluZ0Zp
cnN0RnJvbnRlbmQpCisgICAgICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwor
CisgICAgY29ubmVjdFRvQWxsUGFnZXMoKTsKK30KKwordm9pZCBCcm93c2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKK3sKKyAgICBBU1NFUlQobV9mcm9udGVuZENo
YW5uZWwpOworICAgIGRpc2Nvbm5lY3RGcm9tQWxsUGFnZXMoKTsKKworICAgIG1fZnJvbnRlbmRS
b3V0ZXItPmRpc2Nvbm5lY3RGcm9udGVuZCgqbV9mcm9udGVuZENoYW5uZWwpOworICAgIGlmICgh
bV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkpCisgICAgICAgIG1fYWdlbnRzLndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ry
b3llZCk7CisKKyAgICBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0Q3JlYXRpb25MaXN0
ZW5lcihudWxscHRyKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlz
cGF0Y2gobWVzc2FnZSk7Cit9CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RUb0FsbFBhZ2VzKCkKK3sKKyAgICBmb3IgKGF1dG8qIHBhZ2UgOiBhbGxQYWdlcygpKQor
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCptX2Zy
b250ZW5kQ2hhbm5lbCk7Cit9CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c2Nvbm5lY3RGcm9tQWxsUGFnZXMoKQoreworICAgIGZvciAoYXV0byogcGFnZSA6IGFsbFBhZ2Vz
KCkpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQoKm1fZnJvbnRlbmRDaGFubmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZWFj
YzU3OThhZjVkOTI1YTk5ODY2Y2IwZjhlMmY0MDVkYmY1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QWdlbnRSZWdpc3RyeS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQmFja2VuZERp
c3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudENs
aWVudDsKKworY2xhc3MgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcigp
OworICAgIH5Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlcigpOworCisgICAgdm9pZCBjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmKTsKKyAgICB2b2lkIGRpc2Nvbm5l
Y3RGcm9udGVuZCgpOworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgVGFyZ2V0SGFuZGxlcjsK
KyAgICB2b2lkIGNvbm5lY3RUb0FsbFBhZ2VzKCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbUFs
bFBhZ2VzKCk7CisKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENo
YW5uZWwgeyBudWxscHRyIH07CisgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1f
ZnJvbnRlbmRSb3V0ZXI7CisgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudD4gbV9icm93c2VyQWdlbnRDbGllbnQ7CisgICAgSW5zcGVjdG9yOjpBZ2VudFJl
Z2lzdHJ5IG1fYWdlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWE1ODlmZDhmN2JhZGYwNWUx
YmYzNzkzZjczNjNmNDI5YTY3OTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jv
c29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJvd3Nlckluc3Bl
Y3RvclBpcGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAi
QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQ
aXBlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIGluaXRpYWxpemVCcm93c2VySW5zcGVjdG9yUGlwZSgpCit7CisgICAgY2xh
c3MgQnJvd3Nlckluc3BlY3RvclBpcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQnJvd3Nlcklu
c3BlY3RvclBpcGUoKQorICAgICAgICAgICAgOiBtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVy
KCkKKyAgICAgICAgICAgICwgbV9yZW1vdGVJbnNwZWN0b3JQaXBlKG1fYnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIEJyb3dzZXJJbnNw
ZWN0b3JDb250cm9sbGVyIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI7CisgICAgICAgIFJl
bW90ZUluc3BlY3RvclBpcGUgbV9yZW1vdGVJbnNwZWN0b3JQaXBlOworICAgIH07CisKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnJvd3Nlckluc3BlY3RvclBpcGU+IHBpcGU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlw
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMmI0YmY1N2EyNjViYjgwNGVmOWU5M2UzMzIwY2Q2NjNiYzQzNDY2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUu
aApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
aW5pdGlhbGl6ZUJyb3dzZXJJbnNwZWN0b3JQaXBlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ODA5ZTQ3Y2U1YWQ4Mjk2M2YxZGNkMjgyODMyOGVlMTdmNGQ0OGZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdl
dEFnZW50LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1p
Y3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIgorCisj
aW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91
dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFyZ2V0Lmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3Bh
Y2UgeworCitJbnNwZWN0b3JUYXJnZXQqIHRhcmdldEZvcklkKGNvbnN0IFN0cmluZyYgdGFyZ2V0
SWQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBmb3IgKGF1dG8qIHBvb2wg
OiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byog
cGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiByZXN1bHQg
PSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZmluZFRhcmdldCh0YXJnZXRJZCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxscHRyKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZQorCitCcm93c2VySW5zcGVjdG9yVGFyZ2V0
QWdlbnQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudChCYWNrZW5kRGlzcGF0Y2hlciYgYmFj
a2VuZERpc3BhdGNoZXIpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKKyAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCit7Cit9CisKK0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6fkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudCgpID0gZGVmYXVsdDsKKwordm9pZCBC
cm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChG
cm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKK3sKK30KKwordm9pZCBCcm93c2Vy
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nv
bm5lY3RSZWFzb24pCit7Cit9CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50Ojpz
ZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiB0YXJn
ZXRJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1dG8qIHRhcmdldCA9IHRhcmdl
dEZvcklkKHRhcmdldElEKTsKKyAgICBpZiAodGFyZ2V0ID09IG51bGxwdHIpIHsKKyAgICAgICAg
ZXJyb3IgPSAiQ2Fubm90IGZpbmQgdGFyZ2V0IHdpdGggcHJvdmlkZWQgaWQuIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICB0YXJnZXQtPnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKG1l
c3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmE1OWE1YzNkMmY0Yzk4YWY2NTBlMTE0ZWZmZDA0NDU1Y2M4OTA4ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5o
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlRhcmdl
dEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnJv
d3Nlckluc3BlY3RvclRhcmdldEFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQoSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciYpOworICAgIH5Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdl
bnQoKSBvdmVycmlkZTsKKworICAgIC8vIEluc3BlY3RvckFnZW50QmFzZQorICAgIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OworCisgICAgLy8gVGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBzZW5k
TWVzc2FnZVRvVGFyZ2V0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOworCitwcml2YXRlOgorICAgIFJl
ZjxJbnNwZWN0b3I6OlRhcmdldEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9w
VXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXggYjY2OTRmZTkwNmVhMGI0ZjgyYTU0MDY2
MmNjODU1MGIyZmUxYTVkMi4uNTlmOTNjNzkxNjdkM2QzOTJiNDZmZjUyNDM0OTRiMDJhZjA3MzU1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24u
aApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEhBVkUoQVBQX1NTTykKIAogI2luY2x1ZGUgIlNPQXV0
aG9yaXphdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBPQkpDX0NMQVNTIFdLU09TZWNyZXREZWxlZ2F0
ZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3OwpAQCAtMzgsNiArNDAsOCBAQCBjbGFzcyBOYXZpZ2F0
aW9uQWN0aW9uOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZVByb3h5Owor
CiAvLyBGU006IElkbGUgPT4gQWN0aXZlID0+IENvbXBsZXRlZAogY2xhc3MgUG9wVXBTT0F1dGhv
cml6YXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIFNPQXV0aG9yaXphdGlvblNlc3Npb24gewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Np
b24ubW0KaW5kZXggMDc2Y2ZhYTY3NmE3NGM0ZjMzNjAxZmY2NjQ0ZGVjNWU1YjU2MWNhMS4uMGYx
ODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEzMDJiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW1wb3J0ICJXS1VJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yQnJvd3NlckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTI5YzQ2NzI0ODgwY2IyZGIzYjVl
MmQ4ZDA5MTc4OWUxMTNjNWVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9z
b2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93
c2VyQWdlbnQuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAi
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3Rv
clRhcmdldC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudDo6SW5z
cGVjdG9yQnJvd3NlckFnZW50KEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmRE
aXNwYXRjaGVyLCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQqIGNsaWVudCkKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiQnJvd3NlciJfcykKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
QnJvd3NlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitJbnNwZWN0b3JCcm93c2VyQWdlbnQ6
On5JbnNwZWN0b3JCcm93c2VyQWdlbnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW5zcGVjdG9yQnJv
d3NlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBC
YWNrZW5kRGlzcGF0Y2hlciopCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQoreworfQorCit2
b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6Y2xvc2UoRXJyb3JTdHJpbmcmIGVycm9yKQorewor
ICAgIGlmIChtX2NsaWVudCA9PSBudWxscHRyKQorICAgICAgICBlcnJvciA9ICJubyBwbGF0Zm9y
bSBkZWxlZ2F0ZSB0byBjbG9zZSBicm93c2VyIjsKKyAgICBlbHNlCisgICAgICAgIG1fY2xpZW50
LT5jbG9zZUFsbFdpbmRvd3MoKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNy
ZWF0ZUNvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yLCBTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQp
Cit7CisgICAgbV9jbGllbnQtPmNyZWF0ZUJyb3dzZXJDb250ZXh0KGVycm9yLCBicm93c2VyQ29u
dGV4dElEKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRlbGV0ZUNvbnRleHQo
RXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7Cisg
ICAgbV9jbGllbnQtPmRlbGV0ZUJyb3dzZXJDb250ZXh0KGVycm9yLCBicm93c2VyQ29udGV4dElE
KTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0ZVBhZ2UoRXJyb3JTdHJp
bmcmIGVycm9yLCBjb25zdCBTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQsIFN0cmluZyogdGFyZ2V0
SUQpCit7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcGFnZSA9IG1fY2xpZW50LT5jcmVhdGVQ
YWdlKGVycm9yLCBicm93c2VyQ29udGV4dElEKTsKKyAgICBpZiAocGFnZSA9PSBudWxscHRyKQor
ICAgICAgICByZXR1cm47CisKKyAgICAqdGFyZ2V0SUQgPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Ojp0b1RhcmdldElEKHBhZ2UtPndlYlBhZ2VJRCgpKTsKK30KKworU3RyaW5nIEluc3BlY3RvckJy
b3dzZXJBZ2VudDo6dG9Ccm93c2VyQ29udGV4dElEUHJvdG9jb2xTdHJpbmcoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
YXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShzZXNzaW9uSUQudG9VSW50NjQoKSwgYnVpbGRl
ciwgMTYpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYyNGM2NTVhYjM5ZGFjN2MyNmEyMjM0NTVkOGNmMGI0ODkwMjA2NzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckFnZW50QmFzZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQmFja2VuZERpc3Bh
dGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CitjbGFzcyBGcm9udGVuZFJvdXRlcjsKK30K
KworbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ7CitjbGFzcyBXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjsKKworY2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50IGZpbmFs
IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpCcm93c2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JCcm93c2VyQWdlbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIEluc3BlY3RvckJyb3dzZXJBZ2VudChJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyJiwgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50Kik7CisgICAgfkluc3BlY3Rv
ckJyb3dzZXJBZ2VudCgpIG92ZXJyaWRlOworCisgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCisg
ICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJv
dXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CisKKyAgICAvLyBCcm93c2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisg
ICAgdm9pZCBjbG9zZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjcmVhdGVDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBTdHJpbmcqIGJyb3dzZXJD
b250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlQ29udGV4dChJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2VyQ29udGV4dElEKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNyZWF0ZVBhZ2UoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyog
YnJvd3NlckNvbnRleHRJRCwgU3RyaW5nKiB0YXJnZXRJZCkgb3ZlcnJpZGU7CisKKyAgICBzdGF0
aWMgU3RyaW5nIHRvQnJvd3NlckNvbnRleHRJRFByb3RvY29sU3RyaW5nKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJik7CisKK3ByaXZhdGU6CisgICAgUmVmPEluc3BlY3Rvcjo6QnJvd3NlckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTkyYjgw
ODdhODlmY2ExMzY2OTVjYzkzZjc1ZWEzZjkwYTg1NWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmgKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBJbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQgeworcHVibGljOgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnQ+IGNyZWF0ZSgpOworI2VuZGlmCisgICAgdmlydHVhbCB+SW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6U3RyaW5nJiBlcnJvciwgY29u
c3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VBbGxXaW5kb3dzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCcm93c2VyQ29u
dGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5nKiBicm93c2VyQ29udGV4dElEKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBl
cnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlZGQ4ODRjNDIwMjkzMmEwYjQ1YTU1ZTliOGM1MTM0Y2NmZjg5NjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBl
LmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3Nv
ZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQaXBlLmgiCisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKKyNpZiBPUyhVTklYKQorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBjb25zdCBpbnQgcmVhZEZEID0gMzsKK3N0YXRpYyBjb25zdCBpbnQgd3JpdGVGRCA9IDQ7
CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvclBpcGU6OlJlbW90ZUZyb250ZW5kQ2hhbm5lbCA6IHB1
YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlRnJvbnRlbmRDaGFubmVsKCkKKyAgICAgICAgOiBt
X3NlbmRlclF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJJbnNwZWN0b3IgcGlwZSB3cml0ZXIiKSkK
KyAgICB7CisgICAgfQorCisgICAgflJlbW90ZUZyb250ZW5kQ2hhbm5lbCgpIG92ZXJyaWRlID0g
ZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBDb25uZWN0aW9uVHlwZTo6UmVtb3RlOworICAg
IH0KKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fc2VuZGVyUXVldWUtPmRpc3BhdGNoKFttZXNz
YWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0oKSB7CisgICAgICAgICAgICBkcHJpbnRmKHdy
aXRlRkQsICIlcyVjIiwgbWVzc2FnZS5hc2NpaSgpLmRhdGEoKSwgJ1wwJyk7CisgICAgICAgIH0p
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3NlbmRlclF1ZXVlOwor
fTsKKworUmVtb3RlSW5zcGVjdG9yUGlwZTo6UmVtb3RlSW5zcGVjdG9yUGlwZShCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlciYgYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgOiBtX3Jl
bW90ZUZyb250ZW5kQ2hhbm5lbChtYWtlVW5pcXVlPFJlbW90ZUZyb250ZW5kQ2hhbm5lbD4oKSkK
KyAgICAsIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoYnJvd3Nlckluc3BlY3RvckNvbnRy
b2xsZXIpCit7CisgICAgc3RhcnQoKTsKK30KKworUmVtb3RlSW5zcGVjdG9yUGlwZTo6flJlbW90
ZUluc3BlY3RvclBpcGUoKQoreworICAgIHN0b3AoKTsKK30KKworYm9vbCBSZW1vdGVJbnNwZWN0
b3JQaXBlOjpzdGFydCgpCit7CisgICAgaWYgKG1fcmVjZWl2ZXJUaHJlYWQpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJv
bnRlbmQoKm1fcmVtb3RlRnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX3Rlcm1pbmF0ZWQgPSBmYWxz
ZTsKKyAgICBtX3JlY2VpdmVyVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkluc3BlY3RvciBwaXBl
IHJlYWRlciIsIFt0aGlzXSB7CisgICAgICAgIHdvcmtlclJ1bigpOworICAgIH0pOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvclBpcGU6OnN0b3AoKQoreworICAg
IGlmICghbV9yZWNlaXZlclRocmVhZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9icm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKworICAgIG1fdGVybWlu
YXRlZCA9IHRydWU7CisgICAgbV9yZWNlaXZlclRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsK
KyAgICBtX3JlY2VpdmVyVGhyZWFkID0gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3JQaXBlOjp3b3JrZXJSdW4oKQoreworICAgIGNvbnN0IHNpemVfdCBidWZTaXplID0gMjU2ICog
MTAyNDsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihidWZTaXplKTsK
KyAgICBWZWN0b3I8Y2hhcj4gbGluZTsKKyAgICB3aGlsZSAoIW1fdGVybWluYXRlZCkgeworICAg
ICAgICBzc2l6ZV90IHNpemUgPSByZWFkKHJlYWRGRCwgYnVmZmVyLmdldCgpLCBidWZTaXplKTsK
KyAgICAgICAgaWYgKCFzaXplKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBpcGUg
Y2xvc2VkIGZvciByZWFkaW5nLlxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJy
b3IgcmVhZGluZyBmcm9tIHBpcGU6ICVkXG4iLCBlcnJubyk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBzaXplX3Qgc3RhcnQgPSAwOworICAgICAgICBzaXplX3QgZW5k
ID0gbGluZS5zaXplKCk7CisgICAgICAgIGxpbmUuYXBwZW5kKGJ1ZmZlci5nZXQoKSwgc2l6ZSk7
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBmb3IgKDsgZW5kIDwgbGluZS5z
aXplKCk7ICsrZW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGxpbmVbZW5kXSA9PSAnXDAnKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChlbmQgPT0gbGluZS5zaXplKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGlmIChlbmQgPiBzdGFydCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0g
U3RyaW5nOjpmcm9tVVRGOChsaW5lLmRhdGEoKSArIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAg
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBtZXNzYWdlXSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghbV90ZXJtaW5hdGVkKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICArK2VuZDsKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kOworICAgICAgICB9CisgICAg
ICAgIGlmIChzdGFydCAmJiBzdGFydCA8IGxpbmUuc2l6ZSgpKQorICAgICAgICAgICAgbWVtbW92
ZShsaW5lLmRhdGEoKSwgbGluZS5kYXRhKCkgKyBzdGFydCwgbGluZS5zaXplKCkgLSBzdGFydCk7
CisgICAgICAgIGxpbmUuc2hyaW5rKGxpbmUuc2l6ZSgpIC0gc3RhcnQpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBp
cGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zN2IwNjIyNTU3Y2FhODE5NTRiYTg5MTUwMTg5N2ExOWI4NTJkYzZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI7CisKK2NsYXNzIFJlbW90
ZUluc3BlY3RvclBpcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUluc3BlY3Rv
clBpcGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxp
Y2l0IFJlbW90ZUluc3BlY3RvclBpcGUoQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXImKTsKKyAg
ICB+UmVtb3RlSW5zcGVjdG9yUGlwZSgpOworCitwcml2YXRlOgorICAgIGNsYXNzIFJlbW90ZUZy
b250ZW5kQ2hhbm5lbDsKKworICAgIGJvb2wgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKwor
ICAgIHZvaWQgd29ya2VyUnVuKCk7CisKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3JlY2VpdmVyVGhy
ZWFkOworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fdGVybWluYXRlZCB7IGZhbHNlIH07CisgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX3JlbW90ZUZyb250
ZW5kQ2hhbm5lbDsKKyAgICBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlciYgbV9icm93c2VySW5z
cGVjdG9yQ29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAKaW5kZXggNmYzNzFkN2UzNmZhMWZhNDJmY2RmZjQzZWYxZDg2MDgwNjYxMjVmZS4uMzYz
NTViZmM3MjI3MmQxNmE0MDRjZGFhMmUyZTYxOGZkNTA5MGE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5mY1NlcnZp
Y2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0b3JUcmFuc3BvcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1dGhlbnRp
Y2F0aW9uQ29uc3RhbnRzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjlhOTQ2OWFiNTkxMzZmOWU5YTM3
MzZiZmRiMGU5ZDUyOWMwZmJjZS4uYWY5NTU5YmFiZDQ4MzYyYjJhNzU1ZGMyZTAzYWVkN2EyY2M3
YjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJJ
bnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmgiCkBAIC00NiwyNiArNDcsNjAgQEAgc3RhdGljIFN0cmluZyBnZXRUYXJnZXRJRChj
b25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQogICAgIHJldHVybiBX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojp0b1RhcmdldElEKHByb3Zpc2lvbmFsUGFnZS53ZWJQYWdl
SUQoKSk7CiB9CiAKK3N0YXRpYyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Q3JlYXRpb25M
aXN0ZW5lciYgY3JlYXRpb25MaXN0ZW5lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpDcmVhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsK
KyAgICByZXR1cm4gbGlzdGVuZXI7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldENyZWF0aW9uTGlzdGVuZXIoQ3JlYXRpb25MaXN0ZW5lciBsaXN0ZW5lcikKK3sKKyAg
ICBjcmVhdGlvbkxpc3RlbmVyKCkgPSBsaXN0ZW5lcjsKK30KKwogV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkK
ICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRl
cjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0
QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVy
LmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBTdHJpbmcgYnJvd3NlckNv
bnRleHRJRDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBicm93c2VyQ29udGV4
dElEID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0
cmluZyhwYWdlLnNlc3Npb25JRCgpKTsKKyNlbmRpZgorICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBt
YWtlVW5pcXVlPEluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpLCBicm93c2VyQ29udGV4dElEKTsKIAogICAgIG1fdGFy
Z2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZN
b3ZlKHRhcmdldEFnZW50KSk7CisKKyAgICBpZiAoY3JlYXRpb25MaXN0ZW5lcigpKQorICAgICAg
ICBjcmVhdGlvbkxpc3RlbmVyKCkoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyOjppbml0KCkKIHsKKyAgICAvLyB3aW5kb3cub3BlbiB3aWxsIGNyZWF0ZSBwYWdl
IHdpdGggYWxyZWFkeSBydW5uaW5nIHByb2Nlc3MuCisgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojp0b1RhcmdldElEKG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAg
ICAgY3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIAordm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkRmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKCkKK3sKKyAgICBTdHJpbmcgcGFnZVRh
cmdldElEID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3BhZ2Uud2ViUGFn
ZUlEKCkpOworICAgIC8vIENyZWF0ZSB0YXJnZXQgb25seSBhZnRlciBhdHRhY2hpbmcgdG8gYSBX
ZWIgUHJvY2VzcyBmaXJzdCB0aW1lLiBCZWZvcmUgdGhhdAorICAgIC8vIHdlIGNhbm5vdCBldmVu
dCBlc3RhYmxpc2ggZnJvbnRlbmQgY29ubmVjdGlvbi4KKyAgICBpZiAobV90YXJnZXRzLmNvbnRh
aW5zKHBhZ2VUYXJnZXRJRCkpCisgICAgICAgIHJldHVybjsKKyAgICBjcmVhdGVJbnNwZWN0b3JU
YXJnZXQocGFnZVRhcmdldElELCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2Up
OworfQorCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpwYWdlQ2xvc2VkKCkKIHsK
KyAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJn
ZXRJRChtX3BhZ2Uud2ViUGFnZUlEKCkpOworICAgIGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQocGFn
ZVRhcmdldElkKTsKKwogICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1fYWdl
bnRzLmRpc2NhcmRWYWx1ZXMoKTsKQEAgLTEzNCw2ICsxNjksMTEgQEAgdm9pZCBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2EKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0K
IAorSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQqIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
OjpmaW5kVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgcmV0dXJuIG1fdGFy
Z2V0cy5nZXQodGFyZ2V0SWQpOworfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiB2
b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNh
dGluZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5oCmluZGV4IDgyOGJjM2NjYzdlMDdkODEyMDMzNDMxYjI3YWU3ZjBiYzhj
ZjljNTQuLjIxYjI5MjBhMmFkMzE4MWRlOWFkY2M1MmMwNzYxZDdkMGEzNWQwZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtNDgsNiArNDgsMTEgQEAgcHVibGljOgogICAgIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBkaWRGaW5p
c2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoKTsKKworICAgIHVzaW5nIENyZWF0aW9uTGlzdGVuZXIg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXImKT47CisgICAg
c3RhdGljIHZvaWQgc2V0Q3JlYXRpb25MaXN0ZW5lcihDcmVhdGlvbkxpc3RlbmVyKTsKKwogICAg
IHZvaWQgcGFnZUNsb3NlZCgpOwogCiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7
CkBAIC01Nyw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RBbGxGcm9udGVu
ZHMoKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQqIGZpbmRUYXJnZXQo
Y29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ICAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA4ZWM4ZmFlNzRlM2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4
MGFmLi4wMGQ5NmU3ZjYxNWY0ZGNhZmRjMDY2ZjExYzMxNTJjZDg5ZmU3MjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2NSw2ICs4NjUsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKFByb2Nlc3NMYXVuY2hS
ZWFzb24gcmVhc29uKQogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRTd2FwV2ViUHJvY2Vzc2VzKCk7
CiAgICAgaWYgKHJlYXNvbiAhPSBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2VzcykK
ICAgICAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBh
aW50KCk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRGaW5pc2hBdHRhY2hpbmdUb1dl
YlByb2Nlc3MoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1By
b2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9JbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmNDI5
ZjU1NmNkZDUxMTUwY2U2NGQ5YjRmYTU4MjliODdjOGQzMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xp
Yi5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9z
b2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oIgorCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2Vy
QWdlbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBjb2xsZWN0UGFnZXMoT3B0aW9uYWw8UEFMOjpT
ZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3sKKyAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcmVzdWx0
OworICAgIGZvciAoV2ViUHJvY2Vzc1Bvb2wqIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJv
Y2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vz
c2VzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb25JRCB8fCBwYWdlLT5zZXNzaW9uSUQoKSA9
PSBzZXNzaW9uSUQpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocGFnZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIHZvaWQgY2xvc2VBbGxQYWdlcyhPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lv
bklEKQoreworICAgIFZlY3RvcjxXZWJQYWdlUHJveHkqPiBwYWdlcyA9IGNvbGxlY3RQYWdlcyhz
ZXNzaW9uSUQpOworICAgIGZvciAoYXV0byogcGFnZSA6IHBhZ2VzKQorICAgICAgICBwYWdlLT5j
bG9zZVBhZ2UoZmFsc2UpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50PiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYj4oKTsKK30K
KworSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6SW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50R2xpYigpCit7Cit9CisKK1JlZlB0cjxXZWJQYWdlUHJveHk+IEluc3BlY3RvckJyb3dz
ZXJBZ2VudENsaWVudEdsaWI6OmNyZWF0ZVBhZ2UoV1RGOjpTdHJpbmcmIGVycm9yLCBjb25zdCBX
VEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CisgICAgaWYgKGJyb3dz
ZXJDb250ZXh0SUQgIT0gbnVsbHB0cikgeworICAgICAgICBjb250ZXh0ID0gbV9pZFRvQ29udGV4
dC5nZXQoKmJyb3dzZXJDb250ZXh0SUQpOworICAgICAgICBpZiAoY29udGV4dCA9PSBudWxscHRy
KSB7CisgICAgICAgICAgICBlcnJvciA9ICJDb250ZXh0IHdpdGggcHJvdmlkZWQgaWQgbm90IGZv
dW5kIjsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAg
IFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSB3ZWJraXRCcm93c2VySW5zcGVjdG9yQ3JlYXRl
TmV3UGFnZUluQ29udGV4dChjb250ZXh0KTsKKyAgICBpZiAocGFnZSA9PSBudWxscHRyKQorICAg
ICAgICBlcnJvciA9ICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBwYWdlIGluIHRoZSBjb250ZXh0IjsK
KyAgICByZXR1cm4gcGFnZTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRH
bGliOjpjbG9zZUFsbFdpbmRvd3MoKQoreworICAgIGNsb3NlQWxsUGFnZXMoT3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+KCkpOworICAgIG1faWRUb0NvbnRleHQuY2xlYXIoKTsKKyAgICAvLyBGSVhN
RSh5dXJ5cyk6IGNhbGwgZ19tYWluX2xvb3BfcXVpdCgpID8KK30KKworc3RhdGljIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JREZyb21Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7
CisgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBkYXRhTWFuYWdlciA9IHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIoY29udGV4dCk7CisgICAgV2Vic2l0ZURh
dGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShkYXRhTWFuYWdlcik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUuc2Vzc2lv
bklEKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6Y3JlYXRl
QnJvd3NlckNvbnRleHQoV1RGOjpTdHJpbmcmIGVycm9yLCBXVEY6OlN0cmluZyogYnJvd3NlckNv
bnRleHRJRCkKK3sKKyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gbWFuYWdl
ciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgp
KTsKKyAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoV0VC
S0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndl
YnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlci5nZXQoKSwgInByb2Nlc3Mtc3dhcC1vbi1jcm9z
cy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIHRydWUsIG51bGxwdHIpKSk7CisgICAgaWYgKCFj
b250ZXh0KSB7CisgICAgICAgIGVycm9yID0gIkZhaWxlZCB0byBjcmVhdGUgR0xpYiBlcGhlbWVy
YWwgY29udGV4dCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEID0gc2Vzc2lvbklERnJvbUNvbnRleHQoY29udGV4dC5nZXQoKSk7CisgICAgU3Ry
aW5nIGlkID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0SURQcm90b2Nv
bFN0cmluZyhzZXNzaW9uSUQpOworICAgIG1faWRUb0NvbnRleHQuc2V0KGlkLCBXVEZNb3ZlKGNv
bnRleHQpKTsKKyAgICAqYnJvd3NlckNvbnRleHRJRCA9IGlkOworfQorCit2b2lkIEluc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudEdsaWI6OmRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5n
JiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgR1Jl
ZlB0cjxXZWJLaXRXZWJDb250ZXh0PiBjb250ZXh0ID0gbV9pZFRvQ29udGV4dC50YWtlKGJyb3dz
ZXJDb250ZXh0SUQpOworICAgIGlmIChjb250ZXh0ID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJy
b3IgPSAiQ29udGV4dCB3aXRoIHByb3ZpZGVkIGlkIG5vdCBmb3VuZCI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2xvc2VBbGxQYWdlcyhzZXNzaW9uSURGcm9tQ29udGV4dChjb250ZXh0
LmdldCgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBmZWZiNGM1NWIzYzc1MjhmZWMwNTI3Y2JkZTcwN2Q3MzZhMWNmZDgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENs
aWVudEdMaWIuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1p
Y3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudC5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dEdsaWIgOiBwdWJsaWMgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnRHbGliKCk7CisgICAgfkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIoKSBvdmVycmlk
ZSA9IGRlZmF1bHQ7CisKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6
U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVh
dGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5nKiBicm93c2Vy
Q29udGV4dElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6
U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIFdlYktpdFdlYkNvbnRleHQqIGZpbmRDb250ZXh0KFdURjo6
U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpOworCisg
ICAgSGFzaE1hcDxTdHJpbmcsIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4+IG1faWRUb0NvbnRl
eHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0luc3Bl
Y3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTMzYjQ0
NWFhM2UzZGE3OTNhZTA5MTk1ZjI2YjI5ODg1ZTcwZWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5j
cHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaCIKKworI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ+IEluc3BlY3RvckJyb3dzZXJBZ2VudENs
aWVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnRNYWM+KCk7Cit9CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYzo6
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjKCkKK3sKK30KKworUmVmUHRyPFdlYlBhZ2VQ
cm94eT4gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpjcmVhdGVQYWdlKFdURjo6U3Ry
aW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAg
ZXJyb3IgPSAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFnZSBpbiB0aGUgY29udGV4dCI7CisgICAg
ZnByaW50ZihzdGRlcnIsICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmNsb3NlQWxs
V2luZG93cyAtIE5PVCBJTVBMRU1FTlRFRFxuIik7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpjbG9zZUFsbFdpbmRvd3MoKQor
eworICAgIGZwcmludGYoc3RkZXJyLCAiSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpj
bG9zZUFsbFdpbmRvd3MgLSBOT1QgSU1QTEVNRU5URURcbiIpOworfQorCit2b2lkIEluc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudE1hYzo6Y3JlYXRlQnJvd3NlckNvbnRleHQoV1RGOjpTdHJpbmcm
IGVycm9yLCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBlcnJvciA9ICJG
YWlsZWQgdG8gY3JlYXRlIE1hYyBlcGhlbWVyYWwgY29udGV4dCI7CisgICAgZnByaW50ZihzdGRl
cnIsICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmNyZWF0ZUJyb3dzZXJDb250ZXh0
IC0gTk9UIElNUExFTUVOVEVEXG4iKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRNYWM6OmRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3Qg
V1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgZXJyb3IgPSAiQ29udGV4dCB3
aXRoIHByb3ZpZGVkIGlkIG5vdCBmb3VuZCI7CisgICAgZnByaW50ZihzdGRlcnIsICJJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmRlbGV0ZUJyb3dzZXJDb250ZXh0IC0gTk9UIElNUExF
TUVOVEVEXG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
TWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzdiMzE3M2ZlZGQwNjc0NTFjZjZiNzczOGExN2ExYzU5NzM3NTkw
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9JbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29y
cG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjIDogcHVibGljIEluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjKCk7CisgICAgfkluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudE1hYygpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIFJlZlB0cjxX
ZWJQYWdlUHJveHk+IGNyZWF0ZVBhZ2UoV1RGOjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0
cmluZyogYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZUFsbFdpbmRv
d3MoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5n
JiBlcnJvciwgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZv
aWQgZGVsZXRlQnJvd3NlckNvbnRleHQoV1RGOjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0
cmluZyYgYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7Cit9OworCisKK30gLy8gbmFtZXNwYWNl
IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzcyYTEwMDlkODEwYjhiZDNhY2EwNTFlMmJiMjRjMzMxMTNhZWViOS4uOTk4YjJmNzkw
MzI2MWYwZWIyYjNjMjYyOWRkMzhlZmFlMTAxYTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjYyLDYgKzE2NjIsMTIgQEAKIAkJ
Q0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0QUUyQTFBNURDRjQzMDAwMkY0OUIgLyog
VUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVw
TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNC
OTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0
OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkg
LyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJCUQ3MUE5NDMxMjM3MEUwMjUwMDJDNEQ5
RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcxQTk0MkYyMzcwRTAyNDAwMkM0RDlFIC8q
IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAgKi87IH07CisJCUQ3MUE5NDMyMjM3
MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5NDMwMjM3MEUwMjUw
MDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaCAqLzsgfTsKKwkJRDcx
QTk0MzQyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcxQTk0MzMyMzcw
RTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oICovOyB9OworCQlE
NzFBOTQzODIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5NDM3MjM3
MEYwMzIwMDJDNEQ5RSAvKiBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oICovOyB9OworCQlE
NzFBOTQzQTIzNzBGMDYxMDAyQzREOUUgLyogUmVtb3RlSW5zcGVjdG9yUGlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcxQTk0MzkyMzcwRjA2MDAw
MkM0RDlFIC8qIFJlbW90ZUluc3BlY3RvclBpcGUuaCAqLzsgfTsKKwkJRDcxQTk0NEEyMzcyMjkw
QjAwMkM0RDlFIC8qIF9XS0Jyb3dzZXJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5NDQ5MjM3MjI5MEIwMDJDNEQ5RSAvKiBfV0tC
cm93c2VySW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNUZFNTMxOEQ3
QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovOyB9OwogCQlFMTFEMzVBRTE2QjYzRDFC
MDA2RDIzRDcgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM3MTUwQUI1RTIwMEM3MzE2OSAvKiBj
b20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAqLzsgfTsKIAkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgy
IC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyog
TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKQEAgLTQ2OTAsNiArNDY5
NiwxMyBAQAogCQlEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNl
YXJjaFBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1
MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQ3MUE5NDJDMjM3MERGODEwMDJDNEQ5RSAvKiBXS0Jyb3dzZXJJbnNwZWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2VySW5zcGVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3MUE5NDJGMjM3MEUwMjQwMDJDNEQ5
RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzAyMzcwRTAyNTAwMkM0RDlFIC8q
IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzMyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDcxQTk0MzcyMzcwRjAzMjAwMkM0RDlFIC8qIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyb3dzZXJJbnNwZWN0b3JDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3MUE5NDM5MjM3MEYwNjAwMDJD
NEQ5RSAvKiBSZW1vdGVJbnNwZWN0b3JQaXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUluc3BlY3RvclBpcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDcxQTk0NDkyMzcyMjkwQjAwMkM0RDlFIC8qIF9XS0Jyb3dzZXJJbnNwZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQnJvd3Nlckluc3BlY3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0
aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRp
dmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNThDNjM1
MTM3MUFDQTAwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwNUZFNTMxOEQ3QjlERTAwOEY1N0E4IC8q
IEVkaXRpbmdSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5n
UmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzMDgsNiArNjMyMSw3IEBA
CiAJCQkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29u
ZmlndXJhdGlvbi5tbSAqLywKIAkJCQk5OTBEMjhBODFDNjQwNEIwMDA5ODY5NzcgLyogX1dLQXV0
b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oICovLAogCQkJCTk5MEQyOEFGMUM2NTIwMzkwMDk4Njk3
NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggKi8sCisJCQkJRDcxQTk0NDkyMzcy
MjkwQjAwMkM0RDlFIC8qIF9XS0Jyb3dzZXJJbnNwZWN0b3IuaCAqLywKIAkJCQk1QzQ2MDlFMjIy
NDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi8sCiAJCQkJNUM0
NjA5RTMyMjQzMEU0RDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbSAqLywK
IAkJCQk1QzQ2MDlFNDIyNDMwRTREMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9u
SW50ZXJuYWwuaCAqLywKQEAgLTc3OTEsNiArNzgwNSw3IEBACiAJCQkJRTE1MTNDNjUxNjZFQUJC
MjAwMTQ5RkNCIC8qIEF1eGlsaWFyeVByb2Nlc3NQcm94eS5oICovLAogCQkJCTQ2QTJCNjA2MUU1
Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
ICovLAogCQkJCTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCAqLywKKwkJCQlENzFBOTQzNzIzNzBGMDMyMDAyQzREOUUgLyog
QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCAqLywKIAkJCQkwNzI5N0Y5QzFDMTcxMUVBMDAz
RjA3MzUgLyogRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwICovLAogCQkJCTA3Mjk3RjlEMUMx
N0JCRUEyMjNGMDczNSAvKiBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oICovLAogCQkJCUJDMjY1
MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKQEAgLTc4MDYs
NiArNzgyMSw3IEBACiAJCQkJMkRENUE3MkExRUJGMDlBNzAwOUJBNTk3IC8qIEhpZGRlblBhZ2VU
aHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCAqLywKIAkJCQk4MzlBMkYyRjFFMjA2NzM5
MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwICovLAog
CQkJCTgzOUEyRjMwMUUyMDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5oICovLAorCQkJCUQ3MUE5NDMzMjM3MEUwN0EwMDJDNEQ5RSAvKiBJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnQuaCAqLywKIAkJCQlBNUUzOTFGQjIxODNDMUU5MDBDOEZCMzEg
LyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwICovLAogCQkJCUE1RTM5MUZDMjE4M0MxRTkwMEM4
RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oICovLAogCQkJCTVDRUFCQTJCMjMzMzI1MTQw
MDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8sCkBAIC03ODIzLDYgKzc4Mzks
NyBAQAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50LmggKi8sCiAJCQkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcCAqLywKIAkJCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9u
YWxQYWdlUHJveHkuaCAqLywKKwkJCQlENzFBOTQzOTIzNzBGMDYwMDAyQzREOUUgLyogUmVtb3Rl
SW5zcGVjdG9yUGlwZS5oICovLAogCQkJCUE1NUJBODFCMUJBMjVCMUUwMDdDRDMzRCAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgKi8sCiAJCQkJQTU1QkE4MTkxQkEyNUIxRTAwN0NEMzNE
IC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5LmggKi8sCiAJCQkJQTU1QkE4MUExQkEyNUIxRTAw
N0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtODA2
Miw2ICs4MDc5LDcgQEAKIAkJCQlCQzY0NkMxOTExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmLmggKi8sCiAJCQkJQkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdL
QmFja0ZvcndhcmRMaXN0UmVmLmNwcCAqLywKIAkJCQlCQzY0NkMxNzExREQzOTlGMDA2NDU1QjAg
LyogV0tCYWNrRm9yd2FyZExpc3RSZWYuaCAqLywKKwkJCQlENzFBOTQyQzIzNzBERjgxMDAyQzRE
OUUgLyogV0tCcm93c2VySW5zcGVjdG9yLmggKi8sCiAJCQkJQkNCOUUyNEExMTIwRTE1QzAwQTEz
N0UwIC8qIFdLQ29udGV4dC5jcHAgKi8sCiAJCQkJQkNCOUUyNDkxMTIwRTE1QzAwQTEzN0UwIC8q
IFdLQ29udGV4dC5oICovLAogCQkJCTFBRTUyRjkzMTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmNwcCAqLywKQEAgLTg2NDksNiArODY2Nyw4IEBACiAJCQkJQzE4
MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi8sCiAJCQkJMzFBQkE3OUQy
MTVBRjlFMDAwQzkwRTMxIC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuY3BwICovLAogCQkJ
CTMxQUJBNzlDMjE1QUY5RTAwMEM5MEUzMSAvKiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgg
Ki8sCisJCQkJRDcxQTk0MkYyMzcwRTAyNDAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudE1hYy5jcHAgKi8sCisJCQkJRDcxQTk0MzAyMzcwRTAyNTAwMkM0RDlFIC8qIEluc3Bl
Y3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5oICovLAogCQkJCTFBRkRFNjVCMTk1NEU4RDUwMEM0
OEZGQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwICovLAogCQkJCTBGQ0I0RTU4MThC
QkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbE1hYy5oICovLAogCQkJCTBGQ0I0RTU5MThC
QkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbE1hYy5tbSAqLywKQEAgLTkyOTIsNiArOTMx
Miw3IEBACiAJCQkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNz
aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QUMxQzY0MjBDRjAw
OTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5MEQyOEIxMUM2NTIwOEQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlENzFBOTQ0QTIzNzIyOTBCMDAyQzREOUUgLyogX1dL
QnJvd3Nlckluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0NjA5RTcyMjQzMTdCNDAw
OTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUM0NjA5RTgyMjQzMTdCQjAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDRGODFCRTAxRkY0MDA4NzRBRjEgLyogX1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgzLDYgKzk1MDQs
NyBAQAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5n
UmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFG
MSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRDcxQTk0MzgyMzcwRjAzMjAwMkM0
RDlFIC8qIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTk1NzcsNiArOTU5OSw4IEBACiAJCQkJQkMx
NERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERDQ1QURFMUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4Nzkx
IC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlENzFBOTQzNDIzNzBF
MDdBMDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlENzFBOTQzMjIzNzBFMDI1MDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEg
LyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1
MDc2NkEwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTk3NTcsNiArOTc4MSw3IEBACiAJ
CQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5l
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVk
aXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlENzFBOTQz
QTIzNzBGMDYxMDAyQzREOUUgLyogUmVtb3RlSW5zcGVjdG9yUGlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFF
QTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTI4OSw2ICsxMTMxNCw3IEBACiAJCQkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5
IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyog
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlENzFBOTQz
MTIzNzBFMDI1MDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0aG9k
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05Q
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAv
KiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNmNmODU1ZDFlMWEzNjVkYzk5ZWIyNDUzZjU2YWE4MGE0ZWFiMzQ2OS4uMjQzZWJiZDUyNjYw
YTVkYTIwMjk0ZjBiNGEwNDBmODIxOTY0NTJjNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTExLTA1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGludHJvZHVjZSBicm93c2VyIGluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IGZsYWcgZm9yIGludGlhbGl6aW5nIGlu
c3BlY3RvciBwaXBlLgorCisgICAgICAgIEFkZGVkIHBsYXRmb3JtIGhvb2tzIGZvciBjcmVhdGlu
ZyBuZXcgcGFnZXMgaW4gcmVzcG9uc2UgdG8gQnJvd3Nlci5jcmVhdGVQYWdlIGluc3BlY3Rvcgor
ICAgICAgICBjb21tYW5kLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAg
ICAgICAgKGNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoY29uZmlndXJlQnJvd3Nlckluc3BlY3Rv
clBpcGUpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4u
Y3BwOgorICAgICAgICAoY3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChjbG9zZUFsbCk6CisgICAg
ICAgIChjb25maWd1cmVCcm93c2VySW5zcGVjdG9yKToKKyAgICAgICAgKG1haW4pOgorCiAyMDE5
LTExLTA2ICBQaGlsaXBwZSBOb3JtYW5kICA8cGhpbG5AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXVtXUEVdIEFkZCBsaWJmZGstYWFjLWRldiB0byB0aGUgaW5zdGFsbC1kZXBlbmRlbmNpZXMg
c2NyaXB0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA5M2Q5MzU5MmJjNGY4ZTU1MWUyMmYyZWQzNWNm
OWNhNmNiNjJiZDI1Li4wYzhmOWE5ZjgxMzNhMDkzOGFiMGNmNjc4YzlkZmYxZDdjYmU5ZDM3IDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNv
b2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29u
c3QgY2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgZ2Jvb2xl
YW4gaW5zcGVjdG9yUGlwZTsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAKIHR5cGVk
ZWYgZW51bSB7CkBAIC0xMjAsNiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBj
b21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElP
Tl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3Rz
IiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05f
QVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwK
ICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNv
bnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIg
fSwKKyAgICB7ICJpbnNwZWN0b3ItcGlwZSIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaW5z
cGVjdG9yUGlwZSwgIk9wZW4gcGlwZSBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgaW5zcGVjdG9y
IiwgTlVMTCB9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAm
cHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LAogICAg
IHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVks
ICZ1cmlBcmd1bWVudHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAs
IDAgfQpAQCAtNDkyLDYgKzQ5NCwyOSBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJTYXZlZENhbGxiYWNr
KFdlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUgKnN0b3JlLCBHQXN5bmNSZXN1bAogICAgIGdf
bWFpbl9sb29wX3F1aXQoZGF0YS0+bWFpbkxvb3ApOwogfQogCitzdGF0aWMgV2ViS2l0V2ViVmll
dyAqY3JlYXRlTmV3UGFnZShXZWJLaXRCcm93c2VySW5zcGVjdG9yICpicm93c2VyX2luc3BlY3Rv
ciwgV2ViS2l0V2ViQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3ICpuZXdX
ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklF
VywKKyAgICAgICAgIndlYi1jb250ZXh0IiwgY29udGV4dCwKKyAgICAgICAgImlzLWVwaGVtZXJh
bCIsIHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCksCisgICAgICAgICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAg
R3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgY29udGV4dCk7
CisgICAgYnJvd3Nlcl93aW5kb3dfYXBwZW5kX3ZpZXcoQlJPV1NFUl9XSU5ET1cobmV3V2luZG93
KSwgbmV3V2ViVmlldyk7CisgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKEdUS19XSURHRVQobmV3
V2ViVmlldykpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG5ld1dpbmRvdykpOwor
ICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsK
KyAgICByZXR1cm4gbmV3V2ViVmlldzsKK30KKworc3RhdGljIHZvaWQgY29uZmlndXJlQnJvd3Nl
ckluc3BlY3RvclBpcGUoKQoreworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKmJyb3dzZXJJ
bnNwZWN0b3IgPSB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQoKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KGJyb3dzZXJJbnNwZWN0b3IsICJjcmVhdGUtbmV3LXBhZ2UiLCBHX0NB
TExCQUNLKGNyZWF0ZU5ld1BhZ2UpLCBOVUxMKTsKKworICAgIHdlYmtpdF9icm93c2VyX2luc3Bl
Y3Rvcl9pbml0aWFsaXplX3BpcGUoKTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy
Z3ZbXSkKIHsKICNpZiBFTkFCTEVfREVWRUxPUEVSX01PREUKQEAgLTUzOSw2ICs1NjQsOSBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIFdlYktpdFdlYkNvbnRleHQgKndl
YkNvbnRleHQgPSBnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsICJ3ZWJzaXRl
LWRhdGEtbWFuYWdlciIsIG1hbmFnZXIsICJwcm9jZXNzLXN3YXAtb24tY3Jvc3Mtc2l0ZS1uYXZp
Z2F0aW9uLWVuYWJsZWQiLCBUUlVFLCBOVUxMKTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2Vy
KTsKIAorICAgIGlmIChpbnNwZWN0b3JQaXBlKQorICAgICAgICBjb25maWd1cmVCcm93c2VySW5z
cGVjdG9yUGlwZSgpOworCiAgICAgaWYgKGNvb2tpZXNQb2xpY3kpIHsKICAgICAgICAgV2ViS2l0
Q29va2llTWFuYWdlciAqY29va2llTWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29v
a2llX21hbmFnZXIod2ViQ29udGV4dCk7CiAgICAgICAgIEdFbnVtQ2xhc3MgKmVudW1DbGFzcyA9
IGdfdHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZUEVfQ09PS0lFX0FDQ0VQVF9QT0xJQ1kpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwCmluZGV4IDJkMTgzZDM5NDEyM2JkODQ1NDVkYzUxZjUzZWI5YmU3OTZm
Yjg4NzMuLmE0NjgyNjdhYmM0MTUzNmM0Y2Q2Nzk1NTU2MjZmZjEyMzQzNzFkMGQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tp
ZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3Qg
Y2hhciogcHJveHk7CiBjb25zdCBjaGFyKiBiZ0NvbG9yOworc3RhdGljIGdib29sZWFuIGluc3Bl
Y3RvclBpcGU7CiBzdGF0aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwogCiBzdGF0aWMgY29uc3Qg
R09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KQEAgLTYyLDYgKzYzLDcgQEAgc3Rh
dGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdu
b3JlLXRscy1lcnJvcnMiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9y
cywgIklnbm9yZSBUTFMgZXJyb3JzIiwgbnVsbHB0ciB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVy
IiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0
aCBjb250ZW50IGZpbHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwg
MCwgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBj
b2xvci4gRGVmYXVsdDogd2hpdGUiLCAiQ09MT1IiIH0sCisgICAgeyAiaW5zcGVjdG9yLXBpcGUi
LCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmluc3BlY3RvclBpcGUsICJPcGVuIHBpcGUgY29u
bmVjdGlvbiB0byB0aGUgcmVtb3RlIGluc3BlY3RvciIsIG51bGxwdHIgfSwKICAgICB7ICJ2ZXJz
aW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRo
ZSBXUEUgdmVyc2lvbiIsIG51bGxwdHIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwg
MCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAi
W1VSTF0iIH0sCiAgICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9CkBAIC0xNzIsNiArMTc0LDQzIEBAIHN0YXRpYyBXZWJLaXRX
ZWJWaWV3KiBjcmVhdGVXZWJWaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmln
YXRpb25BY3RpCiAgICAgcmV0dXJuIG5ld1dlYlZpZXc7CiB9CiAKK3N0YXRpYyBXZWJLaXRXZWJW
aWV3KiBjcmVhdGVOZXdQYWdlKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IqLCBXZWJLaXRXZWJDb250
ZXh0ICpjb250ZXh0KQoreworICAgIGF1dG8gYmFja2VuZCA9IGNyZWF0ZVZpZXdCYWNrZW5kKDEy
ODAsIDcyMCk7CisgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIHdwZUJhY2tlbmQgPSBiYWNr
ZW5kLT5iYWNrZW5kKCk7CisgICAgaWYgKCF3cGVCYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8qIHZpZXdCYWNrZW5kID0gd2Via2l0X3dlYl92aWV3X2JhY2tlbmRf
bmV3KHdwZUJhY2tlbmQsCisgICAgICAgIFtdKGdwb2ludGVyIGRhdGEpIHsKKyAgICAgICAgICAg
IGRlbGV0ZSBzdGF0aWNfY2FzdDxXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kKj4oZGF0
YSk7CisgICAgICAgIH0sIGJhY2tlbmQucmVsZWFzZSgpKTsKKworICAgIGF1dG8qIG5ld1dlYlZp
ZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh2aWV3QmFja2VuZCwgY29udGV4
dCk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJB
Q0sod2ViVmlld0Nsb3NlKSwgbnVsbHB0cik7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91
cmkobmV3V2ViVmlldywgImFib3V0OmJsYW5rIik7CisKKyAgICByZXR1cm4gbmV3V2ViVmlldzsK
KworfQorCitzdGF0aWMgdm9pZCBjbG9zZUFsbChXZWJLaXRCcm93c2VySW5zcGVjdG9yKiwgR01h
aW5Mb29wKiBtYWluTG9vcCkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KG1haW5Mb29wKTsKK30K
Kworc3RhdGljIHZvaWQgY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBpcGUoR01haW5Mb29wKiBt
YWluTG9vcCwgV2ViS2l0V2ViVmlldyAqZmlyc3RXZWJWaWV3KQoreworICAgIFdlYktpdEJyb3dz
ZXJJbnNwZWN0b3IqIGJyb3dzZXJJbnNwZWN0b3IgPSB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3Jf
Z2V0X2RlZmF1bHQoKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJyb3dzZXJJbnNwZWN0b3IsICJj
cmVhdGUtbmV3LXBhZ2UiLCBHX0NBTExCQUNLKGNyZWF0ZU5ld1BhZ2UpLCBOVUxMKTsKKyAgICAv
LyBGSVhNRTogVGhpcyBzaWduYWwgaXMgcmVjZWl2ZWQgb25seSB3aGVuIGNsb3NlQWxsIGlzIGNh
bGxlZC4gV2Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoYXQuCisgICAgZ19zaWduYWxfY29ubmVjdChm
aXJzdFdlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0soY2xvc2VBbGwpLCBtYWluTG9vcCk7CisK
KyAgICB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBlKCk7Cit9CisKIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAjaWYgRU5BQkxFX0RFVkVMT1BFUl9N
T0RFCkBAIC0zMDEsNiArMzQwLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NB
TExCQUNLKGRlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxf
Y29ubmVjdCh3ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3KSwgbnVs
bHB0cik7CiAKKyAgICBpZiAoaW5zcGVjdG9yUGlwZSkKKyAgICAgICAgY29uZmlndXJlQnJvd3Nl
ckluc3BlY3RvclBpcGUobG9vcCwgd2ViVmlldyk7CisKICAgICBpZiAoaWdub3JlVExTRXJyb3Jz
KQogICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KHdlYkNv
bnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382938</attachid>
            <date>2019-11-06 10:28:37 -0800</date>
            <delta_ts>2019-11-06 11:28:58 -0800</delta_ts>
            <desc>initial implementation, fixed mac build</desc>
            <filename>bug-203870-20191106102837.patch</filename>
            <type>text/plain</type>
            <size>119614</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc2MjUwZTRmY2RkZmQ5NjRkNDhhMTBlY2QxYzBiNjFjZDhiMWY3Li45MWZhZDhiZTM1Njg0NDg5
MWQyMWE1M2MxYzIxZDYwYjVjNDQyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYnJvd3NlciBpbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IEJyb3dzZXIgZG9tYWluIHRoYXQgYWxsb3dzIGNyZWF0aW5nIGVwaGVtZXJhbCBjb250ZXh0cyBh
bmQgcGFnZXMuCisgICAgICAgIEV4dGVuZGVkIFRhcmdldEluZm8gd2l0aCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29udGV4dCBpdCBiZWxvbmdzIHRvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6YnVpbGRUYXJnZXRJbmZvT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6ZW5zdXJlQ29ubmVjdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246CisKIDIwMTktMTEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURjo6UnVuTG9vcCBzaG91bGQgbm90IGRlcGVuZCBvbiBpc01haW5U
aHJlYWQoKSBpZGlvbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjNhZTRkYWI5MGEzZjNlYjhiMzExZmI5YmE0YmQ4
OTJlMzhkMTFjZi4uMDg2OTkwMTY3OTFhODU3NDhiMWQ2M2NmOTVhZjZjYWNlNTEyMGMwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMTktMTEtMDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIGJy
b3dzZXIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCcm93c2VyIGluc3BlY3RvciBpcyBpbnRyb2R1Y2VkIHRvIGVuYWJsZSBpbnNwZWN0
aW5nIGVudGlyZSBicm93c2VyIG92ZXIgdGhlCisgICAgICAgIGluc3BlY3RvciBwcm90b2NvbC4g
SXQgaXMgY29tcHJpc2VkIG9mIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICBOZXcg
QnJvd3NlciBkb21haW4gaW4gdGhlIHByb3RvY29sIGFsbG93cyB0byBjcmVhdGUvZGVsZXRlIGVw
aGVtZXJhbCBicm93c2luZworICAgICAgICBjb250ZXh0cyBhbmQgY3JlYXRlIHBhZ2VzIGluIHRo
b3NlIGNvbnRleHRzLiBUaGlzIGFsbG93cyB0byBydW4gbXVsdGlwbGUgdGVzdAorICAgICAgICBw
YWdlcyBpbiB0aGUgc2FtZSBpbnN0YW5jZSB3aGlsZSBpc29sYXRpbmcgdGhlaXIgc3RhdGUuCisK
KyAgICAgICAgQWZvcmVtZW50aW9uZWQgZG9tYWluIGlzIGltcGxlbWVudGVkIGJ5IEluc3BlY3Rv
ckJyb3dzZXJBZ2VudCB0aGF0IGRlbGVnYXRlcyBtb3N0CisgICAgICAgIG9mIGl0cyB3b3JrIHRv
IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiAoR1RLIGFuZCBXUEUgc28gZmFy
KS4KKyAgICAgICAgQnJvd3Nlci5jcmVhdGVQYWdlIHJlcXVpcmVzIGVtYmVkZGVyIHN1cHBvcnQg
c28gdGhhdCBuZXcgcGFnZSBpcyBjcmVhdGVkIGluIGEKKyAgICAgICAgd2luZG93LgorCisgICAg
ICAgIEJyb3dzZXIgaW5zcGVjdG9yIHN0YXRlIGlzIG1hbmFnZWQgYnkgQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIgd2hpY2ggb3ducyB0d28KKyAgICAgICAgYWdlbnRzIEJyb3dzZXIgYW5kIFRh
cmdldC4gQnJvd3NlciB0YXJnZXQgYWdlbnQgZGlzcGF0Y2hlcyBtZXNzYWdlcyB0byB0aGUgdGFy
Z2V0cworICAgICAgICB3aXRoaW4gcGFnZSBzcGVjaWZpYyB0YXJnZXQgYWdlbnRzLiBDdXJyZW50
bHkgd2hlbmV2ZXIgbmV3IHBhZ2UgaXMgY3JlYXRlZCBpbnNwZWN0b3IKKyAgICAgICAgd2lsbCBh
dXRvY29ubmVjdCB0byBpdC4KKworICAgICAgICBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBjb25uZWN0aW9uIHRvIHRoZSBuZXcgaW5zcGVjdG9yIGNhbiBvbmx5IGJlIGVzdGFibGlzaGVk
CisgICAgICAgIHZpYSBhIHBpcGUuIEl0IHJlcXVpcmVzIHJlbW90ZSBpbnNwZWN0b3IgdG8gYmUg
dGhlIGxhdW5jaGVyIG9mIHRoZSBicm93c2VyIHByb2Nlc3MuIE90aGVyCisgICAgICAgIHRyYW5z
cG9ydHMgY2FuIGJlIGFkZGVkIGxhdGVyLgorCisgICAgICAgIEJyb3N3ZXIgaW5zcGVjdG9yIGlz
IG9ubHkgaW5zdGFudGlhdGVkIGlmIGV4cGxpY2l0bHkgb3B0ZWQtaW4gYnkgdGhlIGVtYmVkZGVy
IGFuZCBtdXN0CisgICAgICAgIGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGZpcnN0IHBhZ2UgaXMgY3Jl
YXRlZC4gSW4gdGhlIE1pbmlCcm93c2VyIGl0IGlzIGd1YXJkZWQgYnkgYSBjb21tYW5kCisgICAg
ICAgIGxpbmUgZmxhZy4KKworICAgICAgICBFbWJlZGRlciBpbnRlcmZhY2UgaXMgcHJvdmlkZWQg
aW4gdGhlIGZvcm0gb2YgV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiBHVEsgYW5kIFdQRS4KKyAg
ICAgICAgVGhlIG5ldyBBUEkgYWxsb3dzIHRvIHNldHVwIGluc3BlY3RvciBwaXBlIHRvIHRoZSBw
YXJlbnQgcHJvY2VzcyBhbmQgcHJvdmlkZXMgYQorICAgICAgICBwbGF0Zm9ybSBob29rIGZvciBj
cmVhdGluZyBuZXcgcGFnZSBpbiBhIGNvbnRleHQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAg
ICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclBpcGU6OkJyb3dzZXJJbnNwZWN0b3JQaXBlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAod2Via2l0QnJvd3Nlckluc3BlY3RvckNyZWF0ZU5ld1BhZ2VJbkNv
bnRleHQpOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnJvd3Nlckluc3BlY3Rvcik6CisgICAgICAg
ICh3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQpOgorICAgICAgICAod2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBl
czoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ccm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpCcm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToK
KyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdFRvQWxsUGFnZXMpOgorICAgICAgICAoV2ViS2l0OjpC
cm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21BbGxQYWdlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojppbml0aWFsaXplQnJvd3Nlckluc3BlY3RvclBpcGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFn
ZW50KToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50Lmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudCk6CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRlbGV0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0
ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OnRvQnJvd3Nl
ckNvbnRleHRJRFByb3RvY29sU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
QnJvd3NlckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUluc3Bl
Y3RvclBpcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlw
ZTo6UmVtb3RlRnJvbnRlbmRDaGFubmVsOjpSZW1vdGVGcm9udGVuZENoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpSZW1vdGVJbnNwZWN0b3JQaXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlwZTo6flJlbW90ZUluc3BlY3RvclBpcGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpzdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQaXBlOjp3b3JrZXJSdW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVJbnNwZWN0b3JQaXBlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0Q3JlYXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjppbml0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaEF0dGFjaGluZ1RvV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpw
YWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6
OmZpbmRUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpjbG9zZUFsbFBhZ2VzKToKKyAgICAgICAgKFdlYktp
dDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRHbGliKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
R2xpYjo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdsaWI6OmNsb3NlQWxsV2luZG93cyk6CisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25J
REZyb21Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50R2xpYjo6Y3JlYXRlQnJvd3NlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpkZWxldGVCcm93c2VyQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1h
Yy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dE1hYzo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjKToKKyAgICAgICAgKFdlYktpdDo6
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpjcmVhdGVQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpjbG9zZUFsbFdpbmRvd3MpOgor
ICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWM6OmNyZWF0ZUJy
b3dzZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50TWFjOjpkZWxldGVCcm93c2VyQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9J
bnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaDogQWRkZWQuCisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMTEtMDYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEltcGxlbWVudCBz
dXBwb3J0IGZvciBQb2ludGVyIExvY2sgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggMGU5NjY1MDM2NDY2MGM0NWU5N2RmZWQ5YjMzZmRmOTI4ZWNjYjkwNC4uMDI4OWRh
MjcxMDI0Y2Q2OGIyMzNmY2E5MzdlNGQxNWEyZjgxMDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTE0Myw2ICsxMTQzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lO
U1BFQ1RPUl9ET01BSU5TCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90
b2NvbC9BbmltYXRpb24uanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
cHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3Rvci9wcm90b2NvbC9BdWRpdC5qc29uCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3Rvci9wcm90b2NvbC9Ccm93c2VyLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9pbnNwZWN0b3IvcHJvdG9jb2wvQ29uc29sZS5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGY1OTIxMmZmMDFjYzlkODJhMjEwMDViMjEyODU3MWU3
ZDIzMDNlNzQuLmUxOTAwOWY1ZmJhN2I3NjIyNTliYmVjYWMxZWY3MzNhYjYxZTVhNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMzgsNiArMjM4LDcg
QEAgSU5TUEVDVE9SX0RPTUFJTlMgOj0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rv
ci9wcm90b2NvbC9BbmltYXRpb24uanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVj
dG9yL3Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGUuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvaW5zcGVjdG9yL3Byb3RvY29sL0F1ZGl0Lmpzb24gXAorICAgICQoSmF2YVNjcmlwdENvcmUp
L2luc3BlY3Rvci9wcm90b2NvbC9Ccm93c2VyLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNw
ZWN0b3IvcHJvdG9jb2wvQ29uc29sZS5qc29uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNw
cAppbmRleCAxMTc3MDkwZmMxODYyM2VmNTAxYzlhZDRjMzM4OWJjMmRhOTEwNzFlLi43ZWYwZTNm
Y2ZmZTJhOWFiNGJiMDFiNmUxN2Q3M2MyYWFkNzhjNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwCkBAIC0zMCwxMSArMzAsMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LUluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRl
ciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikK
K0luc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRl
ciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwg
Y29uc3QgU3RyaW5nJiBicm93c2VyQ29udGV4dElEKQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJUYXJnZXQiX3MpCiAgICAgLCBtX3JvdXRlcihmcm9udGVuZFJvdXRlcikKICAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAgICwgbV9icm93c2Vy
Q29udGV4dElEKGJyb3dzZXJDb250ZXh0SUQpCiB7CiB9CiAKQEAgLTg3LDcgKzg4LDcgQEAgc3Rh
dGljIFByb3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm86OlR5cGUgdGFyZ2V0VHlwZVRvUHJvdG9j
b2xUeXBlKEluc3BlY3RvclRhcmcKICAgICByZXR1cm4gUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0
SW5mbzo6VHlwZTo6UGFnZTsKIH0KIAotc3RhdGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJn
ZXRJbmZvPiBidWlsZFRhcmdldEluZm9PYmplY3QoY29uc3QgSW5zcGVjdG9yVGFyZ2V0JiB0YXJn
ZXQpCitzdGF0aWMgUmVmPFByb3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm8+IGJ1aWxkVGFyZ2V0
SW5mb09iamVjdChjb25zdCBJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBi
cm93c2VyQ29udGV4dElEKQogewogICAgIGF1dG8gcmVzdWx0ID0gUHJvdG9jb2w6OlRhcmdldDo6
VGFyZ2V0SW5mbzo6Y3JlYXRlKCkKICAgICAgICAgLnNldFRhcmdldElkKHRhcmdldC5pZGVudGlm
aWVyKCkpCkBAIC05NSw2ICs5Niw4IEBAIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFy
Z2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2JqZWN0KGNvbnN0IEluc3BlY3RvclRhCiAgICAgICAg
IC5yZWxlYXNlKCk7CiAgICAgaWYgKHRhcmdldC5pc1Byb3Zpc2lvbmFsKCkpCiAgICAgICAgIHJl
c3VsdC0+c2V0SXNQcm92aXNpb25hbCh0cnVlKTsKKyAgICBpZiAoIWJyb3dzZXJDb250ZXh0SUQu
aXNFbXB0eSgpKQorICAgICAgICByZXN1bHQtPnNldEJyb3dzZXJDb250ZXh0SWQoYnJvd3NlckNv
bnRleHRJRCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA4LDcgKzExMSw3IEBAIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0JiB0
YXJnZXQpCiAKICAgICB0YXJnZXQuY29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0
YXJnZXQpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRh
cmdldEluZm9PYmplY3QodGFyZ2V0LCBtX2Jyb3dzZXJDb250ZXh0SUQpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0RGVzdHJveWVkKEluc3BlY3RvclRhcmdldCYgdGFy
Z2V0KQpAQCAtMTM1LDYgKzEzOCwxOCBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpkaWRD
b21taXRQcm92aXNpb25hbFRhcmdldChjb25zdCBTdHJpbmcmIG9sZFRhcmdldElELAogICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldChvbGRUYXJnZXRJ
RCwgY29tbWl0dGVkVGFyZ2V0SUQpOwogfQogCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojpl
bnN1cmVDb25uZWN0ZWQoY29uc3QgU3RyaW5nJiB0YXJnZXRJRCkKK3sKKyAgICBpZiAoIW1faXND
b25uZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0
cy5nZXQodGFyZ2V0SUQpOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAg
ICB0YXJnZXQtPmNvbm5lY3QoY29ubmVjdGlvblR5cGUoKSk7Cit9CisKIEZyb250ZW5kQ2hhbm5l
bDo6Q29ubmVjdGlvblR5cGUgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3Rpb25UeXBlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9yb3V0ZXIuaGFzTG9jYWxGcm9udGVuZCgpID8gSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpMb2NhbCA6IEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZTo6UmVtb3RlOwpAQCAtMTQ0LDcgKzE1OSw3
IEBAIHZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMoKQogewogICAg
IGZvciAoSW5zcGVjdG9yVGFyZ2V0KiB0YXJnZXQgOiBtX3RhcmdldHMudmFsdWVzKCkpIHsKICAg
ICAgICAgdGFyZ2V0LT5jb25uZWN0KGNvbm5lY3Rpb25UeXBlKCkpOwotICAgICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRhcmdldEluZm9PYmplY3QoKnRhcmdl
dCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRh
cmdldEluZm9PYmplY3QoKnRhcmdldCwgbV9icm93c2VyQ29udGV4dElEKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaAppbmRleCAzOGNiMzE4OTg2YjMxYzRkZWQxOWJhOWJl
YWU3ODU1ZDJiNTRjMjNhLi4wNTU3ZjgzM2MzZDZmMWRhMDkwODZkZDQ2Y2U0NTk5M2Q3MzE1MjM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yVGFyZ2V0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUYXJnZXRB
Z2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVj
dG9yVGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXImLCBCYWNrZW5kRGlzcGF0Y2hlciYpOworICAg
IEluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiwgQmFja2VuZERpc3BhdGNoZXIm
LCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpOwogICAgIH5JbnNwZWN0b3JUYXJnZXRB
Z2VudCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCkBAIC01NSw2ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0Jik7
CiAgICAgdm9pZCB0YXJnZXREZXN0cm95ZWQoSW5zcGVjdG9yVGFyZ2V0Jik7CiAgICAgdm9pZCBk
aWRDb21taXRQcm92aXNpb25hbFRhcmdldChjb25zdCBTdHJpbmcmIG9sZFRhcmdldElELCBjb25z
dCBTdHJpbmcmIGNvbW1pdHRlZFRhcmdldElEKTsKKyAgICB2b2lkIGVuc3VyZUNvbm5lY3RlZChj
b25zdCBTdHJpbmcmIHRhcmdldElEKTsKIAogICAgIC8vIFRhcmdldCBtZXNzYWdlcy4KICAgICB2
b2lkIHNlbmRNZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJ
ZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKQEAgLTY4LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyJiBtX3JvdXRlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBS
ZWY8VGFyZ2V0QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgY29u
c3QgU3RyaW5nIG1fYnJvd3NlckNvbnRleHRJRDsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVj
dG9yVGFyZ2V0Kj4gbV90YXJnZXRzOwogICAgIGJvb2wgbV9pc0Nvbm5lY3RlZCB7IGZhbHNlIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9Ccm93c2VyLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0Jyb3dzZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWQ0YTNiZmU2ZjNjOTRjMjlhMjc0OWY4ODY5Mzlm
MjkxZWU5ZjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9Ccm93c2VyLmpzb24KQEAgLTAsMCArMSw0MCBAQAoreworICAgICJkb21h
aW4iOiAiQnJvd3NlciIsCisgICAgImF2YWlsYWJpbGl0eSI6IFsid2ViIl0sCisgICAgInR5cGVz
IjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiQ29udGV4dElEIiwKKyAgICAgICAg
ICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWQgb2Yg
QnJvd3NlciBjb250ZXh0LiIKKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbW1hbmRzIjogWwor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJjbG9zZSIsCisgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiQ2xvc2UgYnJvd3Nlci4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJuYW1lIjogImNyZWF0ZUNvbnRleHQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkNyZWF0ZXMgbmV3IGVwaGVtZXJhbCBicm93c2VyIGNvbnRleHQuIiwKKyAgICAgICAgICAg
ICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJ
ZCIsICIkcmVmIjogIkNvbnRleHRJRCIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmll
ciBvZiB0aGUgY29udGV4dC4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAiZGVsZXRlQ29udGV4dCIsCisgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRGVsZXRlcyBicm93c2VyIGNvbnRleHQgcHJldmlvdXNseSBjcmVhdGVkIHdp
dGggY3JlYXRlQ29udGVjdC4gVGhlIGNvbW1hbmQgd2lsbCBhdXRvbWF0aWNhbGx5IGNsb3NlIGFs
bCBwYWdlcyB0aGF0IHVzZSB0aGUgY29udGV4dC4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2VyQ29udGV4dElkIiwgIiRyZWYi
OiAiQ29udGV4dElEIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGNvbnRleHQg
dG8gZGVsZXRlLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJjcmVhdGVQYWdlIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJZCIsICIkcmVmIjog
IkNvbnRleHRJRCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJKU09OIEluc3Bl
Y3RvciBQcm90b2NvbCBtZXNzYWdlIChjb21tYW5kKSB0byBiZSBkaXNwYXRjaGVkIG9uIHRoZSBi
YWNrZW5kLiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwYWdlIHRhcmdldC4iIH0KKyAg
ICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCmluZGV4IDI0MGNkNDJlNjdl
MzI1MGU0MzRjMGJmNmY5ZDE2MTY4NTA1YThjMjIuLjI4MTU3YWMxMTM5MDVkMGI0N2VmM2VjYTAy
ODdiNjAyZjMyZGVlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgpAQCAtMTAsNyArMTAsOCBAQAogICAgICAgICAgICAg
InByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhl
IHRhcmdldC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgInR5cGUiOiAi
c3RyaW5nIiwgImVudW0iOiBbInBhZ2UiLCAic2VydmljZS13b3JrZXIiLCAid29ya2VyIl0gfSwK
LSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlwZSI6ICJib29s
ZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFsdWUgaW5kaWNh
dGVzIHRoYXQgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4gU3VjaCB0YXJn
ZXQgbWF5IGJlIGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3NzLW9yaWdpbiBu
YXZpZ2F0aW9uLiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlzIGVpdGhlciBj
b21taXR0ZWQgYW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdldHMgZGVzdHJv
eWVkLCBlLmcuIGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVlIHZhbHVlIGluZGljYXRlcyB0aGF0IHRo
aXMgaXMgYSBwcm92aXNpb25hbCBwYWdlIHRhcmdldCBpLmUuIFN1Y2ggdGFyZ2V0IG1heSBiZSBj
cmVhdGVkIHdoZW4gY3VycmVudCBwYWdlIHN0YXJ0cyBjcm9zcy1vcmlnaW4gbmF2aWdhdGlvbi4g
RXZlbnR1YWxseSBlYWNoIHByb3Zpc2lvbmFsIHRhcmdldCBpcyBlaXRoZXIgY29tbWl0dGVkIGFu
ZCBzd2FwcyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCBvciBnZXRzIGRlc3Ryb3llZCwgZS5nLiBp
biBjYXNlIG9mIGxvYWQgcmVxdWVzdCBmYWlsdXJlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImJyb3dzZXJDb250ZXh0SWQiLCAiJHJlZiI6ICJCcm93c2VyLkNvbnRleHRJRCIsICJv
cHRpb25hbCI6IHRydWUgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IGFlYzg3YWUwMTEyN2E5MzcwNzEyYzNlNDNlNmQ5YzA3NGY2
OTIzZGUuLjc5YjhhMzAxODZkMmY0MmI5MTk5NmMyOTczZTgyNzUzNzhhYzgyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtNjMsNiArNjMsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxM
RURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
b21hdGlvblNlc3Npb24uaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKICAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENyZWRlbnRpYWwuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUu
Y21ha2UKaW5kZXggNzNmYjZhMWQ4N2Q0NTlhYTAzNWVjMTQ4OGY0YjdhMDg3YmQ3MGJkMC4uZWFm
YWM4MmI5MTZkZGY4N2QzMzUwZWE4NGI0NWFhOGUyMzY5ZDQyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BF
LmNtYWtlCkBAIC05MSw2ICs5MSw3IEBAIHNldChXUEVfQVBJX0lOU1RBTExFRF9IRUFERVJTCiAg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRCYWNrRm9yd2Fy
ZExpc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QmFja0Zv
cndhcmRMaXN0SXRlbS5oCisgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRCcm93c2VySW5zcGVjdG9yLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdENyZWRlbnRpYWwuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0Q29sb3IuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
Q29udGV4dE1lbnUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZWRiZmI1NmU0OWJjMmEwM2E4YWJkYmY4NzE0
MWRjZDA3ZTVkYTkzZi4uM2VkNWYzYzdkOGNlNWZkNDI0NzQ0YzI5ODRhOGJlYmFmYTgwZDVkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CkBAIC0yNDAsMTcgKzI0MCwyMiBAQCBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuY3BwCiAKIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCiBVSVBy
b2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcAorVUlQcm9jZXNz
L0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0
b3JQaXBlLmNwcAorVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKIFVJ
UHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKIFVJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmNwcAogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAogVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorVUlQcm9jZXNzL0luc3BlY3RvckJyb3dz
ZXJBZ2VudC5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKIFVJUHJvY2Vz
cy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAKIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAog
VUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5jcHAKIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKK1VJUHJvY2Vzcy9SZW1v
dGVJbnNwZWN0b3JQaXBlLmNwcAogVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cAogVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3MvU3RhdGlzdGlj
c1JlcXVlc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCBlNzY1MDY2NmExMDY5NTE3MzlhZTNm
NDhmM2M2ZmY5ZTQ5OGY4ZDE1Li44ZDczODNiYmU3YTRlZTk2OGI5Nzc2NTU4MTk1NjUxY2UxN2Yy
NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTEyOSw2ICsxMjksNyBAQCBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBAbm8tdW5pZnkKK1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgQG5vLXVuaWZ5CiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgQG5vLXVuaWZ5CkBAIC0yMjQsNiArMjI1
LDcgQEAgVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3VuaXgvV2Vic2l0ZURhdGFTdG9yZVVuaXguY3Bw
CiAKIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgQG5vLXVuaWZ5CiAKK1VJ
UHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuY3BwCiBVSVByb2Nl
c3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzUG9vbEdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQKaW5kZXggNWI1MTRkNTIxNmVjNWQ5NmNkNTgzZjY4MjdmNDg1ODY4YzVl
MmExZS4uZmNiYmI3ODFhMzExMTBmYWVkZTBhMGYzMDM1ZDc0MDJkNWFkYWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0CkBAIC0xMTgsNiArMTE4LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEJhY2tGb3J3YXJkTGlzdC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENyZWRlbnRpYWwuY3BwIEBuby11bmlmeQpAQCAtMTg3LDYgKzE4OCw3IEBAIFVJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
LmNwcAogCiBVSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5jcHAK
IAorVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKIFVJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNjA3MTJiODEw
YTFmNjJlZTE2ZDgzNTgxNmM4NjA0ODE0OTY0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcApAQCAt
MCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRCcm93c2VySW5zcGVjdG9yLmgiCisKKyNpbmNsdWRlICJCcm93c2VySW5z
cGVjdG9yUGlwZS5oIgorI2luY2x1ZGUgIldlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlLmgi
CisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KKworLyoqCisgKiBTRUNU
SU9OOiBXZWJLaXRCcm93c2VySW5zcGVjdG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEFjY2Vz
cyB0byB0aGUgV2ViS2l0IGJyb3dzZXIgaW5zcGVjdG9yCisgKiBAVGl0bGU6IFdlYktpdEJyb3dz
ZXJJbnNwZWN0b3IKKyAqCisgKiBUaGUgV2ViS2l0IEJyb3dzZXIgSW5zcGVjdG9yIGlzIGFuIGV4
cGVyaW1lbnRhbCBBUEkgdGhhdCBwcm92aWRlcworICogYWNjZXNzIHRvIHRoZSBpbnNwZWN0b3Ig
dmlhIHRoZSByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sLiBUaGUgcHJvdG9jb2wKKyAqIGFsbG93
cyB0byBjcmVhdGUgZXBoZW1lcmFsIGNvbnRleHRzIGFuZCBjcmVhdGUgcGFnZXMgaW4gdGhlbSBh
bmQgdGhlbgorICogbWFuaXB1bGF0ZSB0aGVtIHVzaW5nIHRoZSBpbnNwZWN0b3IgY29tbWFuZHMu
IFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3IKKyAqIHRoZSBicm93c2VyIGF1dG9tYXRpb24gb3IgcmVt
b3RlIGRlYnVnZ2luZy4KKyAqCisgKiBDdXJyZW50bHkgdGhlIHByb3RvY29sIGNhbiBiZSBleHBv
c2VkIHRvIHRoZSBwYXJlbnQgcHJvY2VzcyB2aWEgYSB1bml4CisgKiBwaXBlLgorICoKKyAqIFNp
bmNlOiAyLjI4CisgKi8KKworZW51bSB7CisgICAgQ1JFQVRFX05FV19QQUdFLAorCisgICAgTEFT
VF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgewor
ICAgIGludCB1bnVzZWQgeyAwIH07Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0QnJv
d3Nlckluc3BlY3Rvciwgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yLCBHX1RZUEVfT0JKRUNUKQor
CitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdEJyb3dzZXJJbnNw
ZWN0b3JDbGFzcyogZmluZENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1MoZmluZENsYXNzKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdEJy
b3dzZXJJbnNwZWN0b3I6OmNyZWF0ZS1uZXctcGFnZToKKyAgICAgKiBAaW5zcGVjdG9yOiB0aGUg
I1dlYktpdEJyb3dzZXJJbnNwZWN0b3Igb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisg
ICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3BlY3RvciBpcyByZXF1ZXN0ZWQgdG8g
Y3JlYXRlIGEgbmV3IHBhZ2UgaW4gdGhlIHByb3ZpZGVkCisgICAgICogI1dlYktpdFdlYkNvbnRl
eHQuCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gaW5zcGVjdG9y
IHJlY2VpdmVzICdCcm93c2VyLmNyZWF0ZVBhZ2UnIGNvbW1hbmQKKyAgICAgKiBmcm9tIGl0cyBy
ZW1vdGUgY2xpZW50LiBJZiB0aGUgc2lnbmxhIGlzIG5vdCBoYW5kbGVkIHRoZSBjb21tYW5kIHdp
bGwgZmFpbC4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVXZWJLaXRXZWJWaWV3IHRoYXQgY29u
dGFpbnMgY3JlYXRlZCBwYWdlLgorICAgICAqLworICAgIHNpZ25hbHNbQ1JFQVRFX05FV19QQUdF
XSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgImNyZWF0ZS1uZXctcGFnZSIsCisgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNU
LAorICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzLCBj
cmVhdGVfbmV3X3BhZ2UpLAorICAgICAgICBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIEdUS19U
WVBFX1dJREdFVCwKKyNlbHNlCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXLAorI2VuZGlm
CisgICAgICAgIDEsCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9DT05URVhUKTsKK30KKworV2Vi
S2l0OjpXZWJQYWdlUHJveHkqIHdlYmtpdEJyb3dzZXJJbnNwZWN0b3JDcmVhdGVOZXdQYWdlSW5D
b250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0V2ViVmlldyog
bmV3V2ViVmlldzsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9n
ZXRfZGVmYXVsdCgpLCBzaWduYWxzW0NSRUFURV9ORVdfUEFHRV0sIDAsIGNvbnRleHQsICZuZXdX
ZWJWaWV3KTsKKyAgICBpZiAoIW5ld1dlYlZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiAmd2Via2l0V2ViVmlld0dldFBhZ2UobmV3V2ViVmlldyk7Cit9CisKK3N0YXRp
YyBncG9pbnRlciBjcmVhdGVXZWJLaXRCcm93c2VySW5zcGVjdG9yKGdwb2ludGVyKQoreworICAg
IHN0YXRpYyBHUmVmUHRyPFdlYktpdEJyb3dzZXJJbnNwZWN0b3I+IGJyb3dzZXJJbnNwZWN0b3Ig
PSBhZG9wdEdSZWYoV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgbnVsbHB0cikpKTsKKyAgICByZXR1cm4gYnJvd3Nlcklu
c3BlY3Rvci5nZXQoKTsKK30KKworLyoqCisgKiB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0
X2RlZmF1bHQ6CisgKgorICogR2V0cyB0aGUgZGVmYXVsdCBpbnN0YW5jZSBvZiB0aGUgYnJvd3Nl
ciBpbnNwZWN0b3IuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRC
cm93c2VySW5zcGVjdG9yCisgKi8KK1dlYktpdEJyb3dzZXJJbnNwZWN0b3IqIHdlYmtpdF9icm93
c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCh2b2lkKQoreworICAgIHN0YXRpYyBHT25jZSBvbmNl
SW5pdCA9IEdfT05DRV9JTklUOworICAgIHJldHVybiBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1Io
Z19vbmNlKCZvbmNlSW5pdCwgY3JlYXRlV2ViS2l0QnJvd3Nlckluc3BlY3RvciwgMCkpOworfQor
CisvKioKKyAqIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGU6CisgKgor
ICogQ3JlYXRlcyBicm93c2VyIGluc3BlY3RvciBhbmQgY29uZmlndXJlcyBwaXBlIGhhbmRsZXIg
dG8gY29tbXVuaWNhdGUgd2l0aAorICogdGhlIHBhcmVudCBwcm9jZXNzLgorICovCit2b2lkIHdl
YmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUodm9pZCkKK3sKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBXZWJLaXQ6OmluaXRpYWxpemVCcm93c2VySW5zcGVj
dG9yUGlwZSgpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTlhZmVhYzk5YTYyNzdmOGIwZTA1ODMzNjdhYzMzZWYyZmU5OWY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nl
ckluc3BlY3RvclByaXZhdGUuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRCcm93c2VySW5zcGVjdG9yLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK1dlYktpdDo6V2ViUGFnZVByb3h5KiB3ZWJraXRCcm93
c2VySW5zcGVjdG9yQ3JlYXRlTmV3UGFnZUluQ29udGV4dChXZWJLaXRXZWJDb250ZXh0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJyb3dzZXJJ
bnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QnJvd3Nl
ckluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZTgyMDRhOWI4OTYxZWZmMDc1NDkwNjg0OWQ2ZWRj
MzAyOTZlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQg
Q29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChX
RUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2Fu
IGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdEJyb3dzZXJJ
bnNwZWN0b3JfaAorI2RlZmluZSBXZWJLaXRCcm93c2VySW5zcGVjdG9yX2gKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiAgICAgICAgICAgICh3ZWJraXRfYnJvd3Nl
cl9pbnNwZWN0b3JfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9S
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBXZWJLaXRCcm93c2VySW5zcGVjdG9yKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX0JST1dTRVJfSU5TUEVDVE9SKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SKSkKKyNk
ZWZpbmUgV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBX
ZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQlJPV1NFUl9J
TlNQRUNUT1JfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9J
TlNQRUNUT1JfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmop
LCAgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JD
bGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICAgICBX
ZWJLaXRCcm93c2VySW5zcGVjdG9yOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNw
ZWN0b3JDbGFzcyAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzczsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZSBXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJp
dmF0ZTsKKworc3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yIHsKKyAgICBHT2JqZWN0IHBh
cmVudDsKKworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlICpwcml2OworfTsKKwor
c3RydWN0IF9XZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7CisKKyAgICBXZWJLaXRXZWJWaWV3ICooKiBjcmVhdGVfbmV3X3BhZ2UpICAg
ICAgICAgICAoV2ViS2l0QnJvd3Nlckluc3BlY3RvciAgICAqYnJvd3Nlcl9pbnNwZWN0b3IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdl
YkNvbnRleHQgICAgICAgICAgKmNvbnRleHQpOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2
ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAg
dm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQzKSAodm9pZCk7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfYnJvd3Nlcl9p
bnNwZWN0b3JfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9B
UEkgV2ViS2l0QnJvd3Nlckluc3BlY3RvciAqCit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0
X2RlZmF1bHQgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSAgICAgICAgICAgICAgKHZvaWQp
OworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
CmluZGV4IDU4NTZjYzQ0NzQ5MjM0NzQ0ZDlkZTQ1YTE4MDY1ZTk4MWY3YmRkNjguLjQ3NmIzNjlj
ZDA3NDFkNjIxNWQ3ZTE2MWYxZDY1MTZhNTQ2ZTFlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dApAQCAtMTc3NCwzICsxNzc0LDIzIEBAIFdFQktJVF9VU0VSX01FU1NBR0VfR0VU
X0NMQVNTCiBXZWJLaXRVc2VyTWVzc2FnZVByaXZhdGUKIHdlYmtpdF91c2VyX21lc3NhZ2VfZ2V0
X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRCcm93c2VySW5zcGVj
dG9yPC9GSUxFPgorV2ViS2l0QnJvd3Nlckluc3BlY3Rvcgord2Via2l0X2Jyb3dzZXJfaW5zcGVj
dG9yX2dldF9kZWZhdWx0Cit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBl
CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzCitX
RUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUgorV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SCitX
RUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1IKK1dFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9DTEFT
UworV0VCS0lUX0lTX0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTCitXRUJLSVRfQlJPV1NFUl9JTlNQ
RUNUT1JfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfYnJvd3Nlcl9p
bnNwZWN0b3JfZ2V0X3R5cGUKK1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlCis8L1NFQ1RJ
T04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAudHlwZXMgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAudHlwZXMKaW5kZXggYWQ1YjAyNmI2N2NiY2JhNDRkOTM3ZTRlNGMzM2Jh
ZmYwMzFjODE5MC4uOGFhMzE5YzkwYjQwYzliZGRkYWU2NmZiODIwOTNhNDE0MDIyNDVjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC50eXBlcwpAQCAtNDEsNCArNDEsNSBAQCB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0
X3R5cGUKIHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90eXBlCiB3ZWJraXRfZGV2aWNlX2lu
Zm9fcGVybWlzc2lvbl9yZXF1ZXN0X2dldF90eXBlCiB3ZWJraXRfZ2VvbG9jYXRpb25fbWFuYWdl
cl9nZXRfdHlwZQotd2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2dldF90eXBlClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQord2Via2l0X2dlb2xvY2F0aW9uX3Bvc2l0aW9uX2dldF90eXBl
Cit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X3R5cGUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNWRhYWIwODZlODdiNTU3Njg1YjIxNzdhMzY4
NGQ1MDhhMmVlMzMwYy4uMjMyYWZkMDk2YjJjYzY2ODVkZDE4YmU5Y2QzNzc0MzMyMzZlY2JjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtNjQsNiArNjQsNyBAQAogICAgIDx4aTppbmNsdWRlIGhy
ZWY9InhtbC9XZWJLaXRBcHBsaWNhdGlvbkluZm8ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0VXNlck1lc3NhZ2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAogICA8Y2hh
cHRlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggMTZl
ZjdlYjZkNDI3YThkMTVhNjhjNWQ0NTAyOWNjZDRlM2IyNjM3Yy4uZWIzNzU5YjA1YmIyODE3YzQz
NWI5NWFjOWNkODFjMTYyZmNiMjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExp
c3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdENvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb250ZXh0
TWVudUFjdGlvbnMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51SXRlbS5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRCcm93
c2VySW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJy
b3dzZXJJbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWQxNWMwOGVkZjQyMjAzM2Q1NjVhMjEzZGM5
YjljOGM3MmIxZWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9z
b2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5l
ZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBi
ZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRCcm93c2VySW5z
cGVjdG9yX2gKKyNkZWZpbmUgV2ViS2l0QnJvd3Nlckluc3BlY3Rvcl9oCisKKyNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8
d3BlL1dlYktpdFdlYlZpZXcuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9U
WVBFX0JST1dTRVJfSU5TUEVDVE9SICAgICAgICAgICAgKHdlYmtpdF9icm93c2VyX2luc3BlY3Rv
cl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAgICAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQlJP
V1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IpKQorI2RlZmluZSBXRUJLSVRf
SVNfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJL
SVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dz
ZXJJbnNwZWN0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUl9D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9CUk9XU0VSX0lOU1BFQ1RPUikpCisjZGVmaW5lIFdFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3IgICAgICAgIFdlYktpdEJyb3dz
ZXJJbnNwZWN0b3I7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNz
ICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJy
b3dzZXJJbnNwZWN0b3JQcml2YXRlIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlOworCitz
dHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3IgeworICAgIEdPYmplY3QgcGFyZW50OworCisg
ICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dl
YktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFz
czsKKworICAgIFdlYktpdFdlYlZpZXcgKigqIGNyZWF0ZV9uZXdfcGFnZSkgICAgICAgICAgIChX
ZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICpicm93c2VyX2luc3BlY3RvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViQ29udGV4dCAg
ICAgICAgICAqY29udGV4dCk7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lk
KTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2
b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9n
ZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRC
cm93c2VySW5zcGVjdG9yICoKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCAg
ICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYnJvd3Nl
cl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBlICAgICAgICAgICAgICAodm9pZCk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDY3OTAzZjVkODYyNGU4OGU1
ZDVhZDRlM2JmOTlmZDE0ZTNkYjVhZGQuLmRhMTQxMDllNzBhMzExYmQyNWMyMWVkMDNiNzg0ODVl
MmFlZDM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9j
cy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTE0NDIsMyArMTQ0MiwyMyBAQCBXRUJL
SVRfVFlQRV9HRU9MT0NBVElPTl9QT1NJVElPTgogPEZJTEU+V2ViS2l0VVJJVXRpbGl0aWVzPC9G
SUxFPgogd2Via2l0X3VyaV9mb3JfZGlzcGxheQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxG
SUxFPldlYktpdEJyb3dzZXJJbnNwZWN0b3I8L0ZJTEU+CitXZWJLaXRCcm93c2VySW5zcGVjdG9y
Cit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQKK3dlYmtpdF9icm93c2VyX2lu
c3BlY3Rvcl9pbml0aWFsaXplX3BpcGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRC
cm93c2VySW5zcGVjdG9yQ2xhc3MKK1dFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SCitXRUJL
SVRfQlJPV1NFUl9JTlNQRUNUT1IKK1dFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUgorV0VCS0lU
X0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTCitXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1JfQ0xB
U1MKK1dFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJp
dmF0ZT4KK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZQorV2ViS2l0QnJvd3Nlcklu
c3BlY3RvclByaXZhdGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L3dlYmtpdC5oCmluZGV4IDljYzMxY2I0OTY4ZjU0YjZkMzFmY2UyMzliNjJkMDljMzc0NDRlYWIu
LjkzMDQ5OWU2NWI2MGFlY2IwN2Y5NjljYzI3M2M3YzU5YTQ1NDc0MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
PHdwZS9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRCYWNr
Rm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5o
PgorI2luY2x1ZGUgPHdwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdENvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdENvbnRleHRNZW51QWN0
aW9ucy5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kODFmYmJhYjhhNDM0NTQ3Yzg3MDQ5OWY2ZjJkMjQ2ZGE4MmExODhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkJyb3dzZXJJbnNw
ZWN0b3JUYXJnZXRBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oIgorI2luY2x1ZGUgIldlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVGFyZ2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gYWxsUGFn
ZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgVmVjdG9yPFdlYlBhZ2VQ
cm94eSo+IHJlc3VsdDsKKyAgICBmb3IgKFdlYlByb2Nlc3NQb29sKiBwb29sIDogV2ViUHJvY2Vz
c1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHBvb2wtPnByb2Nlc3NlcygpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKHByb2Nl
c3MtPnBhZ2VzKCkuYmVnaW4oKSwgcHJvY2Vzcy0+cGFnZXMoKS5lbmQoKSk7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpCcm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcigpCisgICAgOiBtX2Zyb250ZW5kQ2hhbm5lbChudWxscHRyKQor
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJv
dXRlci5jb3B5UmVmKCkpKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXUEUpCisgICAgLCBtX2Jyb3dzZXJBZ2VudENsaWVudChJbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnQ6OmNyZWF0ZSgpKQorI2VuZGlmCit7CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JCcm93c2VyQWdlbnQ+KG1fYmFja2VuZERpc3BhdGNoZXIsIG1fYnJvd3Nl
ckFnZW50Q2xpZW50LmdldCgpKSk7CisjZW5kaWYKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fYmFja2VuZERpc3BhdGNoZXIpKTsK
K30KKworQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6On5Ccm93c2VySW5zcGVjdG9yQ29udHJv
bGxlcigpID0gZGVmYXVsdDsKKwordm9pZCBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCYgZnJvbnRlbmRDaGFubmVsKQoreworICAgIEFT
U0VSVCghbV9mcm9udGVuZENoYW5uZWwpOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gJmZyb250
ZW5kQ2hhbm5lbDsKKyAgICAvLyBBdXRvLWNvbm5lY3QgdG8gYWxsIG5ldyBwYWdlcy4KKyAgICBX
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0Q3JlYXRpb25MaXN0ZW5lcihbdGhpc10oV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIpIHsKKyAgICAgICAg
aW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQoKm1fZnJvbnRlbmRDaGFubmVsKTsK
KyAgICB9KTsKKworICAgIGJvb2wgY29ubmVjdGluZ0ZpcnN0RnJvbnRlbmQgPSAhbV9mcm9udGVu
ZFJvdXRlci0+aGFzRnJvbnRlbmRzKCk7CisgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZy
b250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgaWYgKGNvbm5lY3RpbmdGaXJzdEZyb250ZW5k
KQorICAgICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRl
bmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKworICAgIGNvbm5l
Y3RUb0FsbFBhZ2VzKCk7Cit9CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c2Nvbm5lY3RGcm9udGVuZCgpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRDaGFubmVsKTsKKyAg
ICBkaXNjb25uZWN0RnJvbUFsbFBhZ2VzKCk7CisKKyAgICBtX2Zyb250ZW5kUm91dGVyLT5kaXNj
b25uZWN0RnJvbnRlbmQoKm1fZnJvbnRlbmRDaGFubmVsKTsKKyAgICBpZiAoIW1fZnJvbnRlbmRS
b3V0ZXItPmhhc0Zyb250ZW5kcygpKQorICAgICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworCisg
ICAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENyZWF0aW9uTGlzdGVuZXIobnVsbHB0
cik7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworfQorCit2b2lkIEJyb3dzZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3Nh
Z2UpOworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0VG9BbGxQ
YWdlcygpCit7CisgICAgZm9yIChhdXRvKiBwYWdlIDogYWxsUGFnZXMoKSkKKyAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgqbV9mcm9udGVuZENoYW5u
ZWwpOworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bUFsbFBhZ2VzKCkKK3sKKyAgICBmb3IgKGF1dG8qIHBhZ2UgOiBhbGxQYWdlcygpKQorICAgICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCptX2Zyb250
ZW5kQ2hhbm5lbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGVhY2M1Nzk4YWY1ZDky
NWE5OTg2NmNiMGY4ZTJmNDA1ZGJmNTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEJhY2tlbmREaXNwYXRjaGVyOwor
Y2xhc3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ7CisKK2Ns
YXNzIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICB+QnJv
d3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQo
KTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOworCitwcml2YXRlOgorICAgIGNsYXNzIFRhcmdldEhhbmRsZXI7CisgICAgdm9pZCBj
b25uZWN0VG9BbGxQYWdlcygpOworICAgIHZvaWQgZGlzY29ubmVjdEZyb21BbGxQYWdlcygpOwor
CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsIHsgbnVs
bHB0ciB9OworICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91
dGVyOworICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ+
IG1fYnJvd3NlckFnZW50Q2xpZW50OworICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2Fn
ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93
c2VySW5zcGVjdG9yUGlwZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5z
cGVjdG9yUGlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFhNTg5ZmQ4ZjdiYWRmMDVlMWJmMzc5M2Y3MzYz
ZjQyOWE2NzkxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jy
b3dzZXJJbnNwZWN0b3JQaXBlLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9y
YXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JQaXBlLmgi
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkJyb3dzZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yUGlwZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBpbml0aWFsaXplQnJvd3Nlckluc3BlY3RvclBpcGUoKQoreworICAgIGNsYXNzIEJyb3dzZXJJ
bnNwZWN0b3JQaXBlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEJyb3dzZXJJbnNwZWN0b3JQaXBl
KCkKKyAgICAgICAgICAgIDogbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcigpCisgICAgICAg
ICAgICAsIG1fcmVtb3RlSW5zcGVjdG9yUGlwZShtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVy
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBCcm93c2VySW5zcGVjdG9yQ29udHJv
bGxlciBtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOworICAgICAgICBSZW1vdGVJbnNwZWN0
b3JQaXBlIG1fcmVtb3RlSW5zcGVjdG9yUGlwZTsKKyAgICB9OworCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEJyb3dzZXJJbnNwZWN0b3JQaXBlPiBwaXBlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJi
NGJmNTdhMjY1YmI4MDRlZjllOTNlMzMyMGNkNjYzYmM0MzQ2NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmgKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIGluaXRpYWxpemVC
cm93c2VySW5zcGVjdG9yUGlwZSgpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgw
OWU0N2NlNWFkODI5NjNmMWRjZDI4MjgzMjhlZTE3ZjRkNDhmYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAK
QEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCIKKworI2luY2x1ZGUgIldl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworSW5z
cGVjdG9yVGFyZ2V0KiB0YXJnZXRGb3JJZChjb25zdCBTdHJpbmcmIHRhcmdldElkKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgZm9yIChhdXRvKiBwb29sIDogV2ViUHJvY2Vz
c1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHBvb2wtPnByb2Nlc3NlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwcm9j
ZXNzLT5wYWdlcygpKSB7CisgICAgICAgICAgICAgICAgYXV0byogcmVzdWx0ID0gcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLmZpbmRUYXJnZXQodGFyZ2V0SWQpOworICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworfSAvLyBuYW1lc3BhY2UKKworQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpCcm93
c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRj
aGVyKQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQiX3MpCisgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQoreworfQorCitCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6On5Ccm93
c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgQnJvd3Nlckluc3Bl
Y3RvclRhcmdldEFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0
ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopCit7Cit9CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvclRh
cmdldEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
KQoreworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6c2VuZE1lc3NhZ2VU
b1RhcmdldChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvKiB0YXJnZXQgPSB0YXJnZXRGb3JJZCh0YXJn
ZXRJRCk7CisgICAgaWYgKHRhcmdldCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm9yID0gIkNh
bm5vdCBmaW5kIHRhcmdldCB3aXRoIHByb3ZpZGVkIGlkLiI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgdGFyZ2V0LT5zZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChtZXNzYWdlKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNTlhNWMzZDJm
NGM5OGFmNjUwZTExNGVmZmQwNDQ1NWNjODkwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpUYXJnZXRCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJyb3dzZXJJbnNwZWN0
b3JUYXJnZXRBZ2VudCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50KEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXImKTsKKyAgICB+QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50KCkgb3ZlcnJp
ZGU7CisKKyAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKworICAgIC8v
IFRhcmdldEJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Rh
cmdldChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZWY8SW5zcGVjdG9y
OjpUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5oCmluZGV4IGI2Njk0ZmU5MDZlYTBiNGY4MmE1NDA2NjJjYzg1NTBiMmZl
MWE1ZDIuLjU5ZjkzYzc5MTY3ZDNkMzkyYjQ2ZmY1MjQzNDk0YjAyYWYwNzM1NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNP
QXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTI4LDYg
KzI4LDggQEAKICNpZiBIQVZFKEFQUF9TU08pCiAKICNpbmNsdWRlICJTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogT0JKQ19DTEFTUyBXS1NPU2VjcmV0RGVsZWdhdGU7CiBPQkpDX0NM
QVNTIFdLV2ViVmlldzsKQEAgLTM4LDYgKzQwLDggQEAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwogLy8gRlNNOiBJ
ZGxlID0+IEFjdGl2ZSA9PiBDb21wbGV0ZWQKIGNsYXNzIFBvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbiBmaW5hbCA6IHB1YmxpYyBTT0F1dGhvcml6YXRpb25TZXNzaW9uIHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Q
b3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4
IDA3NmNmYWE2NzZhNzRjNGYzMzYwMWZmNjY0NGRlYzVlNWI1NjFjYTEuLjBmMTgwMzhkZTk4OWU2
OWE4NDMyYzg1YjcxYjZjMDRlOTMxMzAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1Bv
cFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAi
V0tVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
QnJvd3NlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJyb3dz
ZXJBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEyOWM0NjcyNDg4MGNiMmRiM2I1ZTJkOGQwOTE3ODll
MTEzYzVlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3RvckJyb3dzZXJBZ2VudC5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3Jh
dGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50Lmgi
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JGcm9udGVuZFJvdXRlci5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNs
dWRlIDx3dGYvSGV4TnVtYmVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitJbnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3BlY3RvckJyb3dz
ZXJBZ2VudChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwg
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KiBjbGllbnQpCisgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkJyb3dzZXIiX3MpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJyb3dzZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKKyAgICAsIG1f
Y2xpZW50KGNsaWVudCkKK3sKK30KKworSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp+SW5zcGVjdG9y
QnJvd3NlckFnZW50KCkgPSBkZWZhdWx0OworCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3Bh
dGNoZXIqKQoreworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKK3sKK30KKwordm9pZCBJbnNwZWN0
b3JCcm93c2VyQWdlbnQ6OmNsb3NlKEVycm9yU3RyaW5nJiBlcnJvcikKK3sKKyAgICBpZiAobV9j
bGllbnQgPT0gbnVsbHB0cikKKyAgICAgICAgZXJyb3IgPSAibm8gcGxhdGZvcm0gZGVsZWdhdGUg
dG8gY2xvc2UgYnJvd3NlciI7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVudC0+Y2xvc2VBbGxX
aW5kb3dzKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjpjcmVhdGVDb250ZXh0
KEVycm9yU3RyaW5nJiBlcnJvciwgU3RyaW5nKiBicm93c2VyQ29udGV4dElEKQoreworICAgIG1f
Y2xpZW50LT5jcmVhdGVCcm93c2VyQ29udGV4dChlcnJvciwgYnJvd3NlckNvbnRleHRJRCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjpkZWxldGVDb250ZXh0KEVycm9yU3RyaW5n
JiBlcnJvciwgY29uc3QgU3RyaW5nJiBicm93c2VyQ29udGV4dElEKQoreworICAgIG1fY2xpZW50
LT5kZWxldGVCcm93c2VyQ29udGV4dChlcnJvciwgYnJvd3NlckNvbnRleHRJRCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjpjcmVhdGVQYWdlKEVycm9yU3RyaW5nJiBlcnJvciwg
Y29uc3QgU3RyaW5nKiBicm93c2VyQ29udGV4dElELCBTdHJpbmcqIHRhcmdldElEKQoreworICAg
IFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2UgPSBtX2NsaWVudC0+Y3JlYXRlUGFnZShlcnJvciwg
YnJvd3NlckNvbnRleHRJRCk7CisgICAgaWYgKHBhZ2UgPT0gbnVsbHB0cikKKyAgICAgICAgcmV0
dXJuOworCisgICAgKnRhcmdldElEID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJ
RChwYWdlLT53ZWJQYWdlSUQoKSk7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6
OnRvQnJvd3NlckNvbnRleHRJRFByb3RvY29sU3RyaW5nKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBz
ZXNzaW9uSUQpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGFwcGVuZFVuc2ln
bmVkQXNIZXhGaXhlZFNpemUoc2Vzc2lvbklELnRvVUludDY0KCksIGJ1aWxkZXIsIDE2KTsKKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjRjNjU1YWIz
OWRhYzdjMjZhMjIzNDU1ZDhjZjBiNDg5MDIwNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmgKQEAgLTAsMCArMSw4MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2Uu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEJhY2tlbmREaXNwYXRjaGVyOworY2xh
c3MgRnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Cit9CisKK25hbWVzcGFj
ZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OworY2xhc3MgV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6QnJvd3NlckJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yQnJvd3NlckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnQoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciYs
IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudCopOworICAgIH5JbnNwZWN0b3JCcm93c2VyQWdl
bnQoKSBvdmVycmlkZTsKKworICAgIC8vIEluc3BlY3RvckFnZW50QmFzZQorICAgIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OworCisgICAgLy8gQnJvd3NlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgIHZvaWQgY2xv
c2UoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlQ29u
dGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgU3RyaW5nKiBicm93c2VyQ29udGV4dElEKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUNvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVh
dGVQYWdlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqIGJyb3dzZXJDb250
ZXh0SUQsIFN0cmluZyogdGFyZ2V0SWQpIG92ZXJyaWRlOworCisgICAgc3RhdGljIFN0cmluZyB0
b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhjb25zdCBQQUw6OlNlc3Npb25JRCYpOwor
Citwcml2YXRlOgorICAgIFJlZjxJbnNwZWN0b3I6OkJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQqIG1f
Y2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk5MmI4MDg3YTg5ZmNhMTM2
Njk1Y2M5M2Y3NWVhM2Y5MGE4NTVjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50IHsKK3B1YmxpYzoKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50PiBjcmVhdGUoKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgfkluc3BlY3RvckJyb3dz
ZXJBZ2VudENsaWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJLaXQ6Oldl
YlBhZ2VQcm94eT4gY3JlYXRlUGFnZShXVEY6OlN0cmluZyYgZXJyb3IsIGNvbnN0IFdURjo6U3Ry
aW5nKiBicm93c2VyQ29udGV4dElEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlQWxsV2lu
ZG93cygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQnJvd3NlckNvbnRleHQoV1RGOjpT
dHJpbmcmIGVycm9yLCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIGNvbnN0
IFdURjo6U3RyaW5nJiBicm93c2VyQ29udGV4dElEKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZWRkODg0YzQyMDI5MzJhMGI0NWE1NWU5YjhjNTEzNGNjZmY4OTYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5jcHAKQEAgLTAs
MCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVtb3RlSW5zcGVjdG9yUGlwZS5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgorCisjaWYgT1MoVU5JWCkKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHVuaXN0ZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3Qg
aW50IHJlYWRGRCA9IDM7CitzdGF0aWMgY29uc3QgaW50IHdyaXRlRkQgPSA0OworCitjbGFzcyBS
ZW1vdGVJbnNwZWN0b3JQaXBlOjpSZW1vdGVGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFJlbW90ZUZyb250ZW5kQ2hhbm5lbCgpCisgICAgICAgIDogbV9zZW5kZXJRdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiSW5zcGVjdG9yIHBpcGUgd3JpdGVyIikpCisgICAgeworICAg
IH0KKworICAgIH5SZW1vdGVGcm9udGVuZENoYW5uZWwoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisK
KyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICByZXR1cm4gQ29ubmVjdGlvblR5cGU6OlJlbW90ZTsKKyAgICB9CisKKyAgICB2
b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBtX3NlbmRlclF1ZXVlLT5kaXNwYXRjaChbbWVzc2FnZSA9IG1lc3Nh
Z2UuaXNvbGF0ZWRDb3B5KCldKCkgeworICAgICAgICAgICAgZHByaW50Zih3cml0ZUZELCAiJXMl
YyIsIG1lc3NhZ2UuYXNjaWkoKS5kYXRhKCksICdcMCcpOworICAgICAgICB9KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9zZW5kZXJRdWV1ZTsKK307CisKK1JlbW90
ZUluc3BlY3RvclBpcGU6OlJlbW90ZUluc3BlY3RvclBpcGUoQnJvd3Nlckluc3BlY3RvckNvbnRy
b2xsZXImIGJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKQorICAgIDogbV9yZW1vdGVGcm9udGVu
ZENoYW5uZWwobWFrZVVuaXF1ZTxSZW1vdGVGcm9udGVuZENoYW5uZWw+KCkpCisgICAgLCBtX2Jy
b3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKGJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKQorewor
ICAgIHN0YXJ0KCk7Cit9CisKK1JlbW90ZUluc3BlY3RvclBpcGU6On5SZW1vdGVJbnNwZWN0b3JQ
aXBlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yUGlwZTo6c3Rh
cnQoKQoreworICAgIGlmIChtX3JlY2VpdmVyVGhyZWFkKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuY29ubmVjdEZyb250ZW5kKCptX3Jl
bW90ZUZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV90ZXJtaW5hdGVkID0gZmFsc2U7CisgICAgbV9y
ZWNlaXZlclRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbnNwZWN0b3IgcGlwZSByZWFkZXIiLCBb
dGhpc10geworICAgICAgICB3b3JrZXJSdW4oKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JQaXBlOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcmVj
ZWl2ZXJUaHJlYWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYnJvd3Nlckluc3BlY3RvckNv
bnRyb2xsZXIuZGlzY29ubmVjdEZyb250ZW5kKCk7CisKKyAgICBtX3Rlcm1pbmF0ZWQgPSB0cnVl
OworICAgIG1fcmVjZWl2ZXJUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9yZWNl
aXZlclRocmVhZCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yUGlwZTo6d29y
a2VyUnVuKCkKK3sKKyAgICBjb25zdCBzaXplX3QgYnVmU2l6ZSA9IDI1NiAqIDEwMjQ7CisgICAg
YXV0byBidWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oYnVmU2l6ZSk7CisgICAgVmVjdG9y
PGNoYXI+IGxpbmU7CisgICAgd2hpbGUgKCFtX3Rlcm1pbmF0ZWQpIHsKKyAgICAgICAgc3NpemVf
dCBzaXplID0gcmVhZChyZWFkRkQsIGJ1ZmZlci5nZXQoKSwgYnVmU2l6ZSk7CisgICAgICAgIGlm
ICghc2l6ZSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJQaXBlIGNsb3NlZCBmb3Ig
cmVhZGluZy5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHNpemUgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHJlYWRpbmcg
ZnJvbSBwaXBlOiAlZFxuIiwgZXJybm8pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgc2l6ZV90IHN0YXJ0ID0gMDsKKyAgICAgICAgc2l6ZV90IGVuZCA9IGxpbmUuc2l6
ZSgpOworICAgICAgICBsaW5lLmFwcGVuZChidWZmZXIuZ2V0KCksIHNpemUpOworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgZm9yICg7IGVuZCA8IGxpbmUuc2l6ZSgpOyArK2Vu
ZCkgeworICAgICAgICAgICAgICAgIGlmIChsaW5lW2VuZF0gPT0gJ1wwJykKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kID09IGxp
bmUuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoZW5k
ID4gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6ZnJv
bVVURjgobGluZS5kYXRhKCkgKyBzdGFydCwgZW5kIC0gc3RhcnQpOworICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgbWVzc2FnZV0geworICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fdGVybWluYXRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYnJv
d3Nlckluc3BlY3RvckNvbnRyb2xsZXIuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3Nh
Z2UpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytl
bmQ7CisgICAgICAgICAgICBzdGFydCA9IGVuZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3Rh
cnQgJiYgc3RhcnQgPCBsaW5lLnNpemUoKSkKKyAgICAgICAgICAgIG1lbW1vdmUobGluZS5kYXRh
KCksIGxpbmUuZGF0YSgpICsgc3RhcnQsIGxpbmUuc2l6ZSgpIC0gc3RhcnQpOworICAgICAgICBs
aW5lLnNocmluayhsaW5lLnNpemUoKSAtIHN0YXJ0KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdi
MDYyMjU1N2NhYTgxOTU0YmE4OTE1MDE4OTdhMTliODUyZGM2YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9y
IHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JQ
aXBlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVJbnNwZWN0b3JQaXBlKTsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVJ
bnNwZWN0b3JQaXBlKEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyJik7CisgICAgflJlbW90ZUlu
c3BlY3RvclBpcGUoKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBSZW1vdGVGcm9udGVuZENoYW5u
ZWw7CisKKyAgICBib29sIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lkIHdv
cmtlclJ1bigpOworCisgICAgUmVmUHRyPFRocmVhZD4gbV9yZWNlaXZlclRocmVhZDsKKyAgICBz
dGQ6OmF0b21pYzxib29sPiBtX3Rlcm1pbmF0ZWQgeyBmYWxzZSB9OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9yZW1vdGVGcm9udGVuZENoYW5uZWw7
CisgICAgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXImIG1fYnJvd3Nlckluc3BlY3RvckNvbnRy
b2xsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4
IDZmMzcxZDdlMzZmYTFmYTQyZmNkZmY0M2VmMWQ4NjA4MDY2MTI1ZmUuLjM2MzU1YmZjNzIyNzJk
MTZhNDA0Y2RhYTJlMmU2MThmZDUwOTBhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFu
YWdlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dG9yVHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcAppbmRleCA2Zjdm
YjUzZTY1MmEyYzE3MjMxM2JhMmVmMzBjMjA4OWQ5NzQzMTllLi42YjUxYmY5OTNkM2FkMTgxOGZh
NTA0ZjU4ZWE1Y2FlOWE2NTM4ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNh
dG9yLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2lu
Y2x1ZGUgIkN0YXBEcml2ZXIuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEZpZG9BdXRoZW50
aWNhdG9yOjpGaWRvQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBk
cml2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjlhOTQ2OWFiNTkxMzZmOWU5YTM3MzZiZmRiMGU5ZDUy
OWMwZmJjZS4uYWY5NTU5YmFiZDQ4MzYyYjJhNzU1ZGMyZTAzYWVkN2EyY2M3YjM0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93
c2VyQWdlbnQuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgiCkBA
IC00NiwyNiArNDcsNjAgQEAgc3RhdGljIFN0cmluZyBnZXRUYXJnZXRJRChjb25zdCBQcm92aXNp
b25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQogICAgIHJldHVybiBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0Ojp0b1RhcmdldElEKHByb3Zpc2lvbmFsUGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAK
K3N0YXRpYyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Q3JlYXRpb25MaXN0ZW5lciYgY3Jl
YXRpb25MaXN0ZW5lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpDcmVhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICByZXR1cm4g
bGlzdGVuZXI7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENyZWF0
aW9uTGlzdGVuZXIoQ3JlYXRpb25MaXN0ZW5lciBsaXN0ZW5lcikKK3sKKyAgICBjcmVhdGlvbkxp
c3RlbmVyKCkgPSBsaXN0ZW5lcjsKK30KKwogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6Oldl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFn
ZShwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtl
VW5pcXVlPEluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBTdHJpbmcgYnJvd3NlckNvbnRleHRJRDsKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBicm93c2VyQ29udGV4dElEID0gSW5zcGVj
dG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhwYWdlLnNl
c3Npb25JRCgpKTsKKyNlbmRpZgorICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPElu
c3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpLCBicm93c2VyQ29udGV4dElEKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0
YXJnZXRBZ2VudC5nZXQoKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHRhcmdldEFn
ZW50KSk7CisKKyAgICBpZiAoY3JlYXRpb25MaXN0ZW5lcigpKQorICAgICAgICBjcmVhdGlvbkxp
c3RlbmVyKCkoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpp
bml0KCkKIHsKKyAgICAvLyB3aW5kb3cub3BlbiB3aWxsIGNyZWF0ZSBwYWdlIHdpdGggYWxyZWFk
eSBydW5uaW5nIHByb2Nlc3MuCisgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkK
KyAgICAgICAgcmV0dXJuOwogICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0Ojp0b1RhcmdldElEKG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAgICAgY3JlYXRlSW5z
cGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBl
OjpQYWdlKTsKIH0KIAordm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNo
QXR0YWNoaW5nVG9XZWJQcm9jZXNzKCkKK3sKKyAgICBTdHJpbmcgcGFnZVRhcmdldElEID0gV2Vi
UGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3BhZ2Uud2ViUGFnZUlEKCkpOworICAg
IC8vIENyZWF0ZSB0YXJnZXQgb25seSBhZnRlciBhdHRhY2hpbmcgdG8gYSBXZWIgUHJvY2VzcyBm
aXJzdCB0aW1lLiBCZWZvcmUgdGhhdAorICAgIC8vIHdlIGNhbm5vdCBldmVudCBlc3RhYmxpc2gg
ZnJvbnRlbmQgY29ubmVjdGlvbi4KKyAgICBpZiAobV90YXJnZXRzLmNvbnRhaW5zKHBhZ2VUYXJn
ZXRJRCkpCisgICAgICAgIHJldHVybjsKKyAgICBjcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRh
cmdldElELCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOworfQorCiB2b2lk
IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpwYWdlQ2xvc2VkKCkKIHsKKyAgICBTdHJpbmcg
cGFnZVRhcmdldElkID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3BhZ2Uu
d2ViUGFnZUlEKCkpOworICAgIGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElkKTsK
KwogICAgIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1fYWdlbnRzLmRpc2NhcmRW
YWx1ZXMoKTsKQEAgLTEzNCw2ICsxNjksMTEgQEAgdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2EKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAorSW5zcGVjdG9y
OjpJbnNwZWN0b3JUYXJnZXQqIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpmaW5kVGFyZ2V0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgcmV0dXJuIG1fdGFyZ2V0cy5nZXQodGFy
Z2V0SWQpOworfQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiB2b2lkIFdlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IDgyOGJjM2NjYzdlMDdkODEyMDMzNDMxYjI3YWU3ZjBiYzhjZjljNTQuLjIxYjI5
MjBhMmFkMzE4MWRlOWFkY2M1MmMwNzYxZDdkMGEzNWQwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDgsNiAr
NDgsMTEgQEAgcHVibGljOgogICAgIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQ
cm94eSYpOwogCiAgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBkaWRGaW5pc2hBdHRhY2hpbmdU
b1dlYlByb2Nlc3MoKTsKKworICAgIHVzaW5nIENyZWF0aW9uTGlzdGVuZXIgPSBzdGQ6OmZ1bmN0
aW9uPHZvaWQoV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXImKT47CisgICAgc3RhdGljIHZvaWQg
c2V0Q3JlYXRpb25MaXN0ZW5lcihDcmVhdGlvbkxpc3RlbmVyKTsKKwogICAgIHZvaWQgcGFnZUNs
b3NlZCgpOwogCiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CkBAIC01Nyw2ICs2
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAg
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CisgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQqIGZpbmRUYXJnZXQoY29uc3QgU3RyaW5n
JiB0YXJnZXRJZCk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA4ZWM4ZmFlNzRlM2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmLi4wMGQ5NmU3
ZjYxNWY0ZGNhZmRjMDY2ZjExYzMxNTJjZDg5ZmU3MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2NSw2ICs4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKFByb2Nlc3NMYXVuY2hSZWFzb24gcmVhc29u
KQogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRTd2FwV2ViUHJvY2Vzc2VzKCk7CiAgICAgaWYgKHJl
YXNvbiAhPSBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2VzcykKICAgICAgICAgbV9k
cmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CisgICAg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRGaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9JbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmNDI5ZjU1NmNkZDUxMTUw
Y2U2NGQ5YjRmYTU4MjliODdjOGQzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKQEAgLTAs
MCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oIgorCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKKyNp
bmNsdWRlICJXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dFdlYkNvbnRleHRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFZlY3Rv
cjxXZWJQYWdlUHJveHkqPiBjb2xsZWN0UGFnZXMoT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNl
c3Npb25JRCkKK3sKKyAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcmVzdWx0OworICAgIGZvciAo
V2ViUHJvY2Vzc1Bvb2wqIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXNlc3Npb25JRCB8fCBwYWdlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocGFnZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQg
Y2xvc2VBbGxQYWdlcyhPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQoreworICAg
IFZlY3RvcjxXZWJQYWdlUHJveHkqPiBwYWdlcyA9IGNvbGxlY3RQYWdlcyhzZXNzaW9uSUQpOwor
ICAgIGZvciAoYXV0byogcGFnZSA6IHBhZ2VzKQorICAgICAgICBwYWdlLT5jbG9zZVBhZ2UoZmFs
c2UpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50PiBJ
bnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYj4oKTsKK30KKworSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50R2xpYjo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYigp
Cit7Cit9CisKK1JlZlB0cjxXZWJQYWdlUHJveHk+IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dEdsaWI6OmNyZWF0ZVBhZ2UoV1RGOjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyog
YnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCk7CisgICAgaWYgKGJyb3dzZXJDb250ZXh0SUQg
IT0gbnVsbHB0cikgeworICAgICAgICBjb250ZXh0ID0gbV9pZFRvQ29udGV4dC5nZXQoKmJyb3dz
ZXJDb250ZXh0SUQpOworICAgICAgICBpZiAoY29udGV4dCA9PSBudWxscHRyKSB7CisgICAgICAg
ICAgICBlcnJvciA9ICJDb250ZXh0IHdpdGggcHJvdmlkZWQgaWQgbm90IGZvdW5kIjsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIFJlZlB0cjxXZWJQ
YWdlUHJveHk+IHBhZ2UgPSB3ZWJraXRCcm93c2VySW5zcGVjdG9yQ3JlYXRlTmV3UGFnZUluQ29u
dGV4dChjb250ZXh0KTsKKyAgICBpZiAocGFnZSA9PSBudWxscHRyKQorICAgICAgICBlcnJvciA9
ICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBwYWdlIGluIHRoZSBjb250ZXh0IjsKKyAgICByZXR1cm4g
cGFnZTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpjbG9zZUFs
bFdpbmRvd3MoKQoreworICAgIGNsb3NlQWxsUGFnZXMoT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
KCkpOworICAgIG1faWRUb0NvbnRleHQuY2xlYXIoKTsKKyAgICAvLyBGSVhNRSh5dXJ5cyk6IGNh
bGwgZ19tYWluX2xvb3BfcXVpdCgpID8KK30KKworc3RhdGljIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JREZyb21Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiBkYXRhTWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXIoY29udGV4dCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vi
c2l0ZURhdGFTdG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShkYXRh
TWFuYWdlcik7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUuc2Vzc2lvbklEKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6Y3JlYXRlQnJvd3NlckNvbnRl
eHQoV1RGOjpTdHJpbmcmIGVycm9yLCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sK
KyAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gbWFuYWdlciA9IGFkb3B0R1Jl
Zih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgpKTsKKyAgICBHUmVm
UHRyPFdlYktpdFdlYkNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05U
RVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1t
YW5hZ2VyIiwgbWFuYWdlci5nZXQoKSwgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmln
YXRpb24tZW5hYmxlZCIsIHRydWUsIG51bGxwdHIpKSk7CisgICAgaWYgKCFjb250ZXh0KSB7Cisg
ICAgICAgIGVycm9yID0gIkZhaWxlZCB0byBjcmVhdGUgR0xpYiBlcGhlbWVyYWwgY29udGV4dCI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0g
c2Vzc2lvbklERnJvbUNvbnRleHQoY29udGV4dC5nZXQoKSk7CisgICAgU3RyaW5nIGlkID0gSW5z
cGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhzZXNz
aW9uSUQpOworICAgIG1faWRUb0NvbnRleHQuc2V0KGlkLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAg
ICAqYnJvd3NlckNvbnRleHRJRCA9IGlkOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdsaWI6OmRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29u
c3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgR1JlZlB0cjxXZWJLaXRX
ZWJDb250ZXh0PiBjb250ZXh0ID0gbV9pZFRvQ29udGV4dC50YWtlKGJyb3dzZXJDb250ZXh0SUQp
OworICAgIGlmIChjb250ZXh0ID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJyb3IgPSAiQ29udGV4
dCB3aXRoIHByb3ZpZGVkIGlkIG5vdCBmb3VuZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgY2xvc2VBbGxQYWdlcyhzZXNzaW9uSURGcm9tQ29udGV4dChjb250ZXh0LmdldCgpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3Rv
ckJyb3dzZXJBZ2VudENsaWVudEdMaWIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZWZiNGM1NWIz
Yzc1MjhmZWMwNTI3Y2JkZTcwN2Q3MzZhMWNmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuaApA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudC5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIgOiBwdWJs
aWMgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliKCk7Cisg
ICAgfkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7
CisKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6U3RyaW5nJiBlcnJv
ciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xvc2VBbGxXaW5kb3dzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVCcm93c2VyQ29u
dGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5nKiBicm93c2VyQ29udGV4dElEKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJv
ciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworCitwcml2
YXRlOgorICAgIFdlYktpdFdlYkNvbnRleHQqIGZpbmRDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJv
ciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpOworCisgICAgSGFzaE1hcDxT
dHJpbmcsIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4+IG1faWRUb0NvbnRleHQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50TWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjI5M2RkYTYxYjJjZTQ5MDE0
M2U3OTBmNDk4ZmQ2MDUyMmQzNTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAKQEAgLTAsMCAr
MSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaCIKKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudD4gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYz4oKTsKK30KKwor
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnRNYWMoKQoreworfQorCitSZWZQdHI8V2ViUGFnZVByb3h5PiBJbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnRNYWM6OmNyZWF0ZVBhZ2UoV1RGOjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0
cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBlcnJvciA9ICJOb3QgaW1wbGVtZW50ZWQi
OworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjOjpjbG9zZUFsbFdpbmRvd3MoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
TWFjOjpjcmVhdGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5n
KiBicm93c2VyQ29udGV4dElEKQoreworICAgIGVycm9yID0gIk5vdCBpbXBsZW1lbnRlZCI7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnRNYWM6OmRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RG
OjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgZXJyb3IgPSAiTm90IGltcGxlbWVu
dGVkIjsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1h
Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwMzYzN2VmMTYzOTcxZDAzMDliNTU3ZjRhOWU4MzFjMTNlOTM2OGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50TWFjLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBv
cmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNs
dWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50TWFjIDogcHVibGljIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50
Q2xpZW50TWFjKCk7CisgICAgfkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYygpIG92ZXJy
aWRlID0gZGVmYXVsdDsKKworICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVBhZ2UoV1RG
OjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjbG9zZUFsbFdpbmRvd3MoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNy
ZWF0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgV1RGOjpTdHJpbmcqIGJyb3dz
ZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlQnJvd3NlckNvbnRleHQoV1RG
OjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyYgYnJvd3NlckNvbnRleHRJRCkgb3Zl
cnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNzcyYTEwMDlkODEwYjhiZDNhY2EwNTFlMmJiMjRjMzMxMTNhZWVi
OS4uMzJkMzQ1NjRkNmY4YzU3OTdlZTI0YWFlZTBiYTJiNWIyMmY2ZWVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjYyLDYgKzE2
NjIsMTEgQEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0QUUyQTFBNURDRjQz
MDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9
OwogCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0
QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJCUQ3MUE5NDMxMjM3
MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcxQTk0MkYyMzcwRTAy
NDAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudE1hYy5jcHAgKi87IH07CisJ
CUQ3MUE5NDMyMjM3MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5
NDMwMjM3MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaCAq
LzsgfTsKKwkJRDcxQTk0MzQyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDcxQTk0MzMyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5o
ICovOyB9OworCQlENzFBOTQzODIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlckluc3BlY3RvckNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQ3MUE5NDM3MjM3MEYwMzIwMDJDNEQ5RSAvKiBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5o
ICovOyB9OworCQlENzFBOTQzQTIzNzBGMDYxMDAyQzREOUUgLyogUmVtb3RlSW5zcGVjdG9yUGlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcxQTk0
MzkyMzcwRjA2MDAwMkM0RDlFIC8qIFJlbW90ZUluc3BlY3RvclBpcGUuaCAqLzsgfTsKIAkJRTEw
NUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNUZFNTMxOEQ3QjlERTAwOEY1N0E4IC8q
IEVkaXRpbmdSYW5nZS5oICovOyB9OwogCQlFMTFEMzVBRTE2QjYzRDFCMDA2RDIzRDcgLyogY29t
LmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxOTY3RTM3MTUwQUI1RTIwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYiAqLzsgfTsKIAkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKQEAgLTQ2OTAsNiArNDY5NSwxMiBAQAogCQlEM0I5
NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3
MUE5NDJDMjM3MERGODEwMDJDNEQ5RSAvKiBXS0Jyb3dzZXJJbnNwZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2VySW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUQ3MUE5NDJGMjM3MEUwMjQwMDJDNEQ5RSAvKiBJbnNwZWN0b3JC
cm93c2VyQWdlbnRDbGllbnRNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzAyMzcwRTAyNTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dz
ZXJBZ2VudENsaWVudE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDcxQTk0MzMyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzcyMzcwRjAz
MjAwMkM0RDlFIC8qIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3MUE5NDM5MjM3MEYwNjAwMDJDNEQ5RSAvKiBSZW1vdGVJ
bnNwZWN0b3JQaXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUlu
c3BlY3RvclBpcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzExMzcx
QUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlERjU4QzYzNTEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdGl2ZVdl
YldoZWVsRXZlbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMDVGRTUz
MThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWRpdGluZ1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NzkxLDYgKzc4MDIsNyBAQAogCQkJCUUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBBdXhp
bGlhcnlQcm9jZXNzUHJveHkuaCAqLywKIAkJCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyog
QmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQk0NkEyQjYw
NzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmggKi8sCisJCQkJRDcxQTk0MzcyMzcwRjAzMjAwMkM0RDlFIC8qIEJyb3dzZXJJbnNwZWN0b3JD
b250cm9sbGVyLmggKi8sCiAJCQkJMDcyOTdGOUMxQzE3MTFFQTAwM0YwNzM1IC8qIERldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcCAqLywKIAkJCQkwNzI5N0Y5RDFDMTdCQkVBMjIzRjA3MzUgLyog
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCAqLywKIAkJCQlCQzI2NTIxMjExODI2MDgxMDAyNDNF
MTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8sCkBAIC03ODA2LDYgKzc4MTgsNyBAQAogCQkJ
CTJERDVBNzJBMUVCRjA5QTcwMDlCQTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNy
ZWFzZXNDb3VudGVyLmggKi8sCiAJCQkJODM5QTJGMkYxRTIwNjczOTAwMzkwNTdFIC8qIEhpZ2hQ
ZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCAqLywKIAkJCQk4MzlBMkYzMDFFMjA2
NzM5MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCAqLywK
KwkJCQlENzFBOTQzMzIzNzBFMDdBMDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50LmggKi8sCiAJCQkJQTVFMzkxRkIyMTgzQzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdl
dFByb3h5LmNwcCAqLywKIAkJCQlBNUUzOTFGQzIxODNDMUU5MDBDOEZCMzEgLyogSW5zcGVjdG9y
VGFyZ2V0UHJveHkuaCAqLywKIAkJCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5
R2xvYmFsU2V0dGluZ3MuY3BwICovLApAQCAtNzgyMyw2ICs3ODM2LDcgQEAKIAkJCQk4MzA0OEFF
NTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAogCQkJCTQ2
ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8sCiAJ
CQkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8s
CisJCQkJRDcxQTk0MzkyMzcwRjA2MDAwMkM0RDlFIC8qIFJlbW90ZUluc3BlY3RvclBpcGUuaCAq
LywKIAkJCQlBNTVCQTgxQjFCQTI1QjFFMDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkuY3BwICovLAogCQkJCUE1NUJBODE5MUJBMjVCMUUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5oICovLAogCQkJCUE1NUJBODFBMUJBMjVCMUUwMDdDRDMzRCAvKiBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTgwNjIsNiArODA3Niw3IEBACiAJ
CQkJQkM2NDZDMTkxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5o
ICovLAogCQkJCUJDNjQ2QzE2MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJl
Zi5jcHAgKi8sCiAJCQkJQkM2NDZDMTcxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRM
aXN0UmVmLmggKi8sCisJCQkJRDcxQTk0MkMyMzcwREY4MTAwMkM0RDlFIC8qIFdLQnJvd3Nlcklu
c3BlY3Rvci5oICovLAogCQkJCUJDQjlFMjRBMTEyMEUxNUMwMEExMzdFMCAvKiBXS0NvbnRleHQu
Y3BwICovLAogCQkJCUJDQjlFMjQ5MTEyMEUxNUMwMEExMzdFMCAvKiBXS0NvbnRleHQuaCAqLywK
IAkJCQkxQUU1MkY5MzE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
Zi5jcHAgKi8sCkBAIC04NjQ5LDYgKzg2NjQsOCBAQAogCQkJCUMxODE3MzYwMjA1ODQyNDcwMERG
REE2NSAvKiBEaXNwbGF5TGluay5oICovLAogCQkJCTMxQUJBNzlEMjE1QUY5RTAwMEM5MEUzMSAv
KiBIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmNwcCAqLywKIAkJCQkzMUFCQTc5QzIxNUFGOUUw
MDBDOTBFMzEgLyogSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oICovLAorCQkJCUQ3MUE5NDJG
MjM3MEUwMjQwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRNYWMuY3BwICov
LAorCQkJCUQ3MUE5NDMwMjM3MEUwMjUwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRNYWMuaCAqLywKIAkJCQkxQUZERTY1QjE5NTRFOEQ1MDBDNDhGRkEgLyogTGVnYWN5U2Vz
c2lvblN0YXRlQ29kaW5nLmNwcCAqLywKIAkJCQkwRkNCNEU1ODE4QkJFM0Q5MDAwRkNGQzkgLyog
UGFnZUNsaWVudEltcGxNYWMuaCAqLywKIAkJCQkwRkNCNEU1OTE4QkJFM0Q5MDAwRkNGQzkgLyog
UGFnZUNsaWVudEltcGxNYWMubW0gKi8sCkBAIC05NDgzLDYgKzk1MDAsNyBAQAogCQkJCUUxNzA4
NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRDcxQTk0MzgyMzcwRjAzMjAwMkM0RDlFIC8qIEJyb3dzZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEyNTkzNDRF
MDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFRDgxRjQx
NUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4g
SGVhZGVycyAqLywKQEAgLTk1NzcsNiArOTU5NSw4IEBACiAJCQkJQkMxNERGNzcxMjBCNUI3OTAw
ODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJERDQ1QURFMUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0U1NTBFMTUyMjgzNzUyMjAwRDI4NzkxIC8qIEluc2VydFRleHRP
cHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlENzFBOTQzNDIzNzBFMDdBMDAyQzREOUUgLyog
SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlENzFBOTQz
MjIzNzBFMDI1MDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFy
Z2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURGMUM1MDc2NkEwMENERTNGQSAv
KiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTk3NTcsNiArOTc3Nyw3IEBACiAJCQkJODMwNDhBRTYxQUNB
NDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0ZEMzE4MjIyQjM1MTVFMDA4RDBFOEIgLyogUmVkaXJlY3RTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlENzFBOTQzQTIzNzBGMDYxMDAyQzRE
OUUgLyogUmVtb3RlSW5zcGVjdG9yUGlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQx
ODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2NEIzQTg4MDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTI4OSw2
ICsxMTMxMCw3IEBACiAJCQkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5U
b3VjaFNlY2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2
NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlENzFBOTQzMTIzNzBFMDI1MDAyQzRE
OUUgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50TWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTEzNDQxMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QTWV0aG9kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTEzNDQyMjEyQ0Y5RjAwMDEyOEFGRCAvKiBKU05QT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmNmODU1ZDFlMWEz
NjVkYzk5ZWIyNDUzZjU2YWE4MGE0ZWFiMzQ2OS4uMjQzZWJiZDUyNjYwYTVkYTIwMjk0ZjBiNGEw
NDBmODIxOTY0NTJjNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTExLTA1ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSBi
cm93c2VyIGluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzODcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgbmV3IGZsYWcgZm9yIGludGlhbGl6aW5nIGluc3BlY3RvciBwaXBlLgor
CisgICAgICAgIEFkZGVkIHBsYXRmb3JtIGhvb2tzIGZvciBjcmVhdGluZyBuZXcgcGFnZXMgaW4g
cmVzcG9uc2UgdG8gQnJvd3Nlci5jcmVhdGVQYWdlIGluc3BlY3RvcgorICAgICAgICBjb21tYW5k
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNyZWF0ZU5l
d1BhZ2UpOgorICAgICAgICAoY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBpcGUpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAo
Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChjbG9zZUFsbCk6CisgICAgICAgIChjb25maWd1cmVC
cm93c2VySW5zcGVjdG9yKToKKyAgICAgICAgKG1haW4pOgorCiAyMDE5LTExLTA2ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cGhpbG5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEFkZCBs
aWJmZGstYWFjLWRldiB0byB0aGUgaW5zdGFsbC1kZXBlbmRlbmNpZXMgc2NyaXB0CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYwppbmRleCA5M2Q5MzU5MmJjNGY4ZTU1MWUyMmYyZWQzNWNmOWNhNmNiNjJiZDI1Li4w
YzhmOWE5ZjgxMzNhMDkzOGFiMGNmNjc4YzlkZmYxZDdjYmU5ZDM3IDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWlu
LmMKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwogc3Rh
dGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJveHk7
CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgZ2Jvb2xlYW4gaW5zcGVjdG9yUGlw
ZTsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0x
MjAsNiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlv
bnNbXSA9CiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HX0FS
UkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9LAog
ICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25v
cmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAgICB7ICJjb250ZW50
LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJK
U09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKKyAgICB7ICJpbnNw
ZWN0b3ItcGlwZSIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaW5zcGVjdG9yUGlwZSwgIk9w
ZW4gcGlwZSBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIiwgTlVMTCB9LAogICAg
IHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAi
UHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05fUkVN
QUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMs
IDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQpAQCAtNDkyLDYg
KzQ5NCwyOSBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJTYXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250
ZW50RmlsdGVyU3RvcmUgKnN0b3JlLCBHQXN5bmNSZXN1bAogICAgIGdfbWFpbl9sb29wX3F1aXQo
ZGF0YS0+bWFpbkxvb3ApOwogfQogCitzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlTmV3UGFn
ZShXZWJLaXRCcm93c2VySW5zcGVjdG9yICpicm93c2VyX2luc3BlY3RvciwgV2ViS2l0V2ViQ29u
dGV4dCAqY29udGV4dCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAgICAgICAgIndl
Yi1jb250ZXh0IiwgY29udGV4dCwKKyAgICAgICAgImlzLWVwaGVtZXJhbCIsIHdlYmtpdF93ZWJf
Y29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCksCisgICAgICAgICJpcy1jb250cm9sbGVkLWJ5
LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgR3RrV2lkZ2V0ICpuZXdX
aW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgY29udGV4dCk7CisgICAgYnJvd3Nlcl93
aW5kb3dfYXBwZW5kX3ZpZXcoQlJPV1NFUl9XSU5ET1cobmV3V2luZG93KSwgbmV3V2ViVmlldyk7
CisgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKEdUS19XSURHRVQobmV3V2ViVmlldykpOworICAg
IGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG5ld1dpbmRvdykpOworICAgIHdlYmtpdF93ZWJf
dmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICByZXR1cm4gbmV3
V2ViVmlldzsKK30KKworc3RhdGljIHZvaWQgY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBpcGUo
KQoreworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKmJyb3dzZXJJbnNwZWN0b3IgPSB3ZWJr
aXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQoKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KGJyb3dzZXJJbnNwZWN0b3IsICJjcmVhdGUtbmV3LXBhZ2UiLCBHX0NBTExCQUNLKGNyZWF0ZU5l
d1BhZ2UpLCBOVUxMKTsKKworICAgIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXpl
X3BpcGUoKTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICNpZiBF
TkFCTEVfREVWRUxPUEVSX01PREUKQEAgLTUzOSw2ICs1NjQsOSBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciAqYXJndltdKQogICAgIFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRleHQgPSBnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIs
IG1hbmFnZXIsICJwcm9jZXNzLXN3YXAtb24tY3Jvc3Mtc2l0ZS1uYXZpZ2F0aW9uLWVuYWJsZWQi
LCBUUlVFLCBOVUxMKTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAorICAgIGlmIChp
bnNwZWN0b3JQaXBlKQorICAgICAgICBjb25maWd1cmVCcm93c2VySW5zcGVjdG9yUGlwZSgpOwor
CiAgICAgaWYgKGNvb2tpZXNQb2xpY3kpIHsKICAgICAgICAgV2ViS2l0Q29va2llTWFuYWdlciAq
Y29va2llTWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29va2llX21hbmFnZXIod2Vi
Q29udGV4dCk7CiAgICAgICAgIEdFbnVtQ2xhc3MgKmVudW1DbGFzcyA9IGdfdHlwZV9jbGFzc19y
ZWYoV0VCS0lUX1RZUEVfQ09PS0lFX0FDQ0VQVF9QT0xJQ1kpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
CmluZGV4IDJkMTgzZDM5NDEyM2JkODQ1NDVkYzUxZjUzZWI5YmU3OTZmYjg4NzMuLmE0NjgyNjdh
YmM0MTUzNmM0Y2Q2Nzk1NTU2MjZmZjEyMzQzNzFkMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7CiBj
b25zdCBjaGFyKiBiZ0NvbG9yOworc3RhdGljIGdib29sZWFuIGluc3BlY3RvclBpcGU7CiBzdGF0
aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNv
bW1hbmRMaW5lT3B0aW9uc1tdID0KQEAgLTYyLDYgKzYzLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRp
b25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMi
LCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMg
ZXJyb3JzIiwgbnVsbHB0ciB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJ
T05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRl
cmluZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05f
QVJHX1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDog
d2hpdGUiLCAiQ09MT1IiIH0sCisgICAgeyAiaW5zcGVjdG9yLXBpcGUiLCAwLCAwLCBHX09QVElP
Tl9BUkdfTk9ORSwgJmluc3BlY3RvclBpcGUsICJPcGVuIHBpcGUgY29ubmVjdGlvbiB0byB0aGUg
cmVtb3RlIGluc3BlY3RvciIsIG51bGxwdHIgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAwLCBH
X09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXUEUgdmVyc2lvbiIs
IG51bGxwdHIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJH
X0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAgICAg
eyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciB9CkBAIC0xNzIsNiArMTc0LDQzIEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVhdGVX
ZWJWaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3RpCiAgICAg
cmV0dXJuIG5ld1dlYlZpZXc7CiB9CiAKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVhdGVOZXdQ
YWdlKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IqLCBXZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0KQor
eworICAgIGF1dG8gYmFja2VuZCA9IGNyZWF0ZVZpZXdCYWNrZW5kKDEyODAsIDcyMCk7CisgICAg
c3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIHdwZUJhY2tlbmQgPSBiYWNrZW5kLT5iYWNrZW5kKCk7
CisgICAgaWYgKCF3cGVCYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8qIHZpZXdCYWNrZW5kID0gd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfbmV3KHdwZUJhY2tlbmQs
CisgICAgICAgIFtdKGdwb2ludGVyIGRhdGEpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNf
Y2FzdDxXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kKj4oZGF0YSk7CisgICAgICAgIH0s
IGJhY2tlbmQucmVsZWFzZSgpKTsKKworICAgIGF1dG8qIG5ld1dlYlZpZXcgPSB3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfY29udGV4dCh2aWV3QmFja2VuZCwgY29udGV4dCk7CisKKyAgICBnX3Np
Z25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0Nsb3Nl
KSwgbnVsbHB0cik7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkobmV3V2ViVmlldywg
ImFib3V0OmJsYW5rIik7CisKKyAgICByZXR1cm4gbmV3V2ViVmlldzsKKworfQorCitzdGF0aWMg
dm9pZCBjbG9zZUFsbChXZWJLaXRCcm93c2VySW5zcGVjdG9yKiwgR01haW5Mb29wKiBtYWluTG9v
cCkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KG1haW5Mb29wKTsKK30KKworc3RhdGljIHZvaWQg
Y29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBpcGUoR01haW5Mb29wKiBtYWluTG9vcCwgV2ViS2l0
V2ViVmlldyAqZmlyc3RXZWJWaWV3KQoreworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IqIGJy
b3dzZXJJbnNwZWN0b3IgPSB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQoKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KGJyb3dzZXJJbnNwZWN0b3IsICJjcmVhdGUtbmV3LXBhZ2Ui
LCBHX0NBTExCQUNLKGNyZWF0ZU5ld1BhZ2UpLCBOVUxMKTsKKyAgICAvLyBGSVhNRTogVGhpcyBz
aWduYWwgaXMgcmVjZWl2ZWQgb25seSB3aGVuIGNsb3NlQWxsIGlzIGNhbGxlZC4gV2Ugc2hvdWxk
IG5vdCByZWx5IG9uIHRoYXQuCisgICAgZ19zaWduYWxfY29ubmVjdChmaXJzdFdlYlZpZXcsICJj
bG9zZSIsIEdfQ0FMTEJBQ0soY2xvc2VBbGwpLCBtYWluTG9vcCk7CisKKyAgICB3ZWJraXRfYnJv
d3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBlKCk7Cit9CisKIGludCBtYWluKGludCBhcmdj
LCBjaGFyICphcmd2W10pCiB7CiAjaWYgRU5BQkxFX0RFVkVMT1BFUl9NT0RFCkBAIC0zMDEsNiAr
MzQwLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NBTExCQUNLKGRlY2lkZVBl
cm1pc3Npb25SZXF1ZXN0KSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3
LCAiY3JlYXRlIiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3KSwgbnVsbHB0cik7CiAKKyAgICBp
ZiAoaW5zcGVjdG9yUGlwZSkKKyAgICAgICAgY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBpcGUo
bG9vcCwgd2ViVmlldyk7CisKICAgICBpZiAoaWdub3JlVExTRXJyb3JzKQogICAgICAgICB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KHdlYkNvbnRleHQsIFdFQktJVF9U
TFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382943</attachid>
            <date>2019-11-06 11:29:00 -0800</date>
            <delta_ts>2019-11-06 16:13:56 -0800</delta_ts>
            <desc>initial implementation</desc>
            <filename>bug-203870-20191106112859.patch</filename>
            <type>text/plain</type>
            <size>111352</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc2MjUwZTRmY2RkZmQ5NjRkNDhhMTBlY2QxYzBiNjFjZDhiMWY3Li45MWZhZDhiZTM1Njg0NDg5
MWQyMWE1M2MxYzIxZDYwYjVjNDQyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYnJvd3NlciBpbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IEJyb3dzZXIgZG9tYWluIHRoYXQgYWxsb3dzIGNyZWF0aW5nIGVwaGVtZXJhbCBjb250ZXh0cyBh
bmQgcGFnZXMuCisgICAgICAgIEV4dGVuZGVkIFRhcmdldEluZm8gd2l0aCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29udGV4dCBpdCBiZWxvbmdzIHRvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6YnVpbGRUYXJnZXRJbmZvT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6ZW5zdXJlQ29ubmVjdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246CisKIDIwMTktMTEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURjo6UnVuTG9vcCBzaG91bGQgbm90IGRlcGVuZCBvbiBpc01haW5U
aHJlYWQoKSBpZGlvbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjNhZTRkYWI5MGEzZjNlYjhiMzExZmI5YmE0YmQ4
OTJlMzhkMTFjZi4uNmRhNDI1OTExZGY2Y2FiYmNmMTZmMDAxMzVmMjRiNzY1YmM4OWU4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMTktMTEtMDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIGJy
b3dzZXIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCcm93c2VyIGluc3BlY3RvciBpcyBpbnRyb2R1Y2VkIHRvIGVuYWJsZSBpbnNwZWN0
aW5nIGVudGlyZSBicm93c2VyIG92ZXIgdGhlCisgICAgICAgIGluc3BlY3RvciBwcm90b2NvbC4g
SXQgaXMgY29tcHJpc2VkIG9mIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICBOZXcg
QnJvd3NlciBkb21haW4gaW4gdGhlIHByb3RvY29sIGFsbG93cyB0byBjcmVhdGUvZGVsZXRlIGVw
aGVtZXJhbCBicm93c2luZworICAgICAgICBjb250ZXh0cyBhbmQgY3JlYXRlIHBhZ2VzIGluIHRo
b3NlIGNvbnRleHRzLiBUaGlzIGFsbG93cyB0byBydW4gbXVsdGlwbGUgdGVzdAorICAgICAgICBw
YWdlcyBpbiB0aGUgc2FtZSBpbnN0YW5jZSB3aGlsZSBpc29sYXRpbmcgdGhlaXIgc3RhdGUuCisK
KyAgICAgICAgQWZvcmVtZW50aW9uZWQgZG9tYWluIGlzIGltcGxlbWVudGVkIGJ5IEluc3BlY3Rv
ckJyb3dzZXJBZ2VudCB0aGF0IGRlbGVnYXRlcyBtb3N0CisgICAgICAgIG9mIGl0cyB3b3JrIHRv
IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiAoR1RLIGFuZCBXUEUgc28gZmFy
KS4KKyAgICAgICAgQnJvd3Nlci5jcmVhdGVQYWdlIHJlcXVpcmVzIGVtYmVkZGVyIHN1cHBvcnQg
c28gdGhhdCBuZXcgcGFnZSBpcyBjcmVhdGVkIGluIGEKKyAgICAgICAgd2luZG93LgorCisgICAg
ICAgIEJyb3dzZXIgaW5zcGVjdG9yIHN0YXRlIGlzIG1hbmFnZWQgYnkgQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIgd2hpY2ggb3ducyB0d28KKyAgICAgICAgYWdlbnRzIEJyb3dzZXIgYW5kIFRh
cmdldC4gQnJvd3NlciB0YXJnZXQgYWdlbnQgZGlzcGF0Y2hlcyBtZXNzYWdlcyB0byB0aGUgdGFy
Z2V0cworICAgICAgICB3aXRoaW4gcGFnZSBzcGVjaWZpYyB0YXJnZXQgYWdlbnRzLiBDdXJyZW50
bHkgd2hlbmV2ZXIgbmV3IHBhZ2UgaXMgY3JlYXRlZCBpbnNwZWN0b3IKKyAgICAgICAgd2lsbCBh
dXRvY29ubmVjdCB0byBpdC4KKworICAgICAgICBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBjb25uZWN0aW9uIHRvIHRoZSBuZXcgaW5zcGVjdG9yIGNhbiBvbmx5IGJlIGVzdGFibGlzaGVk
CisgICAgICAgIHZpYSBhIHBpcGUuIEl0IHJlcXVpcmVzIHJlbW90ZSBpbnNwZWN0b3IgdG8gYmUg
dGhlIGxhdW5jaGVyIG9mIHRoZSBicm93c2VyIHByb2Nlc3MuIE90aGVyCisgICAgICAgIHRyYW5z
cG9ydHMgY2FuIGJlIGFkZGVkIGxhdGVyLgorCisgICAgICAgIEJyb3N3ZXIgaW5zcGVjdG9yIGlz
IG9ubHkgaW5zdGFudGlhdGVkIGlmIGV4cGxpY2l0bHkgb3B0ZWQtaW4gYnkgdGhlIGVtYmVkZGVy
IGFuZCBtdXN0CisgICAgICAgIGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGZpcnN0IHBhZ2UgaXMgY3Jl
YXRlZC4gSW4gdGhlIE1pbmlCcm93c2VyIGl0IGlzIGd1YXJkZWQgYnkgYSBjb21tYW5kCisgICAg
ICAgIGxpbmUgZmxhZy4KKworICAgICAgICBFbWJlZGRlciBpbnRlcmZhY2UgaXMgcHJvdmlkZWQg
aW4gdGhlIGZvcm0gb2YgV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiBHVEsgYW5kIFdQRS4KKyAg
ICAgICAgVGhlIG5ldyBBUEkgYWxsb3dzIHRvIHNldHVwIGluc3BlY3RvciBwaXBlIHRvIHRoZSBw
YXJlbnQgcHJvY2VzcyBhbmQgcHJvdmlkZXMgYQorICAgICAgICBwbGF0Zm9ybSBob29rIGZvciBj
cmVhdGluZyBuZXcgcGFnZSBpbiBhIGNvbnRleHQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAg
ICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclBpcGU6OkJyb3dzZXJJbnNwZWN0b3JQaXBlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAod2Via2l0QnJvd3Nlckluc3BlY3RvckNyZWF0ZU5ld1BhZ2VJbkNv
bnRleHQpOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnJvd3Nlckluc3BlY3Rvcik6CisgICAgICAg
ICh3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQpOgorICAgICAgICAod2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBl
czoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ccm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpCcm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToK
KyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdFRvQWxsUGFnZXMpOgorICAgICAgICAoV2ViS2l0OjpC
cm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21BbGxQYWdlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojppbml0aWFsaXplQnJvd3Nlckluc3BlY3RvclBpcGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFn
ZW50KToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50Lmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudCk6CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRlbGV0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0
ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OnRvQnJvd3Nl
ckNvbnRleHRJRFByb3RvY29sU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
QnJvd3NlckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUluc3Bl
Y3RvclBpcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlw
ZTo6UmVtb3RlRnJvbnRlbmRDaGFubmVsOjpSZW1vdGVGcm9udGVuZENoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpSZW1vdGVJbnNwZWN0b3JQaXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlwZTo6flJlbW90ZUluc3BlY3RvclBpcGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpzdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQaXBlOjp3b3JrZXJSdW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVJbnNwZWN0b3JQaXBlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0Q3JlYXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjppbml0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaEF0dGFjaGluZ1RvV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpw
YWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6
OmZpbmRUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpjbG9zZUFsbFBhZ2VzKToKKyAgICAgICAgKFdlYktp
dDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRHbGliKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
R2xpYjo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdsaWI6OmNsb3NlQWxsV2luZG93cyk6CisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25J
REZyb21Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50R2xpYjo6Y3JlYXRlQnJvd3NlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpkZWxldGVCcm93c2VyQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0x
MS0wNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIFBvaW50ZXIgTG9jayBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZTk2NjUwMzY0NjYwYzQ1ZTk3ZGZlZDliMzNm
ZGY5MjhlY2NiOTA0Li4wMjg5ZGEyNzEwMjRjZDY4YjIzM2ZjYTkzN2U0ZDE1YTJmODEwOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTQzLDYgKzExNDMsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX0RPTUFJTlMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpzb24KICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0F1ZGl0Lmpzb24KKyAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbgogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9Db25zb2xlLmpzb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjU5MjEyZmYwMWNj
OWQ4MmEyMTAwNWIyMTI4NTcxZTdkMjMwM2U3NC4uZTE5MDA5ZjVmYmE3Yjc2MjI1OWJiZWNhYzFl
ZjczM2FiNjFlNWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTIzOCw2ICsyMzgsNyBAQCBJTlNQRUNUT1JfRE9NQUlOUyA6PSBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXVkaXQuanNvbiBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24gXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9Db25zb2xlLmpzb24gXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFy
Z2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDExNzcwOTBmYzE4NjIzZWY1MDFjOWFkNGMzMzg5
YmMyZGE5MTA3MWUuLjdlZjBlM2ZjZmZlMmE5YWI0YmIwMWI2ZTE3ZDczYzJhYWQ3OGM3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRhcmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMwLDExICszMCwxMiBAQAogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdl
dEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXIm
IGJhY2tlbmREaXNwYXRjaGVyKQorSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdl
dEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXIm
IGJhY2tlbmREaXNwYXRjaGVyLCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKICAgICAsIG1fcm91dGVyKGZyb250ZW5k
Um91dGVyKQogICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCisgICAgLCBtX2Jyb3dzZXJDb250ZXh0SUQoYnJvd3NlckNvbnRleHRJRCkKIHsKIH0KIApA
QCAtODcsNyArODgsNyBAQCBzdGF0aWMgUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlw
ZSB0YXJnZXRUeXBlVG9Qcm90b2NvbFR5cGUoSW5zcGVjdG9yVGFyZwogICAgIHJldHVybiBQcm90
b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpUeXBlOjpQYWdlOwogfQogCi1zdGF0aWMgUmVmPFBy
b3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm8+IGJ1aWxkVGFyZ2V0SW5mb09iamVjdChjb25zdCBJ
bnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFy
Z2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2JqZWN0KGNvbnN0IEluc3BlY3RvclRhcmdldCYgdGFy
Z2V0LCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpjcmVhdGUoKQogICAgICAgICAuc2V0VGFy
Z2V0SWQodGFyZ2V0LmlkZW50aWZpZXIoKSkKQEAgLTk1LDYgKzk2LDggQEAgc3RhdGljIFJlZjxQ
cm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdldEluZm9PYmplY3QoY29uc3Qg
SW5zcGVjdG9yVGEKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAodGFyZ2V0LmlzUHJvdmlz
aW9uYWwoKSkKICAgICAgICAgcmVzdWx0LT5zZXRJc1Byb3Zpc2lvbmFsKHRydWUpOworICAgIGlm
ICghYnJvd3NlckNvbnRleHRJRC5pc0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC0+c2V0QnJvd3Nl
ckNvbnRleHRJZChicm93c2VyQ29udGV4dElEKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0xMDgsNyArMTExLDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRl
ZChJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKIAogICAgIHRhcmdldC5jb25uZWN0KGNvbm5lY3Rp
b25UeXBlKCkpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdldENyZWF0ZWQoYnVp
bGRUYXJnZXRJbmZvT2JqZWN0KHRhcmdldCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50
YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQsIG1fYnJvd3NlckNvbnRl
eHRJRCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXREZXN0cm95ZWQo
SW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCkBAIC0xMzUsNiArMTM4LDE4IEBAIHZvaWQgSW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KGNvbnN0IFN0cmluZyYg
b2xkVGFyZ2V0SUQsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpZENvbW1pdFByb3Zpc2lv
bmFsVGFyZ2V0KG9sZFRhcmdldElELCBjb21taXR0ZWRUYXJnZXRJRCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6OmVuc3VyZUNvbm5lY3RlZChjb25zdCBTdHJpbmcmIHRhcmdldElE
KQoreworICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogdGFyZ2V0ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJRCk7CisgICAgaWYgKCF0YXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIHRhcmdldC0+Y29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsK
K30KKwogRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6Y29ubmVjdGlvblR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3JvdXRlci5oYXNMb2Nh
bEZyb250ZW5kKCkgPyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6
OkxvY2FsIDogSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpSZW1v
dGU7CkBAIC0xNDQsNyArMTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6Y29ubmVj
dFRvVGFyZ2V0cygpCiB7CiAgICAgZm9yIChJbnNwZWN0b3JUYXJnZXQqIHRhcmdldCA6IG1fdGFy
Z2V0cy52YWx1ZXMoKSkgewogICAgICAgICB0YXJnZXQtPmNvbm5lY3QoY29ubmVjdGlvblR5cGUo
KSk7Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFy
Z2V0SW5mb09iamVjdCgqdGFyZ2V0KSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50
YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCgqdGFyZ2V0LCBtX2Jyb3dzZXJDb250
ZXh0SUQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCmluZGV4IDM4Y2Iz
MTg5ODZiMzFjNGRlZDE5YmE5YmVhZTc4NTVkMmI1NGMyM2EuLjA1NTdmODMzYzNkNmYxZGEwOTA4
NmRkNDZjZTQ1OTkzZDczMTUyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJnZXRBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvclRhcmdldEFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYsIEJhY2tl
bmREaXNwYXRjaGVyJik7CisgICAgSW5zcGVjdG9yVGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXIm
LCBCYWNrZW5kRGlzcGF0Y2hlciYsIGNvbnN0IFN0cmluZyYgYnJvd3NlckNvbnRleHRJRCk7CiAg
ICAgfkluc3BlY3RvclRhcmdldEFnZW50KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JB
Z2VudEJhc2UKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFyZ2V0Q3JlYXRl
ZChJbnNwZWN0b3JUYXJnZXQmKTsKICAgICB2b2lkIHRhcmdldERlc3Ryb3llZChJbnNwZWN0b3JU
YXJnZXQmKTsKICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KGNvbnN0IFN0cmlu
ZyYgb2xkVGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgY29tbWl0dGVkVGFyZ2V0SUQpOworICAgIHZv
aWQgZW5zdXJlQ29ubmVjdGVkKGNvbnN0IFN0cmluZyYgdGFyZ2V0SUQpOwogCiAgICAgLy8gVGFy
Z2V0IG1lc3NhZ2VzLgogICAgIHZvaWQgc2VuZE1lc3NhZ2VGcm9tVGFyZ2V0VG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpAQCAtNjgsNiAr
NjksNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXImIG1fcm91dGVy
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwogICAgIFJlZjxUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBjb25zdCBTdHJpbmcgbV9icm93c2VyQ29udGV4dElEOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CiAgICAgYm9vbCBtX2lz
Q29ubmVjdGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZDRhM2JmZTZm
M2M5NGMyOWEyNzQ5Zjg4NjkzOWYyOTFlZTlmNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbgpAQCAtMCwwICsx
LDQwIEBACit7CisgICAgImRvbWFpbiI6ICJCcm93c2VyIiwKKyAgICAiYXZhaWxhYmlsaXR5Ijog
WyJ3ZWIiXSwKKyAgICAidHlwZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJD
b250ZXh0SUQiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJJZCBvZiBCcm93c2VyIGNvbnRleHQuIgorICAgICAgICB9CisgICAgXSwK
KyAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNsb3Nl
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDbG9zZSBicm93c2VyLiIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY3JlYXRlQ29udGV4dCIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBuZXcgZXBoZW1lcmFsIGJyb3dzZXIgY29u
dGV4dC4iLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJicm93c2VyQ29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgImRlc2NyaXB0aW9u
IjogIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb250ZXh0LiIgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJkZWxldGVDb250ZXh0
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZWxldGVzIGJyb3dzZXIgY29udGV4dCBw
cmV2aW91c2x5IGNyZWF0ZWQgd2l0aCBjcmVhdGVDb250ZWN0LiBUaGUgY29tbWFuZCB3aWxsIGF1
dG9tYXRpY2FsbHkgY2xvc2UgYWxsIHBhZ2VzIHRoYXQgdXNlIHRoZSBjb250ZXh0LiIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyb3dz
ZXJDb250ZXh0SWQiLCAiJHJlZiI6ICJDb250ZXh0SUQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiB0aGUgY29udGV4dCB0byBkZWxldGUuIiB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNyZWF0ZVBhZ2UiLAorICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2Vy
Q29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkpTT04gSW5zcGVjdG9yIFByb3RvY29sIG1lc3NhZ2UgKGNvbW1hbmQpIHRvIGJl
IGRpc3BhdGNoZWQgb24gdGhlIGJhY2tlbmQuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhl
IHBhZ2UgdGFyZ2V0LiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpz
b24KaW5kZXggMjQwY2Q0MmU2N2UzMjUwZTQzNGMwYmY2ZjlkMTYxNjg1MDVhOGMyMi4uMjgxNTdh
YzExMzkwNWQwYjQ3ZWYzZWNhMDI4N2I2MDJmMzJkZWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCkBAIC0xMCw3ICsx
MCw4IEBACiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1
ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFyZ2V0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsicGFnZSIsICJzZXJ2aWNlLXdv
cmtlciIsICJ3b3JrZXIiXSB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQcm92aXNp
b25hbCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgcHJvdmlzaW9uYWwgcGFnZSB0
YXJnZXQgaS5lLiBTdWNoIHRhcmdldCBtYXkgYmUgY3JlYXRlZCB3aGVuIGN1cnJlbnQgcGFnZSBz
dGFydHMgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uIEV2ZW50dWFsbHkgZWFjaCBwcm92aXNpb25h
bCB0YXJnZXQgaXMgZWl0aGVyIGNvbW1pdHRlZCBhbmQgc3dhcHMgd2l0aCB0aGUgY3VycmVudCB0
YXJnZXQgb3IgZ2V0cyBkZXN0cm95ZWQsIGUuZy4gaW4gY2FzZSBvZiBsb2FkIHJlcXVlc3QgZmFp
bHVyZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlw
ZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFs
dWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4g
U3VjaCB0YXJnZXQgbWF5IGJlIGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3Nz
LW9yaWdpbiBuYXZpZ2F0aW9uLiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlz
IGVpdGhlciBjb21taXR0ZWQgYW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdl
dHMgZGVzdHJveWVkLCBlLmcuIGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJZCIsICIkcmVmIjogIkJy
b3dzZXIuQ29udGV4dElEIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CiAgICAgICAgICAgICBdCiAgICAg
ICAgIH0KICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYWVjODdhZTAxMTI3YTkz
NzA3MTJjM2U0M2U2ZDljMDc0ZjY5MjNkZS4uNzliOGEzMDE4NmQyZjQyYjkxOTk2YzI5NzNlODI3
NTM3OGFjODIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02Myw2ICs2Myw3IEBAIHNl
dChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCisgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3JlZGVudGlh
bC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVu
dS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3M2ZiNmExZDg3ZDQ1OWFhMDM1ZWMxNDg4
ZjRiN2EwODdiZDcwYmQwLi5lYWZhYzgyYjkxNmRkZjg3ZDMzNTBlYTg0YjQ1YWE4ZTIzNjlkNDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTkxLDYgKzkxLDcgQEAgc2V0KFdQRV9BUElf
SU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCiAgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBlZGJmYjU2
ZTQ5YmMyYTAzYThhYmRiZjg3MTQxZGNkMDdlNWRhOTNmLi4zZWQ1ZjNjN2Q4Y2U1ZmQ0MjQ3NDRj
Mjk4NGE4YmViYWZhODBkNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0MCwxNyArMjQwLDIyIEBAIFNo
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKIAogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwCitVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCitVSVBy
b2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3BwCitVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3Rv
clRhcmdldEFnZW50LmNwcAogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAog
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUu
Y3BwCiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCitVSVBy
b2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcAogVUlQcm9jZXNzL0luc3BlY3RvclRhcmdl
dFByb3h5LmNwcAogVUlQcm9jZXNzL0xlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcAogVUlQcm9jZXNz
L1BhZ2VMb2FkU3RhdGUuY3BwCiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAorVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuY3BwCiBVSVByb2Nlc3MvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAK
IFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IGU3
NjUwNjY2YTEwNjk1MTczOWFlM2Y0OGYzYzZmZjllNDk4ZjhkMTUuLjhkNzM4M2JiZTdhNGVlOTY4
Yjk3NzY1NTgxOTU2NTFjZTE3ZjI0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMTI5LDYgKzEy
OSw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3Iu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcCBAbm8t
dW5pZnkKQEAgLTIyNCw2ICsyMjUsNyBAQCBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvdW5peC9XZWJz
aXRlRGF0YVN0b3JlVW5peC5jcHAKIAogVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcCBAbm8tdW5pZnkKIAorVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKIFVJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA1YjUxNGQ1MjE2ZWM1ZDk2
Y2Q1ODNmNjgyN2Y0ODU4NjhjNWUyYTFlLi5mY2JiYjc4MWEzMTExMGZhZWRlMGEwZjMwMzVkNzQw
MmQ1YWRhZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTExOCw2ICsxMTgsNyBAQCBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBAbm8tdW5pZnkK
K1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcCBAbm8tdW5pZnkK
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgQG5vLXVuaWZ5CkBAIC0xODcs
NiArMTg4LDcgQEAgVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKIFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9s
b2NhdGlvblByb3ZpZGVyLmNwcAogCitVSVByb2Nlc3MvZ2xpYi9JbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnRHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAog
VUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODI2MDcxMmI4MTBhMWY2MmVlMTZkODM1ODE2Yzg2MDQ4MTQ5NjQzYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dz
ZXJJbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEJyb3dzZXJJbnNwZWN0b3IuaCIKKwor
I2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JQaXBlLmgiCisjaW5jbHVkZSAiV2ViS2l0QnJvd3Nl
ckluc3BlY3RvclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlw
ZS5oPgorCisvKioKKyAqIFNFQ1RJT046IFdlYktpdEJyb3dzZXJJbnNwZWN0b3IKKyAqIEBTaG9y
dF9kZXNjcmlwdGlvbjogQWNjZXNzIHRvIHRoZSBXZWJLaXQgYnJvd3NlciBpbnNwZWN0b3IKKyAq
IEBUaXRsZTogV2ViS2l0QnJvd3Nlckluc3BlY3RvcgorICoKKyAqIFRoZSBXZWJLaXQgQnJvd3Nl
ciBJbnNwZWN0b3IgaXMgYW4gZXhwZXJpbWVudGFsIEFQSSB0aGF0IHByb3ZpZGVzCisgKiBhY2Nl
c3MgdG8gdGhlIGluc3BlY3RvciB2aWEgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgcHJvdG9jb2wuIFRo
ZSBwcm90b2NvbAorICogYWxsb3dzIHRvIGNyZWF0ZSBlcGhlbWVyYWwgY29udGV4dHMgYW5kIGNy
ZWF0ZSBwYWdlcyBpbiB0aGVtIGFuZCB0aGVuCisgKiBtYW5pcHVsYXRlIHRoZW0gdXNpbmcgdGhl
IGluc3BlY3RvciBjb21tYW5kcy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvcgorICogdGhlIGJyb3dz
ZXIgYXV0b21hdGlvbiBvciByZW1vdGUgZGVidWdnaW5nLgorICoKKyAqIEN1cnJlbnRseSB0aGUg
cHJvdG9jb2wgY2FuIGJlIGV4cG9zZWQgdG8gdGhlIHBhcmVudCBwcm9jZXNzIHZpYSBhIHVuaXgK
KyAqIHBpcGUuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworCitlbnVtIHsKKyAgICBDUkVBVEVf
TkVXX1BBR0UsCisKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RydWN0IF9XZWJLaXRCcm93c2Vy
SW5zcGVjdG9yUHJpdmF0ZSB7CisgICAgaW50IHVudXNlZCB7IDAgfTsKK307CisKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRCcm93c2VySW5zcGVjdG9yLCB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0
b3IsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9
IHsgMCwgfTsKKworc3RhdGljIHZvaWQgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2NsYXNzX2lu
aXQoV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKiBmaW5kQ2xhc3MpCit7CisgICAgR09iamVj
dENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhmaW5kQ2xhc3MpOworCisgICAg
LyoqCisgICAgICogV2ViS2l0QnJvd3Nlckluc3BlY3Rvcjo6Y3JlYXRlLW5ldy1wYWdlOgorICAg
ICAqIEBpbnNwZWN0b3I6IHRoZSAjV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVj
dG9yIGlzIHJlcXVlc3RlZCB0byBjcmVhdGUgYSBuZXcgcGFnZSBpbiB0aGUgcHJvdmlkZWQKKyAg
ICAgKiAjV2ViS2l0V2ViQ29udGV4dC4KKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVt
aXR0ZWQgd2hlbiBpbnNwZWN0b3IgcmVjZWl2ZXMgJ0Jyb3dzZXIuY3JlYXRlUGFnZScgY29tbWFu
ZAorICAgICAqIGZyb20gaXRzIHJlbW90ZSBjbGllbnQuIElmIHRoZSBzaWdubGEgaXMgbm90IGhh
bmRsZWQgdGhlIGNvbW1hbmQgd2lsbCBmYWlsLgorICAgICAqCisgICAgICogUmV0dXJuczogJVdl
YktpdFdlYlZpZXcgdGhhdCBjb250YWlucyBjcmVhdGVkIHBhZ2UuCisgICAgICovCisgICAgc2ln
bmFsc1tDUkVBVEVfTkVXX1BBR0VdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLW5l
dy1wYWdlIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRCcm93
c2VySW5zcGVjdG9yQ2xhc3MsIGNyZWF0ZV9uZXdfcGFnZSksCisgICAgICAgIG51bGxwdHIsIG51
bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorI2lmIFBMQVRGT1JN
KEdUSykKKyAgICAgICAgR1RLX1RZUEVfV0lER0VULAorI2Vsc2UKKyAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcsCisjZW5kaWYKKyAgICAgICAgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VC
X0NPTlRFWFQpOworfQorCitXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0QnJvd3Nlckluc3Bl
Y3RvckNyZWF0ZU5ld1BhZ2VJbkNvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3KiBuZXdXZWJWaWV3OworICAgIGdfc2lnbmFsX2VtaXQod2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF9kZWZhdWx0KCksIHNpZ25hbHNbQ1JFQVRFX05FV19QQUdF
XSwgMCwgY29udGV4dCwgJm5ld1dlYlZpZXcpOworICAgIGlmICghbmV3V2ViVmlldykKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZ3ZWJraXRXZWJWaWV3R2V0UGFnZShuZXdX
ZWJWaWV3KTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVdlYktpdEJyb3dzZXJJbnNwZWN0
b3IoZ3BvaW50ZXIpCit7CisgICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0QnJvd3Nlckluc3BlY3Rv
cj4gYnJvd3Nlckluc3BlY3RvciA9IGFkb3B0R1JlZihXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1Io
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBudWxscHRyKSkpOwor
ICAgIHJldHVybiBicm93c2VySW5zcGVjdG9yLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF9i
cm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdDoKKyAqCisgKiBHZXRzIHRoZSBkZWZhdWx0IGlu
c3RhbmNlIG9mIHRoZSBicm93c2VyIGluc3BlY3Rvci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgbm9uZSk6IGEgI1dlYktpdEJyb3dzZXJJbnNwZWN0b3IKKyAqLworV2ViS2l0QnJvd3Nlcklu
c3BlY3Rvciogd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF9kZWZhdWx0KHZvaWQpCit7Cisg
ICAgc3RhdGljIEdPbmNlIG9uY2VJbml0ID0gR19PTkNFX0lOSVQ7CisgICAgcmV0dXJuIFdFQktJ
VF9CUk9XU0VSX0lOU1BFQ1RPUihnX29uY2UoJm9uY2VJbml0LCBjcmVhdGVXZWJLaXRCcm93c2Vy
SW5zcGVjdG9yLCAwKSk7Cit9CisKKy8qKgorICogd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2lu
aXRpYWxpemVfcGlwZToKKyAqCisgKiBDcmVhdGVzIGJyb3dzZXIgaW5zcGVjdG9yIGFuZCBjb25m
aWd1cmVzIHBpcGUgaGFuZGxlciB0byBjb21tdW5pY2F0ZSB3aXRoCisgKiB0aGUgcGFyZW50IHBy
b2Nlc3MuCisgKi8KK3ZvaWQgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlw
ZSh2b2lkKQoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIFdlYktpdDo6aW5p
dGlhbGl6ZUJyb3dzZXJJbnNwZWN0b3JQaXBlKCk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5z
cGVjdG9yUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOWFmZWFjOTlhNjI3N2Y4YjBlMDU4MzM2N2Fj
MzNlZjJmZTk5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYktpdEJyb3dz
ZXJJbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworV2ViS2l0OjpXZWJQ
YWdlUHJveHkqIHdlYmtpdEJyb3dzZXJJbnNwZWN0b3JDcmVhdGVOZXdQYWdlSW5Db250ZXh0KFdl
YktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlODIwNGE5Yjg5
NjFlZmYwNzU0OTA2ODQ5ZDZlZGMzMDI5NmU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5T
SURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdl
YmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNp
Zm5kZWYgV2ViS2l0QnJvd3Nlckluc3BlY3Rvcl9oCisjZGVmaW5lIFdlYktpdEJyb3dzZXJJbnNw
ZWN0b3JfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXcuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SICAgICAg
ICAgICAgKHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJL
SVRfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dz
ZXJJbnNwZWN0b3IpKQorI2RlZmluZSBXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQlJP
V1NFUl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
QlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcykpCisjZGVmaW5l
IFdFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUikpCisjZGVm
aW5lIFdFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2Vi
S2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dz
ZXJJbnNwZWN0b3IgICAgICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3I7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNs
YXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlIFdlYktp
dEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvclBy
aXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcyB7
CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIFdlYktpdFdlYlZpZXcgKigq
IGNyZWF0ZV9uZXdfcGFnZSkgICAgICAgICAgIChXZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICpi
cm93c2VyX2luc3BlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAqY29udGV4dCk7CisKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5
cGUKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAg
ICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRCcm93c2VySW5zcGVjdG9yICoKK3dlYmtpdF9i
cm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCAgICAgICAgICAgICAgICAgICh2b2lkKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBl
ICAgICAgICAgICAgICAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNTg1NmNjNDQ3NDkyMzQ3NDRkOWRlNDVhMTgwNjVl
OTgxZjdiZGQ2OC4uNDc2YjM2OWNkMDc0MWQ2MjE1ZDdlMTYxZjFkNjUxNmE1NDZlMWU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xNzc0LDMgKzE3NzQsMjMgQEAgV0VC
S0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxF
PldlYktpdEJyb3dzZXJJbnNwZWN0b3I8L0ZJTEU+CitXZWJLaXRCcm93c2VySW5zcGVjdG9yCit3
ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQKK3dlYmtpdF9icm93c2VyX2luc3Bl
Y3Rvcl9pbml0aWFsaXplX3BpcGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRCcm93
c2VySW5zcGVjdG9yQ2xhc3MKK1dFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SCitXRUJLSVRf
QlJPV1NFUl9JTlNQRUNUT1IKK1dFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUgorV0VCS0lUX0JS
T1dTRVJfSU5TUEVDVE9SX0NMQVNTCitXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1MK
K1dFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0
ZT4KK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZQorV2ViS2l0QnJvd3Nlckluc3Bl
Y3RvclByaXZhdGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcwppbmRleCBhZDViMDI2YjY3
Y2JjYmE0NGQ5MzdlNGU0YzMzYmFmZjAzMWM4MTkwLi44YWEzMTljOTBiNDBjOWJkZGRhZTY2ZmI4
MjA5M2E0MTQwMjI0NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCkBAIC00MSw0ICs0MSw1IEBAIHdl
YmtpdF9vcHRpb25fbWVudV9nZXRfdHlwZQogd2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3R5
cGUKIHdlYmtpdF9kZXZpY2VfaW5mb19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKIHdlYmtp
dF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlCi13ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRp
b25fZ2V0X3R5cGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXRfZ2VvbG9jYXRp
b25fcG9zaXRpb25fZ2V0X3R5cGUKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA1ZGFhYjA4
NmU4N2I1NTc2ODViMjE3N2EzNjg0ZDUwOGEyZWUzMzBjLi4yMzJhZmQwOTZiMmNjNjY4NWRkMThi
ZTljZDM3NzQzMzIzNmVjYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC02NCw2ICs2NCw3IEBA
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIv
PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVzc2FnZS54bWwiLz4KKyAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci54bWwiLz4KICAg
PC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaAppbmRleCAxNmVmN2ViNmQ0MjdhOGQxNWE2OGM1ZDQ1MDI5Y2NkNGUzYjI2Mzdj
Li5lYjM3NTliMDViYjI4MTdjNDM1Yjk1YWM5Y2Q4MWMxNjJmY2IyNDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0Zv
cndhcmRMaXN0SXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0Q29udGV4dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDE1YzA4
ZWRmNDIyMDMzZDU2NWEyMTNkYzliOWM4YzcyYjFlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaApAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZu
ZGVmIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JfaAorI2RlZmluZSBXZWJLaXRCcm93c2VySW5zcGVj
dG9yX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERl
ZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlldy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IgICAgICAgICAgICAod2Vi
a2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9CUk9XU0VS
X0lOU1BFQ1RPUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nlckluc3BlY3Rv
cikpCisjZGVmaW5lIFdFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUihvYmopICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BF
Q1RPUikpCisjZGVmaW5lIFdFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgICAg
KEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lO
U1BFQ1RPUiwgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SKSkKKyNkZWZpbmUgV0VCS0lU
X0JST1dTRVJfSU5TUEVDVE9SX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9D
TEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBXZWJLaXRCcm93c2Vy
SW5zcGVjdG9yQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ciAgICAgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRC
cm93c2VySW5zcGVjdG9yQ2xhc3MgICBXZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3M7Cit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgV2ViS2l0QnJvd3Nlcklu
c3BlY3RvclByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvciB7CisgICAg
R09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgV2ViS2l0V2ViVmlldyAqKCogY3JlYXRlX25l
d19wYWdlKSAgICAgICAgICAgKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgICAgKmJyb3dzZXJfaW5z
cGVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICpjb250ZXh0KTsKKworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwor
CitXRUJLSVRfQVBJIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKgord2Via2l0X2Jyb3dzZXJfaW5z
cGVjdG9yX2dldF9kZWZhdWx0ICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUgICAgICAgICAg
ICAgICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5k
ZXggNjc5MDNmNWQ4NjI0ZTg4ZTVkNWFkNGUzYmY5OWZkMTRlM2RiNWFkZC4uZGExNDEwOWU3MGEz
MTFiZDI1YzIxZWQwM2I3ODQ4NWUyYWVkMzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAtMTQ0
MiwzICsxNDQyLDIzIEBAIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BPU0lUSU9OCiA8RklMRT5X
ZWJLaXRVUklVdGlsaXRpZXM8L0ZJTEU+CiB3ZWJraXRfdXJpX2Zvcl9kaXNwbGF5CiA8L1NFQ1RJ
T04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QnJvd3Nlckluc3BlY3RvcjwvRklMRT4KK1dl
YktpdEJyb3dzZXJJbnNwZWN0b3IKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVs
dAord2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZQorCis8U1VCU0VDVElP
TiBTdGFuZGFyZD4KK1dlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcworV0VCS0lUX1RZUEVfQlJP
V1NFUl9JTlNQRUNUT1IKK1dFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUgorV0VCS0lUX0lTX0JST1dT
RVJfSU5TUEVDVE9SCitXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1MKK1dFQktJVF9JU19C
Uk9XU0VSX0lOU1BFQ1RPUl9DTEFTUworV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SX0dFVF9DTEFT
UworCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90
eXBlCitXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKaW5kZXggOWNjMzFjYjQ5NjhmNTRiNmQzMWZj
ZTIzOWI2MmQwOWMzNzQ0NGVhYi4uOTMwNDk5ZTY1YjYwYWVjYjA3Zjk2OWNjMjczYzdjNTlhNDU0
NzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRC
YWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdENvbnRleHRN
ZW51SXRlbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZmU2MTEwZmFjZDJhOTgyZjEwNzU3
ZTE4ODI3NDk1MzJkMTc2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1p
Y3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aW5jbHVkZSAiQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQnJvd3NlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFZlY3RvcjxX
ZWJQYWdlUHJveHkqPiBhbGxQYWdlcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcmVzdWx0OworICAgIGZvciAoV2ViUHJvY2Vzc1Bv
b2wqIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kUmFuZ2UocHJvY2Vzcy0+cGFnZXMoKS5iZWdpbigpLCBwcm9jZXNzLT5wYWdlcygp
LmVuZCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKKyAgICA6IG1fZnJvbnRl
bmRDaGFubmVsKG51bGxwdHIpCisgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVy
OjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCisgICAgLCBtX2Jyb3dzZXJBZ2VudENsaWVudChJbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQ6OmNyZWF0ZSgpKQorI2VuZGlmCit7CisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
QnJvd3NlckFnZW50PihtX2JhY2tlbmREaXNwYXRjaGVyLCBtX2Jyb3dzZXJBZ2VudENsaWVudC5n
ZXQoKSkpOworI2VuZGlmCisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8QnJvd3Nlcklu
c3BlY3RvclRhcmdldEFnZW50PihtX2JhY2tlbmREaXNwYXRjaGVyKSk7Cit9CisKK0Jyb3dzZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjp+QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKSA9IGRlZmF1
bHQ7CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChG
cm9udGVuZENoYW5uZWwmIGZyb250ZW5kQ2hhbm5lbCkKK3sKKyAgICBBU1NFUlQoIW1fZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9ICZmcm9udGVuZENoYW5uZWw7Cisg
ICAgLy8gQXV0by1jb25uZWN0IHRvIGFsbCBuZXcgcGFnZXMuCisgICAgV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXI6OnNldENyZWF0aW9uTGlzdGVuZXIoW3RoaXNdKFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKSB7CisgICAgICAgIGluc3BlY3RvckNvbnRy
b2xsZXIuY29ubmVjdEZyb250ZW5kKCptX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgfSk7CisKKyAg
ICBib29sIGNvbm5lY3RpbmdGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zy
b250ZW5kcygpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVu
ZENoYW5uZWwpOworICAgIGlmIChjb25uZWN0aW5nRmlyc3RGcm9udGVuZCkKKyAgICAgICAgbV9h
Z2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgp
LCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisKKyAgICBjb25uZWN0VG9BbGxQYWdlcygp
OworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRl
bmQoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgZGlzY29ubmVjdEZy
b21BbGxQYWdlcygpOworCisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5k
KCptX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgaWYgKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9u
dGVuZHMoKSkKKyAgICAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAgIFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZXRDcmVhdGlvbkxpc3RlbmVyKG51bGxwdHIpOworICAgIG1fZnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKK30KKwordm9pZCBCcm93c2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKK30KKwordm9p
ZCBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdFRvQWxsUGFnZXMoKQoreworICAg
IGZvciAoYXV0byogcGFnZSA6IGFsbFBhZ2VzKCkpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKm1fZnJvbnRlbmRDaGFubmVsKTsKK30KKwordm9p
ZCBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21BbGxQYWdlcygpCit7
CisgICAgZm9yIChhdXRvKiBwYWdlIDogYWxsUGFnZXMoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgqbV9mcm9udGVuZENoYW5uZWwpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0
b3JDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlYWNjNTc5OGFmNWQ5MjVhOTk4NjZjYjBmOGUy
ZjQwNWRiZjUxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jy
b3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENv
cnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5k
Q2hhbm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OworCitjbGFzcyBCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnJvd3Nlckluc3Bl
Y3RvckNvbnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgfkJyb3dzZXJJbnNwZWN0b3JD
b250cm9sbGVyKCk7CisKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCYpOworICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworcHJp
dmF0ZToKKyAgICBjbGFzcyBUYXJnZXRIYW5kbGVyOworICAgIHZvaWQgY29ubmVjdFRvQWxsUGFn
ZXMoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tQWxsUGFnZXMoKTsKKworICAgIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbCB7IG51bGxwdHIgfTsKKyAgICBS
ZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKKyAgICBSZWY8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50PiBtX2Jyb3dzZXJBZ2Vu
dENsaWVudDsKKyAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBp
cGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxYTU4OWZkOGY3YmFkZjA1ZTFiZjM3OTNmNzM2M2Y0MjlhNjc5MTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9y
UGlwZS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNy
b3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yUGlwZS5oIgorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvclBpcGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgaW5pdGlhbGl6ZUJy
b3dzZXJJbnNwZWN0b3JQaXBlKCkKK3sKKyAgICBjbGFzcyBCcm93c2VySW5zcGVjdG9yUGlwZSB7
CisgICAgcHVibGljOgorICAgICAgICBCcm93c2VySW5zcGVjdG9yUGlwZSgpCisgICAgICAgICAg
ICA6IG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKQorICAgICAgICAgICAgLCBtX3JlbW90
ZUluc3BlY3RvclBpcGUobV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIgbV9icm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yUGlwZSBtX3JlbW90
ZUluc3BlY3RvclBpcGU7CisgICAgfTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCcm93
c2VySW5zcGVjdG9yUGlwZT4gcGlwZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyYjRiZjU3YTI2NWJiODA0
ZWY5ZTkzZTMzMjBjZDY2M2JjNDM0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jv
c29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBpbml0aWFsaXplQnJvd3Nlckluc3BlY3Rv
clBpcGUoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dz
ZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93
c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MDllNDdjZTVhZDgyOTYz
ZjFkY2QyODI4MzI4ZWUxN2Y0ZDQ4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJv
d3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgiCisKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSB7CisKK0luc3BlY3RvclRhcmdldCog
dGFyZ2V0Rm9ySWQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGZvciAoYXV0byogcG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9j
ZXNzUG9vbHMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwb29sLT5wcm9jZXNz
ZXMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBwYWdlIDogcHJvY2Vzcy0+cGFnZXMoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8qIHJlc3VsdCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5maW5kVGFyZ2V0KHRhcmdldElkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9
IG51bGxwdHIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlCisKK0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6QnJvd3Nlckluc3BlY3RvclRh
cmdldEFnZW50KEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihU
YXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
K3sKK30KKworQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50Ojp+QnJvd3Nlckluc3BlY3RvclRh
cmdldEFnZW50KCkgPSBkZWZhdWx0OworCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERp
c3BhdGNoZXIqKQoreworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKK3sKK30KKwordm9p
ZCBCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JT
dHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHRhcmdldElELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgYXV0byogdGFyZ2V0ID0gdGFyZ2V0Rm9ySWQodGFyZ2V0SUQpOworICAgIGlm
ICh0YXJnZXQgPT0gbnVsbHB0cikgeworICAgICAgICBlcnJvciA9ICJDYW5ub3QgZmluZCB0YXJn
ZXQgd2l0aCBwcm92aWRlZCBpZC4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRhcmdl
dC0+c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQobWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlcklu
c3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5z
cGVjdG9yVGFyZ2V0QWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTU5YTVjM2QyZjRjOThhZjY1MGUxMTRl
ZmZkMDQ0NTVjYzg5MDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9z
b2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yQWdlbnRCYXNlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEJyb3dzZXJJ
bnNwZWN0b3JUYXJnZXRBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6VGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEJy
b3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJik7
CisgICAgfkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudCgpIG92ZXJyaWRlOworCisgICAgLy8g
SW5zcGVjdG9yQWdlbnRCYXNlCisgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisKKyAgICAvLyBUYXJnZXRCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmVmPEluc3BlY3Rvcjo6VGFyZ2V0QmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24u
aAppbmRleCBiNjY5NGZlOTA2ZWEwYjRmODJhNTQwNjYyY2M4NTUwYjJmZTFhNWQyLi41OWY5M2M3
OTE2N2QzZDM5MmI0NmZmNTI0MzQ5NGIwMmFmMDczNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWYg
SEFWRShBUFBfU1NPKQogCiAjaW5jbHVkZSAiU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKIE9CSkNfQ0xBU1MgV0tTT1NlY3JldERlbGVnYXRlOwogT0JKQ19DTEFTUyBXS1dlYlZpZXc7
CkBAIC0zOCw2ICs0MCw4IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBXZWJQYWdlUHJveHk7CisKIC8vIEZTTTogSWRsZSA9PiBBY3RpdmUg
PT4gQ29tcGxldGVkCiBjbGFzcyBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwgOiBw
dWJsaWMgU09BdXRob3JpemF0aW9uU2Vzc2lvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAwNzZjZmFhNjc2YTc0
YzRmMzM2MDFmZjY2NDRkZWM1ZTViNTYxY2ExLi4wZjE4MDM4ZGU5ODllNjlhODQzMmM4NWI3MWI2
YzA0ZTkzMTMwMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXph
dGlvblNlc3Npb24ubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIKICNpbXBvcnQgIldL
V2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhMjljNDY3MjQ4ODBjYjJkYjNiNWUyZDhkMDkxNzg5ZTExM2M1ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdl
bnQuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jv
c29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudC5oIgorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0hleE51
bWJlci5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworSW5zcGVjdG9yQnJvd3NlckFnZW50OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQoSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvckJyb3dz
ZXJBZ2VudENsaWVudCogY2xpZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJCcm93c2Vy
Il9zKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCcm93c2VyQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX2NsaWVudChjbGllbnQp
Cit7Cit9CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudDo6fkluc3BlY3RvckJyb3dzZXJBZ2VudCgp
ID0gZGVmYXVsdDsKKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKK3sKK30K
Kwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKERpc2Nvbm5lY3RSZWFzb24pCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50
OjpjbG9zZShFcnJvclN0cmluZyYgZXJyb3IpCit7CisgICAgaWYgKG1fY2xpZW50ID09IG51bGxw
dHIpCisgICAgICAgIGVycm9yID0gIm5vIHBsYXRmb3JtIGRlbGVnYXRlIHRvIGNsb3NlIGJyb3dz
ZXIiOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlQWxsV2luZG93cygpOworfQor
Cit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6Y3JlYXRlQ29udGV4dChFcnJvclN0cmluZyYg
ZXJyb3IsIFN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBtX2NsaWVudC0+Y3JlYXRl
QnJvd3NlckNvbnRleHQoZXJyb3IsIGJyb3dzZXJDb250ZXh0SUQpOworfQorCit2b2lkIEluc3Bl
Y3RvckJyb3dzZXJBZ2VudDo6ZGVsZXRlQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0
IFN0cmluZyYgYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBtX2NsaWVudC0+ZGVsZXRlQnJvd3Nl
ckNvbnRleHQoZXJyb3IsIGJyb3dzZXJDb250ZXh0SUQpOworfQorCit2b2lkIEluc3BlY3RvckJy
b3dzZXJBZ2VudDo6Y3JlYXRlUGFnZShFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyog
YnJvd3NlckNvbnRleHRJRCwgU3RyaW5nKiB0YXJnZXRJRCkKK3sKKyAgICBSZWZQdHI8V2ViUGFn
ZVByb3h5PiBwYWdlID0gbV9jbGllbnQtPmNyZWF0ZVBhZ2UoZXJyb3IsIGJyb3dzZXJDb250ZXh0
SUQpOworICAgIGlmIChwYWdlID09IG51bGxwdHIpCisgICAgICAgIHJldHVybjsKKworICAgICp0
YXJnZXRJRCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OnRvVGFyZ2V0SUQocGFnZS0+d2ViUGFn
ZUlEKCkpOworfQorCitTdHJpbmcgSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250
ZXh0SURQcm90b2NvbFN0cmluZyhjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRT
aXplKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBidWlsZGVyLCAxNik7CisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yQnJvd3NlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0YzY1NWFiMzlkYWM3YzI2YTIyMzQ1
NWQ4Y2YwYjQ4OTAyMDY3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBD
b3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5kQ2hh
bm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOworfQorCituYW1lc3BhY2UgUEFMIHsKK2NsYXNz
IFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudDsKK2NsYXNzIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOworCitj
bGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckJyb3dzZXJBZ2Vu
dCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9y
QnJvd3NlckFnZW50KEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQqKTsKKyAgICB+SW5zcGVjdG9yQnJvd3NlckFnZW50KCkgb3ZlcnJpZGU7
CisKKyAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKworICAgIC8vIEJy
b3dzZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIGNsb3NlKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIFN0cmluZyogYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWxldGVDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlUGFnZShJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKiBicm93c2VyQ29udGV4dElELCBTdHJpbmcq
IHRhcmdldElkKSBvdmVycmlkZTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9Ccm93c2VyQ29udGV4
dElEUHJvdG9jb2xTdHJpbmcoY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKworcHJpdmF0ZToKKyAg
ICBSZWY8SW5zcGVjdG9yOjpCcm93c2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KiBtX2NsaWVudDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NWUwYzQ5MjI5ZWZiMGVlYTk2NGEzOTAzMjVmZTNj
MzdmMzNkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29y
cG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudCB7CitwdWJsaWM6
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ+IGNyZWF0ZSgpOworI2VuZGlmCisg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KCkgPSBkZWZhdWx0OworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6U3Ry
aW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5nKiBicm93
c2VyQ29udGV4dElEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJyb3dzZXJDb250ZXh0
KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVJbnNwZWN0b3JQaXBlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUluc3Bl
Y3RvclBpcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZDMyZTdiZTQyMzg4ZTkxYThhYzM5YTc0MDAxMjkz
YmYxMDVlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVJbnNwZWN0b3JQaXBlLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0
aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JQaXBlLmgiCisK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKKyNpZiBPUyhVTklYKQorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZWxzZQorI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIGNvbnN0IGludCByZWFkRkQgPSAzOworc3RhdGljIGNvbnN0IGludCB3cml0ZUZEID0g
NDsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yUGlwZTo6UmVtb3RlRnJvbnRlbmRDaGFubmVsIDog
cHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVGcm9udGVuZENoYW5uZWwoKQorICAgICAgICA6
IG1fc2VuZGVyUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkluc3BlY3RvciBwaXBlIHdyaXRlciIp
KQorICAgIHsKKyAgICB9CisKKyAgICB+UmVtb3RlRnJvbnRlbmRDaGFubmVsKCkgb3ZlcnJpZGUg
PSBkZWZhdWx0OworCisgICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25zdCBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb25UeXBlOjpSZW1vdGU7Cisg
ICAgfQorCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9zZW5kZXJRdWV1ZS0+ZGlzcGF0Y2goW21l
c3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSgpIHsKKyNpZiBPUyhVTklYKQorICAgICAg
ICAgICAgZHByaW50Zih3cml0ZUZELCAiJXMlYyIsIG1lc3NhZ2UuYXNjaWkoKS5kYXRhKCksICdc
MCcpOworI2Vsc2UKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKKyAgICAg
ICAgfSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZjxXb3JrUXVldWU+IG1fc2VuZGVyUXVl
dWU7Cit9OworCitSZW1vdGVJbnNwZWN0b3JQaXBlOjpSZW1vdGVJbnNwZWN0b3JQaXBlKEJyb3dz
ZXJJbnNwZWN0b3JDb250cm9sbGVyJiBicm93c2VySW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICA6
IG1fcmVtb3RlRnJvbnRlbmRDaGFubmVsKG1ha2VVbmlxdWU8UmVtb3RlRnJvbnRlbmRDaGFubmVs
PigpKQorICAgICwgbV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcihicm93c2VySW5zcGVjdG9y
Q29udHJvbGxlcikKK3sKKyAgICBzdGFydCgpOworfQorCitSZW1vdGVJbnNwZWN0b3JQaXBlOjp+
UmVtb3RlSW5zcGVjdG9yUGlwZSgpCit7CisgICAgc3RvcCgpOworfQorCitib29sIFJlbW90ZUlu
c3BlY3RvclBpcGU6OnN0YXJ0KCkKK3sKKyAgICBpZiAobV9yZWNlaXZlclRocmVhZCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmNvbm5l
Y3RGcm9udGVuZCgqbV9yZW1vdGVGcm9udGVuZENoYW5uZWwpOworICAgIG1fdGVybWluYXRlZCA9
IGZhbHNlOworICAgIG1fcmVjZWl2ZXJUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW5zcGVjdG9y
IHBpcGUgcmVhZGVyIiwgW3RoaXNdIHsKKyAgICAgICAgd29ya2VyUnVuKCk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yUGlwZTo6c3RvcCgpCit7
CisgICAgaWYgKCFtX3JlY2VpdmVyVGhyZWFkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Jy
b3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nvbm5lY3RGcm9udGVuZCgpOworCisgICAgbV90
ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICBtX3JlY2VpdmVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlv
bigpOworICAgIG1fcmVjZWl2ZXJUaHJlYWQgPSBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3RvclBpcGU6OndvcmtlclJ1bigpCit7CisjaWYgT1MoVU5JWCkKKyAgICBjb25zdCBzaXpl
X3QgYnVmU2l6ZSA9IDI1NiAqIDEwMjQ7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlQXJy
YXk8Y2hhcj4oYnVmU2l6ZSk7CisgICAgVmVjdG9yPGNoYXI+IGxpbmU7CisgICAgd2hpbGUgKCFt
X3Rlcm1pbmF0ZWQpIHsKKyAgICAgICAgc3NpemVfdCBzaXplID0gcmVhZChyZWFkRkQsIGJ1ZmZl
ci5nZXQoKSwgYnVmU2l6ZSk7CisgICAgICAgIGlmICghc2l6ZSkgeworICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJQaXBlIGNsb3NlZCBmb3IgcmVhZGluZy5cbiIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIkVycm9yIHJlYWRpbmcgZnJvbSBwaXBlOiAlZFxuIiwgZXJybm8pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IHN0YXJ0ID0gMDsK
KyAgICAgICAgc2l6ZV90IGVuZCA9IGxpbmUuc2l6ZSgpOworICAgICAgICBsaW5lLmFwcGVuZChi
dWZmZXIuZ2V0KCksIHNpemUpOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
Zm9yICg7IGVuZCA8IGxpbmUuc2l6ZSgpOyArK2VuZCkgeworICAgICAgICAgICAgICAgIGlmIChs
aW5lW2VuZF0gPT0gJ1wwJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoZW5kID09IGxpbmUuc2l6ZSgpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBpZiAoZW5kID4gc3RhcnQpIHsKKyAgICAgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6ZnJvbVVURjgobGluZS5kYXRhKCkgKyBzdGFydCwg
ZW5kIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgbWVzc2FnZV0geworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fdGVybWluYXRlZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuZGlz
cGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgKytlbmQ7CisgICAgICAgICAgICBzdGFydCA9IGVu
ZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgJiYgc3RhcnQgPCBsaW5lLnNpemUoKSkK
KyAgICAgICAgICAgIG1lbW1vdmUobGluZS5kYXRhKCksIGxpbmUuZGF0YSgpICsgc3RhcnQsIGxp
bmUuc2l6ZSgpIC0gc3RhcnQpOworICAgICAgICBsaW5lLnNocmluayhsaW5lLnNpemUoKSAtIHN0
YXJ0KTsKKyAgICB9CisjZWxzZQorICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRp
ZiAvLyBPUyhVTklYKQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
SW5zcGVjdG9yUGlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3YjA2MjI1NTdjYWE4MTk1NGJhODkxNTAxODk3
YTE5Yjg1MmRjNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVJbnNwZWN0b3JQaXBlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0
aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRl
IDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBCcm93c2VySW5zcGVjdG9yQ29udHJv
bGxlcjsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yUGlwZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVtb3RlSW5zcGVjdG9yUGlwZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlSW5zcGVjdG9yUGlwZShCcm93c2VySW5zcGVj
dG9yQ29udHJvbGxlciYpOworICAgIH5SZW1vdGVJbnNwZWN0b3JQaXBlKCk7CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgUmVtb3RlRnJvbnRlbmRDaGFubmVsOworCisgICAgYm9vbCBzdGFydCgpOwor
ICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCB3b3JrZXJSdW4oKTsKKworICAgIFJlZlB0cjxU
aHJlYWQ+IG1fcmVjZWl2ZXJUaHJlYWQ7CisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV90ZXJtaW5h
dGVkIHsgZmFsc2UgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWw+IG1fcmVtb3RlRnJvbnRlbmRDaGFubmVsOworICAgIEJyb3dzZXJJbnNwZWN0b3JDb250
cm9sbGVyJiBtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA2ZjM3MWQ3ZTM2ZmExZmE0MmZjZGZmNDNl
ZjFkODYwODA2NjEyNWZlLi4zNjM1NWJmYzcyMjcyZDE2YTQwNGNkYWEyZTJlNjE4ZmQ1MDkwYTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiTmZjU2VydmljZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRyYW5zcG9ydC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9G
aWRvQXV0aGVudGljYXRvci5jcHAKaW5kZXggNmY3ZmI1M2U2NTJhMmMxNzIzMTNiYTJlZjMwYzIw
ODlkOTc0MzE5ZS4uNmI1MWJmOTkzZDNhZDE4MThmYTUwNGY1OGVhNWNhZTlhNjUzODg4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9G
aWRvQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9GaWRvQXV0aGVudGljYXRvci5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbmNsdWRlICJDdGFwRHJpdmVyLmgiCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBGaWRvQXV0aGVudGljYXRvcjo6Rmlkb0F1dGhlbnRpY2F0b3Io
c3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGI5
YTk0NjlhYjU5MTM2ZjllOWEzNzM2YmZkYjBlOWQ1MjljMGZiY2UuLmFmOTU1OWJhYmQ0ODM2MmIy
YTc1NWRjMmUwM2FlZDdhMmNjN2IzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50LmgiCiAjaW5jbHVkZSAiUHJv
dmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIgpAQCAtNDYsMjYgKzQ3LDYwIEBAIHN0YXRpYyBT
dHJpbmcgZ2V0VGFyZ2V0SUQoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFs
UGFnZSkKICAgICByZXR1cm4gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChwcm92
aXNpb25hbFBhZ2Uud2ViUGFnZUlEKCkpOwogfQogCitzdGF0aWMgV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI6OkNyZWF0aW9uTGlzdGVuZXImIGNyZWF0aW9uTGlzdGVuZXIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Q3JlYXRpb25M
aXN0ZW5lcj4gbGlzdGVuZXI7CisgICAgcmV0dXJuIGxpc3RlbmVyOworfQorCit2b2lkIFdlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRDcmVhdGlvbkxpc3RlbmVyKENyZWF0aW9uTGlzdGVu
ZXIgbGlzdGVuZXIpCit7CisgICAgY3JlYXRpb25MaXN0ZW5lcigpID0gbGlzdGVuZXI7Cit9CisK
IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcihX
ZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZnJvbnRlbmRS
b3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkK
IHsKLSAgICBhdXRvIHRhcmdldEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JUYXJnZXRBZ2Vu
dD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Cisg
ICAgU3RyaW5nIGJyb3dzZXJDb250ZXh0SUQ7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgYnJvd3NlckNvbnRleHRJRCA9IEluc3BlY3RvckJyb3dzZXJBZ2VudDo6dG9Ccm93c2Vy
Q29udGV4dElEUHJvdG9jb2xTdHJpbmcocGFnZS5zZXNzaW9uSUQoKSk7CisjZW5kaWYKKyAgICBh
dXRvIHRhcmdldEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9u
dGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSwgYnJvd3NlckNvbnRl
eHRJRCk7CiAKICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAKICAgICBt
X2FnZW50cy5hcHBlbmQoV1RGTW92ZSh0YXJnZXRBZ2VudCkpOworCisgICAgaWYgKGNyZWF0aW9u
TGlzdGVuZXIoKSkKKyAgICAgICAgY3JlYXRpb25MaXN0ZW5lcigpKCp0aGlzKTsKIH0KIAogdm9p
ZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5pdCgpCiB7CisgICAgLy8gd2luZG93Lm9w
ZW4gd2lsbCBjcmVhdGUgcGFnZSB3aXRoIGFscmVhZHkgcnVubmluZyBwcm9jZXNzLgorICAgIGlm
ICghbV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKICAgICBTdHJp
bmcgcGFnZVRhcmdldElkID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3Bh
Z2Uud2ViUGFnZUlEKCkpOwogICAgIGNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2VzcygpCit7
CisgICAgU3RyaW5nIHBhZ2VUYXJnZXRJRCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OnRvVGFy
Z2V0SUQobV9wYWdlLndlYlBhZ2VJRCgpKTsKKyAgICAvLyBDcmVhdGUgdGFyZ2V0IG9ubHkgYWZ0
ZXIgYXR0YWNoaW5nIHRvIGEgV2ViIFByb2Nlc3MgZmlyc3QgdGltZS4gQmVmb3JlIHRoYXQKKyAg
ICAvLyB3ZSBjYW5ub3QgZXZlbnQgZXN0YWJsaXNoIGZyb250ZW5kIGNvbm5lY3Rpb24uCisgICAg
aWYgKG1fdGFyZ2V0cy5jb250YWlucyhwYWdlVGFyZ2V0SUQpKQorICAgICAgICByZXR1cm47Cisg
ICAgY3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJRCwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRUeXBlOjpQYWdlKTsKK30KKwogdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6cGFnZUNsb3NlZCgpCiB7CisgICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXQ6OnRvVGFyZ2V0SUQobV9wYWdlLndlYlBhZ2VJRCgpKTsKKyAgICBkZXN0cm95
SW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCk7CisKICAgICBkaXNjb25uZWN0QWxsRnJvbnRl
bmRzKCk7CiAKICAgICBtX2FnZW50cy5kaXNjYXJkVmFsdWVzKCk7CkBAIC0xMzQsNiArMTY5LDEx
IEBAIHZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlz
cGF0Y2gobWVzc2FnZSk7CiB9CiAKK0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0KiBXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZmluZFRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKQor
eworICAgIHJldHVybiBtX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKK30KKwogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5k
aWNhdGluZyhib29sIGluZGljYXRpbmcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4MjhiYzNjY2M3ZTA3ZDgx
MjAzMzQzMWIyN2FlN2YwYmM4Y2Y5YzU0Li4yMWIyOTIwYTJhZDMxODFkZTlhZGNjNTJjMDc2MWQ3
ZDBhMzVkMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgaW5pdCgp
OworICAgIHZvaWQgZGlkRmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKCk7CisKKyAgICB1c2lu
ZyBDcmVhdGlvbkxpc3RlbmVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyJik+OworICAgIHN0YXRpYyB2b2lkIHNldENyZWF0aW9uTGlzdGVuZXIoQ3JlYXRp
b25MaXN0ZW5lcik7CisKICAgICB2b2lkIHBhZ2VDbG9zZWQoKTsKIAogICAgIGJvb2wgaGFzTG9j
YWxGcm9udGVuZCgpIGNvbnN0OwpAQCAtNTcsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNjb25uZWN0QWxsRnJvbnRlbmRzKCk7CiAKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0KiBmaW5kVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpOwogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVjOGZhZTc0ZTNmNzkyYzBj
ZjY3MDg4ZGJlNjIwYzMxNWNkODBhZi4uMDBkOTZlN2Y2MTVmNGRjYWZkYzA2NmYxMWMzMTUyY2Q4
OWZlNzI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04
NjUsNiArODY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaEF0dGFjaGluZ1RvV2ViUHJv
Y2VzcyhQcm9jZXNzTGF1bmNoUmVhc29uIHJlYXNvbikKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlk
U3dhcFdlYlByb2Nlc3NlcygpOwogICAgIGlmIChyZWFzb24gIT0gUHJvY2Vzc0xhdW5jaFJlYXNv
bjo6SW5pdGlhbFByb2Nlc3MpCiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5n
U3RvcmVVcGRhdGVPbk5leHRQYWludCgpOworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlk
RmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3ZjQyOWY1NTZjZGQ1MTE1MGNlNjRkOWI0ZmE1ODI5Yjg3YzhkMzEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudEdMaWIuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29y
cG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdMaWIuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50LmgiCisjaW5jbHVkZSAiV2ViS2l0QnJvd3Nlckluc3Bl
Y3RvclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gY29sbGVjdFBh
Z2VzKE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit7CisgICAgVmVjdG9yPFdl
YlBhZ2VQcm94eSo+IHJlc3VsdDsKKyAgICBmb3IgKFdlYlByb2Nlc3NQb29sKiBwb29sIDogV2Vi
UHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IHBvb2wtPnByb2Nlc3NlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHBhZ2Ug
OiBwcm9jZXNzLT5wYWdlcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uSUQgfHwg
cGFnZS0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKQorICAgICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHBhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlQWxsUGFnZXMoT3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3sKKyAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFn
ZXMgPSBjb2xsZWN0UGFnZXMoc2Vzc2lvbklEKTsKKyAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwYWdl
cykKKyAgICAgICAgcGFnZS0+Y2xvc2VQYWdlKGZhbHNlKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudD4gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
OjpjcmVhdGUoKQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdsaWI+KCk7Cit9CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWI6Oklu
c3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIoKQoreworfQorCitSZWZQdHI8V2ViUGFnZVBy
b3h5PiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpjcmVhdGVQYWdlKFdURjo6U3Ry
aW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAg
V2ViS2l0V2ViQ29udGV4dCogY29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dCgpOworICAgIGlmIChicm93c2VyQ29udGV4dElEICE9IG51bGxwdHIpIHsKKyAgICAgICAgY29u
dGV4dCA9IG1faWRUb0NvbnRleHQuZ2V0KCpicm93c2VyQ29udGV4dElEKTsKKyAgICAgICAgaWYg
KGNvbnRleHQgPT0gbnVsbHB0cikgeworICAgICAgICAgICAgZXJyb3IgPSAiQ29udGV4dCB3aXRo
IHByb3ZpZGVkIGlkIG5vdCBmb3VuZCI7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlID0gd2Via2l0QnJv
d3Nlckluc3BlY3RvckNyZWF0ZU5ld1BhZ2VJbkNvbnRleHQoY29udGV4dCk7CisgICAgaWYgKHBh
Z2UgPT0gbnVsbHB0cikKKyAgICAgICAgZXJyb3IgPSAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFn
ZSBpbiB0aGUgY29udGV4dCI7CisgICAgcmV0dXJuIHBhZ2U7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50R2xpYjo6Y2xvc2VBbGxXaW5kb3dzKCkKK3sKKyAgICBjbG9zZUFs
bFBhZ2VzKE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPigpKTsKKyAgICBtX2lkVG9Db250ZXh0LmNs
ZWFyKCk7CisgICAgLy8gRklYTUUoeXVyeXMpOiBjYWxsIGdfbWFpbl9sb29wX3F1aXQoKSA/Cit9
CisKK3N0YXRpYyBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSURGcm9tQ29udGV4dChXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0KQoreworICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogZGF0YU1h
bmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKGNvbnRl
eHQpOworICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpOworICAgIHJldHVybiB3ZWJz
aXRlRGF0YVN0b3JlLnNlc3Npb25JRCgpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdsaWI6OmNyZWF0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgV1RG
OjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXI+IG1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX25ld19lcGhlbWVyYWwoKSk7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJDb250ZXh0PiBjb250
ZXh0ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJfQ09OVEVYVChnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX0NPTlRFWFQsICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIsIG1hbmFnZXIuZ2V0KCksICJw
cm9jZXNzLXN3YXAtb24tY3Jvc3Mtc2l0ZS1uYXZpZ2F0aW9uLWVuYWJsZWQiLCB0cnVlLCBudWxs
cHRyKSkpOworICAgIGlmICghY29udGV4dCkgeworICAgICAgICBlcnJvciA9ICJGYWlsZWQgdG8g
Y3JlYXRlIEdMaWIgZXBoZW1lcmFsIGNvbnRleHQiOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IHNlc3Npb25JREZyb21Db250ZXh0KGNvbnRl
eHQuZ2V0KCkpOworICAgIFN0cmluZyBpZCA9IEluc3BlY3RvckJyb3dzZXJBZ2VudDo6dG9Ccm93
c2VyQ29udGV4dElEUHJvdG9jb2xTdHJpbmcoc2Vzc2lvbklEKTsKKyAgICBtX2lkVG9Db250ZXh0
LnNldChpZCwgV1RGTW92ZShjb250ZXh0KSk7CisgICAgKmJyb3dzZXJDb250ZXh0SUQgPSBpZDsK
K30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpkZWxldGVCcm93c2Vy
Q29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIGNvbnN0IFdURjo6U3RyaW5nJiBicm93c2VyQ29u
dGV4dElEKQoreworICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4gY29udGV4dCA9IG1faWRU
b0NvbnRleHQudGFrZShicm93c2VyQ29udGV4dElEKTsKKyAgICBpZiAoY29udGV4dCA9PSBudWxs
cHRyKSB7CisgICAgICAgIGVycm9yID0gIkNvbnRleHQgd2l0aCBwcm92aWRlZCBpZCBub3QgZm91
bmQiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNsb3NlQWxsUGFnZXMoc2Vzc2lvbklE
RnJvbUNvbnRleHQoY29udGV4dC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHTGliLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVu
dEdMaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZmVmYjRjNTViM2M3NTI4ZmVjMDUyN2NiZGU3MDdkNzM2YTFj
ZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9JbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHTGliLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0
IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRHbGliIDogcHVibGljIEluc3BlY3RvckJyb3dzZXJBZ2VudENs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVj
dG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYigpOworICAgIH5JbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRHbGliKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgICAgUmVmUHRyPFdlYlBhZ2VQcm94
eT4gY3JlYXRlUGFnZShXVEY6OlN0cmluZyYgZXJyb3IsIGNvbnN0IFdURjo6U3RyaW5nKiBicm93
c2VyQ29udGV4dElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlQWxsV2luZG93cygpIG92ZXJy
aWRlOworICAgIHZvaWQgY3JlYXRlQnJvd3NlckNvbnRleHQoV1RGOjpTdHJpbmcmIGVycm9yLCBX
VEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVC
cm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIGNvbnN0IFdURjo6U3RyaW5nJiBicm93
c2VyQ29udGV4dElEKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRXZWJDb250ZXh0
KiBmaW5kQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIGNvbnN0IFdURjo6U3RyaW5nJiBicm93
c2VyQ29udGV4dElEKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBHUmVmUHRyPFdlYktpdFdlYkNv
bnRleHQ+PiBtX2lkVG9Db250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRp
ZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3MmExMDA5ZDgxMGI4YmQzYWNhMDUxZTJi
YjI0YzMzMTEzYWVlYjkuLmVhMzFjYmNjOGM0NGEwNzExZGMwZTQ2MzM0N2EyY2M1ZmQyN2VlZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTY2Miw2ICsxNjYyLDkgQEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0
QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVw
TWVudS5oICovOyB9OwogCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9w
dXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
M0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJ
CUQ3MUE5NDM0MjM3MEUwN0EwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5NDMz
MjM3MEUwN0EwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaCAqLzsgfTsK
KwkJRDcxQTk0MzgyMzcwRjAzMjAwMkM0RDlFIC8qIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzFBOTQz
NzIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgfTsK
KwkJRDcxQTk0M0EyMzcwRjA2MTAwMkM0RDlFIC8qIFJlbW90ZUluc3BlY3RvclBpcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MUE5NDM5MjM3MEYw
NjAwMDJDNEQ5RSAvKiBSZW1vdGVJbnNwZWN0b3JQaXBlLmggKi87IH07CiAJCUUxMDVGRTU0MThE
N0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMDVGRTUzMThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5n
UmFuZ2UuaCAqLzsgfTsKIAkJRTExRDM1QUUxNkI2M0QxQjAwNkQyM0Q3IC8qIGNvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTk2N0UzNzE1MEFCNUUyMDBDNzMxNjkgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2Ig
Ki87IH07CiAJCUUxNEE5NTRBMTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE0QTk1NDgxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmggKi87IH07CkBAIC00NjkwLDYgKzQ2OTMsMTAgQEAKIAkJRDNCOTQ4NDMxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNC
OTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
U2VhcmNoUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNl
YXJjaFBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlENzFBOTQyQzIz
NzBERjgxMDAyQzREOUUgLyogV0tCcm93c2VySW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnJvd3Nlckluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlENzFBOTQzMzIzNzBFMDdBMDAyQzREOUUgLyogSW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlENzFBOTQz
NzIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDcxQTk0MzkyMzcwRjA2MDAwMkM0RDlFIC8q
IFJlbW90ZUluc3BlY3RvclBpcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlSW5zcGVjdG9yUGlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4
QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURGNThDNjM1MTM3MUFDQTAwMEY5QTM3QyAvKiBOYXRpdmVXZWJX
aGVlbEV2ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TmF0aXZlV2ViV2hlZWxFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTEwNUZFNTMxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc3OTEsNiArNzc5OCw3IEBACiAJCQkJRTE1MTNDNjUxNjZFQUJCMjAwMTQ5RkNC
IC8qIEF1eGlsaWFyeVByb2Nlc3NQcm94eS5oICovLAogCQkJCTQ2QTJCNjA2MUU1Njc1QTIwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJ
CTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCAqLywKKwkJCQlENzFBOTQzNzIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCAqLywKIAkJCQkwNzI5N0Y5QzFDMTcxMUVBMDAzRjA3MzUgLyog
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwICovLAogCQkJCTA3Mjk3RjlEMUMxN0JCRUEyMjNG
MDczNSAvKiBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oICovLAogCQkJCUJDMjY1MjEyMTE4MjYw
ODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKQEAgLTc4MDYsNiArNzgxNCw3
IEBACiAJCQkJMkRENUE3MkExRUJGMDlBNzAwOUJBNTk3IC8qIEhpZGRlblBhZ2VUaHJvdHRsaW5n
QXV0b0luY3JlYXNlc0NvdW50ZXIuaCAqLywKIAkJCQk4MzlBMkYyRjFFMjA2NzM5MDAzOTA1N0Ug
LyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwICovLAogCQkJCTgzOUEy
RjMwMUUyMDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
ci5oICovLAorCQkJCUQ3MUE5NDMzMjM3MEUwN0EwMDJDNEQ5RSAvKiBJbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnQuaCAqLywKIAkJCQlBNUUzOTFGQjIxODNDMUU5MDBDOEZCMzEgLyogSW5zcGVj
dG9yVGFyZ2V0UHJveHkuY3BwICovLAogCQkJCUE1RTM5MUZDMjE4M0MxRTkwMEM4RkIzMSAvKiBJ
bnNwZWN0b3JUYXJnZXRQcm94eS5oICovLAogCQkJCTVDRUFCQTJCMjMzMzI1MTQwMDc5Nzc5NyAv
KiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8sCkBAIC03ODIzLDYgKzc4MzIsNyBAQAogCQkJ
CTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi8s
CiAJCQkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cCAqLywKIAkJCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaCAqLywKKwkJCQlENzFBOTQzOTIzNzBGMDYwMDAyQzREOUUgLyogUmVtb3RlSW5zcGVjdG9y
UGlwZS5oICovLAogCQkJCUE1NUJBODFCMUJBMjVCMUUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAgKi8sCiAJCQkJQTU1QkE4MTkxQkEyNUIxRTAwN0NEMzNEIC8qIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5LmggKi8sCiAJCQkJQTU1QkE4MUExQkEyNUIxRTAwN0NEMzNEIC8q
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtODA2Miw2ICs4MDcy
LDcgQEAKIAkJCQlCQzY0NkMxOTExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmLmggKi8sCiAJCQkJQkM2NDZDMTYxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0Zvcndh
cmRMaXN0UmVmLmNwcCAqLywKIAkJCQlCQzY0NkMxNzExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNr
Rm9yd2FyZExpc3RSZWYuaCAqLywKKwkJCQlENzFBOTQyQzIzNzBERjgxMDAyQzREOUUgLyogV0tC
cm93c2VySW5zcGVjdG9yLmggKi8sCiAJCQkJQkNCOUUyNEExMTIwRTE1QzAwQTEzN0UwIC8qIFdL
Q29udGV4dC5jcHAgKi8sCiAJCQkJQkNCOUUyNDkxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4
dC5oICovLAogCQkJCTFBRTUyRjkzMTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmLmNwcCAqLywKQEAgLTk0ODMsNiArOTQ5NCw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2
Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlENzFBOTQzODIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NUZBMTI1OTM0NEUwMEU3MTI3
OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VEODFGNDE1RDhBMDAx
NkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZBQkQy
QTFGNERFMDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTU3Nyw2ICs5NTg5LDcgQEAKIAkJCQlCQzE0REY3NzEyMEI1Qjc5MDA4MjZDMEMg
LyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENDVB
REUxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUQ3MUE5NDM0MjM3MEUwN0EwMDJDNEQ5RSAvKiBJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RTM5MUZEMjE4M0Mx
RjgwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzVCQ0U1REYxQzUwNzY2QTAwQ0RFM0ZBIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtOTc1Nyw2ICs5
NzcwLDcgQEAKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8q
IFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTgyMjJCMzUxNUUwMDhE
MEU4QiAvKiBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUQ3MUE5NDNBMjM3MEYwNjEwMDJDNEQ5RSAvKiBSZW1vdGVJbnNwZWN0b3JQaXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2
NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA3YTVmMzYzMmE5NGIxZmM1N2RlMDAwMmRjYWE0M2I0N2NkNTJmYTBjLi44NjJj
OWExZDkwZjMwN2VmODcxOGVlMjcxNzRiODE4ZWYxMmE2ZjA3IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTEt
MDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogaW50cm9kdWNlIGJyb3dzZXIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgZmxhZyBmb3IgaW50aWFs
aXppbmcgaW5zcGVjdG9yIHBpcGUuCisKKyAgICAgICAgQWRkZWQgcGxhdGZvcm0gaG9va3MgZm9y
IGNyZWF0aW5nIG5ldyBwYWdlcyBpbiByZXNwb25zZSB0byBCcm93c2VyLmNyZWF0ZVBhZ2UgaW5z
cGVjdG9yCisgICAgICAgIGNvbW1hbmQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFp
bi5jOgorICAgICAgICAoY3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChjb25maWd1cmVCcm93c2Vy
SW5zcGVjdG9yUGlwZSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHA6CisgICAgICAgIChjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKGNsb3NlQWxs
KToKKyAgICAgICAgKGNvbmZpZ3VyZUJyb3dzZXJJbnNwZWN0b3IpOgorICAgICAgICAobWFpbik6
CisKIDIwMTktMTEtMDYgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCB3YXRjaGxpc3QgY2F0ZWdvcnkgZm9yIEJ1aWxkU2xhdmVTdXBwb3J0CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYwppbmRleCA5M2Q5MzU5MmJjNGY4ZTU1MWUyMmYyZWQzNWNmOWNhNmNiNjJiZDI1
Li4wYzhmOWE5ZjgxMzNhMDkzOGFiMGNmNjc4YzlkZmYxZDdjYmU5ZDM3IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNGaWxlOwog
c3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciAqcHJv
eHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgZ2Jvb2xlYW4gaW5zcGVjdG9y
UGlwZTsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAKIHR5cGVkZWYgZW51bSB7CkBA
IC0xMjAsNiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9w
dGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5H
X0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9
LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZp
Z25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAgICB7ICJjb250
ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIs
ICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKKyAgICB7ICJp
bnNwZWN0b3ItcGlwZSIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaW5zcGVjdG9yUGlwZSwg
Ik9wZW4gcGlwZSBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIiwgTlVMTCB9LAog
ICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9u
LCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05f
UkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVu
dHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQpAQCAtNDky
LDYgKzQ5NCwyOSBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJTYXZlZENhbGxiYWNrKFdlYktpdFVzZXJD
b250ZW50RmlsdGVyU3RvcmUgKnN0b3JlLCBHQXN5bmNSZXN1bAogICAgIGdfbWFpbl9sb29wX3F1
aXQoZGF0YS0+bWFpbkxvb3ApOwogfQogCitzdGF0aWMgV2ViS2l0V2ViVmlldyAqY3JlYXRlTmV3
UGFnZShXZWJLaXRCcm93c2VySW5zcGVjdG9yICpicm93c2VyX2luc3BlY3RvciwgV2ViS2l0V2Vi
Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAgICAgICAg
IndlYi1jb250ZXh0IiwgY29udGV4dCwKKyAgICAgICAgImlzLWVwaGVtZXJhbCIsIHdlYmtpdF93
ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCksCisgICAgICAgICJpcy1jb250cm9sbGVk
LWJ5LWF1dG9tYXRpb24iLCBUUlVFLAorICAgICAgICBOVUxMKSk7CisgICAgR3RrV2lkZ2V0ICpu
ZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoTlVMTCwgY29udGV4dCk7CisgICAgYnJvd3Nl
cl93aW5kb3dfYXBwZW5kX3ZpZXcoQlJPV1NFUl9XSU5ET1cobmV3V2luZG93KSwgbmV3V2ViVmll
dyk7CisgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKEdUS19XSURHRVQobmV3V2ViVmlldykpOwor
ICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG5ld1dpbmRvdykpOworICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKKyAgICByZXR1cm4g
bmV3V2ViVmlldzsKK30KKworc3RhdGljIHZvaWQgY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBp
cGUoKQoreworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKmJyb3dzZXJJbnNwZWN0b3IgPSB3
ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQoKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KGJyb3dzZXJJbnNwZWN0b3IsICJjcmVhdGUtbmV3LXBhZ2UiLCBHX0NBTExCQUNLKGNyZWF0
ZU5ld1BhZ2UpLCBOVUxMKTsKKworICAgIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFs
aXplX3BpcGUoKTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICNp
ZiBFTkFCTEVfREVWRUxPUEVSX01PREUKQEAgLTUzOSw2ICs1NjQsOSBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQogICAgIFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRleHQgPSBn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0NPTlRFWFQsICJ3ZWJzaXRlLWRhdGEtbWFuYWdl
ciIsIG1hbmFnZXIsICJwcm9jZXNzLXN3YXAtb24tY3Jvc3Mtc2l0ZS1uYXZpZ2F0aW9uLWVuYWJs
ZWQiLCBUUlVFLCBOVUxMKTsKICAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAorICAgIGlm
IChpbnNwZWN0b3JQaXBlKQorICAgICAgICBjb25maWd1cmVCcm93c2VySW5zcGVjdG9yUGlwZSgp
OworCiAgICAgaWYgKGNvb2tpZXNQb2xpY3kpIHsKICAgICAgICAgV2ViS2l0Q29va2llTWFuYWdl
ciAqY29va2llTWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29va2llX21hbmFnZXIo
d2ViQ29udGV4dCk7CiAgICAgICAgIEdFbnVtQ2xhc3MgKmVudW1DbGFzcyA9IGdfdHlwZV9jbGFz
c19yZWYoV0VCS0lUX1RZUEVfQ09PS0lFX0FDQ0VQVF9QT0xJQ1kpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4u
Y3BwCmluZGV4IDJkMTgzZDM5NDEyM2JkODQ1NDVkYzUxZjUzZWI5YmU3OTZmYjg4NzMuLmE0Njgy
NjdhYmM0MTUzNmM0Y2Q2Nzk1NTU2MjZmZjEyMzQzNzFkMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3Rh
dGljIGNvbnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7
CiBjb25zdCBjaGFyKiBiZ0NvbG9yOworc3RhdGljIGdib29sZWFuIGluc3BlY3RvclBpcGU7CiBz
dGF0aWMgZ2Jvb2xlYW4gcHJpbnRWZXJzaW9uOwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5
IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KQEAgLTYyLDYgKzYzLDcgQEAgc3RhdGljIGNvbnN0IEdP
cHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1lcnJv
cnMiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBU
TFMgZXJyb3JzIiwgbnVsbHB0ciB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19P
UFRJT05fQVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZp
bHRlcmluZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJ
T05fQVJHX1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVs
dDogd2hpdGUiLCAiQ09MT1IiIH0sCisgICAgeyAiaW5zcGVjdG9yLXBpcGUiLCAwLCAwLCBHX09Q
VElPTl9BUkdfTk9ORSwgJmluc3BlY3RvclBpcGUsICJPcGVuIHBpcGUgY29ubmVjdGlvbiB0byB0
aGUgcmVtb3RlIGluc3BlY3RvciIsIG51bGxwdHIgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAw
LCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXUEUgdmVyc2lv
biIsIG51bGxwdHIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05f
QVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAg
ICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9CkBAIC0xNzIsNiArMTc0LDQzIEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVh
dGVXZWJWaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3RpCiAg
ICAgcmV0dXJuIG5ld1dlYlZpZXc7CiB9CiAKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiBjcmVhdGVO
ZXdQYWdlKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IqLCBXZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0
KQoreworICAgIGF1dG8gYmFja2VuZCA9IGNyZWF0ZVZpZXdCYWNrZW5kKDEyODAsIDcyMCk7Cisg
ICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIHdwZUJhY2tlbmQgPSBiYWNrZW5kLT5iYWNrZW5k
KCk7CisgICAgaWYgKCF3cGVCYWNrZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGF1dG8qIHZpZXdCYWNrZW5kID0gd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfbmV3KHdwZUJhY2tl
bmQsCisgICAgICAgIFtdKGdwb2ludGVyIGRhdGEpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBzdGF0
aWNfY2FzdDxXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kKj4oZGF0YSk7CisgICAgICAg
IH0sIGJhY2tlbmQucmVsZWFzZSgpKTsKKworICAgIGF1dG8qIG5ld1dlYlZpZXcgPSB3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh2aWV3QmFja2VuZCwgY29udGV4dCk7CisKKyAgICBn
X3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0Ns
b3NlKSwgbnVsbHB0cik7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkobmV3V2ViVmll
dywgImFib3V0OmJsYW5rIik7CisKKyAgICByZXR1cm4gbmV3V2ViVmlldzsKKworfQorCitzdGF0
aWMgdm9pZCBjbG9zZUFsbChXZWJLaXRCcm93c2VySW5zcGVjdG9yKiwgR01haW5Mb29wKiBtYWlu
TG9vcCkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KG1haW5Mb29wKTsKK30KKworc3RhdGljIHZv
aWQgY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBpcGUoR01haW5Mb29wKiBtYWluTG9vcCwgV2Vi
S2l0V2ViVmlldyAqZmlyc3RXZWJWaWV3KQoreworICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3Iq
IGJyb3dzZXJJbnNwZWN0b3IgPSB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQo
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJyb3dzZXJJbnNwZWN0b3IsICJjcmVhdGUtbmV3LXBh
Z2UiLCBHX0NBTExCQUNLKGNyZWF0ZU5ld1BhZ2UpLCBOVUxMKTsKKyAgICAvLyBGSVhNRTogVGhp
cyBzaWduYWwgaXMgcmVjZWl2ZWQgb25seSB3aGVuIGNsb3NlQWxsIGlzIGNhbGxlZC4gV2Ugc2hv
dWxkIG5vdCByZWx5IG9uIHRoYXQuCisgICAgZ19zaWduYWxfY29ubmVjdChmaXJzdFdlYlZpZXcs
ICJjbG9zZSIsIEdfQ0FMTEJBQ0soY2xvc2VBbGwpLCBtYWluTG9vcCk7CisKKyAgICB3ZWJraXRf
YnJvd3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBlKCk7Cit9CisKIGludCBtYWluKGludCBh
cmdjLCBjaGFyICphcmd2W10pCiB7CiAjaWYgRU5BQkxFX0RFVkVMT1BFUl9NT0RFCkBAIC0zMDEs
NiArMzQwLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlZpZXcsICJwZXJtaXNzaW9uLXJlcXVlc3QiLCBHX0NBTExCQUNLKGRlY2lk
ZVBlcm1pc3Npb25SZXF1ZXN0KSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJW
aWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3KSwgbnVsbHB0cik7CiAKKyAg
ICBpZiAoaW5zcGVjdG9yUGlwZSkKKyAgICAgICAgY29uZmlndXJlQnJvd3Nlckluc3BlY3RvclBp
cGUobG9vcCwgd2ViVmlldyk7CisKICAgICBpZiAoaWdub3JlVExTRXJyb3JzKQogICAgICAgICB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KHdlYkNvbnRleHQsIFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382978</attachid>
            <date>2019-11-06 16:13:58 -0800</date>
            <delta_ts>2020-09-09 11:52:25 -0700</delta_ts>
            <desc>initial implementation</desc>
            <filename>bug-203870-20191106161357.patch</filename>
            <type>text/plain</type>
            <size>111882</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDc2MjUwZTRmY2RkZmQ5NjRkNDhhMTBlY2QxYzBiNjFjZDhiMWY3Li45MWZhZDhiZTM1Njg0NDg5
MWQyMWE1M2MxYzIxZDYwYjVjNDQyYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYnJvd3NlciBpbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IEJyb3dzZXIgZG9tYWluIHRoYXQgYWxsb3dzIGNyZWF0aW5nIGVwaGVtZXJhbCBjb250ZXh0cyBh
bmQgcGFnZXMuCisgICAgICAgIEV4dGVuZGVkIFRhcmdldEluZm8gd2l0aCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgY29udGV4dCBpdCBiZWxvbmdzIHRvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6YnVpbGRUYXJnZXRJbmZvT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6ZW5zdXJlQ29ubmVjdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OmNvbm5lY3RUb1RhcmdldHMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb246CisKIDIwMTktMTEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURjo6UnVuTG9vcCBzaG91bGQgbm90IGRlcGVuZCBvbiBpc01haW5U
aHJlYWQoKSBpZGlvbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjNhZTRkYWI5MGEzZjNlYjhiMzExZmI5YmE0YmQ4
OTJlMzhkMTFjZi4uNmRhNDI1OTExZGY2Y2FiYmNmMTZmMDAxMzVmMjRiNzY1YmM4OWU4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMTktMTEtMDUgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIGJy
b3dzZXIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCcm93c2VyIGluc3BlY3RvciBpcyBpbnRyb2R1Y2VkIHRvIGVuYWJsZSBpbnNwZWN0
aW5nIGVudGlyZSBicm93c2VyIG92ZXIgdGhlCisgICAgICAgIGluc3BlY3RvciBwcm90b2NvbC4g
SXQgaXMgY29tcHJpc2VkIG9mIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICBOZXcg
QnJvd3NlciBkb21haW4gaW4gdGhlIHByb3RvY29sIGFsbG93cyB0byBjcmVhdGUvZGVsZXRlIGVw
aGVtZXJhbCBicm93c2luZworICAgICAgICBjb250ZXh0cyBhbmQgY3JlYXRlIHBhZ2VzIGluIHRo
b3NlIGNvbnRleHRzLiBUaGlzIGFsbG93cyB0byBydW4gbXVsdGlwbGUgdGVzdAorICAgICAgICBw
YWdlcyBpbiB0aGUgc2FtZSBpbnN0YW5jZSB3aGlsZSBpc29sYXRpbmcgdGhlaXIgc3RhdGUuCisK
KyAgICAgICAgQWZvcmVtZW50aW9uZWQgZG9tYWluIGlzIGltcGxlbWVudGVkIGJ5IEluc3BlY3Rv
ckJyb3dzZXJBZ2VudCB0aGF0IGRlbGVnYXRlcyBtb3N0CisgICAgICAgIG9mIGl0cyB3b3JrIHRv
IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiAoR1RLIGFuZCBXUEUgc28gZmFy
KS4KKyAgICAgICAgQnJvd3Nlci5jcmVhdGVQYWdlIHJlcXVpcmVzIGVtYmVkZGVyIHN1cHBvcnQg
c28gdGhhdCBuZXcgcGFnZSBpcyBjcmVhdGVkIGluIGEKKyAgICAgICAgd2luZG93LgorCisgICAg
ICAgIEJyb3dzZXIgaW5zcGVjdG9yIHN0YXRlIGlzIG1hbmFnZWQgYnkgQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIgd2hpY2ggb3ducyB0d28KKyAgICAgICAgYWdlbnRzIEJyb3dzZXIgYW5kIFRh
cmdldC4gQnJvd3NlciB0YXJnZXQgYWdlbnQgZGlzcGF0Y2hlcyBtZXNzYWdlcyB0byB0aGUgdGFy
Z2V0cworICAgICAgICB3aXRoaW4gcGFnZSBzcGVjaWZpYyB0YXJnZXQgYWdlbnRzLiBDdXJyZW50
bHkgd2hlbmV2ZXIgbmV3IHBhZ2UgaXMgY3JlYXRlZCBpbnNwZWN0b3IKKyAgICAgICAgd2lsbCBh
dXRvY29ubmVjdCB0byBpdC4KKworICAgICAgICBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBjb25uZWN0aW9uIHRvIHRoZSBuZXcgaW5zcGVjdG9yIGNhbiBvbmx5IGJlIGVzdGFibGlzaGVk
CisgICAgICAgIHZpYSBhIHBpcGUuIEl0IHJlcXVpcmVzIHJlbW90ZSBpbnNwZWN0b3IgdG8gYmUg
dGhlIGxhdW5jaGVyIG9mIHRoZSBicm93c2VyIHByb2Nlc3MuIE90aGVyCisgICAgICAgIHRyYW5z
cG9ydHMgY2FuIGJlIGFkZGVkIGxhdGVyLgorCisgICAgICAgIEJyb3N3ZXIgaW5zcGVjdG9yIGlz
IG9ubHkgaW5zdGFudGlhdGVkIGlmIGV4cGxpY2l0bHkgb3B0ZWQtaW4gYnkgdGhlIGVtYmVkZGVy
IGFuZCBtdXN0CisgICAgICAgIGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGZpcnN0IHBhZ2UgaXMgY3Jl
YXRlZC4gSW4gdGhlIE1pbmlCcm93c2VyIGl0IGlzIGd1YXJkZWQgYnkgYSBjb21tYW5kCisgICAg
ICAgIGxpbmUgZmxhZy4KKworICAgICAgICBFbWJlZGRlciBpbnRlcmZhY2UgaXMgcHJvdmlkZWQg
aW4gdGhlIGZvcm0gb2YgV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiBHVEsgYW5kIFdQRS4KKyAg
ICAgICAgVGhlIG5ldyBBUEkgYWxsb3dzIHRvIHNldHVwIGluc3BlY3RvciBwaXBlIHRvIHRoZSBw
YXJlbnQgcHJvY2VzcyBhbmQgcHJvdmlkZXMgYQorICAgICAgICBwbGF0Zm9ybSBob29rIGZvciBj
cmVhdGluZyBuZXcgcGFnZSBpbiBhIGNvbnRleHQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAg
ICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclBpcGU6OkJyb3dzZXJJbnNwZWN0b3JQaXBlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAod2Via2l0QnJvd3Nlckluc3BlY3RvckNyZWF0ZU5ld1BhZ2VJbkNv
bnRleHQpOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnJvd3Nlckluc3BlY3Rvcik6CisgICAgICAg
ICh3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQpOgorICAgICAgICAod2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBl
czoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ccm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpCcm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToK
KyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdFRvQWxsUGFnZXMpOgorICAgICAgICAoV2ViS2l0OjpC
cm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21BbGxQYWdlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0Ojppbml0aWFsaXplQnJvd3Nlckluc3BlY3RvclBpcGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFn
ZW50KToKKyAgICAgICAgKFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpCcm93c2VySW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6QnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50Lmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudCk6CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRlbGV0
ZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmNyZWF0
ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OnRvQnJvd3Nl
ckNvbnRleHRJRFByb3RvY29sU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
QnJvd3NlckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUluc3Bl
Y3RvclBpcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlw
ZTo6UmVtb3RlRnJvbnRlbmRDaGFubmVsOjpSZW1vdGVGcm9udGVuZENoYW5uZWwpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpSZW1vdGVJbnNwZWN0b3JQaXBlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUGlwZTo6flJlbW90ZUluc3BlY3RvclBpcGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQaXBlOjpzdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclBpcGU6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQaXBlOjp3b3JrZXJSdW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVJbnNwZWN0b3JQaXBlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vRmlkb0F1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0Q3JlYXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjppbml0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaEF0dGFjaGluZ1RvV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpw
YWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6
OmZpbmRUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpjbG9zZUFsbFBhZ2VzKToKKyAgICAgICAgKFdlYktp
dDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpJbnNwZWN0b3JCcm93c2VyQWdlbnRD
bGllbnRHbGliKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
R2xpYjo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudEdsaWI6OmNsb3NlQWxsV2luZG93cyk6CisgICAgICAgIChXZWJLaXQ6OnNlc3Npb25J
REZyb21Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50R2xpYjo6Y3JlYXRlQnJvd3NlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpkZWxldGVCcm93c2VyQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0x
MS0wNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gSW1wbGVtZW50IHN1cHBvcnQgZm9yIFBvaW50ZXIgTG9jayBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZTk2NjUwMzY0NjYwYzQ1ZTk3ZGZlZDliMzNm
ZGY5MjhlY2NiOTA0Li4wMjg5ZGEyNzEwMjRjZDY4YjIzM2ZjYTkzN2U0ZDE1YTJmODEwOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTQzLDYgKzExNDMsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX0RPTUFJTlMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlLmpzb24KICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0F1ZGl0Lmpzb24KKyAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbgogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9Db25zb2xlLmpzb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZjU5MjEyZmYwMWNj
OWQ4MmEyMTAwNWIyMTI4NTcxZTdkMjMwM2U3NC4uZTE5MDA5ZjVmYmE3Yjc2MjI1OWJiZWNhYzFl
ZjczM2FiNjFlNWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTIzOCw2ICsyMzgsNyBAQCBJTlNQRUNUT1JfRE9NQUlOUyA6PSBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZS5qc29uIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQXVkaXQuanNvbiBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24gXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9Db25zb2xlLmpzb24gXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFy
Z2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDExNzcwOTBmYzE4NjIzZWY1MDFjOWFkNGMzMzg5
YmMyZGE5MTA3MWUuLjdlZjBlM2ZjZmZlMmE5YWI0YmIwMWI2ZTE3ZDczYzJhYWQ3OGM3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRhcmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMwLDExICszMCwxMiBAQAogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdl
dEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXIm
IGJhY2tlbmREaXNwYXRjaGVyKQorSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdl
dEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXIm
IGJhY2tlbmREaXNwYXRjaGVyLCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKICAgICAsIG1fcm91dGVyKGZyb250ZW5k
Um91dGVyKQogICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCisgICAgLCBtX2Jyb3dzZXJDb250ZXh0SUQoYnJvd3NlckNvbnRleHRJRCkKIHsKIH0KIApA
QCAtODcsNyArODgsNyBAQCBzdGF0aWMgUHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbzo6VHlw
ZSB0YXJnZXRUeXBlVG9Qcm90b2NvbFR5cGUoSW5zcGVjdG9yVGFyZwogICAgIHJldHVybiBQcm90
b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpUeXBlOjpQYWdlOwogfQogCi1zdGF0aWMgUmVmPFBy
b3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm8+IGJ1aWxkVGFyZ2V0SW5mb09iamVjdChjb25zdCBJ
bnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKK3N0YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFy
Z2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2JqZWN0KGNvbnN0IEluc3BlY3RvclRhcmdldCYgdGFy
Z2V0LCBjb25zdCBTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvOjpjcmVhdGUoKQogICAgICAgICAuc2V0VGFy
Z2V0SWQodGFyZ2V0LmlkZW50aWZpZXIoKSkKQEAgLTk1LDYgKzk2LDggQEAgc3RhdGljIFJlZjxQ
cm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdldEluZm9PYmplY3QoY29uc3Qg
SW5zcGVjdG9yVGEKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAodGFyZ2V0LmlzUHJvdmlz
aW9uYWwoKSkKICAgICAgICAgcmVzdWx0LT5zZXRJc1Byb3Zpc2lvbmFsKHRydWUpOworICAgIGlm
ICghYnJvd3NlckNvbnRleHRJRC5pc0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC0+c2V0QnJvd3Nl
ckNvbnRleHRJZChicm93c2VyQ29udGV4dElEKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0xMDgsNyArMTExLDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRl
ZChJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKIAogICAgIHRhcmdldC5jb25uZWN0KGNvbm5lY3Rp
b25UeXBlKCkpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdldENyZWF0ZWQoYnVp
bGRUYXJnZXRJbmZvT2JqZWN0KHRhcmdldCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50
YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQsIG1fYnJvd3NlckNvbnRl
eHRJRCkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXREZXN0cm95ZWQo
SW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCkBAIC0xMzUsNiArMTM4LDE4IEBAIHZvaWQgSW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KGNvbnN0IFN0cmluZyYg
b2xkVGFyZ2V0SUQsCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpZENvbW1pdFByb3Zpc2lv
bmFsVGFyZ2V0KG9sZFRhcmdldElELCBjb21taXR0ZWRUYXJnZXRJRCk7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yVGFyZ2V0QWdlbnQ6OmVuc3VyZUNvbm5lY3RlZChjb25zdCBTdHJpbmcmIHRhcmdldElE
KQoreworICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogdGFyZ2V0ID0gbV90YXJnZXRzLmdldCh0YXJnZXRJRCk7CisgICAgaWYgKCF0YXJnZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIHRhcmdldC0+Y29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsK
K30KKwogRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6Y29ubmVjdGlvblR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3JvdXRlci5oYXNMb2Nh
bEZyb250ZW5kKCkgPyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6
OkxvY2FsIDogSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlOjpSZW1v
dGU7CkBAIC0xNDQsNyArMTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6Y29ubmVj
dFRvVGFyZ2V0cygpCiB7CiAgICAgZm9yIChJbnNwZWN0b3JUYXJnZXQqIHRhcmdldCA6IG1fdGFy
Z2V0cy52YWx1ZXMoKSkgewogICAgICAgICB0YXJnZXQtPmNvbm5lY3QoY29ubmVjdGlvblR5cGUo
KSk7Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFy
Z2V0SW5mb09iamVjdCgqdGFyZ2V0KSk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50
YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCgqdGFyZ2V0LCBtX2Jyb3dzZXJDb250
ZXh0SUQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCmluZGV4IDM4Y2Iz
MTg5ODZiMzFjNGRlZDE5YmE5YmVhZTc4NTVkMmI1NGMyM2EuLjA1NTdmODMzYzNkNmYxZGEwOTA4
NmRkNDZjZTQ1OTkzZDczMTUyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JUYXJnZXRBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvclRhcmdldEFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYsIEJhY2tl
bmREaXNwYXRjaGVyJik7CisgICAgSW5zcGVjdG9yVGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXIm
LCBCYWNrZW5kRGlzcGF0Y2hlciYsIGNvbnN0IFN0cmluZyYgYnJvd3NlckNvbnRleHRJRCk7CiAg
ICAgfkluc3BlY3RvclRhcmdldEFnZW50KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JB
Z2VudEJhc2UKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFyZ2V0Q3JlYXRl
ZChJbnNwZWN0b3JUYXJnZXQmKTsKICAgICB2b2lkIHRhcmdldERlc3Ryb3llZChJbnNwZWN0b3JU
YXJnZXQmKTsKICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KGNvbnN0IFN0cmlu
ZyYgb2xkVGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgY29tbWl0dGVkVGFyZ2V0SUQpOworICAgIHZv
aWQgZW5zdXJlQ29ubmVjdGVkKGNvbnN0IFN0cmluZyYgdGFyZ2V0SUQpOwogCiAgICAgLy8gVGFy
Z2V0IG1lc3NhZ2VzLgogICAgIHZvaWQgc2VuZE1lc3NhZ2VGcm9tVGFyZ2V0VG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpAQCAtNjgsNiAr
NjksNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXImIG1fcm91dGVy
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwogICAgIFJlZjxUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBjb25zdCBTdHJpbmcgbV9icm93c2VyQ29udGV4dElEOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CiAgICAgYm9vbCBtX2lz
Q29ubmVjdGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZDRhM2JmZTZm
M2M5NGMyOWEyNzQ5Zjg4NjkzOWYyOTFlZTlmNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbgpAQCAtMCwwICsx
LDQwIEBACit7CisgICAgImRvbWFpbiI6ICJCcm93c2VyIiwKKyAgICAiYXZhaWxhYmlsaXR5Ijog
WyJ3ZWIiXSwKKyAgICAidHlwZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJD
b250ZXh0SUQiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJJZCBvZiBCcm93c2VyIGNvbnRleHQuIgorICAgICAgICB9CisgICAgXSwK
KyAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNsb3Nl
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDbG9zZSBicm93c2VyLiIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiY3JlYXRlQ29udGV4dCIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlcyBuZXcgZXBoZW1lcmFsIGJyb3dzZXIgY29u
dGV4dC4iLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJicm93c2VyQ29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgImRlc2NyaXB0aW9u
IjogIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb250ZXh0LiIgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJkZWxldGVDb250ZXh0
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZWxldGVzIGJyb3dzZXIgY29udGV4dCBw
cmV2aW91c2x5IGNyZWF0ZWQgd2l0aCBjcmVhdGVDb250ZWN0LiBUaGUgY29tbWFuZCB3aWxsIGF1
dG9tYXRpY2FsbHkgY2xvc2UgYWxsIHBhZ2VzIHRoYXQgdXNlIHRoZSBjb250ZXh0LiIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyb3dz
ZXJDb250ZXh0SWQiLCAiJHJlZiI6ICJDb250ZXh0SUQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiB0aGUgY29udGV4dCB0byBkZWxldGUuIiB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImNyZWF0ZVBhZ2UiLAorICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2Vy
Q29udGV4dElkIiwgIiRyZWYiOiAiQ29udGV4dElEIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkpTT04gSW5zcGVjdG9yIFByb3RvY29sIG1lc3NhZ2UgKGNvbW1hbmQpIHRvIGJl
IGRpc3BhdGNoZWQgb24gdGhlIGJhY2tlbmQuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhl
IHBhZ2UgdGFyZ2V0LiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQu
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpz
b24KaW5kZXggMjQwY2Q0MmU2N2UzMjUwZTQzNGMwYmY2ZjlkMTYxNjg1MDVhOGMyMi4uMjgxNTdh
YzExMzkwNWQwYjQ3ZWYzZWNhMDI4N2I2MDJmMzJkZWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCkBAIC0xMCw3ICsx
MCw4IEBACiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1
ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFyZ2V0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsicGFnZSIsICJzZXJ2aWNlLXdv
cmtlciIsICJ3b3JrZXIiXSB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQcm92aXNp
b25hbCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgcHJvdmlzaW9uYWwgcGFnZSB0
YXJnZXQgaS5lLiBTdWNoIHRhcmdldCBtYXkgYmUgY3JlYXRlZCB3aGVuIGN1cnJlbnQgcGFnZSBz
dGFydHMgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uIEV2ZW50dWFsbHkgZWFjaCBwcm92aXNpb25h
bCB0YXJnZXQgaXMgZWl0aGVyIGNvbW1pdHRlZCBhbmQgc3dhcHMgd2l0aCB0aGUgY3VycmVudCB0
YXJnZXQgb3IgZ2V0cyBkZXN0cm95ZWQsIGUuZy4gaW4gY2FzZSBvZiBsb2FkIHJlcXVlc3QgZmFp
bHVyZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlw
ZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFs
dWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4g
U3VjaCB0YXJnZXQgbWF5IGJlIGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3Nz
LW9yaWdpbiBuYXZpZ2F0aW9uLiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlz
IGVpdGhlciBjb21taXR0ZWQgYW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdl
dHMgZGVzdHJveWVkLCBlLmcuIGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NlckNvbnRleHRJZCIsICIkcmVmIjogIkJy
b3dzZXIuQ29udGV4dElEIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CiAgICAgICAgICAgICBdCiAgICAg
ICAgIH0KICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYWVjODdhZTAxMTI3YTkz
NzA3MTJjM2U0M2U2ZDljMDc0ZjY5MjNkZS4uNzliOGEzMDE4NmQyZjQyYjkxOTk2YzI5NzNlODI3
NTM3OGFjODIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02Myw2ICs2Myw3IEBAIHNl
dChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCisgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmgKICAg
ICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3JlZGVudGlh
bC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVu
dS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3M2ZiNmExZDg3ZDQ1OWFhMDM1ZWMxNDg4
ZjRiN2EwODdiZDcwYmQwLi5lYWZhYzgyYjkxNmRkZjg3ZDMzNTBlYTg0YjQ1YWE4ZTIzNjlkNDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTkxLDYgKzkxLDcgQEAgc2V0KFdQRV9BUElf
SU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCiAgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBlZGJmYjU2
ZTQ5YmMyYTAzYThhYmRiZjg3MTQxZGNkMDdlNWRhOTNmLi4zZWQ1ZjNjN2Q4Y2U1ZmQ0MjQ3NDRj
Mjk4NGE4YmViYWZhODBkNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI0MCwxNyArMjQwLDIyIEBAIFNo
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKIAogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuY3BwCitVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCitVSVBy
b2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3BwCitVSVByb2Nlc3MvQnJvd3Nlckluc3BlY3Rv
clRhcmdldEFnZW50LmNwcAogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAog
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUu
Y3BwCiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCitVSVBy
b2Nlc3MvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcAogVUlQcm9jZXNzL0luc3BlY3RvclRhcmdl
dFByb3h5LmNwcAogVUlQcm9jZXNzL0xlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcAogVUlQcm9jZXNz
L1BhZ2VMb2FkU3RhdGUuY3BwCiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAorVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuY3BwCiBVSVByb2Nlc3MvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAK
IFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IGU3
NjUwNjY2YTEwNjk1MTczOWFlM2Y0OGYzYzZmZjllNDk4ZjhkMTUuLjhkNzM4M2JiZTdhNGVlOTY4
Yjk3NzY1NTgxOTU2NTFjZTE3ZjI0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMTI5LDYgKzEy
OSw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3Iu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcCBAbm8t
dW5pZnkKQEAgLTIyNCw2ICsyMjUsNyBAQCBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvdW5peC9XZWJz
aXRlRGF0YVN0b3JlVW5peC5jcHAKIAogVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcCBAbm8tdW5pZnkKIAorVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xp
ZW50R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKIFVJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCA1YjUxNGQ1MjE2ZWM1ZDk2
Y2Q1ODNmNjgyN2Y0ODU4NjhjNWUyYTFlLi5mY2JiYjc4MWEzMTExMGZhZWRlMGEwZjMwMzVkNzQw
MmQ1YWRhZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTExOCw2ICsxMTgsNyBAQCBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBAbm8tdW5pZnkK
K1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmNwcCBAbm8tdW5pZnkK
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgQG5vLXVuaWZ5CkBAIC0xODcs
NiArMTg4LDcgQEAgVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKIFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9s
b2NhdGlvblByb3ZpZGVyLmNwcAogCitVSVByb2Nlc3MvZ2xpYi9JbnNwZWN0b3JCcm93c2VyQWdl
bnRDbGllbnRHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAog
VUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODI2MDcxMmI4MTBhMWY2MmVlMTZkODM1ODE2Yzg2MDQ4MTQ5NjQzYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dz
ZXJJbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEJyb3dzZXJJbnNwZWN0b3IuaCIKKwor
I2luY2x1ZGUgIkJyb3dzZXJJbnNwZWN0b3JQaXBlLmgiCisjaW5jbHVkZSAiV2ViS2l0QnJvd3Nl
ckluc3BlY3RvclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlw
ZS5oPgorCisvKioKKyAqIFNFQ1RJT046IFdlYktpdEJyb3dzZXJJbnNwZWN0b3IKKyAqIEBTaG9y
dF9kZXNjcmlwdGlvbjogQWNjZXNzIHRvIHRoZSBXZWJLaXQgYnJvd3NlciBpbnNwZWN0b3IKKyAq
IEBUaXRsZTogV2ViS2l0QnJvd3Nlckluc3BlY3RvcgorICoKKyAqIFRoZSBXZWJLaXQgQnJvd3Nl
ciBJbnNwZWN0b3IgaXMgYW4gZXhwZXJpbWVudGFsIEFQSSB0aGF0IHByb3ZpZGVzCisgKiBhY2Nl
c3MgdG8gdGhlIGluc3BlY3RvciB2aWEgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgcHJvdG9jb2wuIFRo
ZSBwcm90b2NvbAorICogYWxsb3dzIHRvIGNyZWF0ZSBlcGhlbWVyYWwgY29udGV4dHMgYW5kIGNy
ZWF0ZSBwYWdlcyBpbiB0aGVtIGFuZCB0aGVuCisgKiBtYW5pcHVsYXRlIHRoZW0gdXNpbmcgdGhl
IGluc3BlY3RvciBjb21tYW5kcy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvcgorICogdGhlIGJyb3dz
ZXIgYXV0b21hdGlvbiBvciByZW1vdGUgZGVidWdnaW5nLgorICoKKyAqIEN1cnJlbnRseSB0aGUg
cHJvdG9jb2wgY2FuIGJlIGV4cG9zZWQgdG8gdGhlIHBhcmVudCBwcm9jZXNzIHZpYSBhIHVuaXgK
KyAqIHBpcGUuCisgKgorICogU2luY2U6IDIuMjgKKyAqLworCitlbnVtIHsKKyAgICBDUkVBVEVf
TkVXX1BBR0UsCisKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RydWN0IF9XZWJLaXRCcm93c2Vy
SW5zcGVjdG9yUHJpdmF0ZSB7CisgICAgaW50IHVudXNlZCB7IDAgfTsKK307CisKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRCcm93c2VySW5zcGVjdG9yLCB3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0
b3IsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9
IHsgMCwgfTsKKworc3RhdGljIHZvaWQgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2NsYXNzX2lu
aXQoV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKiBmaW5kQ2xhc3MpCit7CisgICAgR09iamVj
dENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhmaW5kQ2xhc3MpOworCisgICAg
LyoqCisgICAgICogV2ViS2l0QnJvd3Nlckluc3BlY3Rvcjo6Y3JlYXRlLW5ldy1wYWdlOgorICAg
ICAqIEBpbnNwZWN0b3I6IHRoZSAjV2ViS2l0QnJvd3Nlckluc3BlY3RvciBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVj
dG9yIGlzIHJlcXVlc3RlZCB0byBjcmVhdGUgYSBuZXcgcGFnZSBpbiB0aGUgcHJvdmlkZWQKKyAg
ICAgKiAjV2ViS2l0V2ViQ29udGV4dC4KKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVt
aXR0ZWQgd2hlbiBpbnNwZWN0b3IgcmVjZWl2ZXMgJ0Jyb3dzZXIuY3JlYXRlUGFnZScgY29tbWFu
ZAorICAgICAqIGZyb20gaXRzIHJlbW90ZSBjbGllbnQuIElmIHRoZSBzaWdubGEgaXMgbm90IGhh
bmRsZWQgdGhlIGNvbW1hbmQgd2lsbCBmYWlsLgorICAgICAqCisgICAgICogUmV0dXJuczogJVdl
YktpdFdlYlZpZXcgdGhhdCBjb250YWlucyBjcmVhdGVkIHBhZ2UuCisgICAgICovCisgICAgc2ln
bmFsc1tDUkVBVEVfTkVXX1BBR0VdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAiY3JlYXRlLW5l
dy1wYWdlIiwKKyAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ09iamVjdENsYXNzKSwKKyAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRCcm93
c2VySW5zcGVjdG9yQ2xhc3MsIGNyZWF0ZV9uZXdfcGFnZSksCisgICAgICAgIG51bGxwdHIsIG51
bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorI2lmIFBMQVRGT1JN
KEdUSykKKyAgICAgICAgR1RLX1RZUEVfV0lER0VULAorI2Vsc2UKKyAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcsCisjZW5kaWYKKyAgICAgICAgMSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VC
X0NPTlRFWFQpOworfQorCitXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0QnJvd3Nlckluc3Bl
Y3RvckNyZWF0ZU5ld1BhZ2VJbkNvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3KiBuZXdXZWJWaWV3OworICAgIGdfc2lnbmFsX2VtaXQod2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF9kZWZhdWx0KCksIHNpZ25hbHNbQ1JFQVRFX05FV19QQUdF
XSwgMCwgY29udGV4dCwgJm5ld1dlYlZpZXcpOworICAgIGlmICghbmV3V2ViVmlldykKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZ3ZWJraXRXZWJWaWV3R2V0UGFnZShuZXdX
ZWJWaWV3KTsKK30KKworc3RhdGljIGdwb2ludGVyIGNyZWF0ZVdlYktpdEJyb3dzZXJJbnNwZWN0
b3IoZ3BvaW50ZXIpCit7CisgICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0QnJvd3Nlckluc3BlY3Rv
cj4gYnJvd3Nlckluc3BlY3RvciA9IGFkb3B0R1JlZihXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1Io
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBudWxscHRyKSkpOwor
ICAgIHJldHVybiBicm93c2VySW5zcGVjdG9yLmdldCgpOworfQorCisvKioKKyAqIHdlYmtpdF9i
cm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdDoKKyAqCisgKiBHZXRzIHRoZSBkZWZhdWx0IGlu
c3RhbmNlIG9mIHRoZSBicm93c2VyIGluc3BlY3Rvci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgbm9uZSk6IGEgI1dlYktpdEJyb3dzZXJJbnNwZWN0b3IKKyAqLworV2ViS2l0QnJvd3Nlcklu
c3BlY3Rvciogd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF9kZWZhdWx0KHZvaWQpCit7Cisg
ICAgc3RhdGljIEdPbmNlIG9uY2VJbml0ID0gR19PTkNFX0lOSVQ7CisgICAgcmV0dXJuIFdFQktJ
VF9CUk9XU0VSX0lOU1BFQ1RPUihnX29uY2UoJm9uY2VJbml0LCBjcmVhdGVXZWJLaXRCcm93c2Vy
SW5zcGVjdG9yLCAwKSk7Cit9CisKKy8qKgorICogd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2lu
aXRpYWxpemVfcGlwZToKKyAqCisgKiBDcmVhdGVzIGJyb3dzZXIgaW5zcGVjdG9yIGFuZCBjb25m
aWd1cmVzIHBpcGUgaGFuZGxlciB0byBjb21tdW5pY2F0ZSB3aXRoCisgKiB0aGUgcGFyZW50IHBy
b2Nlc3MuCisgKi8KK3ZvaWQgd2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlw
ZSh2b2lkKQoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIFdlYktpdDo6aW5p
dGlhbGl6ZUJyb3dzZXJJbnNwZWN0b3JQaXBlKCk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRCcm93c2VySW5z
cGVjdG9yUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOWFmZWFjOTlhNjI3N2Y4YjBlMDU4MzM2N2Fj
MzNlZjJmZTk5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYktpdEJyb3dz
ZXJJbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworV2ViS2l0OjpXZWJQ
YWdlUHJveHkqIHdlYmtpdEJyb3dzZXJJbnNwZWN0b3JDcmVhdGVOZXdQYWdlSW5Db250ZXh0KFdl
YktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRCcm93c2VySW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlODIwNGE5Yjg5
NjFlZmYwNzU0OTA2ODQ5ZDZlZGMzMDI5NmU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5T
SURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdl
YmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNp
Zm5kZWYgV2ViS2l0QnJvd3Nlckluc3BlY3Rvcl9oCisjZGVmaW5lIFdlYktpdEJyb3dzZXJJbnNw
ZWN0b3JfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXcuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SICAgICAg
ICAgICAgKHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJL
SVRfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dz
ZXJJbnNwZWN0b3IpKQorI2RlZmluZSBXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1Iob2JqKSAg
ICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQlJP
V1NFUl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
QlJPV1NFUl9JTlNQRUNUT1IsIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcykpCisjZGVmaW5l
IFdFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19D
TEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUikpCisjZGVm
aW5lIFdFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2Vi
S2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dz
ZXJJbnNwZWN0b3IgICAgICAgIFdlYktpdEJyb3dzZXJJbnNwZWN0b3I7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNs
YXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlIFdlYktp
dEJyb3dzZXJJbnNwZWN0b3JQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvclBy
aXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcyB7
CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIFdlYktpdFdlYlZpZXcgKigq
IGNyZWF0ZV9uZXdfcGFnZSkgICAgICAgICAgIChXZWJLaXRCcm93c2VySW5zcGVjdG9yICAgICpi
cm93c2VyX2luc3BlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAqY29udGV4dCk7CisKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5
cGUKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAg
ICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRCcm93c2VySW5zcGVjdG9yICoKK3dlYmtpdF9i
cm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCAgICAgICAgICAgICAgICAgICh2b2lkKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfaW5pdGlhbGl6ZV9waXBl
ICAgICAgICAgICAgICAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggNTg1NmNjNDQ3NDkyMzQ3NDRkOWRlNDVhMTgwNjVl
OTgxZjdiZGQ2OC4uNDc2YjM2OWNkMDc0MWQ2MjE1ZDdlMTYxZjFkNjUxNmE1NDZlMWU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xNzc0LDMgKzE3NzQsMjMgQEAgV0VC
S0lUX1VTRVJfTUVTU0FHRV9HRVRfQ0xBU1MKIFdlYktpdFVzZXJNZXNzYWdlUHJpdmF0ZQogd2Vi
a2l0X3VzZXJfbWVzc2FnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxF
PldlYktpdEJyb3dzZXJJbnNwZWN0b3I8L0ZJTEU+CitXZWJLaXRCcm93c2VySW5zcGVjdG9yCit3
ZWJraXRfYnJvd3Nlcl9pbnNwZWN0b3JfZ2V0X2RlZmF1bHQKK3dlYmtpdF9icm93c2VyX2luc3Bl
Y3Rvcl9pbml0aWFsaXplX3BpcGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRCcm93
c2VySW5zcGVjdG9yQ2xhc3MKK1dFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SCitXRUJLSVRf
QlJPV1NFUl9JTlNQRUNUT1IKK1dFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUgorV0VCS0lUX0JS
T1dTRVJfSU5TUEVDVE9SX0NMQVNTCitXRUJLSVRfSVNfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1MK
K1dFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0
ZT4KK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZQorV2ViS2l0QnJvd3Nlckluc3Bl
Y3RvclByaXZhdGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC50eXBlcwppbmRleCBhZDViMDI2YjY3
Y2JjYmE0NGQ5MzdlNGU0YzMzYmFmZjAzMWM4MTkwLi44YWEzMTljOTBiNDBjOWJkZGRhZTY2ZmI4
MjA5M2E0MTQwMjI0NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAudHlwZXMKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLnR5cGVzCkBAIC00MSw0ICs0MSw1IEBAIHdl
YmtpdF9vcHRpb25fbWVudV9nZXRfdHlwZQogd2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3R5
cGUKIHdlYmtpdF9kZXZpY2VfaW5mb19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X3R5cGUKIHdlYmtp
dF9nZW9sb2NhdGlvbl9tYW5hZ2VyX2dldF90eXBlCi13ZWJraXRfZ2VvbG9jYXRpb25fcG9zaXRp
b25fZ2V0X3R5cGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXRfZ2VvbG9jYXRp
b25fcG9zaXRpb25fZ2V0X3R5cGUKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfdHlwZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA1ZGFhYjA4
NmU4N2I1NTc2ODViMjE3N2EzNjg0ZDUwOGEyZWUzMzBjLi4yMzJhZmQwOTZiMmNjNjY4NWRkMThi
ZTljZDM3NzQzMzIzNmVjYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC02NCw2ICs2NCw3IEBA
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEFwcGxpY2F0aW9uSW5mby54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLnhtbCIv
PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRVc2VyTWVzc2FnZS54bWwiLz4KKyAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci54bWwiLz4KICAg
PC9jaGFwdGVyPgogCiAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaAppbmRleCAxNmVmN2ViNmQ0MjdhOGQxNWE2OGM1ZDQ1MDI5Y2NkNGUzYjI2Mzdj
Li5lYjM3NTliMDViYjI4MTdjNDM1Yjk1YWM5Y2Q4MWMxNjJmY2IyNDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0Zv
cndhcmRMaXN0SXRlbS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0Q29udGV4dE1lbnVJdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0QnJvd3Nlckluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDE1YzA4
ZWRmNDIyMDMzZDU2NWEyMTNkYzliOWM4YzcyYjFlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0b3IuaApAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZu
ZGVmIFdlYktpdEJyb3dzZXJJbnNwZWN0b3JfaAorI2RlZmluZSBXZWJLaXRCcm93c2VySW5zcGVj
dG9yX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdERl
ZmluZXMuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlldy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQlJPV1NFUl9JTlNQRUNUT1IgICAgICAgICAgICAod2Vi
a2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9CUk9XU0VS
X0lOU1BFQ1RPUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BFQ1RPUiwgV2ViS2l0QnJvd3Nlckluc3BlY3Rv
cikpCisjZGVmaW5lIFdFQktJVF9JU19CUk9XU0VSX0lOU1BFQ1RPUihvYmopICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9CUk9XU0VSX0lOU1BF
Q1RPUikpCisjZGVmaW5lIFdFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgICAg
KEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9CUk9XU0VSX0lO
U1BFQ1RPUiwgV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lT
X0JST1dTRVJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SKSkKKyNkZWZpbmUgV0VCS0lU
X0JST1dTRVJfSU5TUEVDVE9SX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9D
TEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0JST1dTRVJfSU5TUEVDVE9SLCBXZWJLaXRCcm93c2Vy
SW5zcGVjdG9yQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3Rv
ciAgICAgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRC
cm93c2VySW5zcGVjdG9yQ2xhc3MgICBXZWJLaXRCcm93c2VySW5zcGVjdG9yQ2xhc3M7Cit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvclByaXZhdGUgV2ViS2l0QnJvd3Nlcklu
c3BlY3RvclByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvciB7CisgICAg
R09iamVjdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0QnJvd3Nlckluc3BlY3RvckNsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgV2ViS2l0V2ViVmlldyAqKCogY3JlYXRlX25l
d19wYWdlKSAgICAgICAgICAgKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgICAgKmJyb3dzZXJfaW5z
cGVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICpjb250ZXh0KTsKKworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0
X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwor
CitXRUJLSVRfQVBJIFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKgord2Via2l0X2Jyb3dzZXJfaW5z
cGVjdG9yX2dldF9kZWZhdWx0ICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUgICAgICAgICAg
ICAgICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5k
ZXggNjc5MDNmNWQ4NjI0ZTg4ZTVkNWFkNGUzYmY5OWZkMTRlM2RiNWFkZC4uZGExNDEwOWU3MGEz
MTFiZDI1YzIxZWQwM2I3ODQ4NWUyYWVkMzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAtMTQ0
MiwzICsxNDQyLDIzIEBAIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BPU0lUSU9OCiA8RklMRT5X
ZWJLaXRVUklVdGlsaXRpZXM8L0ZJTEU+CiB3ZWJraXRfdXJpX2Zvcl9kaXNwbGF5CiA8L1NFQ1RJ
T04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0QnJvd3Nlckluc3BlY3RvcjwvRklMRT4KK1dl
YktpdEJyb3dzZXJJbnNwZWN0b3IKK3dlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVs
dAord2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZQorCis8U1VCU0VDVElP
TiBTdGFuZGFyZD4KK1dlYktpdEJyb3dzZXJJbnNwZWN0b3JDbGFzcworV0VCS0lUX1RZUEVfQlJP
V1NFUl9JTlNQRUNUT1IKK1dFQktJVF9CUk9XU0VSX0lOU1BFQ1RPUgorV0VCS0lUX0lTX0JST1dT
RVJfSU5TUEVDVE9SCitXRUJLSVRfQlJPV1NFUl9JTlNQRUNUT1JfQ0xBU1MKK1dFQktJVF9JU19C
Uk9XU0VSX0lOU1BFQ1RPUl9DTEFTUworV0VCS0lUX0JST1dTRVJfSU5TUEVDVE9SX0dFVF9DTEFT
UworCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X2Jyb3dzZXJfaW5zcGVjdG9yX2dldF90
eXBlCitXZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZQorPC9TRUNUSU9OPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvd2Via2l0LmgKaW5kZXggOWNjMzFjYjQ5NjhmNTRiNmQzMWZj
ZTIzOWI2MmQwOWMzNzQ0NGVhYi4uOTMwNDk5ZTY1YjYwYWVjYjA3Zjk2OWNjMjczYzdjNTlhNDU0
NzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRC
YWNrRm9yd2FyZExpc3RJdGVtLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdEJyb3dzZXJJbnNwZWN0
b3IuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0Q29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdENvbnRleHRN
ZW51SXRlbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZmU2MTEwZmFjZDJhOTgyZjEwNzU3
ZTE4ODI3NDk1MzJkMTc2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1p
Y3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aW5jbHVkZSAiQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQnJvd3NlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50
LmgiCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFZlY3RvcjxX
ZWJQYWdlUHJveHkqPiBhbGxQYWdlcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcmVzdWx0OworICAgIGZvciAoV2ViUHJvY2Vzc1Bv
b2wqIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kUmFuZ2UocHJvY2Vzcy0+cGFnZXMoKS5iZWdpbigpLCBwcm9jZXNzLT5wYWdlcygp
LmVuZCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OkJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKKyAgICA6IG1fZnJvbnRl
bmRDaGFubmVsKG51bGxwdHIpCisgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVy
OjpjcmVhdGUoKSkKKyAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCisgICAgLCBtX2Jyb3dzZXJBZ2VudENsaWVudChJbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQ6OmNyZWF0ZSgpKQorI2VuZGlmCit7CisjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
QnJvd3NlckFnZW50PihtX2JhY2tlbmREaXNwYXRjaGVyLCBtX2Jyb3dzZXJBZ2VudENsaWVudC5n
ZXQoKSkpOworI2VuZGlmCisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8QnJvd3Nlcklu
c3BlY3RvclRhcmdldEFnZW50PihtX2JhY2tlbmREaXNwYXRjaGVyKSk7Cit9CisKK0Jyb3dzZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjp+QnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKSA9IGRlZmF1
bHQ7CisKK3ZvaWQgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChG
cm9udGVuZENoYW5uZWwmIGZyb250ZW5kQ2hhbm5lbCkKK3sKKyAgICBBU1NFUlQoIW1fZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9ICZmcm9udGVuZENoYW5uZWw7Cisg
ICAgLy8gQXV0by1jb25uZWN0IHRvIGFsbCBuZXcgcGFnZXMuCisgICAgV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXI6OnNldENyZWF0aW9uTGlzdGVuZXIoW3RoaXNdKFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKSB7CisgICAgICAgIGluc3BlY3RvckNvbnRy
b2xsZXIuY29ubmVjdEZyb250ZW5kKCptX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgfSk7CisKKyAg
ICBib29sIGNvbm5lY3RpbmdGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zy
b250ZW5kcygpOworICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVu
ZENoYW5uZWwpOworICAgIGlmIChjb25uZWN0aW5nRmlyc3RGcm9udGVuZCkKKyAgICAgICAgbV9h
Z2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgp
LCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisKKyAgICBjb25uZWN0VG9BbGxQYWdlcygp
OworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRl
bmQoKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgZGlzY29ubmVjdEZy
b21BbGxQYWdlcygpOworCisgICAgbV9mcm9udGVuZFJvdXRlci0+ZGlzY29ubmVjdEZyb250ZW5k
KCptX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgaWYgKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9u
dGVuZHMoKSkKKyAgICAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKworICAgIFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZXRDcmVhdGlvbkxpc3RlbmVyKG51bGxwdHIpOworICAgIG1fZnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKK30KKwordm9pZCBCcm93c2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKK30KKwordm9p
ZCBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdFRvQWxsUGFnZXMoKQoreworICAg
IGZvciAoYXV0byogcGFnZSA6IGFsbFBhZ2VzKCkpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKm1fZnJvbnRlbmRDaGFubmVsKTsKK30KKwordm9p
ZCBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21BbGxQYWdlcygpCit7
CisgICAgZm9yIChhdXRvKiBwYWdlIDogYWxsUGFnZXMoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgqbV9mcm9udGVuZENoYW5uZWwpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0
b3JDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlYWNjNTc5OGFmNWQ5MjVhOTk4NjZjYjBmOGUy
ZjQwNWRiZjUxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jy
b3dzZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENv
cnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5k
Q2hhbm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50OworCitjbGFzcyBCcm93c2VySW5z
cGVjdG9yQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnJvd3Nlckluc3Bl
Y3RvckNvbnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgfkJyb3dzZXJJbnNwZWN0b3JD
b250cm9sbGVyKCk7CisKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCYpOworICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworcHJp
dmF0ZToKKyAgICBjbGFzcyBUYXJnZXRIYW5kbGVyOworICAgIHZvaWQgY29ubmVjdFRvQWxsUGFn
ZXMoKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tQWxsUGFnZXMoKTsKKworICAgIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbCB7IG51bGxwdHIgfTsKKyAgICBS
ZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKKyAgICBSZWY8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50PiBtX2Jyb3dzZXJBZ2Vu
dENsaWVudDsKKyAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBp
cGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlckluc3BlY3RvclBpcGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmYxYTU4OWZkOGY3YmFkZjA1ZTFiZjM3OTNmNzM2M2Y0MjlhNjc5MTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9y
UGlwZS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNaWNy
b3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9zb2Z0IENvcnBvcmF0aW9uIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yUGlwZS5oIgorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJCcm93c2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvclBpcGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgaW5pdGlhbGl6ZUJy
b3dzZXJJbnNwZWN0b3JQaXBlKCkKK3sKKyAgICBjbGFzcyBCcm93c2VySW5zcGVjdG9yUGlwZSB7
CisgICAgcHVibGljOgorICAgICAgICBCcm93c2VySW5zcGVjdG9yUGlwZSgpCisgICAgICAgICAg
ICA6IG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIoKQorICAgICAgICAgICAgLCBtX3JlbW90
ZUluc3BlY3RvclBpcGUobV9icm93c2VySW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIgbV9icm93c2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yUGlwZSBtX3JlbW90
ZUluc3BlY3RvclBpcGU7CisgICAgfTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCcm93
c2VySW5zcGVjdG9yUGlwZT4gcGlwZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Jyb3dzZXJJbnNwZWN0b3JQaXBlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyYjRiZjU3YTI2NWJiODA0
ZWY5ZTkzZTMzMjBjZDY2M2JjNDM0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yUGlwZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jv
c29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBpbml0aWFsaXplQnJvd3Nlckluc3BlY3Rv
clBpcGUoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Jyb3dz
ZXJJbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93
c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MDllNDdjZTVhZDgyOTYz
ZjFkY2QyODI4MzI4ZWUxN2Y0ZDQ4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ccm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJv
d3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgiCisKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSB7CisKK0luc3BlY3RvclRhcmdldCog
dGFyZ2V0Rm9ySWQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGZvciAoYXV0byogcG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9j
ZXNzUG9vbHMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwb29sLT5wcm9jZXNz
ZXMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBwYWdlIDogcHJvY2Vzcy0+cGFnZXMoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8qIHJlc3VsdCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5maW5kVGFyZ2V0KHRhcmdldElkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9
IG51bGxwdHIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlCisKK0Jyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6QnJvd3Nlckluc3BlY3RvclRh
cmdldEFnZW50KEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihU
YXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
K3sKK30KKworQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50Ojp+QnJvd3Nlckluc3BlY3RvclRh
cmdldEFnZW50KCkgPSBkZWZhdWx0OworCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERp
c3BhdGNoZXIqKQoreworfQorCit2b2lkIEJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKK3sKK30KKwordm9p
ZCBCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JT
dHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHRhcmdldElELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgYXV0byogdGFyZ2V0ID0gdGFyZ2V0Rm9ySWQodGFyZ2V0SUQpOworICAgIGlm
ICh0YXJnZXQgPT0gbnVsbHB0cikgeworICAgICAgICBlcnJvciA9ICJDYW5ub3QgZmluZCB0YXJn
ZXQgd2l0aCBwcm92aWRlZCBpZC4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRhcmdl
dC0+c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQobWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQnJvd3Nlcklu
c3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ccm93c2VySW5z
cGVjdG9yVGFyZ2V0QWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTU5YTVjM2QyZjRjOThhZjY1MGUxMTRl
ZmZkMDQ0NTVjYzg5MDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQnJvd3Nlckluc3BlY3RvclRhcmdldEFnZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWljcm9z
b2Z0IENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yQWdlbnRCYXNlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEJyb3dzZXJJ
bnNwZWN0b3JUYXJnZXRBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6VGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCcm93c2VySW5zcGVjdG9yVGFyZ2V0QWdlbnQp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEJy
b3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJik7
CisgICAgfkJyb3dzZXJJbnNwZWN0b3JUYXJnZXRBZ2VudCgpIG92ZXJyaWRlOworCisgICAgLy8g
SW5zcGVjdG9yQWdlbnRCYXNlCisgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisKKyAgICAvLyBUYXJnZXRCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmVmPEluc3BlY3Rvcjo6VGFyZ2V0QmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24u
aAppbmRleCBiNjY5NGZlOTA2ZWEwYjRmODJhNTQwNjYyY2M4NTUwYjJmZTFhNWQyLi41OWY5M2M3
OTE2N2QzZDM5MmI0NmZmNTI0MzQ5NGIwMmFmMDczNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWYg
SEFWRShBUFBfU1NPKQogCiAjaW5jbHVkZSAiU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKIE9CSkNfQ0xBU1MgV0tTT1NlY3JldERlbGVnYXRlOwogT0JKQ19DTEFTUyBXS1dlYlZpZXc7
CkBAIC0zOCw2ICs0MCw4IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBXZWJQYWdlUHJveHk7CisKIC8vIEZTTTogSWRsZSA9PiBBY3RpdmUg
PT4gQ29tcGxldGVkCiBjbGFzcyBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24gZmluYWwgOiBw
dWJsaWMgU09BdXRob3JpemF0aW9uU2Vzc2lvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAwNzZjZmFhNjc2YTc0
YzRmMzM2MDFmZjY2NDRkZWM1ZTViNTYxY2ExLi4wZjE4MDM4ZGU5ODllNjlhODQzMmM4NWI3MWI2
YzA0ZTkzMTMwMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXph
dGlvblNlc3Npb24ubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIKICNpbXBvcnQgIldL
V2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhMjljNDY3MjQ4ODBjYjJkYjNiNWUyZDhkMDkxNzg5ZTExM2M1ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2VyQWdl
bnQuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jv
c29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudC5oIgorCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0hleE51
bWJlci5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworSW5zcGVjdG9yQnJvd3NlckFnZW50OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQoSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvckJyb3dz
ZXJBZ2VudENsaWVudCogY2xpZW50KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJCcm93c2Vy
Il9zKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCcm93c2VyQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX2NsaWVudChjbGllbnQp
Cit7Cit9CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudDo6fkluc3BlY3RvckJyb3dzZXJBZ2VudCgp
ID0gZGVmYXVsdDsKKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikKK3sKK30K
Kwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKERpc2Nvbm5lY3RSZWFzb24pCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50
OjpjbG9zZShFcnJvclN0cmluZyYgZXJyb3IpCit7CisgICAgaWYgKG1fY2xpZW50ID09IG51bGxw
dHIpCisgICAgICAgIGVycm9yID0gIm5vIHBsYXRmb3JtIGRlbGVnYXRlIHRvIGNsb3NlIGJyb3dz
ZXIiOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlQWxsV2luZG93cygpOworfQor
Cit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6Y3JlYXRlQ29udGV4dChFcnJvclN0cmluZyYg
ZXJyb3IsIFN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBtX2NsaWVudC0+Y3JlYXRl
QnJvd3NlckNvbnRleHQoZXJyb3IsIGJyb3dzZXJDb250ZXh0SUQpOworfQorCit2b2lkIEluc3Bl
Y3RvckJyb3dzZXJBZ2VudDo6ZGVsZXRlQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0
IFN0cmluZyYgYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBtX2NsaWVudC0+ZGVsZXRlQnJvd3Nl
ckNvbnRleHQoZXJyb3IsIGJyb3dzZXJDb250ZXh0SUQpOworfQorCit2b2lkIEluc3BlY3RvckJy
b3dzZXJBZ2VudDo6Y3JlYXRlUGFnZShFcnJvclN0cmluZyYgZXJyb3IsIGNvbnN0IFN0cmluZyog
YnJvd3NlckNvbnRleHRJRCwgU3RyaW5nKiB0YXJnZXRJRCkKK3sKKyAgICBSZWZQdHI8V2ViUGFn
ZVByb3h5PiBwYWdlID0gbV9jbGllbnQtPmNyZWF0ZVBhZ2UoZXJyb3IsIGJyb3dzZXJDb250ZXh0
SUQpOworICAgIGlmIChwYWdlID09IG51bGxwdHIpCisgICAgICAgIHJldHVybjsKKworICAgICp0
YXJnZXRJRCA9IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OnRvVGFyZ2V0SUQocGFnZS0+d2ViUGFn
ZUlEKCkpOworfQorCitTdHJpbmcgSW5zcGVjdG9yQnJvd3NlckFnZW50Ojp0b0Jyb3dzZXJDb250
ZXh0SURQcm90b2NvbFN0cmluZyhjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRT
aXplKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBidWlsZGVyLCAxNik7CisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yQnJvd3NlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI0YzY1NWFiMzlkYWM3YzI2YTIyMzQ1
NWQ4Y2YwYjQ4OTAyMDY3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBD
b3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5kQ2hh
bm5lbDsKK2NsYXNzIEZyb250ZW5kUm91dGVyOworfQorCituYW1lc3BhY2UgUEFMIHsKK2NsYXNz
IFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudDsKK2NsYXNzIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOworCitj
bGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckJyb3dzZXJBZ2Vu
dCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSW5zcGVjdG9y
QnJvd3NlckFnZW50KEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JCcm93
c2VyQWdlbnRDbGllbnQqKTsKKyAgICB+SW5zcGVjdG9yQnJvd3NlckFnZW50KCkgb3ZlcnJpZGU7
CisKKyAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKworICAgIC8vIEJy
b3dzZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIGNsb3NlKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIFN0cmluZyogYnJvd3NlckNvbnRleHRJRCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWxldGVDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlUGFnZShJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nKiBicm93c2VyQ29udGV4dElELCBTdHJpbmcq
IHRhcmdldElkKSBvdmVycmlkZTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9Ccm93c2VyQ29udGV4
dElEUHJvdG9jb2xTdHJpbmcoY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKworcHJpdmF0ZToKKyAg
ICBSZWY8SW5zcGVjdG9yOjpCcm93c2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KiBtX2NsaWVudDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JCcm93c2Vy
QWdlbnRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NWUwYzQ5MjI5ZWZiMGVlYTk2NGEzOTAzMjVmZTNj
MzdmMzNkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNaWNyb3NvZnQgQ29y
cG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudCB7CitwdWJsaWM6
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQ+IGNyZWF0ZSgpOworI2VuZGlmCisg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50KCkgPSBkZWZhdWx0OworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6U3Ry
aW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVCcm93c2VyQ29udGV4dChXVEY6OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5nKiBicm93
c2VyQ29udGV4dElEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJyb3dzZXJDb250ZXh0
KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAppbmRleCA3ZGJjZWY5ZDFkNTUzNWE4MzU0ZDdiYWUwYzYwMTFhMGE1MWI5MTM3
Li44YmY5NzYyMzc5YzM5MDQ1OTQxMmZiNDA1MWEzODBlODQ1MjU2ZTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTM0LDYgKzM0LDEx
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgTmF2aWdhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlSW5zcGVjdG9yUGlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FkMzJlN2JlNDIzODhl
OTFhOGFjMzlhNzQwMDEyOTNiZjEwNWViMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBN
aWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvclBpcGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKwor
I2lmIE9TKFVOSVgpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNl
bHNlCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgaW50IHJlYWRGRCA9IDM7CitzdGF0aWMgY29u
c3QgaW50IHdyaXRlRkQgPSA0OworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JQaXBlOjpSZW1vdGVG
cm9udGVuZENoYW5uZWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFJlbW90ZUZyb250ZW5kQ2hh
bm5lbCgpCisgICAgICAgIDogbV9zZW5kZXJRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiSW5zcGVj
dG9yIHBpcGUgd3JpdGVyIikpCisgICAgeworICAgIH0KKworICAgIH5SZW1vdGVGcm9udGVuZENo
YW5uZWwoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0
aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gQ29ubmVjdGlv
blR5cGU6OlJlbW90ZTsKKyAgICB9CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3NlbmRlclF1
ZXVlLT5kaXNwYXRjaChbbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKCkgeworI2lm
IE9TKFVOSVgpCisgICAgICAgICAgICBkcHJpbnRmKHdyaXRlRkQsICIlcyVjIiwgbWVzc2FnZS5h
c2NpaSgpLmRhdGEoKSwgJ1wwJyk7CisjZWxzZQorICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyNlbmRpZgorICAgICAgICB9KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmPFdvcmtR
dWV1ZT4gbV9zZW5kZXJRdWV1ZTsKK307CisKK1JlbW90ZUluc3BlY3RvclBpcGU6OlJlbW90ZUlu
c3BlY3RvclBpcGUoQnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXImIGJyb3dzZXJJbnNwZWN0b3JD
b250cm9sbGVyKQorICAgIDogbV9yZW1vdGVGcm9udGVuZENoYW5uZWwobWFrZVVuaXF1ZTxSZW1v
dGVGcm9udGVuZENoYW5uZWw+KCkpCisgICAgLCBtX2Jyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVy
KGJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyKQoreworICAgIHN0YXJ0KCk7Cit9CisKK1JlbW90
ZUluc3BlY3RvclBpcGU6On5SZW1vdGVJbnNwZWN0b3JQaXBlKCkKK3sKKyAgICBzdG9wKCk7Cit9
CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yUGlwZTo6c3RhcnQoKQoreworICAgIGlmIChtX3JlY2Vp
dmVyVGhyZWFkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG1fYnJvd3Nlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY29ubmVjdEZyb250ZW5kKCptX3JlbW90ZUZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV90ZXJtaW5hdGVkID0gZmFsc2U7CisgICAgbV9yZWNlaXZlclRocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCJJbnNwZWN0b3IgcGlwZSByZWFkZXIiLCBbdGhpc10geworICAgICAgICB3b3JrZXJS
dW4oKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3JQaXBlOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcmVjZWl2ZXJUaHJlYWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXIuZGlzY29ubmVjdEZyb250
ZW5kKCk7CisKKyAgICBtX3Rlcm1pbmF0ZWQgPSB0cnVlOworICAgIG1fcmVjZWl2ZXJUaHJlYWQt
PndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9yZWNlaXZlclRocmVhZCA9IG51bGxwdHI7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yUGlwZTo6d29ya2VyUnVuKCkKK3sKKyNpZiBPUyhVTklY
KQorICAgIGNvbnN0IHNpemVfdCBidWZTaXplID0gMjU2ICogMTAyNDsKKyAgICBhdXRvIGJ1ZmZl
ciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihidWZTaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gbGlu
ZTsKKyAgICB3aGlsZSAoIW1fdGVybWluYXRlZCkgeworICAgICAgICBzc2l6ZV90IHNpemUgPSBy
ZWFkKHJlYWRGRCwgYnVmZmVyLmdldCgpLCBidWZTaXplKTsKKyAgICAgICAgaWYgKCFzaXplKSB7
CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBpcGUgY2xvc2VkIGZvciByZWFkaW5nLlxu
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA8IDAp
IHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgcmVhZGluZyBmcm9tIHBpcGU6
ICVkXG4iLCBlcnJubyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBz
aXplX3Qgc3RhcnQgPSAwOworICAgICAgICBzaXplX3QgZW5kID0gbGluZS5zaXplKCk7CisgICAg
ICAgIGxpbmUuYXBwZW5kKGJ1ZmZlci5nZXQoKSwgc2l6ZSk7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBmb3IgKDsgZW5kIDwgbGluZS5zaXplKCk7ICsrZW5kKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGxpbmVbZW5kXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmQgPT0gbGluZS5zaXplKCkp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkg
eworICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChsaW5l
LmRhdGEoKSArIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBtZXNzYWdlXSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghbV90ZXJtaW5hdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9icm93c2VySW5zcGVj
dG9yQ29udHJvbGxlci5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2VuZDsKKyAgICAg
ICAgICAgIHN0YXJ0ID0gZW5kOworICAgICAgICB9CisgICAgICAgIGlmIChzdGFydCAmJiBzdGFy
dCA8IGxpbmUuc2l6ZSgpKQorICAgICAgICAgICAgbWVtbW92ZShsaW5lLmRhdGEoKSwgbGluZS5k
YXRhKCkgKyBzdGFydCwgbGluZS5zaXplKCkgLSBzdGFydCk7CisgICAgICAgIGxpbmUuc2hyaW5r
KGxpbmUuc2l6ZSgpIC0gc3RhcnQpOworICAgIH0KKyNlbHNlCisgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworI2VuZGlmIC8vIE9TKFVOSVgpCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVJbnNwZWN0b3JQaXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiMDYyMjU1N2Nh
YTgxOTU0YmE4OTE1MDE4OTdhMTliODUyZGM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUluc3BlY3RvclBpcGUuaApAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBN
aWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEZyb250ZW5kQ2hhbm5lbDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEJyb3dz
ZXJJbnNwZWN0b3JDb250cm9sbGVyOworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JQaXBlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVJbnNwZWN0b3JQaXBlKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVJbnNwZWN0b3JQ
aXBlKEJyb3dzZXJJbnNwZWN0b3JDb250cm9sbGVyJik7CisgICAgflJlbW90ZUluc3BlY3RvclBp
cGUoKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBSZW1vdGVGcm9udGVuZENoYW5uZWw7CisKKyAg
ICBib29sIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lkIHdvcmtlclJ1bigp
OworCisgICAgUmVmUHRyPFRocmVhZD4gbV9yZWNlaXZlclRocmVhZDsKKyAgICBzdGQ6OmF0b21p
Yzxib29sPiBtX3Rlcm1pbmF0ZWQgeyBmYWxzZSB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9yZW1vdGVGcm9udGVuZENoYW5uZWw7CisgICAgQnJv
d3Nlckluc3BlY3RvckNvbnRyb2xsZXImIG1fYnJvd3Nlckluc3BlY3RvckNvbnRyb2xsZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDZmMzcxZDdl
MzZmYTFmYTQyZmNkZmY0M2VmMWQ4NjA4MDY2MTI1ZmUuLjM2MzU1YmZjNzIyNzJkMTZhNDA0Y2Rh
YTJlMmU2MThmZDUwOTBhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZmNTZXJ2aWNlLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNw
b3J0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9GaWRvQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcAppbmRleCA2ZjdmYjUzZTY1MmEy
YzE3MjMxM2JhMmVmMzBjMjA4OWQ5NzQzMTllLi42YjUxYmY5OTNkM2FkMTgxOGZhNTA0ZjU4ZWE1
Y2FlOWE2NTM4ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0ZpZG9BdXRoZW50aWNhdG9yLmNwcApA
QCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAorI2luY2x1ZGUgIkN0
YXBEcml2ZXIuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEZpZG9BdXRoZW50aWNhdG9yOjpG
aWRvQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcERyaXZlcj4mJiBkcml2ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYjlhOTQ2OWFiNTkxMzZmOWU5YTM3MzZiZmRiMGU5ZDUyOWMwZmJjZS4u
YWY5NTU5YmFiZDQ4MzYyYjJhNzU1ZGMyZTAzYWVkN2EyY2M3YjM0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQu
aCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1l
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmgiCkBAIC00NiwyNiAr
NDcsNjAgQEAgc3RhdGljIFN0cmluZyBnZXRUYXJnZXRJRChjb25zdCBQcm92aXNpb25hbFBhZ2VQ
cm94eSYgcHJvdmlzaW9uYWxQYWdlKQogICAgIHJldHVybiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Ojp0b1RhcmdldElEKHByb3Zpc2lvbmFsUGFnZS53ZWJQYWdlSUQoKSk7CiB9CiAKK3N0YXRpYyBX
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Q3JlYXRpb25MaXN0ZW5lciYgY3JlYXRpb25MaXN0
ZW5lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjpDcmVhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lcjsKKyAgICByZXR1cm4gbGlzdGVuZXI7
Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENyZWF0aW9uTGlzdGVu
ZXIoQ3JlYXRpb25MaXN0ZW5lciBsaXN0ZW5lcikKK3sKKyAgICBjcmVhdGlvbkxpc3RlbmVyKCkg
PSBsaXN0ZW5lcjsKK30KKwogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQog
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJv
dXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPElu
c3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpKTsKKyAgICBTdHJpbmcgYnJvd3NlckNvbnRleHRJRDsKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKyAgICBicm93c2VyQ29udGV4dElEID0gSW5zcGVjdG9yQnJvd3Nl
ckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhwYWdlLnNlc3Npb25JRCgp
KTsKKyNlbmRpZgorICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclRh
cmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdl
dCgpLCBicm93c2VyQ29udGV4dElEKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2Vu
dC5nZXQoKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHRhcmdldEFnZW50KSk7CisK
KyAgICBpZiAoY3JlYXRpb25MaXN0ZW5lcigpKQorICAgICAgICBjcmVhdGlvbkxpc3RlbmVyKCko
KnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjppbml0KCkKIHsK
KyAgICAvLyB3aW5kb3cub3BlbiB3aWxsIGNyZWF0ZSBwYWdlIHdpdGggYWxyZWFkeSBydW5uaW5n
IHByb2Nlc3MuCisgICAgaWYgKCFtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAg
cmV0dXJuOwogICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Ojp0b1RhcmdldElEKG1fcGFnZS53ZWJQYWdlSUQoKSk7CiAgICAgY3JlYXRlSW5zcGVjdG9yVGFy
Z2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsK
IH0KIAordm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoQXR0YWNoaW5n
VG9XZWJQcm9jZXNzKCkKK3sKKyAgICBTdHJpbmcgcGFnZVRhcmdldElEID0gV2ViUGFnZUluc3Bl
Y3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3BhZ2Uud2ViUGFnZUlEKCkpOworICAgIC8vIENyZWF0
ZSB0YXJnZXQgb25seSBhZnRlciBhdHRhY2hpbmcgdG8gYSBXZWIgUHJvY2VzcyBmaXJzdCB0aW1l
LiBCZWZvcmUgdGhhdAorICAgIC8vIHdlIGNhbm5vdCBldmVudCBlc3RhYmxpc2ggZnJvbnRlbmQg
Y29ubmVjdGlvbi4KKyAgICBpZiAobV90YXJnZXRzLmNvbnRhaW5zKHBhZ2VUYXJnZXRJRCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBjcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElELCBJ
bnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOworfQorCiB2b2lkIFdlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpwYWdlQ2xvc2VkKCkKIHsKKyAgICBTdHJpbmcgcGFnZVRhcmdl
dElkID0gV2ViUGFnZUluc3BlY3RvclRhcmdldDo6dG9UYXJnZXRJRChtX3BhZ2Uud2ViUGFnZUlE
KCkpOworICAgIGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElkKTsKKwogICAgIGRp
c2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIG1fYWdlbnRzLmRpc2NhcmRWYWx1ZXMoKTsK
QEAgLTEzNCw2ICsxNjksMTEgQEAgdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
cGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2EKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKIH0KIAorSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXQqIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpmaW5kVGFyZ2V0KGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQpCit7CisgICAgcmV0dXJuIG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOwor
fQorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4
IDgyOGJjM2NjYzdlMDdkODEyMDMzNDMxYjI3YWU3ZjBiYzhjZjljNTQuLjIxYjI5MjBhMmFkMzE4
MWRlOWFkY2M1MmMwNzYxZDdkMGEzNWQwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDgsNiArNDgsMTEgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOwog
CiAgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBkaWRGaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nl
c3MoKTsKKworICAgIHVzaW5nIENyZWF0aW9uTGlzdGVuZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQo
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXImKT47CisgICAgc3RhdGljIHZvaWQgc2V0Q3JlYXRp
b25MaXN0ZW5lcihDcmVhdGlvbkxpc3RlbmVyKTsKKwogICAgIHZvaWQgcGFnZUNsb3NlZCgpOwog
CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CkBAIC01Nyw2ICs2Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RBbGxGcm9udGVuZHMoKTsKIAogICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgSW5z
cGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQqIGZpbmRUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJ
ZCk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICB2b2lkIHNldEluZGljYXRp
bmcoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4
ZWM4ZmFlNzRlM2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmLi4wMGQ5NmU3ZjYxNWY0ZGNh
ZmRjMDY2ZjExYzMxNTJjZDg5ZmU3MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTg2NSw2ICs4NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNo
QXR0YWNoaW5nVG9XZWJQcm9jZXNzKFByb2Nlc3NMYXVuY2hSZWFzb24gcmVhc29uKQogICAgIG1f
cGFnZUxvYWRTdGF0ZS5kaWRTd2FwV2ViUHJvY2Vzc2VzKCk7CiAgICAgaWYgKHJlYXNvbiAhPSBQ
cm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2VzcykKICAgICAgICAgbV9kcmF3aW5nQXJl
YS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CisgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kaWRGaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9JbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50R0xpYi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmNDI5ZjU1NmNkZDUxMTUwY2U2NGQ5YjRm
YTU4MjliODdjOGQzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5jcHAKQEAgLTAsMCArMSwxMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R0xpYi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKKyNpbmNsdWRlICJX
ZWJLaXRCcm93c2VySW5zcGVjdG9yUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRl
eHRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRl
ICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFZlY3RvcjxXZWJQYWdl
UHJveHkqPiBjb2xsZWN0UGFnZXMoT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkK
K3sKKyAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcmVzdWx0OworICAgIGZvciAoV2ViUHJvY2Vz
c1Bvb2wqIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcG9vbC0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byogcGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXNlc3Npb25JRCB8fCBwYWdlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocGFnZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgY2xvc2VBbGxQ
YWdlcyhPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQoreworICAgIFZlY3RvcjxX
ZWJQYWdlUHJveHkqPiBwYWdlcyA9IGNvbGxlY3RQYWdlcyhzZXNzaW9uSUQpOworICAgIGZvciAo
YXV0byogcGFnZSA6IHBhZ2VzKQorICAgICAgICBwYWdlLT5jbG9zZVBhZ2UoZmFsc2UpOworfQor
CitzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50PiBJbnNwZWN0b3JC
cm93c2VyQWdlbnRDbGllbnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYj4oKTsKK30KKworSW5zcGVjdG9yQnJvd3NlckFn
ZW50Q2xpZW50R2xpYjo6SW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYigpCit7Cit9CisK
K1JlZlB0cjxXZWJQYWdlUHJveHk+IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWI6OmNy
ZWF0ZVBhZ2UoV1RGOjpTdHJpbmcmIGVycm9yLCBjb25zdCBXVEY6OlN0cmluZyogYnJvd3NlckNv
bnRleHRJRCkKK3sKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl9j
b250ZXh0X2dldF9kZWZhdWx0KCk7CisgICAgaWYgKGJyb3dzZXJDb250ZXh0SUQgIT0gbnVsbHB0
cikgeworICAgICAgICBjb250ZXh0ID0gbV9pZFRvQ29udGV4dC5nZXQoKmJyb3dzZXJDb250ZXh0
SUQpOworICAgICAgICBpZiAoY29udGV4dCA9PSBudWxscHRyKSB7CisgICAgICAgICAgICBlcnJv
ciA9ICJDb250ZXh0IHdpdGggcHJvdmlkZWQgaWQgbm90IGZvdW5kIjsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+
IHBhZ2UgPSB3ZWJraXRCcm93c2VySW5zcGVjdG9yQ3JlYXRlTmV3UGFnZUluQ29udGV4dChjb250
ZXh0KTsKKyAgICBpZiAocGFnZSA9PSBudWxscHRyKQorICAgICAgICBlcnJvciA9ICJGYWlsZWQg
dG8gY3JlYXRlIG5ldyBwYWdlIGluIHRoZSBjb250ZXh0IjsKKyAgICByZXR1cm4gcGFnZTsKK30K
Kwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliOjpjbG9zZUFsbFdpbmRvd3Mo
KQoreworICAgIGNsb3NlQWxsUGFnZXMoT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KCkpOworICAg
IG1faWRUb0NvbnRleHQuY2xlYXIoKTsKKyAgICAvLyBGSVhNRSh5dXJ5cyk6IGNhbGwgZ19tYWlu
X2xvb3BfcXVpdCgpID8KK30KKworc3RhdGljIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JREZyb21D
b250ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyKiBkYXRhTWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXIoY29udGV4dCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFT
dG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShkYXRhTWFuYWdlcik7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUuc2Vzc2lvbklEKCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQnJvd3NlckFnZW50Q2xpZW50R2xpYjo6Y3JlYXRlQnJvd3NlckNvbnRleHQoV1RGOjpT
dHJpbmcmIGVycm9yLCBXVEY6OlN0cmluZyogYnJvd3NlckNvbnRleHRJRCkKK3sKKyAgICBHUmVm
UHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gbWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgpKTsKKyAgICBHUmVmUHRyPFdlYktp
dFdlYkNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwg
bWFuYWdlci5nZXQoKSwgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5h
YmxlZCIsIHRydWUsIG51bGxwdHIpKSk7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVy
cm9yID0gIkZhaWxlZCB0byBjcmVhdGUgR0xpYiBlcGhlbWVyYWwgY29udGV4dCI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gc2Vzc2lvbklE
RnJvbUNvbnRleHQoY29udGV4dC5nZXQoKSk7CisgICAgU3RyaW5nIGlkID0gSW5zcGVjdG9yQnJv
d3NlckFnZW50Ojp0b0Jyb3dzZXJDb250ZXh0SURQcm90b2NvbFN0cmluZyhzZXNzaW9uSUQpOwor
ICAgIG1faWRUb0NvbnRleHQuc2V0KGlkLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICAqYnJvd3Nl
ckNvbnRleHRJRCA9IGlkOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEds
aWI6OmRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3QgV1RGOjpT
dHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpCit7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJDb250ZXh0
PiBjb250ZXh0ID0gbV9pZFRvQ29udGV4dC50YWtlKGJyb3dzZXJDb250ZXh0SUQpOworICAgIGlm
IChjb250ZXh0ID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJyb3IgPSAiQ29udGV4dCB3aXRoIHBy
b3ZpZGVkIGlkIG5vdCBmb3VuZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2xvc2VB
bGxQYWdlcyhzZXNzaW9uSURGcm9tQ29udGV4dChjb250ZXh0LmdldCgpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJB
Z2VudENsaWVudEdMaWIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvSW5zcGVjdG9y
QnJvd3NlckFnZW50Q2xpZW50R0xpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZWZiNGM1NWIzYzc1MjhmZWMw
NTI3Y2JkZTcwN2Q3MzZhMWNmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL0luc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdMaWIuaApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBNaWNyb3NvZnQgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5o
IgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIgOiBwdWJsaWMgSW5zcGVj
dG9yQnJvd3NlckFnZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnRHbGliKCk7CisgICAgfkluc3Bl
Y3RvckJyb3dzZXJBZ2VudENsaWVudEdsaWIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVQYWdlKFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3Qg
V1RGOjpTdHJpbmcqIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VB
bGxXaW5kb3dzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVCcm93c2VyQ29udGV4dChXVEY6
OlN0cmluZyYgZXJyb3IsIFdURjo6U3RyaW5nKiBicm93c2VyQ29udGV4dElEKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRlbGV0ZUJyb3dzZXJDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3Qg
V1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IFdlYktpdFdlYkNvbnRleHQqIGZpbmRDb250ZXh0KFdURjo6U3RyaW5nJiBlcnJvciwgY29uc3Qg
V1RGOjpTdHJpbmcmIGJyb3dzZXJDb250ZXh0SUQpOworCisgICAgSGFzaE1hcDxTdHJpbmcsIEdS
ZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4+IG1faWRUb0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzcyYTEwMDlk
ODEwYjhiZDNhY2EwNTFlMmJiMjRjMzMxMTNhZWViOS4uZWEzMWNiY2M4YzQ0YTA3MTFkYzBlNDYz
MzQ3YTJjYzVmZDI3ZWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNjYyLDYgKzE2NjIsOSBAQAogCQlDRUU0QUUyQjFBNURDRjQz
MDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9
OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAw
MzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuaCAqLzsgfTsKKwkJRDcxQTk0MzQyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJy
b3dzZXJBZ2VudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRDcxQTk0MzMyMzcwRTA3QTAwMkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dENsaWVudC5oICovOyB9OworCQlENzFBOTQzODIzNzBGMDMyMDAyQzREOUUgLyogQnJvd3Nlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEQ3MUE5NDM3MjM3MEYwMzIwMDJDNEQ5RSAvKiBCcm93c2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oICovOyB9OworCQlENzFBOTQzQTIzNzBGMDYxMDAyQzREOUUgLyogUmVtb3RlSW5z
cGVjdG9yUGlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDcxQTk0MzkyMzcwRjA2MDAwMkM0RDlFIC8qIFJlbW90ZUluc3BlY3RvclBpcGUuaCAqLzsg
fTsKIAkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNUZFNTMxOEQ3QjlERTAw
OEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovOyB9OwogCQlFMTFEMzVBRTE2QjYzRDFCMDA2RDIz
RDcgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM3MTUwQUI1RTIwMEM3MzE2OSAvKiBjb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYiAqLzsgfTsKIAkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5l
dHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29y
a1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKQEAgLTQ2OTAsNiArNDY5MywxMCBA
QAogCQlEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBN
ZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBv
cHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRC
NjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUQ3MUE5NDJDMjM3MERGODEwMDJDNEQ5RSAvKiBXS0Jyb3dzZXJJbnNwZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2VySW5zcGVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3MUE5NDMzMjM3MEUwN0EwMDJDNEQ5RSAvKiBJ
bnNwZWN0b3JCcm93c2VyQWdlbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQ3MUE5NDM3MjM3MEYwMzIwMDJDNEQ5RSAvKiBCcm93c2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcm93c2VySW5zcGVj
dG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlENzFBOTQzOTIz
NzBGMDYwMDAyQzREOUUgLyogUmVtb3RlSW5zcGVjdG9yUGlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JQaXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYldoZWVsRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzUxMzcxQUNBMDAwRjlB
MzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50TWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTA1RkU1MzE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1Jhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzc5MSw2ICs3Nzk4LDcgQEAKIAkJCQlFMTUxM0M2
NTE2NkVBQkIyMDAxNDlGQ0IgLyogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggKi8sCiAJCQkJNDZB
MkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAgKi8sCiAJCQkJNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAorCQkJCUQ3MUE5NDM3MjM3MEYwMzIwMDJD
NEQ5RSAvKiBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oICovLAogCQkJCTA3Mjk3RjlDMUMx
NzExRUEwMDNGMDczNSAvKiBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgKi8sCiAJCQkJMDcy
OTdGOUQxQzE3QkJFQTIyM0YwNzM1IC8qIERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmggKi8sCiAJ
CQkJQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovLApA
QCAtNzgwNiw2ICs3ODE0LDcgQEAKIAkJCQkyREQ1QTcyQTFFQkYwOUE3MDA5QkE1OTcgLyogSGlk
ZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oICovLAogCQkJCTgzOUEyRjJG
MUUyMDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5j
cHAgKi8sCiAJCQkJODM5QTJGMzAxRTIwNjczOTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdy
YXBoaWNzVXNhZ2VTYW1wbGVyLmggKi8sCisJCQkJRDcxQTk0MzMyMzcwRTA3QTAwMkM0RDlFIC8q
IEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oICovLAogCQkJCUE1RTM5MUZCMjE4M0MxRTkw
MEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgKi8sCiAJCQkJQTVFMzkxRkMyMTgz
QzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggKi8sCiAJCQkJNUNFQUJBMkIy
MzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcCAqLywKQEAgLTc4MjMs
NiArNzgzMiw3IEBACiAJCQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQuaCAqLywKIAkJCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwICovLAogCQkJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oICovLAorCQkJCUQ3MUE5NDM5MjM3MEYwNjAwMDJDNEQ5RSAv
KiBSZW1vdGVJbnNwZWN0b3JQaXBlLmggKi8sCiAJCQkJQTU1QkE4MUIxQkEyNUIxRTAwN0NEMzNE
IC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcCAqLywKIAkJCQlBNTVCQTgxOTFCQTI1QjFF
MDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCAqLywKIAkJCQlBNTVCQTgxQTFC
QTI1QjFFMDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8s
CkBAIC04MDYyLDYgKzgwNzIsNyBAQAogCQkJCUJDNjQ2QzE5MTFERDM5OUYwMDY0NTVCMCAvKiBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaCAqLywKIAkJCQlCQzY0NkMxNjExREQzOTlGMDA2NDU1
QjAgLyogV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwICovLAogCQkJCUJDNjQ2QzE3MTFERDM5OUYw
MDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oICovLAorCQkJCUQ3MUE5NDJDMjM3MERG
ODEwMDJDNEQ5RSAvKiBXS0Jyb3dzZXJJbnNwZWN0b3IuaCAqLywKIAkJCQlCQ0I5RTI0QTExMjBF
MTVDMDBBMTM3RTAgLyogV0tDb250ZXh0LmNwcCAqLywKIAkJCQlCQ0I5RTI0OTExMjBFMTVDMDBB
MTM3RTAgLyogV0tDb250ZXh0LmggKi8sCiAJCQkJMUFFNTJGOTMxOTIwMUY2QjAwQTFGQTM3IC8q
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICovLApAQCAtOTQ4Myw2ICs5NDk0LDcgQEAK
IAkJCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3Bv
bnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4NzRBRjEgLyog
QmxvY2tTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUQ3MUE5NDM4MjM3MEYwMzIwMDJDNEQ5RSAv
KiBCcm93c2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1
RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
ODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTc3LDYgKzk1ODksNyBAQAogCQkJCUJDMTRERjc3
MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyREQ0NUFERTFFNUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVm
ZXJyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJ
bnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRDcxQTk0MzQyMzcwRTA3QTAw
MkM0RDlFIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBC
RjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05NzU3LDYgKzk3NzAsNyBAQAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAv
KiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUU2ODg3MDFG
NkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdG
RDMxODIyMkIzNTE1RTAwOEQwRThCIC8qIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRDcxQTk0M0EyMzcwRjA2MTAwMkM0RDlFIC8qIFJlbW90ZUlu
c3BlY3RvclBpcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FF
RSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjcz
MTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdhNWYzNjMyYTk0YjFmYzU3ZGUwMDAyZGNhYTQz
YjQ3Y2Q1MmZhMGMuLjg2MmM5YTFkOTBmMzA3ZWY4NzE4ZWUyNzE3NGI4MThlZjEyYTZmMDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAxOS0xMS0wNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYnJvd3NlciBpbnNwZWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzg3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5l
dyBmbGFnIGZvciBpbnRpYWxpemluZyBpbnNwZWN0b3IgcGlwZS4KKworICAgICAgICBBZGRlZCBw
bGF0Zm9ybSBob29rcyBmb3IgY3JlYXRpbmcgbmV3IHBhZ2VzIGluIHJlc3BvbnNlIHRvIEJyb3dz
ZXIuY3JlYXRlUGFnZSBpbnNwZWN0b3IKKyAgICAgICAgY29tbWFuZC4KKworICAgICAgICAqIE1p
bmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVOZXdQYWdlKToKKyAgICAgICAg
KGNvbmZpZ3VyZUJyb3dzZXJJbnNwZWN0b3JQaXBlKToKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAgKGNyZWF0ZU5ld1BhZ2UpOgor
ICAgICAgICAoY2xvc2VBbGwpOgorICAgICAgICAoY29uZmlndXJlQnJvd3Nlckluc3BlY3Rvcik6
CisgICAgICAgIChtYWluKToKKwogMjAxOS0xMS0wNiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHdhdGNobGlzdCBjYXRlZ29yeSBmb3IgQnVpbGRT
bGF2ZVN1cHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDkzZDkzNTkyYmM0ZjhlNTUxZTIyZjJl
ZDM1Y2Y5Y2E2Y2I2MmJkMjUuLjBjOGY5YTlmODEzM2EwOTM4YWIwY2Y2NzhjOWRmZjFkN2NiZTlk
MzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciAqY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciAqY29va2llc1BvbGljeTsKIHN0YXRp
YyBjb25zdCBjaGFyICpwcm94eTsKIHN0YXRpYyBnYm9vbGVhbiBkYXJrTW9kZTsKK3N0YXRpYyBn
Ym9vbGVhbiBpbnNwZWN0b3JQaXBlOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIAog
dHlwZWRlZiBlbnVtIHsKQEAgLTEyMCw2ICsxMjEsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVu
dHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJpZ25vcmUtaG9zdCIsIDAsIDAsIEdf
T1BUSU9OX0FSR19TVFJJTkdfQVJSQVksICZpZ25vcmVIb3N0cywgIlNldCBwcm94eSBpZ25vcmUg
aG9zdHMiLCAiSE9TVFMiIH0sCiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAwLCAwLCBHX09Q
VElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJyb3JzIiwgTlVM
TCB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1F
LCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxlcyIsICJG
SUxFIiB9LAorICAgIHsgImluc3BlY3Rvci1waXBlIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUs
ICZpbnNwZWN0b3JQaXBlLCAiT3BlbiBwaXBlIGNvbm5lY3Rpb24gdG8gdGhlIHJlbW90ZSBpbnNw
ZWN0b3IiLCBOVUxMIH0sCiAgICAgeyAidmVyc2lvbiIsICd2JywgMCwgR19PUFRJT05fQVJHX05P
TkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUgV2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0s
CiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9B
UlJBWSwgJnVyaUFyZ3VtZW50cywgMCwgIltVUkzigKZdIiB9LAogICAgIHsgMCwgMCwgMCwgMCwg
MCwgMCwgMCB9CkBAIC00OTIsNiArNDk0LDI5IEBAIHN0YXRpYyB2b2lkIGZpbHRlclNhdmVkQ2Fs
bGJhY2soV2ViS2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZSAqc3RvcmUsIEdBc3luY1Jlc3VsCiAg
ICAgZ19tYWluX2xvb3BfcXVpdChkYXRhLT5tYWluTG9vcCk7CiB9CiAKK3N0YXRpYyBXZWJLaXRX
ZWJWaWV3ICpjcmVhdGVOZXdQYWdlKFdlYktpdEJyb3dzZXJJbnNwZWN0b3IgKmJyb3dzZXJfaW5z
cGVjdG9yLCBXZWJLaXRXZWJDb250ZXh0ICpjb250ZXh0KQoreworICAgIFdlYktpdFdlYlZpZXcg
Km5ld1dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9WSUVXLAorICAgICAgICAid2ViLWNvbnRleHQiLCBjb250ZXh0LAorICAgICAgICAiaXMtZXBo
ZW1lcmFsIiwgd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSwKKyAgICAg
ICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCisgICAgICAgIE5VTEwpKTsK
KyAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhOVUxMLCBjb250
ZXh0KTsKKyAgICBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyhCUk9XU0VSX1dJTkRPVyhuZXdX
aW5kb3cpLCBuZXdXZWJWaWV3KTsKKyAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdF
VChuZXdXZWJWaWV3KSk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobmV3V2luZG93
KSk7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKG5ld1dlYlZpZXcsICJhYm91dDpibGFu
ayIpOworICAgIHJldHVybiBuZXdXZWJWaWV3OworfQorCitzdGF0aWMgdm9pZCBjb25maWd1cmVC
cm93c2VySW5zcGVjdG9yUGlwZSgpCit7CisgICAgV2ViS2l0QnJvd3Nlckluc3BlY3RvciAqYnJv
d3Nlckluc3BlY3RvciA9IHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9nZXRfZGVmYXVsdCgpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnJvd3Nlckluc3BlY3RvciwgImNyZWF0ZS1uZXctcGFnZSIs
IEdfQ0FMTEJBQ0soY3JlYXRlTmV3UGFnZSksIE5VTEwpOworCisgICAgd2Via2l0X2Jyb3dzZXJf
aW5zcGVjdG9yX2luaXRpYWxpemVfcGlwZSgpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogewogI2lmIEVOQUJMRV9ERVZFTE9QRVJfTU9ERQpAQCAtNTM5LDYgKzU2NCw5
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgV2ViS2l0V2ViQ29udGV4
dCAqd2ViQ29udGV4dCA9IGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndl
YnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlciwgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRl
LW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUsIE5VTEwpOwogICAgIGdfb2JqZWN0X3VucmVmKG1h
bmFnZXIpOwogCisgICAgaWYgKGluc3BlY3RvclBpcGUpCisgICAgICAgIGNvbmZpZ3VyZUJyb3dz
ZXJJbnNwZWN0b3JQaXBlKCk7CisKICAgICBpZiAoY29va2llc1BvbGljeSkgewogICAgICAgICBX
ZWJLaXRDb29raWVNYW5hZ2VyICpjb29raWVNYW5hZ2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dl
dF9jb29raWVfbWFuYWdlcih3ZWJDb250ZXh0KTsKICAgICAgICAgR0VudW1DbGFzcyAqZW51bUNs
YXNzID0gZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQRV9DT09LSUVfQUNDRVBUX1BPTElDWSk7
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5p
QnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggMmQxODNkMzk0MTIzYmQ4NDU0NWRjNTFmNTNlYjli
ZTc5NmZiODg3My4uYTQ2ODI2N2FiYzQxNTM2YzRjZDY3OTU1NTYyNmZmMTIzNDM3MWQwZCAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDgsNiArNDgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
Y29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2llc1BvbGljeTsKIHN0YXRpYyBj
b25zdCBjaGFyKiBwcm94eTsKIGNvbnN0IGNoYXIqIGJnQ29sb3I7CitzdGF0aWMgZ2Jvb2xlYW4g
aW5zcGVjdG9yUGlwZTsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAKIHN0YXRpYyBj
b25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQpAQCAtNjIsNiArNjMsNyBA
QCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7
ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExT
RXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBudWxscHRyIH0sCiAgICAgeyAiY29udGVudC1m
aWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNP
TiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCiAgICAgeyAiYmctY29s
b3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3Jv
dW5kIGNvbG9yLiBEZWZhdWx0OiB3aGl0ZSIsICJDT0xPUiIgfSwKKyAgICB7ICJpbnNwZWN0b3It
cGlwZSIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaW5zcGVjdG9yUGlwZSwgIk9wZW4gcGlw
ZSBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIiwgbnVsbHB0ciB9LAogICAgIHsg
InZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJp
bnQgdGhlIFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5H
LCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxw
dHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KQEAgLTE3Miw2ICsxNzQsNDMgQEAgc3RhdGljIFdl
YktpdFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
TmF2aWdhdGlvbkFjdGkKICAgICByZXR1cm4gbmV3V2ViVmlldzsKIH0KIAorc3RhdGljIFdlYktp
dFdlYlZpZXcqIGNyZWF0ZU5ld1BhZ2UoV2ViS2l0QnJvd3Nlckluc3BlY3RvciosIFdlYktpdFdl
YkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgYXV0byBiYWNrZW5kID0gY3JlYXRlVmlld0JhY2tl
bmQoMTI4MCwgNzIwKTsKKyAgICBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogd3BlQmFja2VuZCA9
IGJhY2tlbmQtPmJhY2tlbmQoKTsKKyAgICBpZiAoIXdwZUJhY2tlbmQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byogdmlld0JhY2tlbmQgPSB3ZWJraXRfd2ViX3ZpZXdfYmFj
a2VuZF9uZXcod3BlQmFja2VuZCwKKyAgICAgICAgW10oZ3BvaW50ZXIgZGF0YSkgeworICAgICAg
ICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQq
PihkYXRhKTsKKyAgICAgICAgfSwgYmFja2VuZC5yZWxlYXNlKCkpOworCisgICAgYXV0byogbmV3
V2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHZpZXdCYWNrZW5kLCBj
b250ZXh0KTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwgR19D
QUxMQkFDSyh3ZWJWaWV3Q2xvc2UpLCBudWxscHRyKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3VyaShuZXdXZWJWaWV3LCAiYWJvdXQ6YmxhbmsiKTsKKworICAgIHJldHVybiBuZXdXZWJW
aWV3OworCit9CisKK3N0YXRpYyB2b2lkIGNsb3NlQWxsKFdlYktpdEJyb3dzZXJJbnNwZWN0b3Iq
LCBHTWFpbkxvb3AqIG1haW5Mb29wKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQobWFpbkxvb3Ap
OworfQorCitzdGF0aWMgdm9pZCBjb25maWd1cmVCcm93c2VySW5zcGVjdG9yUGlwZShHTWFpbkxv
b3AqIG1haW5Mb29wLCBXZWJLaXRXZWJWaWV3ICpmaXJzdFdlYlZpZXcpCit7CisgICAgV2ViS2l0
QnJvd3Nlckluc3BlY3RvciogYnJvd3Nlckluc3BlY3RvciA9IHdlYmtpdF9icm93c2VyX2luc3Bl
Y3Rvcl9nZXRfZGVmYXVsdCgpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnJvd3Nlckluc3BlY3Rv
ciwgImNyZWF0ZS1uZXctcGFnZSIsIEdfQ0FMTEJBQ0soY3JlYXRlTmV3UGFnZSksIE5VTEwpOwor
ICAgIC8vIEZJWE1FOiBUaGlzIHNpZ25hbCBpcyByZWNlaXZlZCBvbmx5IHdoZW4gY2xvc2VBbGwg
aXMgY2FsbGVkLiBXZSBzaG91bGQgbm90IHJlbHkgb24gdGhhdC4KKyAgICBnX3NpZ25hbF9jb25u
ZWN0KGZpcnN0V2ViVmlldywgImNsb3NlIiwgR19DQUxMQkFDSyhjbG9zZUFsbCksIG1haW5Mb29w
KTsKKworICAgIHdlYmtpdF9icm93c2VyX2luc3BlY3Rvcl9pbml0aWFsaXplX3BpcGUoKTsKK30K
KwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICNpZiBFTkFCTEVfREVWRUxP
UEVSX01PREUKQEAgLTMwMSw2ICszNDAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn
dltdKQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInBlcm1pc3Npb24tcmVxdWVzdCIs
IEdfQ0FMTEJBQ0soZGVjaWRlUGVybWlzc2lvblJlcXVlc3QpLCBudWxscHRyKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXcp
LCBudWxscHRyKTsKIAorICAgIGlmIChpbnNwZWN0b3JQaXBlKQorICAgICAgICBjb25maWd1cmVC
cm93c2VySW5zcGVjdG9yUGlwZShsb29wLCB3ZWJWaWV3KTsKKwogICAgIGlmIChpZ25vcmVUTFNF
cnJvcnMpCiAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3ko
d2ViQ29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>